diff --git a/.bazelignore b/.bazelignore index afaf6167ff..cf8684fede 100644 --- a/.bazelignore +++ b/.bazelignore @@ -23,14 +23,12 @@ integration/cli-hello-world-ivy-compat/node_modules integration/cli-hello-world-ivy-i18n/node_modules integration/cli-hello-world-ivy-minimal/node_modules integration/cli-hello-world-lazy/node_modules -integration/cli-hello-world-lazy-rollup/node_modules integration/dynamic-compiler/node_modules integration/hello_world__closure/node_modules integration/hello_world__systemjs_umd/node_modules integration/i18n/node_modules integration/injectable-def/node_modules integration/ivy-i18n/node_modules -integration/language_service_plugin/node_modules integration/ng_elements/node_modules integration/ng_elements_schematics/node_modules integration/ng_update/node_modules @@ -51,14 +49,12 @@ integration/cli-hello-world-ivy-compat/.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-lazy/.yarn_local_cache -integration/cli-hello-world-lazy-rollup/.yarn_local_cache integration/dynamic-compiler/.yarn_local_cache integration/hello_world__closure/.yarn_local_cache integration/hello_world__systemjs_umd/.yarn_local_cache integration/i18n/.yarn_local_cache integration/injectable-def/.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_schematics/.yarn_local_cache integration/ng_update/.yarn_local_cache @@ -79,14 +75,12 @@ 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-minimal/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/hello_world__closure/NPM_PACKAGE_MANIFEST.json integration/hello_world__systemjs_umd/NPM_PACKAGE_MANIFEST.json integration/i18n/NPM_PACKAGE_MANIFEST.json integration/injectable-def/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_schematics/NPM_PACKAGE_MANIFEST.json integration/ng_update/NPM_PACKAGE_MANIFEST.json diff --git a/.bazelrc b/.bazelrc index 6f7a24ff89..8e28718306 100644 --- a/.bazelrc +++ b/.bazelrc @@ -114,18 +114,14 @@ build:remote --cpu=k8 build:remote --host_cpu=k8 # Toolchain and platform related flags -build:remote --host_javabase=@rbe_ubuntu1604_angular//java:jdk -build:remote --javabase=@rbe_ubuntu1604_angular//java:jdk -build:remote --host_java_toolchain=@bazel_tools//tools/jdk:toolchain_hostjdk8 -build:remote --java_toolchain=@bazel_tools//tools/jdk:toolchain_hostjdk8 -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 +build:remote --crosstool_top=//dev-infra/bazel/remote-execution/cpp:cc_toolchain_suite +build:remote --extra_toolchains=//dev-infra/bazel/remote-execution/cpp:cc_toolchain +build:remote --extra_execution_platforms=//dev-infra/bazel/remote-execution:platform +build:remote --host_platform=//dev-infra/bazel/remote-execution:platform +build:remote --platforms=//dev-infra/bazel/remote-execution:platform # Remote instance and caching -build:remote --remote_instance_name=projects/internal-200822/instances/default_instance +build:remote --remote_instance_name=projects/internal-200822/instances/primary_instance build:remote --project_id=internal-200822 build:remote --remote_cache=remotebuildexecution.googleapis.com build:remote --remote_executor=remotebuildexecution.googleapis.com diff --git a/.bazelversion b/.bazelversion index 21e00cfe03..fcdb2e109f 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1,3 +1 @@ 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 diff --git a/.circleci/config.yml b/.circleci/config.yml index a9b3a88a49..dde909853c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -19,19 +19,25 @@ version: 2.1 # 1) yarn lock file changes --> cached "node_modules" 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. -# **NOTE 1 **: If you change the cache key prefix, also sync the cache_key_fallback to match. -# **NOTE 2 **: Keep the static part of the cache key as prefix to enable correct fallbacks. +# **NOTE 1 **: In order to avoid the cache from growing indefinitely and causing slow-downs, we invalidate the cache monthly. +# (See https://support.circleci.com/hc/en-us/articles/360012618473-Creating-a-daily-cache.) +# **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. -var_3: &cache_key v1-angular-node-12-{{ checksum ".bazelversion" }}-{{ checksum "yarn.lock" }}-{{ checksum "WORKSPACE" }}-{{ checksum "packages/bazel/package.bzl" }}-{{ checksum "aio/yarn.lock" }} +var_3: &cache_key v4-angular-node-14-{{ checksum "month.txt" }}-{{ checksum ".bazelversion" }}-{{ checksum "yarn.lock" }}-{{ checksum "WORKSPACE" }}-{{ checksum "aio/yarn.lock" }} # 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 # be slower due to its growing size. -var_4: &cache_key_fallback v1-angular-node-12-{{ checksum ".bazelversion" }} +var_4: &cache_key_fallback v4-angular-node-14-{{ checksum "month.txt" }}-{{ 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 keys also update the SHA for the "COMPONENTS_REPO_COMMIT" environment variable. -var_5: &components_repo_unit_tests_cache_key v1-angular-components-09e68db8ed5b1253f2fe38ff954ef0df019fc25a -var_6: &components_repo_unit_tests_cache_key_fallback v1-angular-components- +var_5: &components_repo_unit_tests_cache_key v1-angular-components-{{ checksum "month.txt" }}-d090617912da8e70aa336aa5b4d804b1b535402e +var_6: &components_repo_unit_tests_cache_key_fallback v1-angular-components-{{ checksum "month.txt" }} # Workspace initially persisted by the `setup` job, and then enhanced by `build-npm-packages` and # `build-ivy-npm-packages`. @@ -60,11 +66,20 @@ var_10: &only_on_master only: - master +# Filter to run a job on all releasable branches. +var_11: &only_release_branches + filters: + branches: + only: + - master + - /\d+\.\d+\.x/ + # Executor Definitions # 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. # (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 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: default-executor: parameters: @@ -72,7 +87,7 @@ executors: type: string default: medium docker: - - image: circleci/node:12.14.1@sha256:f9de24fc0017059cc42ef7d07db060008af65a98b1f0cdd1ef3339213226bf6d + - image: circleci/node:14.16.1@sha256:951e12268fe692615bfd155c327bd910e10c99db98404badd03879f984c32b31 resource_class: << parameters.resource_class >> working_directory: ~/ng @@ -90,7 +105,7 @@ executors: machine: # Windows preview image that includes the following: # - Visual Studio 2019 build tools - # - Node 12 + # - Node 14 # - yarn 1.17 # - Python 3 3.7.4 image: windows-server-2019-vs2019:201908-02 @@ -140,8 +155,8 @@ commands: - run: name: Set up environment environment: - CIRCLE_GIT_BASE_REVISION: << pipeline.git.base_revision >> - CIRCLE_GIT_REVISION: << pipeline.git.revision >> + CIRCLE_GIT_BASE_REVISION: << pipeline.git.base_revision >> + CIRCLE_GIT_REVISION: << pipeline.git.revision >> command: ./.circleci/env.sh - run: # Configure git as the CircleCI `checkout` command does. @@ -175,6 +190,13 @@ commands: name: Setting up alias domain for local host. 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. # 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. @@ -182,11 +204,17 @@ commands: description: Setup windows node environment steps: - checkout + - save_month_to_file # Install Bazel pre-requisites that aren't in the preconfigured CircleCI Windows VM. - run: ./.circleci/windows-env.ps1 - run: node --version - run: yarn --version - - run: yarn install --frozen-lockfile --non-interactive + - restore_cache: + 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: description: Notify a webhook about failure @@ -210,6 +238,7 @@ jobs: executor: default-executor steps: - checkout + - save_month_to_file - init_environment - run: name: Rebase PR on target branch @@ -231,10 +260,10 @@ jobs: - *cache_key_fallback - run: name: Running Yarn install - command: yarn install --frozen-lockfile --non-interactive + command: yarn install --frozen-lockfile --non-interactive --cache-folder ~/.cache/yarn # Yarn's requests sometimes take more than 10mins to complete. no_output_timeout: 45m - - run: yarn --cwd aio install --frozen-lockfile --non-interactive + - run: yarn --cwd aio install --frozen-lockfile --non-interactive --cache-folder ~/.cache/yarn # Make the bazel directories and add a file to them if they don't exist already so that # persist_to_workspace does not fail. - run: | @@ -397,17 +426,13 @@ jobs: - run: yarn --cwd aio deploy-production test_aio_local: - parameters: - viewengine: - type: boolean - default: false executor: default-executor steps: - custom_attach_workspace - init_environment - install_chrome_libs # Build aio (with local Angular packages) - - run: yarn --cwd aio build-local<<# parameters.viewengine >>-with-viewengine<>-ci + - run: yarn --cwd aio build-local-ci # Run unit tests - run: yarn --cwd aio test --progress=false --watch=false # Run e2e tests @@ -415,7 +440,10 @@ jobs: # Run PWA-score tests - run: yarn --cwd aio test-pwa-score-localhost $CI_AIO_MIN_PWA_SCORE # Check the bundle sizes. - - run: yarn --cwd aio payload-size aio-local<<# parameters.viewengine >>-viewengine<> + - run: yarn --cwd aio payload-size aio-local + # 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: executor: default-executor @@ -423,17 +451,13 @@ jobs: - custom_attach_workspace - init_environment # Install - - run: yarn --cwd aio install --frozen-lockfile --non-interactive + - run: yarn --cwd aio install --frozen-lockfile --non-interactive --cache-folder ~/.cache/yarn - run: yarn --cwd aio extract-cli-command-docs # Run tools tests - run: yarn --cwd aio tools-test - run: ./aio/aio-builds-setup/scripts/test.sh test_docs_examples: - parameters: - viewengine: - type: boolean - default: false executor: name: default-executor resource_class: xlarge @@ -443,17 +467,21 @@ jobs: - init_environment - install_chrome_libs # Install aio - - run: yarn --cwd aio install --frozen-lockfile --non-interactive + - run: yarn --cwd aio install --frozen-lockfile --non-interactive --cache-folder ~/.cache/yarn # 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. # with either "0", "1", etc as node index. This can be passed to the "--shard" argument. - - run: yarn --cwd aio example-e2e --setup --local <<# parameters.viewengine >>--viewengine<> --cliSpecsConcurrency=5 --shard=${CIRCLE_NODE_INDEX}/${CIRCLE_NODE_TOTAL} + - run: yarn --cwd aio example-e2e --setup --local --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`. aio_preview: executor: default-executor 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: - custom_attach_workspace - init_environment @@ -472,12 +500,11 @@ jobs: - custom_attach_workspace - init_environment - install_chrome_libs - - run: yarn --cwd aio install --frozen-lockfile --non-interactive + - run: yarn --cwd aio install --frozen-lockfile --non-interactive --cache-folder ~/.cache/yarn - run: name: Wait for preview and run tests 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 # 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 @@ -500,16 +527,16 @@ jobs: root: *workspace_location paths: - ng/dist/packages-dist + - ng/dist/angular-in-memory-web-api-dist - ng/dist/zone.js-dist # Save dependencies and bazel repository cache to use on subsequent runs. - save_cache: key: *cache_key paths: - - "node_modules" - - "aio/node_modules" - - "~/bazel_repository_cache" - - "~/.cache/bazelisk" + - ~/.cache/yarn + - ~/bazel_repository_cache + - ~/.cache/bazelisk # Build the ivy npm packages. build-ivy-npm-packages: @@ -526,6 +553,7 @@ jobs: root: *workspace_location paths: - ng/dist/packages-dist-ivy-aot + - ng/dist/angular-in-memory-web-api-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 @@ -536,6 +564,8 @@ jobs: publish_packages_as_artifacts: executor: default-executor 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_ARCHIVES_DIR: &ng_packages_archives_dir 'dist/packages-dist-archives' ZONEJS_PACKAGES_DIR: &zonejs_packages_dir 'dist/zone.js-dist' @@ -550,9 +580,17 @@ jobs: - store_artifacts: path: *ng_packages_archives_dir destination: angular - # Publish `zone.js` package. + # Publish the `angular-in-memory-web-api` package. - run: - name: Create artifacts for zone.js package + name: Create artifacts for the `angular-in-memory-web-api` 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 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: @@ -564,18 +602,6 @@ jobs: publish_snapshot: executor: default-executor 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 - init_environment # CircleCI has a config setting to force SSH for all github connections @@ -590,6 +616,14 @@ jobs: command: 'openssl aes-256-cbc -d -in .circleci/github_token -md md5 -k "${KEY}" -out ~/.git_credentials' - 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: executor: default-executor steps: @@ -642,11 +676,6 @@ jobs: name: Starting Saucelabs tunnel service command: ./tools/saucelabs/sauce-service.sh run 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 # 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 @@ -655,10 +684,26 @@ jobs: - run: name: Preparing Bazel-generated fixtures required in legacy tests command: | - yarn bazel build //packages/core/test:downleveled_es5_fixture + yarn bazel build \ + //packages/core/test:downleveled_es5_fixture \ + //packages/common/locales + # 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 \ 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: # Waiting on ready ensures that we don't run tests too early without Saucelabs not being ready. name: Waiting for Saucelabs tunnel to connect @@ -694,31 +739,31 @@ jobs: # repository to be able to support arbitrary SHAs. - *components_repo_unit_tests_cache_key_fallback - run: - name: "Fetching angular/components repository" + name: 'Fetching angular/components repository' command: ./scripts/ci/clone_angular_components_repo.sh - run: # Run yarn install to fetch the Bazel binaries as used in the components repo. name: Installing dependencies. - # 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 + command: yarn --cwd ${COMPONENTS_REPO_TMP_DIR} install --frozen-lockfile --non-interactive --cache-folder ~/.cache/yarn - save_cache: key: *components_repo_unit_tests_cache_key paths: # 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 # not supported. - - "/tmp/angular-components-repo" + - '/tmp/angular-components-repo' - run: # Updates the `angular/components` `package.json` file to refer to the release output - # inside the `packages-dist` directory. Note that it's not necessary to perform a yarn - # install as Bazel runs Yarn automatically when needed. - name: Setting up release packages. - command: node scripts/ci/update-deps-to-dist-packages.js ${COMPONENTS_REPO_TMP_DIR}/package.json dist/packages-dist/ + # inside the `packages-dist` directory. + name: Setting up framework release packages. + command: node scripts/ci/update-framework-deps-to-dist-packages.js ${COMPONENTS_REPO_TMP_DIR}/package.json dist/packages-dist/ - run: - name: "Running `angular/components` unit tests" + # Run `yarn install` again to install the Angular packages from `packages-dist/` and update the lockfile. + # 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 test_zonejs: @@ -730,19 +775,19 @@ jobs: - init_environment - install_java # Install - - run: yarn --cwd packages/zone.js install --frozen-lockfile --non-interactive + - run: yarn --cwd packages/zone.js install --frozen-lockfile --non-interactive --cache-folder ~/.cache/yarn # Run zone.js tools tests - run: yarn --cwd packages/zone.js promisetest - run: yarn --cwd packages/zone.js promisefinallytest - 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-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-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.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:nodetest - run: yarn --cwd packages/zone.js electrontest - run: yarn --cwd packages/zone.js closuretest - - run: yarn --cwd packages/zone.js/test/typings install --frozen-lockfile --non-interactive + - 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 test # Windows jobs @@ -753,11 +798,11 @@ jobs: - setup_win - run: name: Build all windows CI targets - command: yarn bazel build --build_tag_filters=-ivy-only,-no-windows //packages/compiler-cli/... //tools/ts-api-guardian/... + command: yarn bazel build --build_tag_filters=-ivy-only //packages/compiler-cli/... no_output_timeout: 15m - run: name: Test all windows CI targets - 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/... + command: yarn bazel test --test_tag_filters="-ivy-only,-browser:chromium-local" //packages/compiler-cli/... no_output_timeout: 15m test_ivy_aot_win: @@ -766,13 +811,17 @@ jobs: - setup_win - run: name: Build all windows CI targets - command: yarn bazel build --config=ivy --build_tag_filters=-no-ivy-aot,-no-windows,-fixme-ivy-aot //packages/compiler-cli/... //tools/ts-api-guardian/... + command: yarn bazel build --config=ivy --build_tag_filters=-no-ivy-aot,-fixme-ivy-aot //packages/compiler-cli/... no_output_timeout: 15m - run: name: Test all windows CI targets - 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/... + command: yarn bazel test --config=ivy --test_tag_filters="-no-ivy-aot,-fixme-ivy-aot,-browser:chromium-local" //packages/compiler-cli/... //packages/localize/... no_output_timeout: 15m - + # Save dependencies to use on subsequent runs. + - save_cache: + key: *cache_key_win + paths: + - ~/.cache/yarn workflows: version: 2 @@ -809,22 +858,12 @@ workflows: - test_aio_local: requires: - build-npm-packages - - test_aio_local: - name: test_aio_local_viewengine - viewengine: true - requires: - - build-npm-packages - test_aio_tools: requires: - build-npm-packages - test_docs_examples: requires: - build-npm-packages - - test_docs_examples: - name: test_docs_examples_viewengine - viewengine: true - requires: - - build-npm-packages - aio_preview: # Only run on PR builds. (There can be no previews for non-PR builds.) <<: *only_on_pull_requests @@ -837,34 +876,22 @@ workflows: requires: - build-npm-packages - publish_snapshot: - # 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. + <<: *only_release_branches requires: # Only publish if tests and integration tests pass - test - test_ivy_aot # Only publish if `aio`/`docs` tests using the locally built Angular packages pass - test_aio_local - - test_aio_local_viewengine - test_docs_examples - - test_docs_examples_viewengine # Get the artifacts to publish from the build-packages-dist job # since the publishing script expects the legacy outputs layout. - build-npm-packages - build-ivy-npm-packages - legacy-unit-tests-saucelabs - # Temporarily disabled components-repo-unit-tests to update rules_nodejs to 2.0.0. Breaking changes in - # rules_nodejs create a dependency sandwich between angular/angular & angular/components that are very - # 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 + - components-repo-unit-tests: + requires: + - build-npm-packages - test_zonejs: requires: - setup @@ -878,6 +905,9 @@ workflows: monitoring: jobs: - setup + - aio_misc: + requires: + - setup - aio_monitoring_stable: requires: - setup @@ -906,4 +936,4 @@ workflows: - schedule: <<: *only_on_master # Runs monitoring jobs at 10:00AM every day. - cron: "0 10 * * *" + cron: '0 10 * * *' diff --git a/.circleci/env.sh b/.circleci/env.sh index 3eaa031794..3ddc7ea809 100755 --- a/.circleci/env.sh +++ b/.circleci/env.sh @@ -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_BRANCH "master" # **NOTE**: When updating the commit SHA, also update the cache key in the CircleCI `config.yml`. -setPublicVar COMPONENTS_REPO_COMMIT "09e68db8ed5b1253f2fe38ff954ef0df019fc25a" +setPublicVar COMPONENTS_REPO_COMMIT "d090617912da8e70aa336aa5b4d804b1b535402e" #################################################################################################### diff --git a/.circleci/windows-env.ps1 b/.circleci/windows-env.ps1 index 014c2fcf97..d310ec3c58 100644 --- a/.circleci/windows-env.ps1 +++ b/.circleci/windows-env.ps1 @@ -41,8 +41,8 @@ copy .circleci\bazel.windows.rc ${Env:USERPROFILE}\.bazelrc #################################################################################################### # Install specific version of node. #################################################################################################### -nvm install 12.14.1 -nvm use 12.14.1 +nvm install 14.16.1 +nvm use 14.16.1 # These Bazel prereqs aren't needed because the CircleCI image already includes them. # choco install yarn --version 1.16.0 --no-progress diff --git a/.devcontainer/recommended-Dockerfile b/.devcontainer/recommended-Dockerfile index 87379c1e06..b1a14e1861 100644 --- a/.devcontainer/recommended-Dockerfile +++ b/.devcontainer/recommended-Dockerfile @@ -1,8 +1,8 @@ # Image metadata and config. -# Ideally, the image version should be what we use on CI. -# See `executors > browsers-executor` in `.circleci/config.yml`. -FROM circleci/node:10-browsers - +# Ideally, the Node.js version should match what we use on CI. +# See `executors > default-executor` in `.circleci/config.yml`. +FROM circleci/node:14-browsers + LABEL name="Angular dev environment" \ description="This image can be used to create a dev environment for building Angular." \ @@ -16,13 +16,9 @@ EXPOSE 4000 4200 4433 5000 8080 9876 USER root -# Configure `Node.js`/`npm` and install utilities. +# Configure `Node.js`/`npm`. 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.) CMD ["tail", "--follow", "/dev/null"] diff --git a/.gitattributes b/.gitattributes index b45635737c..0acf0cd70d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5,8 +5,5 @@ *.js 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 scripts/windows/packages.txt eol=crlf diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 10c224d154..fb923c51a3 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,15 +1,6 @@ -> 注意:新版本文档位于aio分支下,master分支下是老版本的文档。 +Please help us process issues more efficiently by filing an +issue using one of the following templates: -> 对于错别字或明显的语法错误,建议直接发 PR(在content目录下相应的文件上直接编辑,保存时就会自动变成PR)。 +https://github.com/angular/angular/issues/new/choose -出错的URL: - -错误的内容(请拷贝进来一份精确的出错文本,以便我定位): - - - -建议的修改方式(可选): - - - -英雄留名(会出现在鸣谢清单中,默认使用你的github id): +Thank you! diff --git a/.github/ISSUE_TEMPLATE/1-bug-report.md b/.github/ISSUE_TEMPLATE/1-bug-report.md deleted file mode 100644 index 8cf9b32bb1..0000000000 --- a/.github/ISSUE_TEMPLATE/1-bug-report.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -name: "\U0001F41E Bug report" -about: Report a bug in the Angular Framework ---- - - - -# 🐞 bug report - -### Affected Package - - The issue is caused by package @angular/.... - - -### Is this a regression? - - - Yes, the previous version in which this bug was not present was: .... - - -### Description - - A clear and concise description of the problem... - - -## 🔬 Minimal Reproduction - - https://stackblitz.com/... - - - -## 🔥 Exception or Error -

-
-
-
-
- - -## 🌍 Your Environment - -**Angular Version:** -

-
-
-
-
- -**Anything else relevant?** - - - diff --git a/.github/ISSUE_TEMPLATE/1-bug-report.yaml b/.github/ISSUE_TEMPLATE/1-bug-report.yaml new file mode 100644 index 0000000000..243c2fc9f5 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/1-bug-report.yaml @@ -0,0 +1,84 @@ +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? diff --git a/.github/ISSUE_TEMPLATE/2-feature-request.md b/.github/ISSUE_TEMPLATE/2-feature-request.md deleted file mode 100644 index 22544004d3..0000000000 --- a/.github/ISSUE_TEMPLATE/2-feature-request.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -name: "\U0001F680 Feature request" -about: Suggest a feature for Angular Framework - ---- - - - -# 🚀 feature request - -### Relevant Package - - 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? diff --git a/.github/ISSUE_TEMPLATE/2-feature-request.yaml b/.github/ISSUE_TEMPLATE/2-feature-request.yaml new file mode 100644 index 0000000000..5954acabfc --- /dev/null +++ b/.github/ISSUE_TEMPLATE/2-feature-request.yaml @@ -0,0 +1,46 @@ +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 diff --git a/.github/ISSUE_TEMPLATE/3-docs-bug.md b/.github/ISSUE_TEMPLATE/3-docs-bug.md deleted file mode 100644 index c7ed324cce..0000000000 --- a/.github/ISSUE_TEMPLATE/3-docs-bug.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -name: "📚 Docs or angular.io issue report" -about: Report an issue in Angular's documentation or angular.io application - ---- - - -# 📚 Docs or angular.io bug report - -### Description - - A clear and concise description of the problem... - - -## 🔬 Minimal Reproduction - -### What's the affected URL?** - https://angular.io/... - -### Reproduction Steps** - - - -### Expected vs Actual Behavior** - - - - -## 📷Screenshot - - - - -## 🔥 Exception or Error -

-
-
-
-
- - -## 🌍 Your Environment - -### Browser info - - -### Anything else relevant? - diff --git a/.github/ISSUE_TEMPLATE/3-docs-bug.yaml b/.github/ISSUE_TEMPLATE/3-docs-bug.yaml new file mode 100644 index 0000000000..ec3f8337e8 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/3-docs-bug.yaml @@ -0,0 +1,42 @@ +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 diff --git a/.github/ISSUE_TEMPLATE/4-security-issue-disclosure.md b/.github/ISSUE_TEMPLATE/4-security-issue-disclosure.md index 70736318d2..a7596b26e7 100644 --- a/.github/ISSUE_TEMPLATE/4-security-issue-disclosure.md +++ b/.github/ISSUE_TEMPLATE/4-security-issue-disclosure.md @@ -1,11 +1,6 @@ --- -name: ⚠️ Security issue disclosure +name: Security Issue Disclosure 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. - -🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑 diff --git a/.github/ISSUE_TEMPLATE/5-support-request.md b/.github/ISSUE_TEMPLATE/5-support-request.md index f4b0e9e9d8..4eb5afe7b4 100644 --- a/.github/ISSUE_TEMPLATE/5-support-request.md +++ b/.github/ISSUE_TEMPLATE/5-support-request.md @@ -1,16 +1,11 @@ --- -name: "❓ Support request" +name: "Support Request" about: Questions and requests for support - --- -🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑 - 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 Thank you! - -🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑 diff --git a/.github/ISSUE_TEMPLATE/6-angular-cli.md b/.github/ISSUE_TEMPLATE/6-angular-cli.md index 2c154fde07..2fc74e017d 100644 --- a/.github/ISSUE_TEMPLATE/6-angular-cli.md +++ b/.github/ISSUE_TEMPLATE/6-angular-cli.md @@ -1,13 +1,8 @@ --- -name: "\U0001F6E0️ Angular CLI" +name: "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 For the time being, we keep Angular CLI issues in a separate repository. - -🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑 diff --git a/.github/ISSUE_TEMPLATE/7-angular-components.md b/.github/ISSUE_TEMPLATE/7-angular-components.md index b3a4080ea1..2b34471b80 100644 --- a/.github/ISSUE_TEMPLATE/7-angular-components.md +++ b/.github/ISSUE_TEMPLATE/7-angular-components.md @@ -1,13 +1,8 @@ --- -name: "\U0001F48E Angular Components" +name: "Angular Components" about: Issues and feature requests for Angular Components - --- -🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑 - 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. - -🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑🛑 diff --git a/.github/angular-robot.yml b/.github/angular-robot.yml index 2a8fe4d8f0..04c72688c1 100644 --- a/.github/angular-robot.yml +++ b/.github/angular-robot.yml @@ -4,7 +4,7 @@ size: disabled: false maxSizeIncrease: 2000 - circleCiStatusName: "ci/circleci: test_ivy_aot" + circleCiStatusName: 'ci/circleci: test_ivy_aot' # options for the merge plugin merge: @@ -13,85 +13,84 @@ merge: # set to true to disable disabled: false # the name of the status - context: "ci/angular: merge status" + context: 'ci/angular: merge status' # text to show when all checks pass - successText: "All checks passed!" + successText: 'All checks passed!' # 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 g3Status: # set to true to disable disabled: false # 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 - pendingDesc: "Googler: run g3sync presubmit {{PRNumber}}" + pendingDesc: 'Googler: run g3sync presubmit {{PRNumber}}' # text to show when the status is success - successDesc: "Does not affect google3" + successDesc: 'Does not affect google3' # 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 # this list must be manually kept in sync with google3/third_party/javascript/angular2/copy.bara.sky include: - - "LICENSE" - - "modules/benchmarks/**" - - "modules/system.d.ts" - - "packages/**" - - "dev-infra/benchmark/driver-utilities/**" + - 'LICENSE' + - 'modules/benchmarks/**' + - 'modules/system.d.ts' + - 'packages/**' + - 'dev-infra/benchmark/driver-utilities/**' # list of patterns to ignore for the files changed by the PR exclude: - - "packages/*" - - "packages/bazel/*" - - "packages/bazel/src/api-extractor/**" - - "packages/bazel/src/builders/**" - - "packages/bazel/src/ng_package/**" - - "packages/bazel/src/protractor/**" - - "packages/bazel/src/schematics/**" - - "packages/compiler-cli/src/ngcc/**" - - "packages/compiler-cli/linker/**" - - "packages/compiler-cli/ngcc/**" - - "packages/compiler-cli/src/ngtsc/sourcemaps/**" - - "packages/docs/**" - - "packages/elements/schematics/**" - - "packages/examples/**" - - "packages/language-service/**" - - "packages/localize/**" - - "packages/private/**" - - "packages/service-worker/**" - - "packages/common/locales/**" - - "packages/http/**" - - "**/.gitignore" - - "**/.gitkeep" - - "**/yarn.lock" - - "**/package.json" - - "**/third_party/**" - - "**/tsconfig-build.json" - - "**/tsconfig.json" - - "**/rollup.config.js" - - "**/BUILD.bazel" - - "**/*.md" - - "packages/**/integrationtest/**" - - "packages/**/test/**" - - "packages/zone.js/*" - - "packages/zone.js/dist/**" - - "packages/zone.js/doc/**" - - "packages/zone.js/example/**" - - "packages/zone.js/scripts/**" + - 'packages/*' + - 'packages/bazel/*' + - 'packages/bazel/src/api-extractor/**' + - 'packages/bazel/src/builders/**' + - 'packages/bazel/src/ng_package/**' + - 'packages/bazel/src/protractor/**' + - 'packages/bazel/src/schematics/**' + - 'packages/compiler-cli/src/ngcc/**' + - 'packages/compiler-cli/linker/**' + - 'packages/compiler-cli/ngcc/**' + - 'packages/compiler-cli/src/ngtsc/sourcemaps/**' + - 'packages/docs/**' + - 'packages/elements/schematics/**' + - 'packages/examples/**' + - 'packages/language-service/**' + - 'packages/localize/**' + - 'packages/private/**' + - 'packages/service-worker/**' + - 'packages/common/locales/**' + - 'packages/http/**' + - '**/.gitignore' + - '**/.gitkeep' + - '**/yarn.lock' + - '**/package.json' + - '**/third_party/**' + - '**/tsconfig-build.json' + - '**/tsconfig.json' + - '**/rollup.config.js' + - '**/BUILD.bazel' + - '**/*.md' + - 'packages/**/integrationtest/**' + - 'packages/**/test/**' + - 'packages/zone.js/*' + - 'packages/zone.js/dist/**' + - 'packages/zone.js/doc/**' + - 'packages/zone.js/example/**' + - '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 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 - mergeLabel: "action: merge" + mergeLabel: 'action: merge' # adding any of these labels will also add the merge label mergeLinkedLabels: - - "action: merge-assistance" + - 'action: merge-assistance' # list of checks that will determine if the merge label can be added checks: - # 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. @@ -102,27 +101,25 @@ merge: 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") requiredLabels: - - "target: *" - - "cla: yes" + - 'target: *' + - 'cla: yes' # list of labels that a PR shouldn't have, checked after the required labels with a regexp forbiddenLabels: - - "target: TBD" - - "action: cleanup" - - "action: review" - - "state: blocked" - - "cla: no" + - 'target: TBD' + - 'action: cleanup' + - 'action: review' + - 'state: blocked' + - 'cla: no' # list of PR statuses that need to be successful requiredStatuses: - - "ci/circleci: build" - - "ci/circleci: lint" - - "ci/circleci: publish_snapshot" - - "ci/angular: size" - - "cla/google" - - "google3" - - "pullapprove" - + - 'ci/circleci: build' + - 'ci/circleci: lint' + - 'ci/angular: size' + - 'cla/google' + - '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 # {{MERGE_LABEL}} will be replaced by the value of the mergeLabel option @@ -137,40 +134,29 @@ triage: defaultMilestone: 82, # arrays of labels that determine if an issue has been triaged by the caretaker l1TriageLabels: - - - - "comp: *" + - - 'comp: *' # arrays of labels that determine if an issue has been fully triaged l2TriageLabels: - - - - "P0" - - "comp: *" - - - - "P1" - - "comp: *" - - - - "P2" - - "comp: *" - - - - "P3" - - "comp: *" - - - - "P4" - - "comp: *" - - - - "P5" - - "comp: *" - - - - "feature" - - "comp: *" - - - - "discussion" - - "comp: *" - - - - "needs clarification" - - "comp: *" - - - - "needs reproduction" - - "comp: *" + - - 'P0' + - 'comp: *' + - - 'P1' + - 'comp: *' + - - 'P2' + - 'comp: *' + - - 'P3' + - 'comp: *' + - - 'P4' + - 'comp: *' + - - 'P5' + - 'comp: *' + - - 'feature' + - 'comp: *' + - - 'discussion' + - 'comp: *' + - - 'needs clarification' + - 'comp: *' + - - 'needs reproduction' + - 'comp: *' # options for the triage PR plugin triagePR: @@ -182,16 +168,14 @@ triagePR: defaultMilestone: 82, # arrays of labels that determine if a PR has been triaged by the caretaker l1TriageLabels: - - - - "comp: *" + - - 'comp: *' # arrays of labels that determine if a PR has been fully triaged l2TriageLabels: - - - - "comp: *" + - - 'comp: *' # options for rerunning CI rerunCircleCI: # set to true to disable disabled: false # 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' diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml new file mode 100644 index 0000000000..c3d59c7846 --- /dev/null +++ b/.github/workflows/feature-requests.yml @@ -0,0 +1,15 @@ +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 }} diff --git a/.gitignore b/.gitignore index 7adab435e6..140aed39fc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,37 +1,54 @@ +.DS_STORE + +/dist/ +/bazel-out +/integration/bazel/bazel-* +*.log node_modules -_temp -bower_components -jspm_packages -**/packages -build + +# Include when developing application packages. pubspec.lock -.pub -.packages -*.map -.DS_Store -**/*.iml -.idea -.vscode -**/js/latest/api -**/ts/latest/api -**/dart/latest/api -**/docs/**/_fragments -_.* -**/resources/zips -public/docs/xref-*.* -_zip-output -www* -npm-debug*.log* -**/debug.log -*.plnkr.html -plnkr.html -*.eplnkr.html -eplnkr.html -*plnkr.no-link.html -#public/docs/*/latest/guide/cheatsheet.json -protractor-results.txt -link-checker-results.txt -/dist -/public/docs/dart -/public/docs/ts/_cache -/public/docs/_examples/*/dart +.c9 +.idea/ +.devcontainer/* +!.devcontainer/README.md +!.devcontainer/recommended-devcontainer.json +!.devcontainer/recommended-Dockerfile +.settings/ +.vscode/launch.json +.vscode/settings.json +.vscode/tasks.json +*.swo +*.swp +modules/.settings +modules/.vscode +.vimrc +.nvimrc + +# Don't check in secret files +*secret.js + +# Ignore npm/yarn debug log +npm-debug.log +yarn-error.log + +# build-analytics +.build-analytics + +# rollup-test output +/modules/rollup-test/dist/ + +# User specific bazel settings +.bazelrc.user + +# User specific ng-dev settings +.ng-dev.user* + +.notes.md +baseline.json + +# Ignore .history for the xyz.local-history VSCode extension +.history + +# Husky +.husky/_ diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100755 index 0000000000..858ad7dea8 --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1,11 @@ +#!/bin/sh +. "$(dirname $0)/_/husky.sh" + +set +e + +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; diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000000..6c7dc5f405 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,11 @@ +#!/bin/sh +. "$(dirname $0)/_/husky.sh" + +set +e +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; diff --git a/.husky/prepare-commit-msg b/.husky/prepare-commit-msg new file mode 100755 index 0000000000..382a7bad6b --- /dev/null +++ b/.husky/prepare-commit-msg @@ -0,0 +1,11 @@ +#!/bin/sh +. "$(dirname $0)/_/husky.sh" + +set +e + +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; diff --git a/.ng-dev/caretaker.ts b/.ng-dev/caretaker.ts index 6d6aaa9684..f922bd7f5c 100644 --- a/.ng-dev/caretaker.ts +++ b/.ng-dev/caretaker.ts @@ -15,5 +15,6 @@ export const caretaker: CaretakerConfig = { name: 'Initial Triage Queue', query: `is:open no:milestone`, } - ] + ], + caretakerGroup: 'angular-caretaker', }; diff --git a/.ng-dev/format.ts b/.ng-dev/format.ts index e33f60d4af..2dfdcd2334 100644 --- a/.ng-dev/format.ts +++ b/.ng-dev/format.ts @@ -4,6 +4,11 @@ import {FormatConfig} from '../dev-infra/format/config'; * Configuration for the `ng-dev format` command. */ export const format: FormatConfig = { + 'prettier': { + 'matchers': [ + '**/*.{yaml,yml}', + ] + }, 'clang-format': { 'matchers': [ '**/*.{js,ts}', @@ -21,6 +26,11 @@ export const format: FormatConfig = { '!dev-infra/build-worker.js', // Do not format compliance test-cases since they must match generated code '!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 diff --git a/.ng-dev/merge.ts b/.ng-dev/merge.ts index fb22535a89..729db06f36 100644 --- a/.ng-dev/merge.ts +++ b/.ng-dev/merge.ts @@ -14,6 +14,7 @@ export const merge: DevInfraMergeConfig['merge'] = async api => { mergeReadyLabel: /^action: merge(-assistance)?/, caretakerNoteLabel: /^(action: merge-assistance)|(PullApprove: disable)/, 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 // published together with the same version and branching. labels: await getDefaultTargetLabelConfiguration(api, github, release), @@ -24,5 +25,9 @@ export const merge: DevInfraMergeConfig['merge'] = async api => { 'master': '5aeb9a4124922d8ac08eb73b8f322905a32b0b3a', '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'] }; }; diff --git a/.ng-dev/release.ts b/.ng-dev/release.ts index 912b281d6a..dbb836175b 100644 --- a/.ng-dev/release.ts +++ b/.ng-dev/release.ts @@ -1,5 +1,4 @@ import {join} from 'path'; -import {exec} from 'shelljs'; import {ReleaseConfig} from '../dev-infra/release/config'; /** Configuration for the `ng-dev release` command. */ @@ -23,15 +22,14 @@ export const release: ReleaseConfig = { '@angular/service-worker', '@angular/upgrade', ], - buildPackages: async () => { + buildPackages: async (stampForRelease: boolean) => { // The buildTargetPackages function is loaded at runtime as the loading the script causes an // invocation of bazel. const {buildTargetPackages} = require(join(__dirname, '../scripts/build/package-builder')); - return buildTargetPackages('dist/release-output', false, 'Release', true); + return buildTargetPackages('dist/release-output', false, 'Release', stampForRelease); }, - // TODO: This can be removed once there is an org-wide tool for changelog generation. - generateReleaseNotesForHead: async () => { - exec('yarn -s gulp changelog', {cwd: join(__dirname, '../')}); + releaseNotes: { + hiddenScopes: ['aio', 'dev-infra', 'docs-infra', 'zone.js'], }, releasePrLabels: ['comp: build & ci', 'action: merge', 'PullApprove: disable'], }; diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000000..c42da845b4 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +engine-strict = true diff --git a/.nvmrc b/.nvmrc index 1e8b314962..6b17d228d3 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -6 +14.16.1 diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000000..d73829a932 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,9 @@ +{ + "printWidth": 100, + "tabWidth": 2, + "tabs": false, + "singleQuote": true, + "semicolon": true, + "quoteProps": "preserve", + "bracketSpacing": false +} diff --git a/.pullapprove.yml b/.pullapprove.yml index 879dafe001..74d3d82d92 100644 --- a/.pullapprove.yml +++ b/.pullapprove.yml @@ -37,7 +37,6 @@ # See reviewer list under `required-minimum-review` group. Team member names and # usernames are managed there. - #################################################################################### # Approval Groups #################################################################################### @@ -46,10 +45,10 @@ # ========================================================= # Used for approving minor changes, large-scale refactorings, and in emergency situations. # +# alxhub # IgorMinar # jelbourn # josephperrott -# mhevery # # ========================================================= # @angular/framework-global-approvers-for-docs-only-changes @@ -58,9 +57,8 @@ # # aikidave # gkalpak -# kapunahelewong # petebacondarwin - +# TeriGlover version: 3 @@ -79,15 +77,11 @@ meta: # # 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. - 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-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 + 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-rejected: &no-groups-above-this-rejected len(groups.active.rejected.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-docs-approved: &can-be-global-docs-approved "\"global-docs-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' defaults: &defaults reviews: # Authors provide their approval implicitly, this approval allows for a reviewer @@ -100,25 +94,25 @@ meta: # turn on 'draft' support # https://docs.pullapprove.com/config/github-api-version/ # https://developer.github.com/v3/previews/#draft-pull-requests -github_api_version: "shadow-cat-preview" +github_api_version: 'shadow-cat-preview' -pullapprove_conditions: +# https://docs.pullapprove.com/config/overrides/ +# 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 # title or label, PullApprove stays in a pending state until its ready for review. - - condition: "'WIP' not in title" - unmet_status: pending - 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" + - if: "draft or 'WIP' in title or 'PR state: WIP' in labels" + status: pending + explanation: 'Waiting to send reviews as PR is WIP' # Disable PullApprove on specific PRs by adding the `PullApprove: disable` label - - condition: "'PullApprove: disable' not in labels" - unmet_status: success + - if: "'PullApprove: disable' in labels" + status: success 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: # ========================================================= @@ -175,41 +169,36 @@ groups: reviewed_for: ignored # All reviews apply to this group whether noted via Reviewed-for or not reviewers: users: - - aikidave # Dave Shevitz - - alan-agius4 # Alan Agius - - alxhub # Alex Rickabaugh - - AndrewKushnir # Andrew Kushnir - - andrewseguin # Andrew Seguin - - atscott # Andrew Scott - - ayazhafiz # Ayaz Hafiz - - clydin # Charles Lyding - - crisbeto # Kristiyan Kostadinov - - dennispbrown # Denny Brown - - devversion # Paul Gschwendtner - - dgp1130 # Doug Parker - - filipesilva # Filipe Silva - - gkalpak # Georgios Kalpakas - - gregmagolan # Greg Magolan - - IgorMinar # Igor Minar - - jbogarthyde # Judy Bogart - - jelbourn # Jeremy Elbourn - - jessicajaniuk # Jessica Janiuk - - JiaLiPassion # Jia Li - - JoostK # Joost Koehoorn - - josephperrott # Joey Perrott - - juleskremer # Jules Kremer - - kapunahelewong # Kapunahele Wong - - kara # Kara Erickson - - kyliau # Keen Yee Liau - - manughub # Manu Murthy - - mgechev # Minko Gechev - - mhevery # Miško Hevery - - mmalerba # Miles Malerba - - petebacondarwin # Pete Bacon Darwin - - pkozlowski-opensource # Pawel Kozlowski - - Splaktar # Michael Prentice - - twerske # Emma Twersky - - zarend # Zach Arend + - aikidave # Dave Shevitz + - alan-agius4 # Alan Agius + - alxhub # Alex Rickabaugh + - AndrewKushnir # Andrew Kushnir + - andrewseguin # Andrew Seguin + - atscott # Andrew Scott + - ayazhafiz # Ayaz Hafiz + - clydin # Charles Lyding + - crisbeto # Kristiyan Kostadinov + - devversion # Paul Gschwendtner + - dgp1130 # Doug Parker + - filipesilva # Filipe Silva + - gkalpak # Georgios Kalpakas + - gregmagolan # Greg Magolan + - IgorMinar # Igor Minar + - jbogarthyde # Judy Bogart + - jelbourn # Jeremy Elbourn + - jessicajaniuk # Jessica Janiuk + - JiaLiPassion # Jia Li + - JoostK # Joost Koehoorn + - josephperrott # Joey Perrott + - kyliau # Keen Yee Liau + - manughub # Manu Murthy + - mgechev # Minko Gechev + - mmalerba # Miles Malerba + - petebacondarwin # Pete Bacon Darwin + - pkozlowski-opensource # Pawel Kozlowski + - Splaktar # Michael Prentice + - twerske # Emma Twersky + - zarend # Zach Arend # ========================================================= # Framework: Animations @@ -237,7 +226,6 @@ groups: - IgorMinar - jelbourn - # ========================================================= # Framework: Compiler # ========================================================= @@ -258,11 +246,11 @@ groups: ]) reviewers: users: - - alxhub - AndrewKushnir + - alxhub + - atscott - JoostK - # ========================================================= # Framework: Compiler / ngcc # ========================================================= @@ -279,7 +267,6 @@ groups: - JoostK - petebacondarwin - # ========================================================= # Framework: Migrations # ========================================================= @@ -295,7 +282,6 @@ groups: - crisbeto - devversion - # ========================================================= # Framework: Core # ========================================================= @@ -335,6 +321,8 @@ groups: 'aio/content/guide/component-styles.md', 'aio/content/guide/view-encapsulation.md', 'aio/content/examples/component-styles/**', + 'aio/content/examples/content-projection/**', + 'aio/content/guide/content-projection.md', 'aio/content/guide/dependency-injection.md', 'aio/content/examples/dependency-injection/**', 'aio/content/images/guide/dependency-injection/**', @@ -422,19 +410,20 @@ groups: 'aio/content/guide/template-statements.md', 'aio/content/guide/user-input.md', '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: users: - alxhub - AndrewKushnir - atscott - - ~kara # do not request reviews from Kara, but allow her to approve PRs - - mhevery - jessicajaniuk # OOO as of 2020-09-28 - pkozlowski-opensource - # ========================================================= # Framework: Common # ========================================================= @@ -444,7 +433,7 @@ groups: - *can-be-global-approved - *can-be-global-docs-approved - > - contains_any_globs(files.exclude("packages/core/schematics/**"), [ + contains_any_globs(files.exclude("packages/core/schematics/**").exclude("packages/common/http/**"), [ 'packages/common/**', 'packages/examples/common/**', ]) @@ -453,12 +442,9 @@ groups: - alxhub - AndrewKushnir - atscott - - ~kara # do not request reviews from Kara, but allow her to approve PRs - - mhevery - jessicajaniuk # OOO as of 2020-09-28 - pkozlowski-opensource - # ========================================================= # Framework: Http # ========================================================= @@ -481,7 +467,6 @@ groups: - IgorMinar - petebacondarwin - # ========================================================= # Framework: Elements # ========================================================= @@ -502,7 +487,6 @@ groups: - andrewseguin - gkalpak - # ========================================================= # Framework: Forms # ========================================================= @@ -535,7 +519,6 @@ groups: users: - AndrewKushnir - # ========================================================= # Framework: i18n # ========================================================= @@ -566,10 +549,8 @@ groups: reviewers: users: - AndrewKushnir - - mhevery - petebacondarwin - # ========================================================= # Framework: Platform Server # ========================================================= @@ -581,15 +562,16 @@ groups: - > contains_any_globs(files, [ 'packages/platform-server/**', + 'aio/content/guide/prerendering.md', 'aio/content/guide/universal.md', 'aio/content/examples/universal/**' ]) reviewers: users: + - alan-agius4 - alxhub - kyliau - # ========================================================= # Framework: Router # ========================================================= @@ -605,15 +587,18 @@ groups: 'aio/content/guide/router.md', 'aio/content/guide/router-tutorial.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/**', - 'aio/content/images/guide/router/**' + 'aio/content/images/guide/router/**', + 'aio/content/guide/routing-with-urlmatcher.md', + 'aio/content/examples/routing-with-urlmatcher/**' ]) reviewers: users: - atscott - # ========================================================= # Framework: Service Worker # ========================================================= @@ -633,6 +618,7 @@ groups: 'aio/content/guide/service-worker-config.md', 'aio/content/guide/service-worker-devops.md', 'aio/content/guide/service-worker-intro.md', + 'aio/content/guide/service-worker-notifications.md', 'aio/content/images/guide/service-worker/**' ]) reviewers: @@ -641,7 +627,6 @@ groups: - gkalpak - IgorMinar - # ========================================================= # Framework: Upgrade # ========================================================= @@ -672,7 +657,6 @@ groups: - gkalpak - petebacondarwin - # ========================================================= # Framework: Testing # ========================================================= @@ -682,7 +666,7 @@ groups: - *can-be-global-approved - *can-be-global-docs-approved - > - contains_any_globs(files.exclude('packages/compiler-cli/**').exclude('packages/language-service/**'), [ + contains_any_globs(files.exclude('packages/compiler-cli/**').exclude('packages/language-service/**').exclude('packages/service-worker/**'), [ 'packages/**/testing/**', 'aio/content/guide/testing.md', 'aio/content/guide/test-debugging.md', @@ -702,7 +686,6 @@ groups: - IgorMinar # OOO as of 2020-09-28 - pkozlowski-opensource - # ========================================================= # Framework: Benchmarks # ========================================================= @@ -719,7 +702,6 @@ groups: - IgorMinar # OOO as of 2020-09-28 - pkozlowski-opensource - # ========================================================= # Framework: Playground # ========================================================= @@ -737,7 +719,6 @@ groups: - jelbourn # OOO as of 2020-09-28 - pkozlowski-opensource - # ========================================================= # Framework: Security # ========================================================= @@ -759,15 +740,13 @@ groups: reviewers: users: - IgorMinar - - mhevery - jelbourn # OOO as of 2020-09-28 - pkozlowski-opensource reviews: - request: -1 # request reviews from everyone - required: 2 # require at least 2 approvals + request: -1 # request reviews from everyone + required: 2 # require at least 2 approvals reviewed_for: required - # ========================================================= # Bazel # ========================================================= @@ -786,7 +765,6 @@ groups: - josephperrott - kyliau - # ========================================================= # Language Service # ========================================================= @@ -807,7 +785,6 @@ groups: - atscott - zarend - # ========================================================= # zone.js # ========================================================= @@ -824,7 +801,6 @@ groups: reviewers: users: - JiaLiPassion - - mhevery # ========================================================= # in-memory-web-api @@ -859,7 +835,6 @@ groups: - alxhub - josephperrott - # ========================================================= # Integration Tests # ========================================================= @@ -875,8 +850,6 @@ groups: users: - IgorMinar - josephperrott - - mhevery - # ========================================================= # Docs: Contributors @@ -896,7 +869,6 @@ groups: - mgechev - twerske - # ========================================================= # Docs: Gettings Started & Tutorial # ========================================================= @@ -931,7 +903,6 @@ groups: - IgorMinar - jelbourn - # ========================================================= # Docs: Marketing # ========================================================= @@ -980,7 +951,6 @@ groups: users: - alxhub - # ========================================================= # Docs: Packaging, Tooling, Releasing # ========================================================= @@ -998,6 +968,7 @@ groups: 'aio/content/guide/releases.md', 'aio/content/guide/updating.md', 'aio/content/guide/deprecations.md', + 'aio/content/guide/migration-legacy-message-id.md', 'aio/content/guide/migration-renderer.md', 'aio/content/guide/migration-undecorated-classes.md', 'aio/content/guide/migration-dynamic-flag.md', @@ -1005,7 +976,7 @@ groups: 'aio/content/guide/migration-localize.md', 'aio/content/guide/migration-module-with-providers.md', 'aio/content/guide/static-query-migration.md', - 'aio/content/guide/updating-to-version-11.md', + 'aio/content/guide/updating-to-version-12.md', 'aio/content/guide/ivy-compatibility.md', 'aio/content/guide/ivy-compatibility-examples.md' ]) @@ -1014,6 +985,23 @@ groups: - IgorMinar - 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 @@ -1036,11 +1024,10 @@ groups: - kyliau - IgorMinar reviews: - request: -1 # request reviews from everyone - required: 2 # require at least 2 approvals + request: -1 # request reviews from everyone + required: 2 # require at least 2 approvals reviewed_for: required - # ========================================================= # Docs: CLI # ========================================================= @@ -1076,7 +1063,6 @@ groups: - IgorMinar - mgechev - # ========================================================= # Docs: CLI Libraries # ========================================================= @@ -1097,7 +1083,6 @@ groups: - IgorMinar - mgechev - # ========================================================= # Docs: Schematics # ========================================================= @@ -1120,7 +1105,6 @@ groups: - IgorMinar - mgechev - # ========================================================= # Docs-infra # ========================================================= @@ -1147,7 +1131,6 @@ groups: 'aio/content/guide/reviewing-content.md', 'aio/content/guide/updating-content-github-ui.md', 'aio/content/guide/updating-search-keywords.md', - 'aio/content/guide/visual-studio-2015.md' ]) reviewers: users: @@ -1155,7 +1138,6 @@ groups: - IgorMinar - petebacondarwin - # ========================================================= # Dev-infra # ========================================================= @@ -1196,7 +1178,6 @@ groups: 'tools/source-map-test/**', 'tools/symbol-extractor/**', 'tools/testing/**', - 'tools/ts-api-guardian/**', 'tools/tslint/**', 'tools/utils/**', 'tools/yarn/**', @@ -1211,7 +1192,6 @@ groups: - IgorMinar - josephperrott - # ========================================================= # Public API # ========================================================= @@ -1241,13 +1221,13 @@ groups: - jelbourn - petebacondarwin - jessicajaniuk + - zarend # OOO as of 2020-09-28 - pkozlowski-opensource reviews: request: 4 # Request reviews from four people required: 3 # Require that three people approve reviewed_for: required - # ================================================ # Size tracking # ================================================ @@ -1270,13 +1250,13 @@ groups: - jelbourn - petebacondarwin - jessicajaniuk + - zarend # OOO as of 2020-09-28 - pkozlowski-opensource reviews: request: 4 # Request reviews from four people required: 2 # Require that two people approve reviewed_for: required - # ================================================ # Circular dependencies # ================================================ @@ -1299,12 +1279,12 @@ groups: - jelbourn - petebacondarwin - jessicajaniuk + - zarend # OOO as of 2020-09-28 - pkozlowski-opensource - -#################################################################################### -# Special Cases -#################################################################################### + #################################################################################### + # Special Cases + #################################################################################### # ========================================================= # Code Ownership @@ -1325,37 +1305,3 @@ groups: - atscott - jelbourn - 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 diff --git a/.yarn/releases/yarn-1.22.10.cjs b/.yarn/releases/yarn-1.22.10.cjs deleted file mode 100644 index 68b1990b1d..0000000000 --- a/.yarn/releases/yarn-1.22.10.cjs +++ /dev/null @@ -1,147392 +0,0 @@ -#!/usr/bin/env node -module.exports = -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 549); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -module.exports = require("path"); - -/***/ }), -/* 1 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["a"] = __extends; -/* unused harmony export __assign */ -/* unused harmony export __rest */ -/* unused harmony export __decorate */ -/* unused harmony export __param */ -/* unused harmony export __metadata */ -/* unused harmony export __awaiter */ -/* unused harmony export __generator */ -/* unused harmony export __exportStar */ -/* unused harmony export __values */ -/* unused harmony export __read */ -/* unused harmony export __spread */ -/* unused harmony export __await */ -/* unused harmony export __asyncGenerator */ -/* unused harmony export __asyncDelegator */ -/* unused harmony export __asyncValues */ -/* unused harmony export __makeTemplateObject */ -/* unused harmony export __importStar */ -/* unused harmony export __importDefault */ -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. All rights reserved. -Licensed under the Apache License, Version 2.0 (the "License"); you may not use -this file except in compliance with the License. You may obtain a copy of the -License at http://www.apache.org/licenses/LICENSE-2.0 - -THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED -WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, -MERCHANTABLITY OR NON-INFRINGEMENT. - -See the Apache Version 2.0 License for specific language governing permissions -and limitations under the License. -***************************************************************************** */ -/* global Reflect, Promise */ - -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - } - return __assign.apply(this, arguments); -} - -function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0) - t[p[i]] = s[p[i]]; - return t; -} - -function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -} - -function __param(paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -} - -function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); -} - -function __awaiter(thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -} - -function __exportStar(m, exports) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} - -function __values(o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; -} - -function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; -} - -function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; -} - -function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} - -function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; - function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } - function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } -} - -function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } -} - -function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } -} - -function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; -}; - -function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result.default = mod; - return result; -} - -function __importDefault(mod) { - return (mod && mod.__esModule) ? mod : { default: mod }; -} - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _promise = __webpack_require__(227); - -var _promise2 = _interopRequireDefault(_promise); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = function (fn) { - return function () { - var gen = fn.apply(this, arguments); - return new _promise2.default(function (resolve, reject) { - function step(key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - - if (info.done) { - resolve(value); - } else { - return _promise2.default.resolve(value).then(function (value) { - step("next", value); - }, function (err) { - step("throw", err); - }); - } - } - - return step("next"); - }); - }; -}; - -/***/ }), -/* 3 */ -/***/ (function(module, exports) { - -module.exports = require("util"); - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getFirstSuitableFolder = exports.readFirstAvailableStream = exports.makeTempDir = exports.hardlinksWork = exports.writeFilePreservingEol = exports.getFileSizeOnDisk = exports.walk = exports.symlink = exports.find = exports.readJsonAndFile = exports.readJson = exports.readFileAny = exports.hardlinkBulk = exports.copyBulk = exports.unlink = exports.glob = exports.link = exports.chmod = exports.lstat = exports.exists = exports.mkdirp = exports.stat = exports.access = exports.rename = exports.readdir = exports.realpath = exports.readlink = exports.writeFile = exports.open = exports.readFileBuffer = exports.lockQueue = exports.constants = undefined; - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); -} - -let buildActionsForCopy = (() => { - var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) { - - // - let build = (() => { - var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { - const src = data.src, - dest = data.dest, - type = data.type; - - const onFresh = data.onFresh || noop; - const onDone = data.onDone || noop; - - // TODO https://github.com/yarnpkg/yarn/issues/3751 - // related to bundled dependencies handling - if (files.has(dest.toLowerCase())) { - reporter.verbose(`The case-insensitive file ${dest} shouldn't be copied twice in one bulk copy`); - } else { - files.add(dest.toLowerCase()); - } - - if (type === 'symlink') { - yield mkdirp((_path || _load_path()).default.dirname(dest)); - onFresh(); - actions.symlink.push({ - dest, - linkname: src - }); - onDone(); - return; - } - - if (events.ignoreBasenames.indexOf((_path || _load_path()).default.basename(src)) >= 0) { - // ignored file - return; - } - - const srcStat = yield lstat(src); - let srcFiles; - - if (srcStat.isDirectory()) { - srcFiles = yield readdir(src); - } - - let destStat; - try { - // try accessing the destination - destStat = yield lstat(dest); - } catch (e) { - // proceed if destination doesn't exist, otherwise error - if (e.code !== 'ENOENT') { - throw e; - } - } - - // if destination exists - if (destStat) { - const bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink(); - const bothFolders = srcStat.isDirectory() && destStat.isDirectory(); - const bothFiles = srcStat.isFile() && destStat.isFile(); - - // EINVAL access errors sometimes happen which shouldn't because node shouldn't be giving - // us modes that aren't valid. investigate this, it's generally safe to proceed. - - /* if (srcStat.mode !== destStat.mode) { - try { - await access(dest, srcStat.mode); - } catch (err) {} - } */ - - if (bothFiles && artifactFiles.has(dest)) { - // this file gets changed during build, likely by a custom install script. Don't bother checking it. - onDone(); - reporter.verbose(reporter.lang('verboseFileSkipArtifact', src)); - return; - } - - if (bothFiles && srcStat.size === destStat.size && (0, (_fsNormalized || _load_fsNormalized()).fileDatesEqual)(srcStat.mtime, destStat.mtime)) { - // we can safely assume this is the same file - onDone(); - reporter.verbose(reporter.lang('verboseFileSkip', src, dest, srcStat.size, +srcStat.mtime)); - return; - } - - if (bothSymlinks) { - const srcReallink = yield readlink(src); - if (srcReallink === (yield readlink(dest))) { - // if both symlinks are the same then we can continue on - onDone(); - reporter.verbose(reporter.lang('verboseFileSkipSymlink', src, dest, srcReallink)); - return; - } - } - - if (bothFolders) { - // mark files that aren't in this folder as possibly extraneous - const destFiles = yield readdir(dest); - invariant(srcFiles, 'src files not initialised'); - - for (var _iterator4 = destFiles, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { - var _ref6; - - if (_isArray4) { - if (_i4 >= _iterator4.length) break; - _ref6 = _iterator4[_i4++]; - } else { - _i4 = _iterator4.next(); - if (_i4.done) break; - _ref6 = _i4.value; - } - - const file = _ref6; - - if (srcFiles.indexOf(file) < 0) { - const loc = (_path || _load_path()).default.join(dest, file); - possibleExtraneous.add(loc); - - if ((yield lstat(loc)).isDirectory()) { - for (var _iterator5 = yield readdir(loc), _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { - var _ref7; - - if (_isArray5) { - if (_i5 >= _iterator5.length) break; - _ref7 = _iterator5[_i5++]; - } else { - _i5 = _iterator5.next(); - if (_i5.done) break; - _ref7 = _i5.value; - } - - const file = _ref7; - - possibleExtraneous.add((_path || _load_path()).default.join(loc, file)); - } - } - } - } - } - } - - if (destStat && destStat.isSymbolicLink()) { - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dest); - destStat = null; - } - - if (srcStat.isSymbolicLink()) { - onFresh(); - const linkname = yield readlink(src); - actions.symlink.push({ - dest, - linkname - }); - onDone(); - } else if (srcStat.isDirectory()) { - if (!destStat) { - reporter.verbose(reporter.lang('verboseFileFolder', dest)); - yield mkdirp(dest); - } - - const destParts = dest.split((_path || _load_path()).default.sep); - while (destParts.length) { - files.add(destParts.join((_path || _load_path()).default.sep).toLowerCase()); - destParts.pop(); - } - - // push all files to queue - invariant(srcFiles, 'src files not initialised'); - let remaining = srcFiles.length; - if (!remaining) { - onDone(); - } - for (var _iterator6 = srcFiles, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) { - var _ref8; - - if (_isArray6) { - if (_i6 >= _iterator6.length) break; - _ref8 = _iterator6[_i6++]; - } else { - _i6 = _iterator6.next(); - if (_i6.done) break; - _ref8 = _i6.value; - } - - const file = _ref8; - - queue.push({ - dest: (_path || _load_path()).default.join(dest, file), - onFresh, - onDone: function (_onDone) { - function onDone() { - return _onDone.apply(this, arguments); - } - - onDone.toString = function () { - return _onDone.toString(); - }; - - return onDone; - }(function () { - if (--remaining === 0) { - onDone(); - } - }), - src: (_path || _load_path()).default.join(src, file) - }); - } - } else if (srcStat.isFile()) { - onFresh(); - actions.file.push({ - src, - dest, - atime: srcStat.atime, - mtime: srcStat.mtime, - mode: srcStat.mode - }); - onDone(); - } else { - throw new Error(`unsure how to copy this: ${src}`); - } - }); - - return function build(_x5) { - return _ref5.apply(this, arguments); - }; - })(); - - const artifactFiles = new Set(events.artifactFiles || []); - const files = new Set(); - - // initialise events - for (var _iterator = queue, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref2; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref2 = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref2 = _i.value; - } - - const item = _ref2; - - const onDone = item.onDone; - item.onDone = function () { - events.onProgress(item.dest); - if (onDone) { - onDone(); - } - }; - } - events.onStart(queue.length); - - // start building actions - const actions = { - file: [], - symlink: [], - link: [] - }; - - // custom concurrency logic as we're always executing stacks of CONCURRENT_QUEUE_ITEMS queue items - // at a time due to the requirement to push items onto the queue - while (queue.length) { - const items = queue.splice(0, CONCURRENT_QUEUE_ITEMS); - yield Promise.all(items.map(build)); - } - - // simulate the existence of some files to prevent considering them extraneous - for (var _iterator2 = artifactFiles, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { - var _ref3; - - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref3 = _iterator2[_i2++]; - } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref3 = _i2.value; - } - - const file = _ref3; - - if (possibleExtraneous.has(file)) { - reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', file)); - possibleExtraneous.delete(file); - } - } - - for (var _iterator3 = possibleExtraneous, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { - var _ref4; - - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref4 = _iterator3[_i3++]; - } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref4 = _i3.value; - } - - const loc = _ref4; - - if (files.has(loc.toLowerCase())) { - possibleExtraneous.delete(loc); - } - } - - return actions; - }); - - return function buildActionsForCopy(_x, _x2, _x3, _x4) { - return _ref.apply(this, arguments); - }; -})(); - -let buildActionsForHardlink = (() => { - var _ref9 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) { - - // - let build = (() => { - var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { - const src = data.src, - dest = data.dest; - - const onFresh = data.onFresh || noop; - const onDone = data.onDone || noop; - if (files.has(dest.toLowerCase())) { - // Fixes issue https://github.com/yarnpkg/yarn/issues/2734 - // When bulk hardlinking we have A -> B structure that we want to hardlink to A1 -> B1, - // package-linker passes that modules A1 and B1 need to be hardlinked, - // the recursive linking algorithm of A1 ends up scheduling files in B1 to be linked twice which will case - // an exception. - onDone(); - return; - } - files.add(dest.toLowerCase()); - - if (events.ignoreBasenames.indexOf((_path || _load_path()).default.basename(src)) >= 0) { - // ignored file - return; - } - - const srcStat = yield lstat(src); - let srcFiles; - - if (srcStat.isDirectory()) { - srcFiles = yield readdir(src); - } - - const destExists = yield exists(dest); - if (destExists) { - const destStat = yield lstat(dest); - - const bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink(); - const bothFolders = srcStat.isDirectory() && destStat.isDirectory(); - const bothFiles = srcStat.isFile() && destStat.isFile(); - - if (srcStat.mode !== destStat.mode) { - try { - yield access(dest, srcStat.mode); - } catch (err) { - // EINVAL access errors sometimes happen which shouldn't because node shouldn't be giving - // us modes that aren't valid. investigate this, it's generally safe to proceed. - reporter.verbose(err); - } - } - - if (bothFiles && artifactFiles.has(dest)) { - // this file gets changed during build, likely by a custom install script. Don't bother checking it. - onDone(); - reporter.verbose(reporter.lang('verboseFileSkipArtifact', src)); - return; - } - - // correct hardlink - if (bothFiles && srcStat.ino !== null && srcStat.ino === destStat.ino) { - onDone(); - reporter.verbose(reporter.lang('verboseFileSkip', src, dest, srcStat.ino)); - return; - } - - if (bothSymlinks) { - const srcReallink = yield readlink(src); - if (srcReallink === (yield readlink(dest))) { - // if both symlinks are the same then we can continue on - onDone(); - reporter.verbose(reporter.lang('verboseFileSkipSymlink', src, dest, srcReallink)); - return; - } - } - - if (bothFolders) { - // mark files that aren't in this folder as possibly extraneous - const destFiles = yield readdir(dest); - invariant(srcFiles, 'src files not initialised'); - - for (var _iterator10 = destFiles, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) { - var _ref14; - - if (_isArray10) { - if (_i10 >= _iterator10.length) break; - _ref14 = _iterator10[_i10++]; - } else { - _i10 = _iterator10.next(); - if (_i10.done) break; - _ref14 = _i10.value; - } - - const file = _ref14; - - if (srcFiles.indexOf(file) < 0) { - const loc = (_path || _load_path()).default.join(dest, file); - possibleExtraneous.add(loc); - - if ((yield lstat(loc)).isDirectory()) { - for (var _iterator11 = yield readdir(loc), _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) { - var _ref15; - - if (_isArray11) { - if (_i11 >= _iterator11.length) break; - _ref15 = _iterator11[_i11++]; - } else { - _i11 = _iterator11.next(); - if (_i11.done) break; - _ref15 = _i11.value; - } - - const file = _ref15; - - possibleExtraneous.add((_path || _load_path()).default.join(loc, file)); - } - } - } - } - } - } - - if (srcStat.isSymbolicLink()) { - onFresh(); - const linkname = yield readlink(src); - actions.symlink.push({ - dest, - linkname - }); - onDone(); - } else if (srcStat.isDirectory()) { - reporter.verbose(reporter.lang('verboseFileFolder', dest)); - yield mkdirp(dest); - - const destParts = dest.split((_path || _load_path()).default.sep); - while (destParts.length) { - files.add(destParts.join((_path || _load_path()).default.sep).toLowerCase()); - destParts.pop(); - } - - // push all files to queue - invariant(srcFiles, 'src files not initialised'); - let remaining = srcFiles.length; - if (!remaining) { - onDone(); - } - for (var _iterator12 = srcFiles, _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _iterator12[Symbol.iterator]();;) { - var _ref16; - - if (_isArray12) { - if (_i12 >= _iterator12.length) break; - _ref16 = _iterator12[_i12++]; - } else { - _i12 = _iterator12.next(); - if (_i12.done) break; - _ref16 = _i12.value; - } - - const file = _ref16; - - queue.push({ - onFresh, - src: (_path || _load_path()).default.join(src, file), - dest: (_path || _load_path()).default.join(dest, file), - onDone: function (_onDone2) { - function onDone() { - return _onDone2.apply(this, arguments); - } - - onDone.toString = function () { - return _onDone2.toString(); - }; - - return onDone; - }(function () { - if (--remaining === 0) { - onDone(); - } - }) - }); - } - } else if (srcStat.isFile()) { - onFresh(); - actions.link.push({ - src, - dest, - removeDest: destExists - }); - onDone(); - } else { - throw new Error(`unsure how to copy this: ${src}`); - } - }); - - return function build(_x10) { - return _ref13.apply(this, arguments); - }; - })(); - - const artifactFiles = new Set(events.artifactFiles || []); - const files = new Set(); - - // initialise events - for (var _iterator7 = queue, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) { - var _ref10; - - if (_isArray7) { - if (_i7 >= _iterator7.length) break; - _ref10 = _iterator7[_i7++]; - } else { - _i7 = _iterator7.next(); - if (_i7.done) break; - _ref10 = _i7.value; - } - - const item = _ref10; - - const onDone = item.onDone || noop; - item.onDone = function () { - events.onProgress(item.dest); - onDone(); - }; - } - events.onStart(queue.length); - - // start building actions - const actions = { - file: [], - symlink: [], - link: [] - }; - - // custom concurrency logic as we're always executing stacks of CONCURRENT_QUEUE_ITEMS queue items - // at a time due to the requirement to push items onto the queue - while (queue.length) { - const items = queue.splice(0, CONCURRENT_QUEUE_ITEMS); - yield Promise.all(items.map(build)); - } - - // simulate the existence of some files to prevent considering them extraneous - for (var _iterator8 = artifactFiles, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) { - var _ref11; - - if (_isArray8) { - if (_i8 >= _iterator8.length) break; - _ref11 = _iterator8[_i8++]; - } else { - _i8 = _iterator8.next(); - if (_i8.done) break; - _ref11 = _i8.value; - } - - const file = _ref11; - - if (possibleExtraneous.has(file)) { - reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', file)); - possibleExtraneous.delete(file); - } - } - - for (var _iterator9 = possibleExtraneous, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) { - var _ref12; - - if (_isArray9) { - if (_i9 >= _iterator9.length) break; - _ref12 = _iterator9[_i9++]; - } else { - _i9 = _iterator9.next(); - if (_i9.done) break; - _ref12 = _i9.value; - } - - const loc = _ref12; - - if (files.has(loc.toLowerCase())) { - possibleExtraneous.delete(loc); - } - } - - return actions; - }); - - return function buildActionsForHardlink(_x6, _x7, _x8, _x9) { - return _ref9.apply(this, arguments); - }; -})(); - -let copyBulk = exports.copyBulk = (() => { - var _ref17 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, reporter, _events) { - const events = { - onStart: _events && _events.onStart || noop, - onProgress: _events && _events.onProgress || noop, - possibleExtraneous: _events ? _events.possibleExtraneous : new Set(), - ignoreBasenames: _events && _events.ignoreBasenames || [], - artifactFiles: _events && _events.artifactFiles || [] - }; - - const actions = yield buildActionsForCopy(queue, events, events.possibleExtraneous, reporter); - events.onStart(actions.file.length + actions.symlink.length + actions.link.length); - - const fileActions = actions.file; - - const currentlyWriting = new Map(); - - yield (_promise || _load_promise()).queue(fileActions, (() => { - var _ref18 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { - let writePromise; - while (writePromise = currentlyWriting.get(data.dest)) { - yield writePromise; - } - - reporter.verbose(reporter.lang('verboseFileCopy', data.src, data.dest)); - const copier = (0, (_fsNormalized || _load_fsNormalized()).copyFile)(data, function () { - return currentlyWriting.delete(data.dest); - }); - currentlyWriting.set(data.dest, copier); - events.onProgress(data.dest); - return copier; - }); - - return function (_x14) { - return _ref18.apply(this, arguments); - }; - })(), CONCURRENT_QUEUE_ITEMS); - - // we need to copy symlinks last as they could reference files we were copying - const symlinkActions = actions.symlink; - yield (_promise || _load_promise()).queue(symlinkActions, function (data) { - const linkname = (_path || _load_path()).default.resolve((_path || _load_path()).default.dirname(data.dest), data.linkname); - reporter.verbose(reporter.lang('verboseFileSymlink', data.dest, linkname)); - return symlink(linkname, data.dest); - }); - }); - - return function copyBulk(_x11, _x12, _x13) { - return _ref17.apply(this, arguments); - }; -})(); - -let hardlinkBulk = exports.hardlinkBulk = (() => { - var _ref19 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, reporter, _events) { - const events = { - onStart: _events && _events.onStart || noop, - onProgress: _events && _events.onProgress || noop, - possibleExtraneous: _events ? _events.possibleExtraneous : new Set(), - artifactFiles: _events && _events.artifactFiles || [], - ignoreBasenames: [] - }; - - const actions = yield buildActionsForHardlink(queue, events, events.possibleExtraneous, reporter); - events.onStart(actions.file.length + actions.symlink.length + actions.link.length); - - const fileActions = actions.link; - - yield (_promise || _load_promise()).queue(fileActions, (() => { - var _ref20 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { - reporter.verbose(reporter.lang('verboseFileLink', data.src, data.dest)); - if (data.removeDest) { - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(data.dest); - } - yield link(data.src, data.dest); - }); - - return function (_x18) { - return _ref20.apply(this, arguments); - }; - })(), CONCURRENT_QUEUE_ITEMS); - - // we need to copy symlinks last as they could reference files we were copying - const symlinkActions = actions.symlink; - yield (_promise || _load_promise()).queue(symlinkActions, function (data) { - const linkname = (_path || _load_path()).default.resolve((_path || _load_path()).default.dirname(data.dest), data.linkname); - reporter.verbose(reporter.lang('verboseFileSymlink', data.dest, linkname)); - return symlink(linkname, data.dest); - }); - }); - - return function hardlinkBulk(_x15, _x16, _x17) { - return _ref19.apply(this, arguments); - }; -})(); - -let readFileAny = exports.readFileAny = (() => { - var _ref21 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (files) { - for (var _iterator13 = files, _isArray13 = Array.isArray(_iterator13), _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : _iterator13[Symbol.iterator]();;) { - var _ref22; - - if (_isArray13) { - if (_i13 >= _iterator13.length) break; - _ref22 = _iterator13[_i13++]; - } else { - _i13 = _iterator13.next(); - if (_i13.done) break; - _ref22 = _i13.value; - } - - const file = _ref22; - - if (yield exists(file)) { - return readFile(file); - } - } - return null; - }); - - return function readFileAny(_x19) { - return _ref21.apply(this, arguments); - }; -})(); - -let readJson = exports.readJson = (() => { - var _ref23 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) { - return (yield readJsonAndFile(loc)).object; - }); - - return function readJson(_x20) { - return _ref23.apply(this, arguments); - }; -})(); - -let readJsonAndFile = exports.readJsonAndFile = (() => { - var _ref24 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) { - const file = yield readFile(loc); - try { - return { - object: (0, (_map || _load_map()).default)(JSON.parse(stripBOM(file))), - content: file - }; - } catch (err) { - err.message = `${loc}: ${err.message}`; - throw err; - } - }); - - return function readJsonAndFile(_x21) { - return _ref24.apply(this, arguments); - }; -})(); - -let find = exports.find = (() => { - var _ref25 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (filename, dir) { - const parts = dir.split((_path || _load_path()).default.sep); - - while (parts.length) { - const loc = parts.concat(filename).join((_path || _load_path()).default.sep); - - if (yield exists(loc)) { - return loc; - } else { - parts.pop(); - } - } - - return false; - }); - - return function find(_x22, _x23) { - return _ref25.apply(this, arguments); - }; -})(); - -let symlink = exports.symlink = (() => { - var _ref26 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (src, dest) { - if (process.platform !== 'win32') { - // use relative paths otherwise which will be retained if the directory is moved - src = (_path || _load_path()).default.relative((_path || _load_path()).default.dirname(dest), src); - // When path.relative returns an empty string for the current directory, we should instead use - // '.', which is a valid fs.symlink target. - src = src || '.'; - } - - try { - const stats = yield lstat(dest); - if (stats.isSymbolicLink()) { - const resolved = dest; - if (resolved === src) { - return; - } - } - } catch (err) { - if (err.code !== 'ENOENT') { - throw err; - } - } - - // We use rimraf for unlink which never throws an ENOENT on missing target - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dest); - - if (process.platform === 'win32') { - // use directory junctions if possible on win32, this requires absolute paths - yield fsSymlink(src, dest, 'junction'); - } else { - yield fsSymlink(src, dest); - } - }); - - return function symlink(_x24, _x25) { - return _ref26.apply(this, arguments); - }; -})(); - -let walk = exports.walk = (() => { - var _ref27 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir, relativeDir, ignoreBasenames = new Set()) { - let files = []; - - let filenames = yield readdir(dir); - if (ignoreBasenames.size) { - filenames = filenames.filter(function (name) { - return !ignoreBasenames.has(name); - }); - } - - for (var _iterator14 = filenames, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : _iterator14[Symbol.iterator]();;) { - var _ref28; - - if (_isArray14) { - if (_i14 >= _iterator14.length) break; - _ref28 = _iterator14[_i14++]; - } else { - _i14 = _iterator14.next(); - if (_i14.done) break; - _ref28 = _i14.value; - } - - const name = _ref28; - - const relative = relativeDir ? (_path || _load_path()).default.join(relativeDir, name) : name; - const loc = (_path || _load_path()).default.join(dir, name); - const stat = yield lstat(loc); - - files.push({ - relative, - basename: name, - absolute: loc, - mtime: +stat.mtime - }); - - if (stat.isDirectory()) { - files = files.concat((yield walk(loc, relative, ignoreBasenames))); - } - } - - return files; - }); - - return function walk(_x26, _x27) { - return _ref27.apply(this, arguments); - }; -})(); - -let getFileSizeOnDisk = exports.getFileSizeOnDisk = (() => { - var _ref29 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) { - const stat = yield lstat(loc); - const size = stat.size, - blockSize = stat.blksize; - - - return Math.ceil(size / blockSize) * blockSize; - }); - - return function getFileSizeOnDisk(_x28) { - return _ref29.apply(this, arguments); - }; -})(); - -let getEolFromFile = (() => { - var _ref30 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (path) { - if (!(yield exists(path))) { - return undefined; - } - - const buffer = yield readFileBuffer(path); - - for (let i = 0; i < buffer.length; ++i) { - if (buffer[i] === cr) { - return '\r\n'; - } - if (buffer[i] === lf) { - return '\n'; - } - } - return undefined; - }); - - return function getEolFromFile(_x29) { - return _ref30.apply(this, arguments); - }; -})(); - -let writeFilePreservingEol = exports.writeFilePreservingEol = (() => { - var _ref31 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (path, data) { - const eol = (yield getEolFromFile(path)) || (_os || _load_os()).default.EOL; - if (eol !== '\n') { - data = data.replace(/\n/g, eol); - } - yield writeFile(path, data); - }); - - return function writeFilePreservingEol(_x30, _x31) { - return _ref31.apply(this, arguments); - }; -})(); - -let hardlinksWork = exports.hardlinksWork = (() => { - var _ref32 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir) { - const filename = 'test-file' + Math.random(); - const file = (_path || _load_path()).default.join(dir, filename); - const fileLink = (_path || _load_path()).default.join(dir, filename + '-link'); - try { - yield writeFile(file, 'test'); - yield link(file, fileLink); - } catch (err) { - return false; - } finally { - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(file); - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(fileLink); - } - return true; - }); - - return function hardlinksWork(_x32) { - return _ref32.apply(this, arguments); - }; -})(); - -// not a strict polyfill for Node's fs.mkdtemp - - -let makeTempDir = exports.makeTempDir = (() => { - var _ref33 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (prefix) { - const dir = (_path || _load_path()).default.join((_os || _load_os()).default.tmpdir(), `yarn-${prefix || ''}-${Date.now()}-${Math.random()}`); - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dir); - yield mkdirp(dir); - return dir; - }); - - return function makeTempDir(_x33) { - return _ref33.apply(this, arguments); - }; -})(); - -let readFirstAvailableStream = exports.readFirstAvailableStream = (() => { - var _ref34 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (paths) { - for (var _iterator15 = paths, _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : _iterator15[Symbol.iterator]();;) { - var _ref35; - - if (_isArray15) { - if (_i15 >= _iterator15.length) break; - _ref35 = _iterator15[_i15++]; - } else { - _i15 = _iterator15.next(); - if (_i15.done) break; - _ref35 = _i15.value; - } - - const path = _ref35; - - try { - const fd = yield open(path, 'r'); - return (_fs || _load_fs()).default.createReadStream(path, { fd }); - } catch (err) { - // Try the next one - } - } - return null; - }); - - return function readFirstAvailableStream(_x34) { - return _ref34.apply(this, arguments); - }; -})(); - -let getFirstSuitableFolder = exports.getFirstSuitableFolder = (() => { - var _ref36 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (paths, mode = constants.W_OK | constants.X_OK) { - const result = { - skipped: [], - folder: null - }; - - for (var _iterator16 = paths, _isArray16 = Array.isArray(_iterator16), _i16 = 0, _iterator16 = _isArray16 ? _iterator16 : _iterator16[Symbol.iterator]();;) { - var _ref37; - - if (_isArray16) { - if (_i16 >= _iterator16.length) break; - _ref37 = _iterator16[_i16++]; - } else { - _i16 = _iterator16.next(); - if (_i16.done) break; - _ref37 = _i16.value; - } - - const folder = _ref37; - - try { - yield mkdirp(folder); - yield access(folder, mode); - - result.folder = folder; - - return result; - } catch (error) { - result.skipped.push({ - error, - folder - }); - } - } - return result; - }); - - return function getFirstSuitableFolder(_x35) { - return _ref36.apply(this, arguments); - }; -})(); - -exports.copy = copy; -exports.readFile = readFile; -exports.readFileRaw = readFileRaw; -exports.normalizeOS = normalizeOS; - -var _fs; - -function _load_fs() { - return _fs = _interopRequireDefault(__webpack_require__(5)); -} - -var _glob; - -function _load_glob() { - return _glob = _interopRequireDefault(__webpack_require__(99)); -} - -var _os; - -function _load_os() { - return _os = _interopRequireDefault(__webpack_require__(46)); -} - -var _path; - -function _load_path() { - return _path = _interopRequireDefault(__webpack_require__(0)); -} - -var _blockingQueue; - -function _load_blockingQueue() { - return _blockingQueue = _interopRequireDefault(__webpack_require__(110)); -} - -var _promise; - -function _load_promise() { - return _promise = _interopRequireWildcard(__webpack_require__(50)); -} - -var _promise2; - -function _load_promise2() { - return _promise2 = __webpack_require__(50); -} - -var _map; - -function _load_map() { - return _map = _interopRequireDefault(__webpack_require__(29)); -} - -var _fsNormalized; - -function _load_fsNormalized() { - return _fsNormalized = __webpack_require__(218); -} - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -const constants = exports.constants = typeof (_fs || _load_fs()).default.constants !== 'undefined' ? (_fs || _load_fs()).default.constants : { - R_OK: (_fs || _load_fs()).default.R_OK, - W_OK: (_fs || _load_fs()).default.W_OK, - X_OK: (_fs || _load_fs()).default.X_OK -}; - -const lockQueue = exports.lockQueue = new (_blockingQueue || _load_blockingQueue()).default('fs lock'); - -const readFileBuffer = exports.readFileBuffer = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.readFile); -const open = exports.open = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.open); -const writeFile = exports.writeFile = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.writeFile); -const readlink = exports.readlink = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.readlink); -const realpath = exports.realpath = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.realpath); -const readdir = exports.readdir = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.readdir); -const rename = exports.rename = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.rename); -const access = exports.access = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.access); -const stat = exports.stat = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.stat); -const mkdirp = exports.mkdirp = (0, (_promise2 || _load_promise2()).promisify)(__webpack_require__(145)); -const exists = exports.exists = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.exists, true); -const lstat = exports.lstat = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.lstat); -const chmod = exports.chmod = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.chmod); -const link = exports.link = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.link); -const glob = exports.glob = (0, (_promise2 || _load_promise2()).promisify)((_glob || _load_glob()).default); -exports.unlink = (_fsNormalized || _load_fsNormalized()).unlink; - -// fs.copyFile uses the native file copying instructions on the system, performing much better -// than any JS-based solution and consumes fewer resources. Repeated testing to fine tune the -// concurrency level revealed 128 as the sweet spot on a quad-core, 16 CPU Intel system with SSD. - -const CONCURRENT_QUEUE_ITEMS = (_fs || _load_fs()).default.copyFile ? 128 : 4; - -const fsSymlink = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.symlink); -const invariant = __webpack_require__(9); -const stripBOM = __webpack_require__(160); - -const noop = () => {}; - -function copy(src, dest, reporter) { - return copyBulk([{ src, dest }], reporter); -} - -function _readFile(loc, encoding) { - return new Promise((resolve, reject) => { - (_fs || _load_fs()).default.readFile(loc, encoding, function (err, content) { - if (err) { - reject(err); - } else { - resolve(content); - } - }); - }); -} - -function readFile(loc) { - return _readFile(loc, 'utf8').then(normalizeOS); -} - -function readFileRaw(loc) { - return _readFile(loc, 'binary'); -} - -function normalizeOS(body) { - return body.replace(/\r\n/g, '\n'); -} - -const cr = '\r'.charCodeAt(0); -const lf = '\n'.charCodeAt(0); - -/***/ }), -/* 5 */ -/***/ (function(module, exports) { - -module.exports = require("fs"); - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -class MessageError extends Error { - constructor(msg, code) { - super(msg); - this.code = code; - } - -} - -exports.MessageError = MessageError; -class ProcessSpawnError extends MessageError { - constructor(msg, code, process) { - super(msg, code); - this.process = process; - } - -} - -exports.ProcessSpawnError = ProcessSpawnError; -class SecurityError extends MessageError {} - -exports.SecurityError = SecurityError; -class ProcessTermError extends MessageError {} - -exports.ProcessTermError = ProcessTermError; -class ResponseError extends Error { - constructor(msg, responseCode) { - super(msg); - this.responseCode = responseCode; - } - -} - -exports.ResponseError = ResponseError; -class OneTimePasswordError extends Error {} -exports.OneTimePasswordError = OneTimePasswordError; - -/***/ }), -/* 7 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Subscriber; }); -/* unused harmony export SafeSubscriber */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_isFunction__ = __webpack_require__(154); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Observer__ = __webpack_require__(420); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Subscription__ = __webpack_require__(25); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__internal_symbol_rxSubscriber__ = __webpack_require__(321); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__config__ = __webpack_require__(185); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__util_hostReportError__ = __webpack_require__(323); -/** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */ - - - - - - - -var Subscriber = /*@__PURE__*/ (function (_super) { - __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](Subscriber, _super); - function Subscriber(destinationOrNext, error, complete) { - var _this = _super.call(this) || this; - _this.syncErrorValue = null; - _this.syncErrorThrown = false; - _this.syncErrorThrowable = false; - _this.isStopped = false; - _this._parentSubscription = null; - switch (arguments.length) { - case 0: - _this.destination = __WEBPACK_IMPORTED_MODULE_2__Observer__["a" /* empty */]; - break; - case 1: - if (!destinationOrNext) { - _this.destination = __WEBPACK_IMPORTED_MODULE_2__Observer__["a" /* empty */]; - break; - } - if (typeof destinationOrNext === 'object') { - if (destinationOrNext instanceof Subscriber) { - _this.syncErrorThrowable = destinationOrNext.syncErrorThrowable; - _this.destination = destinationOrNext; - destinationOrNext.add(_this); - } - else { - _this.syncErrorThrowable = true; - _this.destination = new SafeSubscriber(_this, destinationOrNext); - } - break; - } - default: - _this.syncErrorThrowable = true; - _this.destination = new SafeSubscriber(_this, destinationOrNext, error, complete); - break; - } - return _this; - } - Subscriber.prototype[__WEBPACK_IMPORTED_MODULE_4__internal_symbol_rxSubscriber__["a" /* rxSubscriber */]] = function () { return this; }; - Subscriber.create = function (next, error, complete) { - var subscriber = new Subscriber(next, error, complete); - subscriber.syncErrorThrowable = false; - return subscriber; - }; - Subscriber.prototype.next = function (value) { - if (!this.isStopped) { - this._next(value); - } - }; - Subscriber.prototype.error = function (err) { - if (!this.isStopped) { - this.isStopped = true; - this._error(err); - } - }; - Subscriber.prototype.complete = function () { - if (!this.isStopped) { - this.isStopped = true; - this._complete(); - } - }; - Subscriber.prototype.unsubscribe = function () { - if (this.closed) { - return; - } - this.isStopped = true; - _super.prototype.unsubscribe.call(this); - }; - Subscriber.prototype._next = function (value) { - this.destination.next(value); - }; - Subscriber.prototype._error = function (err) { - this.destination.error(err); - this.unsubscribe(); - }; - Subscriber.prototype._complete = function () { - this.destination.complete(); - this.unsubscribe(); - }; - Subscriber.prototype._unsubscribeAndRecycle = function () { - var _a = this, _parent = _a._parent, _parents = _a._parents; - this._parent = null; - this._parents = null; - this.unsubscribe(); - this.closed = false; - this.isStopped = false; - this._parent = _parent; - this._parents = _parents; - this._parentSubscription = null; - return this; - }; - return Subscriber; -}(__WEBPACK_IMPORTED_MODULE_3__Subscription__["a" /* Subscription */])); - -var SafeSubscriber = /*@__PURE__*/ (function (_super) { - __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SafeSubscriber, _super); - function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) { - var _this = _super.call(this) || this; - _this._parentSubscriber = _parentSubscriber; - var next; - var context = _this; - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_isFunction__["a" /* isFunction */])(observerOrNext)) { - next = observerOrNext; - } - else if (observerOrNext) { - next = observerOrNext.next; - error = observerOrNext.error; - complete = observerOrNext.complete; - if (observerOrNext !== __WEBPACK_IMPORTED_MODULE_2__Observer__["a" /* empty */]) { - context = Object.create(observerOrNext); - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_isFunction__["a" /* isFunction */])(context.unsubscribe)) { - _this.add(context.unsubscribe.bind(context)); - } - context.unsubscribe = _this.unsubscribe.bind(_this); - } - } - _this._context = context; - _this._next = next; - _this._error = error; - _this._complete = complete; - return _this; - } - SafeSubscriber.prototype.next = function (value) { - if (!this.isStopped && this._next) { - var _parentSubscriber = this._parentSubscriber; - if (!__WEBPACK_IMPORTED_MODULE_5__config__["a" /* config */].useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) { - this.__tryOrUnsub(this._next, value); - } - else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) { - this.unsubscribe(); - } - } - }; - SafeSubscriber.prototype.error = function (err) { - if (!this.isStopped) { - var _parentSubscriber = this._parentSubscriber; - var useDeprecatedSynchronousErrorHandling = __WEBPACK_IMPORTED_MODULE_5__config__["a" /* config */].useDeprecatedSynchronousErrorHandling; - if (this._error) { - if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) { - this.__tryOrUnsub(this._error, err); - this.unsubscribe(); - } - else { - this.__tryOrSetError(_parentSubscriber, this._error, err); - this.unsubscribe(); - } - } - else if (!_parentSubscriber.syncErrorThrowable) { - this.unsubscribe(); - if (useDeprecatedSynchronousErrorHandling) { - throw err; - } - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__util_hostReportError__["a" /* hostReportError */])(err); - } - else { - if (useDeprecatedSynchronousErrorHandling) { - _parentSubscriber.syncErrorValue = err; - _parentSubscriber.syncErrorThrown = true; - } - else { - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__util_hostReportError__["a" /* hostReportError */])(err); - } - this.unsubscribe(); - } - } - }; - SafeSubscriber.prototype.complete = function () { - var _this = this; - if (!this.isStopped) { - var _parentSubscriber = this._parentSubscriber; - if (this._complete) { - var wrappedComplete = function () { return _this._complete.call(_this._context); }; - if (!__WEBPACK_IMPORTED_MODULE_5__config__["a" /* config */].useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) { - this.__tryOrUnsub(wrappedComplete); - this.unsubscribe(); - } - else { - this.__tryOrSetError(_parentSubscriber, wrappedComplete); - this.unsubscribe(); - } - } - else { - this.unsubscribe(); - } - } - }; - SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) { - try { - fn.call(this._context, value); - } - catch (err) { - this.unsubscribe(); - if (__WEBPACK_IMPORTED_MODULE_5__config__["a" /* config */].useDeprecatedSynchronousErrorHandling) { - throw err; - } - else { - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__util_hostReportError__["a" /* hostReportError */])(err); - } - } - }; - SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) { - if (!__WEBPACK_IMPORTED_MODULE_5__config__["a" /* config */].useDeprecatedSynchronousErrorHandling) { - throw new Error('bad call'); - } - try { - fn.call(this._context, value); - } - catch (err) { - if (__WEBPACK_IMPORTED_MODULE_5__config__["a" /* config */].useDeprecatedSynchronousErrorHandling) { - parent.syncErrorValue = err; - parent.syncErrorThrown = true; - return true; - } - else { - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__util_hostReportError__["a" /* hostReportError */])(err); - return true; - } - } - return false; - }; - SafeSubscriber.prototype._unsubscribe = function () { - var _parentSubscriber = this._parentSubscriber; - this._context = null; - this._parentSubscriber = null; - _parentSubscriber.unsubscribe(); - }; - return SafeSubscriber; -}(Subscriber)); - -//# sourceMappingURL=Subscriber.js.map - - -/***/ }), -/* 8 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getPathKey = getPathKey; -const os = __webpack_require__(46); -const path = __webpack_require__(0); -const userHome = __webpack_require__(67).default; - -var _require = __webpack_require__(225); - -const getCacheDir = _require.getCacheDir, - getConfigDir = _require.getConfigDir, - getDataDir = _require.getDataDir; - -const isWebpackBundle = __webpack_require__(278); - -const DEPENDENCY_TYPES = exports.DEPENDENCY_TYPES = ['devDependencies', 'dependencies', 'optionalDependencies', 'peerDependencies']; -const OWNED_DEPENDENCY_TYPES = exports.OWNED_DEPENDENCY_TYPES = ['devDependencies', 'dependencies', 'optionalDependencies']; - -const RESOLUTIONS = exports.RESOLUTIONS = 'resolutions'; -const MANIFEST_FIELDS = exports.MANIFEST_FIELDS = [RESOLUTIONS, ...DEPENDENCY_TYPES]; - -const SUPPORTED_NODE_VERSIONS = exports.SUPPORTED_NODE_VERSIONS = '^4.8.0 || ^5.7.0 || ^6.2.2 || >=8.0.0'; - -const YARN_REGISTRY = exports.YARN_REGISTRY = 'https://registry.yarnpkg.com'; -const NPM_REGISTRY_RE = exports.NPM_REGISTRY_RE = /https?:\/\/registry\.npmjs\.org/g; - -const YARN_DOCS = exports.YARN_DOCS = 'https://yarnpkg.com/en/docs/cli/'; -const YARN_INSTALLER_SH = exports.YARN_INSTALLER_SH = 'https://yarnpkg.com/install.sh'; -const YARN_INSTALLER_MSI = exports.YARN_INSTALLER_MSI = 'https://yarnpkg.com/latest.msi'; - -const SELF_UPDATE_VERSION_URL = exports.SELF_UPDATE_VERSION_URL = 'https://yarnpkg.com/latest-version'; - -// cache version, bump whenever we make backwards incompatible changes -const CACHE_VERSION = exports.CACHE_VERSION = 6; - -// lockfile version, bump whenever we make backwards incompatible changes -const LOCKFILE_VERSION = exports.LOCKFILE_VERSION = 1; - -// max amount of network requests to perform concurrently -const NETWORK_CONCURRENCY = exports.NETWORK_CONCURRENCY = 8; - -// HTTP timeout used when downloading packages -const NETWORK_TIMEOUT = exports.NETWORK_TIMEOUT = 30 * 1000; // in milliseconds - -// max amount of child processes to execute concurrently -const CHILD_CONCURRENCY = exports.CHILD_CONCURRENCY = 5; - -const REQUIRED_PACKAGE_KEYS = exports.REQUIRED_PACKAGE_KEYS = ['name', 'version', '_uid']; - -function getPreferredCacheDirectories() { - const preferredCacheDirectories = [getCacheDir()]; - - if (process.getuid) { - // $FlowFixMe: process.getuid exists, dammit - preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache-${process.getuid()}`)); - } - - preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache`)); - - return preferredCacheDirectories; -} - -const PREFERRED_MODULE_CACHE_DIRECTORIES = exports.PREFERRED_MODULE_CACHE_DIRECTORIES = getPreferredCacheDirectories(); -const CONFIG_DIRECTORY = exports.CONFIG_DIRECTORY = getConfigDir(); -const DATA_DIRECTORY = exports.DATA_DIRECTORY = getDataDir(); -const LINK_REGISTRY_DIRECTORY = exports.LINK_REGISTRY_DIRECTORY = path.join(DATA_DIRECTORY, 'link'); -const GLOBAL_MODULE_DIRECTORY = exports.GLOBAL_MODULE_DIRECTORY = path.join(DATA_DIRECTORY, 'global'); - -const NODE_BIN_PATH = exports.NODE_BIN_PATH = process.execPath; -const YARN_BIN_PATH = exports.YARN_BIN_PATH = getYarnBinPath(); - -// Webpack needs to be configured with node.__dirname/__filename = false -function getYarnBinPath() { - if (isWebpackBundle) { - return __filename; - } else { - return path.join(__dirname, '..', 'bin', 'yarn.js'); - } -} - -const NODE_MODULES_FOLDER = exports.NODE_MODULES_FOLDER = 'node_modules'; -const NODE_PACKAGE_JSON = exports.NODE_PACKAGE_JSON = 'package.json'; - -const PNP_FILENAME = exports.PNP_FILENAME = '.pnp.js'; - -const POSIX_GLOBAL_PREFIX = exports.POSIX_GLOBAL_PREFIX = `${process.env.DESTDIR || ''}/usr/local`; -const FALLBACK_GLOBAL_PREFIX = exports.FALLBACK_GLOBAL_PREFIX = path.join(userHome, '.yarn'); - -const META_FOLDER = exports.META_FOLDER = '.yarn-meta'; -const INTEGRITY_FILENAME = exports.INTEGRITY_FILENAME = '.yarn-integrity'; -const LOCKFILE_FILENAME = exports.LOCKFILE_FILENAME = 'yarn.lock'; -const METADATA_FILENAME = exports.METADATA_FILENAME = '.yarn-metadata.json'; -const TARBALL_FILENAME = exports.TARBALL_FILENAME = '.yarn-tarball.tgz'; -const CLEAN_FILENAME = exports.CLEAN_FILENAME = '.yarnclean'; - -const NPM_LOCK_FILENAME = exports.NPM_LOCK_FILENAME = 'package-lock.json'; -const NPM_SHRINKWRAP_FILENAME = exports.NPM_SHRINKWRAP_FILENAME = 'npm-shrinkwrap.json'; - -const DEFAULT_INDENT = exports.DEFAULT_INDENT = ' '; -const SINGLE_INSTANCE_PORT = exports.SINGLE_INSTANCE_PORT = 31997; -const SINGLE_INSTANCE_FILENAME = exports.SINGLE_INSTANCE_FILENAME = '.yarn-single-instance'; - -const ENV_PATH_KEY = exports.ENV_PATH_KEY = getPathKey(process.platform, process.env); - -function getPathKey(platform, env) { - let pathKey = 'PATH'; - - // windows calls its path "Path" usually, but this is not guaranteed. - if (platform === 'win32') { - pathKey = 'Path'; - - for (const key in env) { - if (key.toLowerCase() === 'path') { - pathKey = key; - } - } - } - - return pathKey; -} - -const VERSION_COLOR_SCHEME = exports.VERSION_COLOR_SCHEME = { - major: 'red', - premajor: 'red', - minor: 'yellow', - preminor: 'yellow', - patch: 'green', - prepatch: 'green', - prerelease: 'red', - unchanged: 'white', - unknown: 'red' -}; - -/***/ }), -/* 9 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * Copyright (c) 2013-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - - - -/** - * Use invariant() to assert state which your program assumes to be true. - * - * Provide sprintf-style format (only %s is supported) and arguments - * to provide information about what broke and what you were - * expecting. - * - * The invariant message will be stripped in production, but the invariant - * will remain to ensure logic does not differ in production. - */ - -var NODE_ENV = process.env.NODE_ENV; - -var invariant = function(condition, format, a, b, c, d, e, f) { - if (NODE_ENV !== 'production') { - if (format === undefined) { - throw new Error('invariant requires an error message argument'); - } - } - - if (!condition) { - var error; - if (format === undefined) { - error = new Error( - 'Minified exception occurred; use the non-minified dev environment ' + - 'for the full error message and additional helpful warnings.' - ); - } else { - var args = [a, b, c, d, e, f]; - var argIndex = 0; - error = new Error( - format.replace(/%s/g, function() { return args[argIndex++]; }) - ); - error.name = 'Invariant Violation'; - } - - error.framesToPop = 1; // we don't care about invariant's own frame - throw error; - } -}; - -module.exports = invariant; - - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var YAMLException = __webpack_require__(54); - -var TYPE_CONSTRUCTOR_OPTIONS = [ - 'kind', - 'resolve', - 'construct', - 'instanceOf', - 'predicate', - 'represent', - 'defaultStyle', - 'styleAliases' -]; - -var YAML_NODE_KINDS = [ - 'scalar', - 'sequence', - 'mapping' -]; - -function compileStyleAliases(map) { - var result = {}; - - if (map !== null) { - Object.keys(map).forEach(function (style) { - map[style].forEach(function (alias) { - result[String(alias)] = style; - }); - }); - } - - return result; -} - -function Type(tag, options) { - options = options || {}; - - Object.keys(options).forEach(function (name) { - if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { - throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); - } - }); - - // TODO: Add tag format check. - this.tag = tag; - this.kind = options['kind'] || null; - this.resolve = options['resolve'] || function () { return true; }; - this.construct = options['construct'] || function (data) { return data; }; - this.instanceOf = options['instanceOf'] || null; - this.predicate = options['predicate'] || null; - this.represent = options['represent'] || null; - this.defaultStyle = options['defaultStyle'] || null; - this.styleAliases = compileStyleAliases(options['styleAliases'] || null); - - if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { - throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); - } -} - -module.exports = Type; - - -/***/ }), -/* 11 */ -/***/ (function(module, exports) { - -module.exports = require("crypto"); - -/***/ }), -/* 12 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Observable; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_canReportError__ = __webpack_require__(322); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_toSubscriber__ = __webpack_require__(932); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__internal_symbol_observable__ = __webpack_require__(117); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_pipe__ = __webpack_require__(324); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__config__ = __webpack_require__(185); -/** PURE_IMPORTS_START _util_canReportError,_util_toSubscriber,_internal_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */ - - - - - -var Observable = /*@__PURE__*/ (function () { - function Observable(subscribe) { - this._isScalar = false; - if (subscribe) { - this._subscribe = subscribe; - } - } - Observable.prototype.lift = function (operator) { - var observable = new Observable(); - observable.source = this; - observable.operator = operator; - return observable; - }; - Observable.prototype.subscribe = function (observerOrNext, error, complete) { - var operator = this.operator; - var sink = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_toSubscriber__["a" /* toSubscriber */])(observerOrNext, error, complete); - if (operator) { - operator.call(sink, this.source); - } - else { - sink.add(this.source || (__WEBPACK_IMPORTED_MODULE_4__config__["a" /* config */].useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ? - this._subscribe(sink) : - this._trySubscribe(sink)); - } - if (__WEBPACK_IMPORTED_MODULE_4__config__["a" /* config */].useDeprecatedSynchronousErrorHandling) { - if (sink.syncErrorThrowable) { - sink.syncErrorThrowable = false; - if (sink.syncErrorThrown) { - throw sink.syncErrorValue; - } - } - } - return sink; - }; - Observable.prototype._trySubscribe = function (sink) { - try { - return this._subscribe(sink); - } - catch (err) { - if (__WEBPACK_IMPORTED_MODULE_4__config__["a" /* config */].useDeprecatedSynchronousErrorHandling) { - sink.syncErrorThrown = true; - sink.syncErrorValue = err; - } - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util_canReportError__["a" /* canReportError */])(sink)) { - sink.error(err); - } - else { - console.warn(err); - } - } - }; - Observable.prototype.forEach = function (next, promiseCtor) { - var _this = this; - promiseCtor = getPromiseCtor(promiseCtor); - return new promiseCtor(function (resolve, reject) { - var subscription; - subscription = _this.subscribe(function (value) { - try { - next(value); - } - catch (err) { - reject(err); - if (subscription) { - subscription.unsubscribe(); - } - } - }, reject, resolve); - }); - }; - Observable.prototype._subscribe = function (subscriber) { - var source = this.source; - return source && source.subscribe(subscriber); - }; - Observable.prototype[__WEBPACK_IMPORTED_MODULE_2__internal_symbol_observable__["a" /* observable */]] = function () { - return this; - }; - Observable.prototype.pipe = function () { - var operations = []; - for (var _i = 0; _i < arguments.length; _i++) { - operations[_i] = arguments[_i]; - } - if (operations.length === 0) { - return this; - } - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_pipe__["b" /* pipeFromArray */])(operations)(this); - }; - Observable.prototype.toPromise = function (promiseCtor) { - var _this = this; - promiseCtor = getPromiseCtor(promiseCtor); - return new promiseCtor(function (resolve, reject) { - var value; - _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); }); - }); - }; - Observable.create = function (subscribe) { - return new Observable(subscribe); - }; - return Observable; -}()); - -function getPromiseCtor(promiseCtor) { - if (!promiseCtor) { - promiseCtor = __WEBPACK_IMPORTED_MODULE_4__config__["a" /* config */].Promise || Promise; - } - if (!promiseCtor) { - throw new Error('no Promise impl found'); - } - return promiseCtor; -} -//# sourceMappingURL=Observable.js.map - - -/***/ }), -/* 13 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return OuterSubscriber; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -var OuterSubscriber = /*@__PURE__*/ (function (_super) { - __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](OuterSubscriber, _super); - function OuterSubscriber() { - return _super !== null && _super.apply(this, arguments) || this; - } - OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - this.destination.next(innerValue); - }; - OuterSubscriber.prototype.notifyError = function (error, innerSub) { - this.destination.error(error); - }; - OuterSubscriber.prototype.notifyComplete = function (innerSub) { - this.destination.complete(); - }; - return OuterSubscriber; -}(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */])); - -//# sourceMappingURL=OuterSubscriber.js.map - - -/***/ }), -/* 14 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["a"] = subscribeToResult; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__InnerSubscriber__ = __webpack_require__(84); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__subscribeTo__ = __webpack_require__(446); -/** PURE_IMPORTS_START _InnerSubscriber,_subscribeTo PURE_IMPORTS_END */ - - -function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, destination) { - if (destination === void 0) { - destination = new __WEBPACK_IMPORTED_MODULE_0__InnerSubscriber__["a" /* InnerSubscriber */](outerSubscriber, outerValue, outerIndex); - } - if (destination.closed) { - return; - } - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__subscribeTo__["a" /* subscribeTo */])(result)(destination); -} -//# sourceMappingURL=subscribeToResult.js.map - - -/***/ }), -/* 15 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* eslint-disable node/no-deprecated-api */ - - - -var buffer = __webpack_require__(64) -var Buffer = buffer.Buffer - -var safer = {} - -var key - -for (key in buffer) { - if (!buffer.hasOwnProperty(key)) continue - if (key === 'SlowBuffer' || key === 'Buffer') continue - safer[key] = buffer[key] -} - -var Safer = safer.Buffer = {} -for (key in Buffer) { - if (!Buffer.hasOwnProperty(key)) continue - if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue - Safer[key] = Buffer[key] -} - -safer.Buffer.prototype = Buffer.prototype - -if (!Safer.from || Safer.from === Uint8Array.from) { - Safer.from = function (value, encodingOrOffset, length) { - if (typeof value === 'number') { - throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value) - } - if (value && typeof value.length === 'undefined') { - throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value) - } - return Buffer(value, encodingOrOffset, length) - } -} - -if (!Safer.alloc) { - Safer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) - } - if (size < 0 || size >= 2 * (1 << 30)) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') - } - var buf = Buffer(size) - if (!fill || fill.length === 0) { - buf.fill(0) - } else if (typeof encoding === 'string') { - buf.fill(fill, encoding) - } else { - buf.fill(fill) - } - return buf - } -} - -if (!safer.kStringMaxLength) { - try { - safer.kStringMaxLength = process.binding('buffer').kStringMaxLength - } catch (e) { - // we can't determine kStringMaxLength in environments where process.binding - // is unsupported, so let's not set it - } -} - -if (!safer.constants) { - safer.constants = { - MAX_LENGTH: safer.kMaxLength - } - if (safer.kStringMaxLength) { - safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength - } -} - -module.exports = safer - - -/***/ }), -/* 16 */ -/***/ (function(module, exports, __webpack_require__) { - -// Copyright (c) 2012, Mark Cavage. All rights reserved. -// Copyright 2015 Joyent, Inc. - -var assert = __webpack_require__(28); -var Stream = __webpack_require__(23).Stream; -var util = __webpack_require__(3); - - -///--- Globals - -/* JSSTYLED */ -var UUID_REGEXP = /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/; - - -///--- Internal - -function _capitalize(str) { - return (str.charAt(0).toUpperCase() + str.slice(1)); -} - -function _toss(name, expected, oper, arg, actual) { - throw new assert.AssertionError({ - message: util.format('%s (%s) is required', name, expected), - actual: (actual === undefined) ? typeof (arg) : actual(arg), - expected: expected, - operator: oper || '===', - stackStartFunction: _toss.caller - }); -} - -function _getClass(arg) { - return (Object.prototype.toString.call(arg).slice(8, -1)); -} - -function noop() { - // Why even bother with asserts? -} - - -///--- Exports - -var types = { - bool: { - check: function (arg) { return typeof (arg) === 'boolean'; } - }, - func: { - check: function (arg) { return typeof (arg) === 'function'; } - }, - string: { - check: function (arg) { return typeof (arg) === 'string'; } - }, - object: { - check: function (arg) { - return typeof (arg) === 'object' && arg !== null; - } - }, - number: { - check: function (arg) { - return typeof (arg) === 'number' && !isNaN(arg); - } - }, - finite: { - check: function (arg) { - return typeof (arg) === 'number' && !isNaN(arg) && isFinite(arg); - } - }, - buffer: { - check: function (arg) { return Buffer.isBuffer(arg); }, - operator: 'Buffer.isBuffer' - }, - array: { - check: function (arg) { return Array.isArray(arg); }, - operator: 'Array.isArray' - }, - stream: { - check: function (arg) { return arg instanceof Stream; }, - operator: 'instanceof', - actual: _getClass - }, - date: { - check: function (arg) { return arg instanceof Date; }, - operator: 'instanceof', - actual: _getClass - }, - regexp: { - check: function (arg) { return arg instanceof RegExp; }, - operator: 'instanceof', - actual: _getClass - }, - uuid: { - check: function (arg) { - return typeof (arg) === 'string' && UUID_REGEXP.test(arg); - }, - operator: 'isUUID' - } -}; - -function _setExports(ndebug) { - var keys = Object.keys(types); - var out; - - /* re-export standard assert */ - if (process.env.NODE_NDEBUG) { - out = noop; - } else { - out = function (arg, msg) { - if (!arg) { - _toss(msg, 'true', arg); - } - }; - } - - /* standard checks */ - keys.forEach(function (k) { - if (ndebug) { - out[k] = noop; - return; - } - var type = types[k]; - out[k] = function (arg, msg) { - if (!type.check(arg)) { - _toss(msg, k, type.operator, arg, type.actual); - } - }; - }); - - /* optional checks */ - keys.forEach(function (k) { - var name = 'optional' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - out[name] = function (arg, msg) { - if (arg === undefined || arg === null) { - return; - } - if (!type.check(arg)) { - _toss(msg, k, type.operator, arg, type.actual); - } - }; - }); - - /* arrayOf checks */ - keys.forEach(function (k) { - var name = 'arrayOf' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - var expected = '[' + k + ']'; - out[name] = function (arg, msg) { - if (!Array.isArray(arg)) { - _toss(msg, expected, type.operator, arg, type.actual); - } - var i; - for (i = 0; i < arg.length; i++) { - if (!type.check(arg[i])) { - _toss(msg, expected, type.operator, arg, type.actual); - } - } - }; - }); - - /* optionalArrayOf checks */ - keys.forEach(function (k) { - var name = 'optionalArrayOf' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - var expected = '[' + k + ']'; - out[name] = function (arg, msg) { - if (arg === undefined || arg === null) { - return; - } - if (!Array.isArray(arg)) { - _toss(msg, expected, type.operator, arg, type.actual); - } - var i; - for (i = 0; i < arg.length; i++) { - if (!type.check(arg[i])) { - _toss(msg, expected, type.operator, arg, type.actual); - } - } - }; - }); - - /* re-export built-in assertions */ - Object.keys(assert).forEach(function (k) { - if (k === 'AssertionError') { - out[k] = assert[k]; - return; - } - if (ndebug) { - out[k] = noop; - return; - } - out[k] = assert[k]; - }); - - /* export ourselves (for unit tests _only_) */ - out._setExports = _setExports; - - return out; -} - -module.exports = _setExports(process.env.NODE_NDEBUG); - - -/***/ }), -/* 17 */ -/***/ (function(module, exports) { - -// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 -var global = module.exports = typeof window != 'undefined' && window.Math == Math - ? window : typeof self != 'undefined' && self.Math == Math ? self - // eslint-disable-next-line no-new-func - : Function('return this')(); -if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef - - -/***/ }), -/* 18 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.sortAlpha = sortAlpha; -exports.sortOptionsByFlags = sortOptionsByFlags; -exports.entries = entries; -exports.removePrefix = removePrefix; -exports.removeSuffix = removeSuffix; -exports.addSuffix = addSuffix; -exports.hyphenate = hyphenate; -exports.camelCase = camelCase; -exports.compareSortedArrays = compareSortedArrays; -exports.sleep = sleep; -const _camelCase = __webpack_require__(230); - -function sortAlpha(a, b) { - // sort alphabetically in a deterministic way - const shortLen = Math.min(a.length, b.length); - for (let i = 0; i < shortLen; i++) { - const aChar = a.charCodeAt(i); - const bChar = b.charCodeAt(i); - if (aChar !== bChar) { - return aChar - bChar; - } - } - return a.length - b.length; -} - -function sortOptionsByFlags(a, b) { - const aOpt = a.flags.replace(/-/g, ''); - const bOpt = b.flags.replace(/-/g, ''); - return sortAlpha(aOpt, bOpt); -} - -function entries(obj) { - const entries = []; - if (obj) { - for (const key in obj) { - entries.push([key, obj[key]]); - } - } - return entries; -} - -function removePrefix(pattern, prefix) { - if (pattern.startsWith(prefix)) { - pattern = pattern.slice(prefix.length); - } - - return pattern; -} - -function removeSuffix(pattern, suffix) { - if (pattern.endsWith(suffix)) { - return pattern.slice(0, -suffix.length); - } - - return pattern; -} - -function addSuffix(pattern, suffix) { - if (!pattern.endsWith(suffix)) { - return pattern + suffix; - } - - return pattern; -} - -function hyphenate(str) { - return str.replace(/[A-Z]/g, match => { - return '-' + match.charAt(0).toLowerCase(); - }); -} - -function camelCase(str) { - if (/[A-Z]/.test(str)) { - return null; - } else { - return _camelCase(str); - } -} - -function compareSortedArrays(array1, array2) { - if (array1.length !== array2.length) { - return false; - } - for (let i = 0, len = array1.length; i < len; i++) { - if (array1[i] !== array2[i]) { - return false; - } - } - return true; -} - -function sleep(ms) { - return new Promise(resolve => { - setTimeout(resolve, ms); - }); -} - -/***/ }), -/* 19 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.stringify = exports.parse = undefined; - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); -} - -var _parse; - -function _load_parse() { - return _parse = __webpack_require__(105); -} - -Object.defineProperty(exports, 'parse', { - enumerable: true, - get: function get() { - return _interopRequireDefault(_parse || _load_parse()).default; - } -}); - -var _stringify; - -function _load_stringify() { - return _stringify = __webpack_require__(199); -} - -Object.defineProperty(exports, 'stringify', { - enumerable: true, - get: function get() { - return _interopRequireDefault(_stringify || _load_stringify()).default; - } -}); -exports.implodeEntry = implodeEntry; -exports.explodeEntry = explodeEntry; - -var _misc; - -function _load_misc() { - return _misc = __webpack_require__(18); -} - -var _normalizePattern; - -function _load_normalizePattern() { - return _normalizePattern = __webpack_require__(37); -} - -var _parse2; - -function _load_parse2() { - return _parse2 = _interopRequireDefault(__webpack_require__(105)); -} - -var _constants; - -function _load_constants() { - return _constants = __webpack_require__(8); -} - -var _fs; - -function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); -} - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -const invariant = __webpack_require__(9); - -const path = __webpack_require__(0); -const ssri = __webpack_require__(65); - -function getName(pattern) { - return (0, (_normalizePattern || _load_normalizePattern()).normalizePattern)(pattern).name; -} - -function blankObjectUndefined(obj) { - return obj && Object.keys(obj).length ? obj : undefined; -} - -function keyForRemote(remote) { - return remote.resolved || (remote.reference && remote.hash ? `${remote.reference}#${remote.hash}` : null); -} - -function serializeIntegrity(integrity) { - // We need this because `Integrity.toString()` does not use sorting to ensure a stable string output - // See https://git.io/vx2Hy - return integrity.toString().split(' ').sort().join(' '); -} - -function implodeEntry(pattern, obj) { - const inferredName = getName(pattern); - const integrity = obj.integrity ? serializeIntegrity(obj.integrity) : ''; - const imploded = { - name: inferredName === obj.name ? undefined : obj.name, - version: obj.version, - uid: obj.uid === obj.version ? undefined : obj.uid, - resolved: obj.resolved, - registry: obj.registry === 'npm' ? undefined : obj.registry, - dependencies: blankObjectUndefined(obj.dependencies), - optionalDependencies: blankObjectUndefined(obj.optionalDependencies), - permissions: blankObjectUndefined(obj.permissions), - prebuiltVariants: blankObjectUndefined(obj.prebuiltVariants) - }; - if (integrity) { - imploded.integrity = integrity; - } - return imploded; -} - -function explodeEntry(pattern, obj) { - obj.optionalDependencies = obj.optionalDependencies || {}; - obj.dependencies = obj.dependencies || {}; - obj.uid = obj.uid || obj.version; - obj.permissions = obj.permissions || {}; - obj.registry = obj.registry || 'npm'; - obj.name = obj.name || getName(pattern); - const integrity = obj.integrity; - if (integrity && integrity.isIntegrity) { - obj.integrity = ssri.parse(integrity); - } - return obj; -} - -class Lockfile { - constructor({ cache, source, parseResultType } = {}) { - this.source = source || ''; - this.cache = cache; - this.parseResultType = parseResultType; - } - - // source string if the `cache` was parsed - - - // if true, we're parsing an old yarn file and need to update integrity fields - hasEntriesExistWithoutIntegrity() { - if (!this.cache) { - return false; - } - - for (const key in this.cache) { - // $FlowFixMe - `this.cache` is clearly defined at this point - if (!/^.*@(file:|http)/.test(key) && this.cache[key] && !this.cache[key].integrity) { - return true; - } - } - - return false; - } - - static fromDirectory(dir, reporter) { - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - // read the manifest in this directory - const lockfileLoc = path.join(dir, (_constants || _load_constants()).LOCKFILE_FILENAME); - - let lockfile; - let rawLockfile = ''; - let parseResult; - - if (yield (_fs || _load_fs()).exists(lockfileLoc)) { - rawLockfile = yield (_fs || _load_fs()).readFile(lockfileLoc); - parseResult = (0, (_parse2 || _load_parse2()).default)(rawLockfile, lockfileLoc); - - if (reporter) { - if (parseResult.type === 'merge') { - reporter.info(reporter.lang('lockfileMerged')); - } else if (parseResult.type === 'conflict') { - reporter.warn(reporter.lang('lockfileConflict')); - } - } - - lockfile = parseResult.object; - } else if (reporter) { - reporter.info(reporter.lang('noLockfileFound')); - } - - if (lockfile && lockfile.__metadata) { - const lockfilev2 = lockfile; - lockfile = {}; - } - - return new Lockfile({ cache: lockfile, source: rawLockfile, parseResultType: parseResult && parseResult.type }); - })(); - } - - getLocked(pattern) { - const cache = this.cache; - if (!cache) { - return undefined; - } - - const shrunk = pattern in cache && cache[pattern]; - - if (typeof shrunk === 'string') { - return this.getLocked(shrunk); - } else if (shrunk) { - explodeEntry(pattern, shrunk); - return shrunk; - } - - return undefined; - } - - removePattern(pattern) { - const cache = this.cache; - if (!cache) { - return; - } - delete cache[pattern]; - } - - getLockfile(patterns) { - const lockfile = {}; - const seen = new Map(); - - // order by name so that lockfile manifest is assigned to the first dependency with this manifest - // the others that have the same remoteKey will just refer to the first - // ordering allows for consistency in lockfile when it is serialized - const sortedPatternsKeys = Object.keys(patterns).sort((_misc || _load_misc()).sortAlpha); - - for (var _iterator = sortedPatternsKeys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } - - const pattern = _ref; - - const pkg = patterns[pattern]; - const remote = pkg._remote, - ref = pkg._reference; - - invariant(ref, 'Package is missing a reference'); - invariant(remote, 'Package is missing a remote'); - - const remoteKey = keyForRemote(remote); - const seenPattern = remoteKey && seen.get(remoteKey); - if (seenPattern) { - // no point in duplicating it - lockfile[pattern] = seenPattern; - - // if we're relying on our name being inferred and two of the patterns have - // different inferred names then we need to set it - if (!seenPattern.name && getName(pattern) !== pkg.name) { - seenPattern.name = pkg.name; - } - continue; - } - const obj = implodeEntry(pattern, { - name: pkg.name, - version: pkg.version, - uid: pkg._uid, - resolved: remote.resolved, - integrity: remote.integrity, - registry: remote.registry, - dependencies: pkg.dependencies, - peerDependencies: pkg.peerDependencies, - optionalDependencies: pkg.optionalDependencies, - permissions: ref.permissions, - prebuiltVariants: pkg.prebuiltVariants - }); - - lockfile[pattern] = obj; - - if (remoteKey) { - seen.set(remoteKey, obj); - } - } - - return lockfile; - } -} -exports.default = Lockfile; - -/***/ }), -/* 20 */ -/***/ (function(module, exports, __webpack_require__) { - -var store = __webpack_require__(133)('wks'); -var uid = __webpack_require__(137); -var Symbol = __webpack_require__(17).Symbol; -var USE_SYMBOL = typeof Symbol == 'function'; - -var $exports = module.exports = function (name) { - return store[name] || (store[name] = - USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); -}; - -$exports.store = store; - - -/***/ }), -/* 21 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _assign = __webpack_require__(591); - -var _assign2 = _interopRequireDefault(_assign); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = _assign2.default || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - - return target; -}; - -/***/ }), -/* 22 */ -/***/ (function(module, exports) { - -exports = module.exports = SemVer; - -// The debug function is excluded entirely from the minified version. -/* nomin */ var debug; -/* nomin */ if (typeof process === 'object' && - /* nomin */ process.env && - /* nomin */ process.env.NODE_DEBUG && - /* nomin */ /\bsemver\b/i.test(process.env.NODE_DEBUG)) - /* nomin */ debug = function() { - /* nomin */ var args = Array.prototype.slice.call(arguments, 0); - /* nomin */ args.unshift('SEMVER'); - /* nomin */ console.log.apply(console, args); - /* nomin */ }; -/* nomin */ else - /* nomin */ debug = function() {}; - -// Note: this is the semver.org version of the spec that it implements -// Not necessarily the package version of this code. -exports.SEMVER_SPEC_VERSION = '2.0.0'; - -var MAX_LENGTH = 256; -var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; - -// Max safe segment length for coercion. -var MAX_SAFE_COMPONENT_LENGTH = 16; - -// The actual regexps go on exports.re -var re = exports.re = []; -var src = exports.src = []; -var R = 0; - -// The following Regular Expressions can be used for tokenizing, -// validating, and parsing SemVer version strings. - -// ## Numeric Identifier -// A single `0`, or a non-zero digit followed by zero or more digits. - -var NUMERICIDENTIFIER = R++; -src[NUMERICIDENTIFIER] = '0|[1-9]\\d*'; -var NUMERICIDENTIFIERLOOSE = R++; -src[NUMERICIDENTIFIERLOOSE] = '[0-9]+'; - - -// ## Non-numeric Identifier -// Zero or more digits, followed by a letter or hyphen, and then zero or -// more letters, digits, or hyphens. - -var NONNUMERICIDENTIFIER = R++; -src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'; - - -// ## Main Version -// Three dot-separated numeric identifiers. - -var MAINVERSION = R++; -src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' + - '(' + src[NUMERICIDENTIFIER] + ')\\.' + - '(' + src[NUMERICIDENTIFIER] + ')'; - -var MAINVERSIONLOOSE = R++; -src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[NUMERICIDENTIFIERLOOSE] + ')'; - -// ## Pre-release Version Identifier -// A numeric identifier, or a non-numeric identifier. - -var PRERELEASEIDENTIFIER = R++; -src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] + - '|' + src[NONNUMERICIDENTIFIER] + ')'; - -var PRERELEASEIDENTIFIERLOOSE = R++; -src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] + - '|' + src[NONNUMERICIDENTIFIER] + ')'; - - -// ## Pre-release Version -// Hyphen, followed by one or more dot-separated pre-release version -// identifiers. - -var PRERELEASE = R++; -src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] + - '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))'; - -var PRERELEASELOOSE = R++; -src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] + - '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'; - -// ## Build Metadata Identifier -// Any combination of digits, letters, or hyphens. - -var BUILDIDENTIFIER = R++; -src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'; - -// ## Build Metadata -// Plus sign, followed by one or more period-separated build metadata -// identifiers. - -var BUILD = R++; -src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] + - '(?:\\.' + src[BUILDIDENTIFIER] + ')*))'; - - -// ## Full Version String -// A main version, followed optionally by a pre-release version and -// build metadata. - -// Note that the only major, minor, patch, and pre-release sections of -// the version string are capturing groups. The build metadata is not a -// capturing group, because it should not ever be used in version -// comparison. - -var FULL = R++; -var FULLPLAIN = 'v?' + src[MAINVERSION] + - src[PRERELEASE] + '?' + - src[BUILD] + '?'; - -src[FULL] = '^' + FULLPLAIN + '$'; - -// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. -// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty -// common in the npm registry. -var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] + - src[PRERELEASELOOSE] + '?' + - src[BUILD] + '?'; - -var LOOSE = R++; -src[LOOSE] = '^' + LOOSEPLAIN + '$'; - -var GTLT = R++; -src[GTLT] = '((?:<|>)?=?)'; - -// Something like "2.*" or "1.2.x". -// Note that "x.x" is a valid xRange identifer, meaning "any version" -// Only the first item is strictly required. -var XRANGEIDENTIFIERLOOSE = R++; -src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'; -var XRANGEIDENTIFIER = R++; -src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*'; - -var XRANGEPLAIN = R++; -src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + - '(?:' + src[PRERELEASE] + ')?' + - src[BUILD] + '?' + - ')?)?'; - -var XRANGEPLAINLOOSE = R++; -src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + - '(?:' + src[PRERELEASELOOSE] + ')?' + - src[BUILD] + '?' + - ')?)?'; - -var XRANGE = R++; -src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$'; -var XRANGELOOSE = R++; -src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$'; - -// Coercion. -// Extract anything that could conceivably be a part of a valid semver -var COERCE = R++; -src[COERCE] = '(?:^|[^\\d])' + - '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + - '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + - '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + - '(?:$|[^\\d])'; - -// Tilde ranges. -// Meaning is "reasonably at or greater than" -var LONETILDE = R++; -src[LONETILDE] = '(?:~>?)'; - -var TILDETRIM = R++; -src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+'; -re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g'); -var tildeTrimReplace = '$1~'; - -var TILDE = R++; -src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'; -var TILDELOOSE = R++; -src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'; - -// Caret ranges. -// Meaning is "at least and backwards compatible with" -var LONECARET = R++; -src[LONECARET] = '(?:\\^)'; - -var CARETTRIM = R++; -src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+'; -re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g'); -var caretTrimReplace = '$1^'; - -var CARET = R++; -src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'; -var CARETLOOSE = R++; -src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'; - -// A simple gt/lt/eq thing, or just "" to indicate "any version" -var COMPARATORLOOSE = R++; -src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$'; -var COMPARATOR = R++; -src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$'; - - -// An expression to strip any whitespace between the gtlt and the thing -// it modifies, so that `> 1.2.3` ==> `>1.2.3` -var COMPARATORTRIM = R++; -src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] + - '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'; - -// this one has to use the /g flag -re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g'); -var comparatorTrimReplace = '$1$2$3'; - - -// Something like `1.2.3 - 1.2.4` -// Note that these all use the loose form, because they'll be -// checked against either the strict or loose comparator form -// later. -var HYPHENRANGE = R++; -src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' + - '\\s+-\\s+' + - '(' + src[XRANGEPLAIN] + ')' + - '\\s*$'; - -var HYPHENRANGELOOSE = R++; -src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' + - '\\s+-\\s+' + - '(' + src[XRANGEPLAINLOOSE] + ')' + - '\\s*$'; - -// Star ranges basically just allow anything at all. -var STAR = R++; -src[STAR] = '(<|>)?=?\\s*\\*'; - -// Compile to actual regexp objects. -// All are flag-free, unless they were created above with a flag. -for (var i = 0; i < R; i++) { - debug(i, src[i]); - if (!re[i]) - re[i] = new RegExp(src[i]); -} - -exports.parse = parse; -function parse(version, loose) { - if (version instanceof SemVer) - return version; - - if (typeof version !== 'string') - return null; - - if (version.length > MAX_LENGTH) - return null; - - var r = loose ? re[LOOSE] : re[FULL]; - if (!r.test(version)) - return null; - - try { - return new SemVer(version, loose); - } catch (er) { - return null; - } -} - -exports.valid = valid; -function valid(version, loose) { - var v = parse(version, loose); - return v ? v.version : null; -} - - -exports.clean = clean; -function clean(version, loose) { - var s = parse(version.trim().replace(/^[=v]+/, ''), loose); - return s ? s.version : null; -} - -exports.SemVer = SemVer; - -function SemVer(version, loose) { - if (version instanceof SemVer) { - if (version.loose === loose) - return version; - else - version = version.version; - } else if (typeof version !== 'string') { - throw new TypeError('Invalid Version: ' + version); - } - - if (version.length > MAX_LENGTH) - throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters') - - if (!(this instanceof SemVer)) - return new SemVer(version, loose); - - debug('SemVer', version, loose); - this.loose = loose; - var m = version.trim().match(loose ? re[LOOSE] : re[FULL]); - - if (!m) - throw new TypeError('Invalid Version: ' + version); - - this.raw = version; - - // these are actually numbers - this.major = +m[1]; - this.minor = +m[2]; - this.patch = +m[3]; - - if (this.major > MAX_SAFE_INTEGER || this.major < 0) - throw new TypeError('Invalid major version') - - if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) - throw new TypeError('Invalid minor version') - - if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) - throw new TypeError('Invalid patch version') - - // numberify any prerelease numeric ids - if (!m[4]) - this.prerelease = []; - else - this.prerelease = m[4].split('.').map(function(id) { - if (/^[0-9]+$/.test(id)) { - var num = +id; - if (num >= 0 && num < MAX_SAFE_INTEGER) - return num; - } - return id; - }); - - this.build = m[5] ? m[5].split('.') : []; - this.format(); -} - -SemVer.prototype.format = function() { - this.version = this.major + '.' + this.minor + '.' + this.patch; - if (this.prerelease.length) - this.version += '-' + this.prerelease.join('.'); - return this.version; -}; - -SemVer.prototype.toString = function() { - return this.version; -}; - -SemVer.prototype.compare = function(other) { - debug('SemVer.compare', this.version, this.loose, other); - if (!(other instanceof SemVer)) - other = new SemVer(other, this.loose); - - return this.compareMain(other) || this.comparePre(other); -}; - -SemVer.prototype.compareMain = function(other) { - if (!(other instanceof SemVer)) - other = new SemVer(other, this.loose); - - return compareIdentifiers(this.major, other.major) || - compareIdentifiers(this.minor, other.minor) || - compareIdentifiers(this.patch, other.patch); -}; - -SemVer.prototype.comparePre = function(other) { - if (!(other instanceof SemVer)) - other = new SemVer(other, this.loose); - - // NOT having a prerelease is > having one - if (this.prerelease.length && !other.prerelease.length) - return -1; - else if (!this.prerelease.length && other.prerelease.length) - return 1; - else if (!this.prerelease.length && !other.prerelease.length) - return 0; - - var i = 0; - do { - var a = this.prerelease[i]; - var b = other.prerelease[i]; - debug('prerelease compare', i, a, b); - if (a === undefined && b === undefined) - return 0; - else if (b === undefined) - return 1; - else if (a === undefined) - return -1; - else if (a === b) - continue; - else - return compareIdentifiers(a, b); - } while (++i); -}; - -// preminor will bump the version up to the next minor release, and immediately -// down to pre-release. premajor and prepatch work the same way. -SemVer.prototype.inc = function(release, identifier) { - switch (release) { - case 'premajor': - this.prerelease.length = 0; - this.patch = 0; - this.minor = 0; - this.major++; - this.inc('pre', identifier); - break; - case 'preminor': - this.prerelease.length = 0; - this.patch = 0; - this.minor++; - this.inc('pre', identifier); - break; - case 'prepatch': - // If this is already a prerelease, it will bump to the next version - // drop any prereleases that might already exist, since they are not - // relevant at this point. - this.prerelease.length = 0; - this.inc('patch', identifier); - this.inc('pre', identifier); - break; - // If the input is a non-prerelease version, this acts the same as - // prepatch. - case 'prerelease': - if (this.prerelease.length === 0) - this.inc('patch', identifier); - this.inc('pre', identifier); - break; - - case 'major': - // If this is a pre-major version, bump up to the same major version. - // Otherwise increment major. - // 1.0.0-5 bumps to 1.0.0 - // 1.1.0 bumps to 2.0.0 - if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) - this.major++; - this.minor = 0; - this.patch = 0; - this.prerelease = []; - break; - case 'minor': - // If this is a pre-minor version, bump up to the same minor version. - // Otherwise increment minor. - // 1.2.0-5 bumps to 1.2.0 - // 1.2.1 bumps to 1.3.0 - if (this.patch !== 0 || this.prerelease.length === 0) - this.minor++; - this.patch = 0; - this.prerelease = []; - break; - case 'patch': - // If this is not a pre-release version, it will increment the patch. - // If it is a pre-release it will bump up to the same patch version. - // 1.2.0-5 patches to 1.2.0 - // 1.2.0 patches to 1.2.1 - if (this.prerelease.length === 0) - this.patch++; - this.prerelease = []; - break; - // This probably shouldn't be used publicly. - // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. - case 'pre': - if (this.prerelease.length === 0) - this.prerelease = [0]; - else { - var i = this.prerelease.length; - while (--i >= 0) { - if (typeof this.prerelease[i] === 'number') { - this.prerelease[i]++; - i = -2; - } - } - if (i === -1) // didn't increment anything - this.prerelease.push(0); - } - if (identifier) { - // 1.2.0-beta.1 bumps to 1.2.0-beta.2, - // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 - if (this.prerelease[0] === identifier) { - if (isNaN(this.prerelease[1])) - this.prerelease = [identifier, 0]; - } else - this.prerelease = [identifier, 0]; - } - break; - - default: - throw new Error('invalid increment argument: ' + release); - } - this.format(); - this.raw = this.version; - return this; -}; - -exports.inc = inc; -function inc(version, release, loose, identifier) { - if (typeof(loose) === 'string') { - identifier = loose; - loose = undefined; - } - - try { - return new SemVer(version, loose).inc(release, identifier).version; - } catch (er) { - return null; - } -} - -exports.diff = diff; -function diff(version1, version2) { - if (eq(version1, version2)) { - return null; - } else { - var v1 = parse(version1); - var v2 = parse(version2); - if (v1.prerelease.length || v2.prerelease.length) { - for (var key in v1) { - if (key === 'major' || key === 'minor' || key === 'patch') { - if (v1[key] !== v2[key]) { - return 'pre'+key; - } - } - } - return 'prerelease'; - } - for (var key in v1) { - if (key === 'major' || key === 'minor' || key === 'patch') { - if (v1[key] !== v2[key]) { - return key; - } - } - } - } -} - -exports.compareIdentifiers = compareIdentifiers; - -var numeric = /^[0-9]+$/; -function compareIdentifiers(a, b) { - var anum = numeric.test(a); - var bnum = numeric.test(b); - - if (anum && bnum) { - a = +a; - b = +b; - } - - return (anum && !bnum) ? -1 : - (bnum && !anum) ? 1 : - a < b ? -1 : - a > b ? 1 : - 0; -} - -exports.rcompareIdentifiers = rcompareIdentifiers; -function rcompareIdentifiers(a, b) { - return compareIdentifiers(b, a); -} - -exports.major = major; -function major(a, loose) { - return new SemVer(a, loose).major; -} - -exports.minor = minor; -function minor(a, loose) { - return new SemVer(a, loose).minor; -} - -exports.patch = patch; -function patch(a, loose) { - return new SemVer(a, loose).patch; -} - -exports.compare = compare; -function compare(a, b, loose) { - return new SemVer(a, loose).compare(new SemVer(b, loose)); -} - -exports.compareLoose = compareLoose; -function compareLoose(a, b) { - return compare(a, b, true); -} - -exports.rcompare = rcompare; -function rcompare(a, b, loose) { - return compare(b, a, loose); -} - -exports.sort = sort; -function sort(list, loose) { - return list.sort(function(a, b) { - return exports.compare(a, b, loose); - }); -} - -exports.rsort = rsort; -function rsort(list, loose) { - return list.sort(function(a, b) { - return exports.rcompare(a, b, loose); - }); -} - -exports.gt = gt; -function gt(a, b, loose) { - return compare(a, b, loose) > 0; -} - -exports.lt = lt; -function lt(a, b, loose) { - return compare(a, b, loose) < 0; -} - -exports.eq = eq; -function eq(a, b, loose) { - return compare(a, b, loose) === 0; -} - -exports.neq = neq; -function neq(a, b, loose) { - return compare(a, b, loose) !== 0; -} - -exports.gte = gte; -function gte(a, b, loose) { - return compare(a, b, loose) >= 0; -} - -exports.lte = lte; -function lte(a, b, loose) { - return compare(a, b, loose) <= 0; -} - -exports.cmp = cmp; -function cmp(a, op, b, loose) { - var ret; - switch (op) { - case '===': - if (typeof a === 'object') a = a.version; - if (typeof b === 'object') b = b.version; - ret = a === b; - break; - case '!==': - if (typeof a === 'object') a = a.version; - if (typeof b === 'object') b = b.version; - ret = a !== b; - break; - case '': case '=': case '==': ret = eq(a, b, loose); break; - case '!=': ret = neq(a, b, loose); break; - case '>': ret = gt(a, b, loose); break; - case '>=': ret = gte(a, b, loose); break; - case '<': ret = lt(a, b, loose); break; - case '<=': ret = lte(a, b, loose); break; - default: throw new TypeError('Invalid operator: ' + op); - } - return ret; -} - -exports.Comparator = Comparator; -function Comparator(comp, loose) { - if (comp instanceof Comparator) { - if (comp.loose === loose) - return comp; - else - comp = comp.value; - } - - if (!(this instanceof Comparator)) - return new Comparator(comp, loose); - - debug('comparator', comp, loose); - this.loose = loose; - this.parse(comp); - - if (this.semver === ANY) - this.value = ''; - else - this.value = this.operator + this.semver.version; - - debug('comp', this); -} - -var ANY = {}; -Comparator.prototype.parse = function(comp) { - var r = this.loose ? re[COMPARATORLOOSE] : re[COMPARATOR]; - var m = comp.match(r); - - if (!m) - throw new TypeError('Invalid comparator: ' + comp); - - this.operator = m[1]; - if (this.operator === '=') - this.operator = ''; - - // if it literally is just '>' or '' then allow anything. - if (!m[2]) - this.semver = ANY; - else - this.semver = new SemVer(m[2], this.loose); -}; - -Comparator.prototype.toString = function() { - return this.value; -}; - -Comparator.prototype.test = function(version) { - debug('Comparator.test', version, this.loose); - - if (this.semver === ANY) - return true; - - if (typeof version === 'string') - version = new SemVer(version, this.loose); - - return cmp(version, this.operator, this.semver, this.loose); -}; - -Comparator.prototype.intersects = function(comp, loose) { - if (!(comp instanceof Comparator)) { - throw new TypeError('a Comparator is required'); - } - - var rangeTmp; - - if (this.operator === '') { - rangeTmp = new Range(comp.value, loose); - return satisfies(this.value, rangeTmp, loose); - } else if (comp.operator === '') { - rangeTmp = new Range(this.value, loose); - return satisfies(comp.semver, rangeTmp, loose); - } - - var sameDirectionIncreasing = - (this.operator === '>=' || this.operator === '>') && - (comp.operator === '>=' || comp.operator === '>'); - var sameDirectionDecreasing = - (this.operator === '<=' || this.operator === '<') && - (comp.operator === '<=' || comp.operator === '<'); - var sameSemVer = this.semver.version === comp.semver.version; - var differentDirectionsInclusive = - (this.operator === '>=' || this.operator === '<=') && - (comp.operator === '>=' || comp.operator === '<='); - var oppositeDirectionsLessThan = - cmp(this.semver, '<', comp.semver, loose) && - ((this.operator === '>=' || this.operator === '>') && - (comp.operator === '<=' || comp.operator === '<')); - var oppositeDirectionsGreaterThan = - cmp(this.semver, '>', comp.semver, loose) && - ((this.operator === '<=' || this.operator === '<') && - (comp.operator === '>=' || comp.operator === '>')); - - return sameDirectionIncreasing || sameDirectionDecreasing || - (sameSemVer && differentDirectionsInclusive) || - oppositeDirectionsLessThan || oppositeDirectionsGreaterThan; -}; - - -exports.Range = Range; -function Range(range, loose) { - if (range instanceof Range) { - if (range.loose === loose) { - return range; - } else { - return new Range(range.raw, loose); - } - } - - if (range instanceof Comparator) { - return new Range(range.value, loose); - } - - if (!(this instanceof Range)) - return new Range(range, loose); - - this.loose = loose; - - // First, split based on boolean or || - this.raw = range; - this.set = range.split(/\s*\|\|\s*/).map(function(range) { - return this.parseRange(range.trim()); - }, this).filter(function(c) { - // throw out any that are not relevant for whatever reason - return c.length; - }); - - if (!this.set.length) { - throw new TypeError('Invalid SemVer Range: ' + range); - } - - this.format(); -} - -Range.prototype.format = function() { - this.range = this.set.map(function(comps) { - return comps.join(' ').trim(); - }).join('||').trim(); - return this.range; -}; - -Range.prototype.toString = function() { - return this.range; -}; - -Range.prototype.parseRange = function(range) { - var loose = this.loose; - range = range.trim(); - debug('range', range, loose); - // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` - var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE]; - range = range.replace(hr, hyphenReplace); - debug('hyphen replace', range); - // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` - range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace); - debug('comparator trim', range, re[COMPARATORTRIM]); - - // `~ 1.2.3` => `~1.2.3` - range = range.replace(re[TILDETRIM], tildeTrimReplace); - - // `^ 1.2.3` => `^1.2.3` - range = range.replace(re[CARETTRIM], caretTrimReplace); - - // normalize spaces - range = range.split(/\s+/).join(' '); - - // At this point, the range is completely trimmed and - // ready to be split into comparators. - - var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR]; - var set = range.split(' ').map(function(comp) { - return parseComparator(comp, loose); - }).join(' ').split(/\s+/); - if (this.loose) { - // in loose mode, throw out any that are not valid comparators - set = set.filter(function(comp) { - return !!comp.match(compRe); - }); - } - set = set.map(function(comp) { - return new Comparator(comp, loose); - }); - - return set; -}; - -Range.prototype.intersects = function(range, loose) { - if (!(range instanceof Range)) { - throw new TypeError('a Range is required'); - } - - return this.set.some(function(thisComparators) { - return thisComparators.every(function(thisComparator) { - return range.set.some(function(rangeComparators) { - return rangeComparators.every(function(rangeComparator) { - return thisComparator.intersects(rangeComparator, loose); - }); - }); - }); - }); -}; - -// Mostly just for testing and legacy API reasons -exports.toComparators = toComparators; -function toComparators(range, loose) { - return new Range(range, loose).set.map(function(comp) { - return comp.map(function(c) { - return c.value; - }).join(' ').trim().split(' '); - }); -} - -// comprised of xranges, tildes, stars, and gtlt's at this point. -// already replaced the hyphen ranges -// turn into a set of JUST comparators. -function parseComparator(comp, loose) { - debug('comp', comp); - comp = replaceCarets(comp, loose); - debug('caret', comp); - comp = replaceTildes(comp, loose); - debug('tildes', comp); - comp = replaceXRanges(comp, loose); - debug('xrange', comp); - comp = replaceStars(comp, loose); - debug('stars', comp); - return comp; -} - -function isX(id) { - return !id || id.toLowerCase() === 'x' || id === '*'; -} - -// ~, ~> --> * (any, kinda silly) -// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0 -// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0 -// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 -// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 -// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 -function replaceTildes(comp, loose) { - return comp.trim().split(/\s+/).map(function(comp) { - return replaceTilde(comp, loose); - }).join(' '); -} - -function replaceTilde(comp, loose) { - var r = loose ? re[TILDELOOSE] : re[TILDE]; - return comp.replace(r, function(_, M, m, p, pr) { - debug('tilde', comp, _, M, m, p, pr); - var ret; - - if (isX(M)) - ret = ''; - else if (isX(m)) - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; - else if (isX(p)) - // ~1.2 == >=1.2.0 <1.3.0 - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; - else if (pr) { - debug('replaceTilde pr', pr); - if (pr.charAt(0) !== '-') - pr = '-' + pr; - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + (+m + 1) + '.0'; - } else - // ~1.2.3 == >=1.2.3 <1.3.0 - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0'; - - debug('tilde return', ret); - return ret; - }); -} - -// ^ --> * (any, kinda silly) -// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0 -// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0 -// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 -// ^1.2.3 --> >=1.2.3 <2.0.0 -// ^1.2.0 --> >=1.2.0 <2.0.0 -function replaceCarets(comp, loose) { - return comp.trim().split(/\s+/).map(function(comp) { - return replaceCaret(comp, loose); - }).join(' '); -} - -function replaceCaret(comp, loose) { - debug('caret', comp, loose); - var r = loose ? re[CARETLOOSE] : re[CARET]; - return comp.replace(r, function(_, M, m, p, pr) { - debug('caret', comp, _, M, m, p, pr); - var ret; - - if (isX(M)) - ret = ''; - else if (isX(m)) - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; - else if (isX(p)) { - if (M === '0') - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; - else - ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'; - } else if (pr) { - debug('replaceCaret pr', pr); - if (pr.charAt(0) !== '-') - pr = '-' + pr; - if (M === '0') { - if (m === '0') - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + m + '.' + (+p + 1); - else - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + (+m + 1) + '.0'; - } else - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + (+M + 1) + '.0.0'; - } else { - debug('no pr'); - if (M === '0') { - if (m === '0') - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + m + '.' + (+p + 1); - else - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0'; - } else - ret = '>=' + M + '.' + m + '.' + p + - ' <' + (+M + 1) + '.0.0'; - } - - debug('caret return', ret); - return ret; - }); -} - -function replaceXRanges(comp, loose) { - debug('replaceXRanges', comp, loose); - return comp.split(/\s+/).map(function(comp) { - return replaceXRange(comp, loose); - }).join(' '); -} - -function replaceXRange(comp, loose) { - comp = comp.trim(); - var r = loose ? re[XRANGELOOSE] : re[XRANGE]; - return comp.replace(r, function(ret, gtlt, M, m, p, pr) { - debug('xRange', comp, ret, gtlt, M, m, p, pr); - var xM = isX(M); - var xm = xM || isX(m); - var xp = xm || isX(p); - var anyX = xp; - - if (gtlt === '=' && anyX) - gtlt = ''; - - if (xM) { - if (gtlt === '>' || gtlt === '<') { - // nothing is allowed - ret = '<0.0.0'; - } else { - // nothing is forbidden - ret = '*'; - } - } else if (gtlt && anyX) { - // replace X with 0 - if (xm) - m = 0; - if (xp) - p = 0; - - if (gtlt === '>') { - // >1 => >=2.0.0 - // >1.2 => >=1.3.0 - // >1.2.3 => >= 1.2.4 - gtlt = '>='; - if (xm) { - M = +M + 1; - m = 0; - p = 0; - } else if (xp) { - m = +m + 1; - p = 0; - } - } else if (gtlt === '<=') { - // <=0.7.x is actually <0.8.0, since any 0.7.x should - // pass. Similarly, <=7.x is actually <8.0.0, etc. - gtlt = '<'; - if (xm) - M = +M + 1; - else - m = +m + 1; - } - - ret = gtlt + M + '.' + m + '.' + p; - } else if (xm) { - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; - } else if (xp) { - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; - } - - debug('xRange return', ret); - - return ret; - }); -} - -// Because * is AND-ed with everything else in the comparator, -// and '' means "any version", just remove the *s entirely. -function replaceStars(comp, loose) { - debug('replaceStars', comp, loose); - // Looseness is ignored here. star is always as loose as it gets! - return comp.trim().replace(re[STAR], ''); -} - -// This function is passed to string.replace(re[HYPHENRANGE]) -// M, m, patch, prerelease, build -// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 -// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do -// 1.2 - 3.4 => >=1.2.0 <3.5.0 -function hyphenReplace($0, - from, fM, fm, fp, fpr, fb, - to, tM, tm, tp, tpr, tb) { - - if (isX(fM)) - from = ''; - else if (isX(fm)) - from = '>=' + fM + '.0.0'; - else if (isX(fp)) - from = '>=' + fM + '.' + fm + '.0'; - else - from = '>=' + from; - - if (isX(tM)) - to = ''; - else if (isX(tm)) - to = '<' + (+tM + 1) + '.0.0'; - else if (isX(tp)) - to = '<' + tM + '.' + (+tm + 1) + '.0'; - else if (tpr) - to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr; - else - to = '<=' + to; - - return (from + ' ' + to).trim(); -} - - -// if ANY of the sets match ALL of its comparators, then pass -Range.prototype.test = function(version) { - if (!version) - return false; - - if (typeof version === 'string') - version = new SemVer(version, this.loose); - - for (var i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version)) - return true; - } - return false; -}; - -function testSet(set, version) { - for (var i = 0; i < set.length; i++) { - if (!set[i].test(version)) - return false; - } - - if (version.prerelease.length) { - // Find the set of versions that are allowed to have prereleases - // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 - // That should allow `1.2.3-pr.2` to pass. - // However, `1.2.4-alpha.notready` should NOT be allowed, - // even though it's within the range set by the comparators. - for (var i = 0; i < set.length; i++) { - debug(set[i].semver); - if (set[i].semver === ANY) - continue; - - if (set[i].semver.prerelease.length > 0) { - var allowed = set[i].semver; - if (allowed.major === version.major && - allowed.minor === version.minor && - allowed.patch === version.patch) - return true; - } - } - - // Version has a -pre, but it's not one of the ones we like. - return false; - } - - return true; -} - -exports.satisfies = satisfies; -function satisfies(version, range, loose) { - try { - range = new Range(range, loose); - } catch (er) { - return false; - } - return range.test(version); -} - -exports.maxSatisfying = maxSatisfying; -function maxSatisfying(versions, range, loose) { - var max = null; - var maxSV = null; - try { - var rangeObj = new Range(range, loose); - } catch (er) { - return null; - } - versions.forEach(function (v) { - if (rangeObj.test(v)) { // satisfies(v, range, loose) - if (!max || maxSV.compare(v) === -1) { // compare(max, v, true) - max = v; - maxSV = new SemVer(max, loose); - } - } - }) - return max; -} - -exports.minSatisfying = minSatisfying; -function minSatisfying(versions, range, loose) { - var min = null; - var minSV = null; - try { - var rangeObj = new Range(range, loose); - } catch (er) { - return null; - } - versions.forEach(function (v) { - if (rangeObj.test(v)) { // satisfies(v, range, loose) - if (!min || minSV.compare(v) === 1) { // compare(min, v, true) - min = v; - minSV = new SemVer(min, loose); - } - } - }) - return min; -} - -exports.validRange = validRange; -function validRange(range, loose) { - try { - // Return '*' instead of '' so that truthiness works. - // This will throw if it's invalid anyway - return new Range(range, loose).range || '*'; - } catch (er) { - return null; - } -} - -// Determine if version is less than all the versions possible in the range -exports.ltr = ltr; -function ltr(version, range, loose) { - return outside(version, range, '<', loose); -} - -// Determine if version is greater than all the versions possible in the range. -exports.gtr = gtr; -function gtr(version, range, loose) { - return outside(version, range, '>', loose); -} - -exports.outside = outside; -function outside(version, range, hilo, loose) { - version = new SemVer(version, loose); - range = new Range(range, loose); - - var gtfn, ltefn, ltfn, comp, ecomp; - switch (hilo) { - case '>': - gtfn = gt; - ltefn = lte; - ltfn = lt; - comp = '>'; - ecomp = '>='; - break; - case '<': - gtfn = lt; - ltefn = gte; - ltfn = gt; - comp = '<'; - ecomp = '<='; - break; - default: - throw new TypeError('Must provide a hilo val of "<" or ">"'); - } - - // If it satisifes the range it is not outside - if (satisfies(version, range, loose)) { - return false; - } - - // From now on, variable terms are as if we're in "gtr" mode. - // but note that everything is flipped for the "ltr" function. - - for (var i = 0; i < range.set.length; ++i) { - var comparators = range.set[i]; - - var high = null; - var low = null; - - comparators.forEach(function(comparator) { - if (comparator.semver === ANY) { - comparator = new Comparator('>=0.0.0') - } - high = high || comparator; - low = low || comparator; - if (gtfn(comparator.semver, high.semver, loose)) { - high = comparator; - } else if (ltfn(comparator.semver, low.semver, loose)) { - low = comparator; - } - }); - - // If the edge version comparator has a operator then our version - // isn't outside it - if (high.operator === comp || high.operator === ecomp) { - return false; - } - - // If the lowest version comparator has an operator and our version - // is less than it then it isn't higher than the range - if ((!low.operator || low.operator === comp) && - ltefn(version, low.semver)) { - return false; - } else if (low.operator === ecomp && ltfn(version, low.semver)) { - return false; - } - } - return true; -} - -exports.prerelease = prerelease; -function prerelease(version, loose) { - var parsed = parse(version, loose); - return (parsed && parsed.prerelease.length) ? parsed.prerelease : null; -} - -exports.intersects = intersects; -function intersects(r1, r2, loose) { - r1 = new Range(r1, loose) - r2 = new Range(r2, loose) - return r1.intersects(r2) -} - -exports.coerce = coerce; -function coerce(version) { - if (version instanceof SemVer) - return version; - - if (typeof version !== 'string') - return null; - - var match = version.match(re[COERCE]); - - if (match == null) - return null; - - return parse((match[1] || '0') + '.' + (match[2] || '0') + '.' + (match[3] || '0')); -} - - -/***/ }), -/* 23 */ -/***/ (function(module, exports) { - -module.exports = require("stream"); - -/***/ }), -/* 24 */ -/***/ (function(module, exports) { - -module.exports = require("url"); - -/***/ }), -/* 25 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Subscription; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_isArray__ = __webpack_require__(41); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_isObject__ = __webpack_require__(444); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isFunction__ = __webpack_require__(154); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_tryCatch__ = __webpack_require__(56); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_errorObject__ = __webpack_require__(48); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_UnsubscriptionError__ = __webpack_require__(441); -/** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_tryCatch,_util_errorObject,_util_UnsubscriptionError PURE_IMPORTS_END */ - - - - - - -var Subscription = /*@__PURE__*/ (function () { - function Subscription(unsubscribe) { - this.closed = false; - this._parent = null; - this._parents = null; - this._subscriptions = null; - if (unsubscribe) { - this._unsubscribe = unsubscribe; - } - } - Subscription.prototype.unsubscribe = function () { - var hasErrors = false; - var errors; - if (this.closed) { - return; - } - var _a = this, _parent = _a._parent, _parents = _a._parents, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions; - this.closed = true; - this._parent = null; - this._parents = null; - this._subscriptions = null; - var index = -1; - var len = _parents ? _parents.length : 0; - while (_parent) { - _parent.remove(this); - _parent = ++index < len && _parents[index] || null; - } - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_isFunction__["a" /* isFunction */])(_unsubscribe)) { - var trial = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_tryCatch__["a" /* tryCatch */])(_unsubscribe).call(this); - if (trial === __WEBPACK_IMPORTED_MODULE_4__util_errorObject__["a" /* errorObject */]) { - hasErrors = true; - errors = errors || (__WEBPACK_IMPORTED_MODULE_4__util_errorObject__["a" /* errorObject */].e instanceof __WEBPACK_IMPORTED_MODULE_5__util_UnsubscriptionError__["a" /* UnsubscriptionError */] ? - flattenUnsubscriptionErrors(__WEBPACK_IMPORTED_MODULE_4__util_errorObject__["a" /* errorObject */].e.errors) : [__WEBPACK_IMPORTED_MODULE_4__util_errorObject__["a" /* errorObject */].e]); - } - } - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util_isArray__["a" /* isArray */])(_subscriptions)) { - index = -1; - len = _subscriptions.length; - while (++index < len) { - var sub = _subscriptions[index]; - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_isObject__["a" /* isObject */])(sub)) { - var trial = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_tryCatch__["a" /* tryCatch */])(sub.unsubscribe).call(sub); - if (trial === __WEBPACK_IMPORTED_MODULE_4__util_errorObject__["a" /* errorObject */]) { - hasErrors = true; - errors = errors || []; - var err = __WEBPACK_IMPORTED_MODULE_4__util_errorObject__["a" /* errorObject */].e; - if (err instanceof __WEBPACK_IMPORTED_MODULE_5__util_UnsubscriptionError__["a" /* UnsubscriptionError */]) { - errors = errors.concat(flattenUnsubscriptionErrors(err.errors)); - } - else { - errors.push(err); - } - } - } - } - } - if (hasErrors) { - throw new __WEBPACK_IMPORTED_MODULE_5__util_UnsubscriptionError__["a" /* UnsubscriptionError */](errors); - } - }; - Subscription.prototype.add = function (teardown) { - if (!teardown || (teardown === Subscription.EMPTY)) { - return Subscription.EMPTY; - } - if (teardown === this) { - return this; - } - var subscription = teardown; - switch (typeof teardown) { - case 'function': - subscription = new Subscription(teardown); - case 'object': - if (subscription.closed || typeof subscription.unsubscribe !== 'function') { - return subscription; - } - else if (this.closed) { - subscription.unsubscribe(); - return subscription; - } - else if (typeof subscription._addParent !== 'function') { - var tmp = subscription; - subscription = new Subscription(); - subscription._subscriptions = [tmp]; - } - break; - default: - throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.'); - } - var subscriptions = this._subscriptions || (this._subscriptions = []); - subscriptions.push(subscription); - subscription._addParent(this); - return subscription; - }; - Subscription.prototype.remove = function (subscription) { - var subscriptions = this._subscriptions; - if (subscriptions) { - var subscriptionIndex = subscriptions.indexOf(subscription); - if (subscriptionIndex !== -1) { - subscriptions.splice(subscriptionIndex, 1); - } - } - }; - Subscription.prototype._addParent = function (parent) { - var _a = this, _parent = _a._parent, _parents = _a._parents; - if (!_parent || _parent === parent) { - this._parent = parent; - } - else if (!_parents) { - this._parents = [parent]; - } - else if (_parents.indexOf(parent) === -1) { - _parents.push(parent); - } - }; - Subscription.EMPTY = (function (empty) { - empty.closed = true; - return empty; - }(new Subscription())); - return Subscription; -}()); - -function flattenUnsubscriptionErrors(errors) { - return errors.reduce(function (errs, err) { return errs.concat((err instanceof __WEBPACK_IMPORTED_MODULE_5__util_UnsubscriptionError__["a" /* UnsubscriptionError */]) ? err.errors : err); }, []); -} -//# sourceMappingURL=Subscription.js.map - - -/***/ }), -/* 26 */ -/***/ (function(module, exports, __webpack_require__) { - -// Copyright 2015 Joyent, Inc. - -module.exports = { - bufferSplit: bufferSplit, - addRSAMissing: addRSAMissing, - calculateDSAPublic: calculateDSAPublic, - calculateED25519Public: calculateED25519Public, - calculateX25519Public: calculateX25519Public, - mpNormalize: mpNormalize, - mpDenormalize: mpDenormalize, - ecNormalize: ecNormalize, - countZeros: countZeros, - assertCompatible: assertCompatible, - isCompatible: isCompatible, - opensslKeyDeriv: opensslKeyDeriv, - opensshCipherInfo: opensshCipherInfo, - publicFromPrivateECDSA: publicFromPrivateECDSA, - zeroPadToLength: zeroPadToLength, - writeBitString: writeBitString, - readBitString: readBitString -}; - -var assert = __webpack_require__(16); -var Buffer = __webpack_require__(15).Buffer; -var PrivateKey = __webpack_require__(33); -var Key = __webpack_require__(27); -var crypto = __webpack_require__(11); -var algs = __webpack_require__(32); -var asn1 = __webpack_require__(66); - -var ec, jsbn; -var nacl; - -var MAX_CLASS_DEPTH = 3; - -function isCompatible(obj, klass, needVer) { - if (obj === null || typeof (obj) !== 'object') - return (false); - if (needVer === undefined) - needVer = klass.prototype._sshpkApiVersion; - if (obj instanceof klass && - klass.prototype._sshpkApiVersion[0] == needVer[0]) - return (true); - var proto = Object.getPrototypeOf(obj); - var depth = 0; - while (proto.constructor.name !== klass.name) { - proto = Object.getPrototypeOf(proto); - if (!proto || ++depth > MAX_CLASS_DEPTH) - return (false); - } - if (proto.constructor.name !== klass.name) - return (false); - var ver = proto._sshpkApiVersion; - if (ver === undefined) - ver = klass._oldVersionDetect(obj); - if (ver[0] != needVer[0] || ver[1] < needVer[1]) - return (false); - return (true); -} - -function assertCompatible(obj, klass, needVer, name) { - if (name === undefined) - name = 'object'; - assert.ok(obj, name + ' must not be null'); - assert.object(obj, name + ' must be an object'); - if (needVer === undefined) - needVer = klass.prototype._sshpkApiVersion; - if (obj instanceof klass && - klass.prototype._sshpkApiVersion[0] == needVer[0]) - return; - var proto = Object.getPrototypeOf(obj); - var depth = 0; - while (proto.constructor.name !== klass.name) { - proto = Object.getPrototypeOf(proto); - assert.ok(proto && ++depth <= MAX_CLASS_DEPTH, - name + ' must be a ' + klass.name + ' instance'); - } - assert.strictEqual(proto.constructor.name, klass.name, - name + ' must be a ' + klass.name + ' instance'); - var ver = proto._sshpkApiVersion; - if (ver === undefined) - ver = klass._oldVersionDetect(obj); - assert.ok(ver[0] == needVer[0] && ver[1] >= needVer[1], - name + ' must be compatible with ' + klass.name + ' klass ' + - 'version ' + needVer[0] + '.' + needVer[1]); -} - -var CIPHER_LEN = { - 'des-ede3-cbc': { key: 7, iv: 8 }, - 'aes-128-cbc': { key: 16, iv: 16 } -}; -var PKCS5_SALT_LEN = 8; - -function opensslKeyDeriv(cipher, salt, passphrase, count) { - assert.buffer(salt, 'salt'); - assert.buffer(passphrase, 'passphrase'); - assert.number(count, 'iteration count'); - - var clen = CIPHER_LEN[cipher]; - assert.object(clen, 'supported cipher'); - - salt = salt.slice(0, PKCS5_SALT_LEN); - - var D, D_prev, bufs; - var material = Buffer.alloc(0); - while (material.length < clen.key + clen.iv) { - bufs = []; - if (D_prev) - bufs.push(D_prev); - bufs.push(passphrase); - bufs.push(salt); - D = Buffer.concat(bufs); - for (var j = 0; j < count; ++j) - D = crypto.createHash('md5').update(D).digest(); - material = Buffer.concat([material, D]); - D_prev = D; - } - - return ({ - key: material.slice(0, clen.key), - iv: material.slice(clen.key, clen.key + clen.iv) - }); -} - -/* Count leading zero bits on a buffer */ -function countZeros(buf) { - var o = 0, obit = 8; - while (o < buf.length) { - var mask = (1 << obit); - if ((buf[o] & mask) === mask) - break; - obit--; - if (obit < 0) { - o++; - obit = 8; - } - } - return (o*8 + (8 - obit) - 1); -} - -function bufferSplit(buf, chr) { - assert.buffer(buf); - assert.string(chr); - - var parts = []; - var lastPart = 0; - var matches = 0; - for (var i = 0; i < buf.length; ++i) { - if (buf[i] === chr.charCodeAt(matches)) - ++matches; - else if (buf[i] === chr.charCodeAt(0)) - matches = 1; - else - matches = 0; - - if (matches >= chr.length) { - var newPart = i + 1; - parts.push(buf.slice(lastPart, newPart - matches)); - lastPart = newPart; - matches = 0; - } - } - if (lastPart <= buf.length) - parts.push(buf.slice(lastPart, buf.length)); - - return (parts); -} - -function ecNormalize(buf, addZero) { - assert.buffer(buf); - if (buf[0] === 0x00 && buf[1] === 0x04) { - if (addZero) - return (buf); - return (buf.slice(1)); - } else if (buf[0] === 0x04) { - if (!addZero) - return (buf); - } else { - while (buf[0] === 0x00) - buf = buf.slice(1); - if (buf[0] === 0x02 || buf[0] === 0x03) - throw (new Error('Compressed elliptic curve points ' + - 'are not supported')); - if (buf[0] !== 0x04) - throw (new Error('Not a valid elliptic curve point')); - if (!addZero) - return (buf); - } - var b = Buffer.alloc(buf.length + 1); - b[0] = 0x0; - buf.copy(b, 1); - return (b); -} - -function readBitString(der, tag) { - if (tag === undefined) - tag = asn1.Ber.BitString; - var buf = der.readString(tag, true); - assert.strictEqual(buf[0], 0x00, 'bit strings with unused bits are ' + - 'not supported (0x' + buf[0].toString(16) + ')'); - return (buf.slice(1)); -} - -function writeBitString(der, buf, tag) { - if (tag === undefined) - tag = asn1.Ber.BitString; - var b = Buffer.alloc(buf.length + 1); - b[0] = 0x00; - buf.copy(b, 1); - der.writeBuffer(b, tag); -} - -function mpNormalize(buf) { - assert.buffer(buf); - while (buf.length > 1 && buf[0] === 0x00 && (buf[1] & 0x80) === 0x00) - buf = buf.slice(1); - if ((buf[0] & 0x80) === 0x80) { - var b = Buffer.alloc(buf.length + 1); - b[0] = 0x00; - buf.copy(b, 1); - buf = b; - } - return (buf); -} - -function mpDenormalize(buf) { - assert.buffer(buf); - while (buf.length > 1 && buf[0] === 0x00) - buf = buf.slice(1); - return (buf); -} - -function zeroPadToLength(buf, len) { - assert.buffer(buf); - assert.number(len); - while (buf.length > len) { - assert.equal(buf[0], 0x00); - buf = buf.slice(1); - } - while (buf.length < len) { - var b = Buffer.alloc(buf.length + 1); - b[0] = 0x00; - buf.copy(b, 1); - buf = b; - } - return (buf); -} - -function bigintToMpBuf(bigint) { - var buf = Buffer.from(bigint.toByteArray()); - buf = mpNormalize(buf); - return (buf); -} - -function calculateDSAPublic(g, p, x) { - assert.buffer(g); - assert.buffer(p); - assert.buffer(x); - try { - var bigInt = __webpack_require__(81).BigInteger; - } catch (e) { - throw (new Error('To load a PKCS#8 format DSA private key, ' + - 'the node jsbn library is required.')); - } - g = new bigInt(g); - p = new bigInt(p); - x = new bigInt(x); - var y = g.modPow(x, p); - var ybuf = bigintToMpBuf(y); - return (ybuf); -} - -function calculateED25519Public(k) { - assert.buffer(k); - - if (nacl === undefined) - nacl = __webpack_require__(76); - - var kp = nacl.sign.keyPair.fromSeed(new Uint8Array(k)); - return (Buffer.from(kp.publicKey)); -} - -function calculateX25519Public(k) { - assert.buffer(k); - - if (nacl === undefined) - nacl = __webpack_require__(76); - - var kp = nacl.box.keyPair.fromSeed(new Uint8Array(k)); - return (Buffer.from(kp.publicKey)); -} - -function addRSAMissing(key) { - assert.object(key); - assertCompatible(key, PrivateKey, [1, 1]); - try { - var bigInt = __webpack_require__(81).BigInteger; - } catch (e) { - throw (new Error('To write a PEM private key from ' + - 'this source, the node jsbn lib is required.')); - } - - var d = new bigInt(key.part.d.data); - var buf; - - if (!key.part.dmodp) { - var p = new bigInt(key.part.p.data); - var dmodp = d.mod(p.subtract(1)); - - buf = bigintToMpBuf(dmodp); - key.part.dmodp = {name: 'dmodp', data: buf}; - key.parts.push(key.part.dmodp); - } - if (!key.part.dmodq) { - var q = new bigInt(key.part.q.data); - var dmodq = d.mod(q.subtract(1)); - - buf = bigintToMpBuf(dmodq); - key.part.dmodq = {name: 'dmodq', data: buf}; - key.parts.push(key.part.dmodq); - } -} - -function publicFromPrivateECDSA(curveName, priv) { - assert.string(curveName, 'curveName'); - assert.buffer(priv); - if (ec === undefined) - ec = __webpack_require__(139); - if (jsbn === undefined) - jsbn = __webpack_require__(81).BigInteger; - var params = algs.curves[curveName]; - var p = new jsbn(params.p); - var a = new jsbn(params.a); - var b = new jsbn(params.b); - var curve = new ec.ECCurveFp(p, a, b); - var G = curve.decodePointHex(params.G.toString('hex')); - - var d = new jsbn(mpNormalize(priv)); - var pub = G.multiply(d); - pub = Buffer.from(curve.encodePointHex(pub), 'hex'); - - var parts = []; - parts.push({name: 'curve', data: Buffer.from(curveName)}); - parts.push({name: 'Q', data: pub}); - - var key = new Key({type: 'ecdsa', curve: curve, parts: parts}); - return (key); -} - -function opensshCipherInfo(cipher) { - var inf = {}; - switch (cipher) { - case '3des-cbc': - inf.keySize = 24; - inf.blockSize = 8; - inf.opensslName = 'des-ede3-cbc'; - break; - case 'blowfish-cbc': - inf.keySize = 16; - inf.blockSize = 8; - inf.opensslName = 'bf-cbc'; - break; - case 'aes128-cbc': - case 'aes128-ctr': - case 'aes128-gcm@openssh.com': - inf.keySize = 16; - inf.blockSize = 16; - inf.opensslName = 'aes-128-' + cipher.slice(7, 10); - break; - case 'aes192-cbc': - case 'aes192-ctr': - case 'aes192-gcm@openssh.com': - inf.keySize = 24; - inf.blockSize = 16; - inf.opensslName = 'aes-192-' + cipher.slice(7, 10); - break; - case 'aes256-cbc': - case 'aes256-ctr': - case 'aes256-gcm@openssh.com': - inf.keySize = 32; - inf.blockSize = 16; - inf.opensslName = 'aes-256-' + cipher.slice(7, 10); - break; - default: - throw (new Error( - 'Unsupported openssl cipher "' + cipher + '"')); - } - return (inf); -} - - -/***/ }), -/* 27 */ -/***/ (function(module, exports, __webpack_require__) { - -// Copyright 2017 Joyent, Inc. - -module.exports = Key; - -var assert = __webpack_require__(16); -var algs = __webpack_require__(32); -var crypto = __webpack_require__(11); -var Fingerprint = __webpack_require__(156); -var Signature = __webpack_require__(75); -var DiffieHellman = __webpack_require__(325).DiffieHellman; -var errs = __webpack_require__(74); -var utils = __webpack_require__(26); -var PrivateKey = __webpack_require__(33); -var edCompat; - -try { - edCompat = __webpack_require__(454); -} catch (e) { - /* Just continue through, and bail out if we try to use it. */ -} - -var InvalidAlgorithmError = errs.InvalidAlgorithmError; -var KeyParseError = errs.KeyParseError; - -var formats = {}; -formats['auto'] = __webpack_require__(455); -formats['pem'] = __webpack_require__(86); -formats['pkcs1'] = __webpack_require__(327); -formats['pkcs8'] = __webpack_require__(157); -formats['rfc4253'] = __webpack_require__(103); -formats['ssh'] = __webpack_require__(456); -formats['ssh-private'] = __webpack_require__(192); -formats['openssh'] = formats['ssh-private']; -formats['dnssec'] = __webpack_require__(326); - -function Key(opts) { - assert.object(opts, 'options'); - assert.arrayOfObject(opts.parts, 'options.parts'); - assert.string(opts.type, 'options.type'); - assert.optionalString(opts.comment, 'options.comment'); - - var algInfo = algs.info[opts.type]; - if (typeof (algInfo) !== 'object') - throw (new InvalidAlgorithmError(opts.type)); - - var partLookup = {}; - for (var i = 0; i < opts.parts.length; ++i) { - var part = opts.parts[i]; - partLookup[part.name] = part; - } - - this.type = opts.type; - this.parts = opts.parts; - this.part = partLookup; - this.comment = undefined; - this.source = opts.source; - - /* for speeding up hashing/fingerprint operations */ - this._rfc4253Cache = opts._rfc4253Cache; - this._hashCache = {}; - - var sz; - this.curve = undefined; - if (this.type === 'ecdsa') { - var curve = this.part.curve.data.toString(); - this.curve = curve; - sz = algs.curves[curve].size; - } else if (this.type === 'ed25519' || this.type === 'curve25519') { - sz = 256; - this.curve = 'curve25519'; - } else { - var szPart = this.part[algInfo.sizePart]; - sz = szPart.data.length; - sz = sz * 8 - utils.countZeros(szPart.data); - } - this.size = sz; -} - -Key.formats = formats; - -Key.prototype.toBuffer = function (format, options) { - if (format === undefined) - format = 'ssh'; - assert.string(format, 'format'); - assert.object(formats[format], 'formats[format]'); - assert.optionalObject(options, 'options'); - - if (format === 'rfc4253') { - if (this._rfc4253Cache === undefined) - this._rfc4253Cache = formats['rfc4253'].write(this); - return (this._rfc4253Cache); - } - - return (formats[format].write(this, options)); -}; - -Key.prototype.toString = function (format, options) { - return (this.toBuffer(format, options).toString()); -}; - -Key.prototype.hash = function (algo) { - assert.string(algo, 'algorithm'); - algo = algo.toLowerCase(); - if (algs.hashAlgs[algo] === undefined) - throw (new InvalidAlgorithmError(algo)); - - if (this._hashCache[algo]) - return (this._hashCache[algo]); - var hash = crypto.createHash(algo). - update(this.toBuffer('rfc4253')).digest(); - this._hashCache[algo] = hash; - return (hash); -}; - -Key.prototype.fingerprint = function (algo) { - if (algo === undefined) - algo = 'sha256'; - assert.string(algo, 'algorithm'); - var opts = { - type: 'key', - hash: this.hash(algo), - algorithm: algo - }; - return (new Fingerprint(opts)); -}; - -Key.prototype.defaultHashAlgorithm = function () { - var hashAlgo = 'sha1'; - if (this.type === 'rsa') - hashAlgo = 'sha256'; - if (this.type === 'dsa' && this.size > 1024) - hashAlgo = 'sha256'; - if (this.type === 'ed25519') - hashAlgo = 'sha512'; - if (this.type === 'ecdsa') { - if (this.size <= 256) - hashAlgo = 'sha256'; - else if (this.size <= 384) - hashAlgo = 'sha384'; - else - hashAlgo = 'sha512'; - } - return (hashAlgo); -}; - -Key.prototype.createVerify = function (hashAlgo) { - if (hashAlgo === undefined) - hashAlgo = this.defaultHashAlgorithm(); - assert.string(hashAlgo, 'hash algorithm'); - - /* ED25519 is not supported by OpenSSL, use a javascript impl. */ - if (this.type === 'ed25519' && edCompat !== undefined) - return (new edCompat.Verifier(this, hashAlgo)); - if (this.type === 'curve25519') - throw (new Error('Curve25519 keys are not suitable for ' + - 'signing or verification')); - - var v, nm, err; - try { - nm = hashAlgo.toUpperCase(); - v = crypto.createVerify(nm); - } catch (e) { - err = e; - } - if (v === undefined || (err instanceof Error && - err.message.match(/Unknown message digest/))) { - nm = 'RSA-'; - nm += hashAlgo.toUpperCase(); - v = crypto.createVerify(nm); - } - assert.ok(v, 'failed to create verifier'); - var oldVerify = v.verify.bind(v); - var key = this.toBuffer('pkcs8'); - var curve = this.curve; - var self = this; - v.verify = function (signature, fmt) { - if (Signature.isSignature(signature, [2, 0])) { - if (signature.type !== self.type) - return (false); - if (signature.hashAlgorithm && - signature.hashAlgorithm !== hashAlgo) - return (false); - if (signature.curve && self.type === 'ecdsa' && - signature.curve !== curve) - return (false); - return (oldVerify(key, signature.toBuffer('asn1'))); - - } else if (typeof (signature) === 'string' || - Buffer.isBuffer(signature)) { - return (oldVerify(key, signature, fmt)); - - /* - * Avoid doing this on valid arguments, walking the prototype - * chain can be quite slow. - */ - } else if (Signature.isSignature(signature, [1, 0])) { - throw (new Error('signature was created by too old ' + - 'a version of sshpk and cannot be verified')); - - } else { - throw (new TypeError('signature must be a string, ' + - 'Buffer, or Signature object')); - } - }; - return (v); -}; - -Key.prototype.createDiffieHellman = function () { - if (this.type === 'rsa') - throw (new Error('RSA keys do not support Diffie-Hellman')); - - return (new DiffieHellman(this)); -}; -Key.prototype.createDH = Key.prototype.createDiffieHellman; - -Key.parse = function (data, format, options) { - if (typeof (data) !== 'string') - assert.buffer(data, 'data'); - if (format === undefined) - format = 'auto'; - assert.string(format, 'format'); - if (typeof (options) === 'string') - options = { filename: options }; - assert.optionalObject(options, 'options'); - if (options === undefined) - options = {}; - assert.optionalString(options.filename, 'options.filename'); - if (options.filename === undefined) - options.filename = '(unnamed)'; - - assert.object(formats[format], 'formats[format]'); - - try { - var k = formats[format].read(data, options); - if (k instanceof PrivateKey) - k = k.toPublic(); - if (!k.comment) - k.comment = options.filename; - return (k); - } catch (e) { - if (e.name === 'KeyEncryptedError') - throw (e); - throw (new KeyParseError(options.filename, format, e)); - } -}; - -Key.isKey = function (obj, ver) { - return (utils.isCompatible(obj, Key, ver)); -}; - -/* - * API versions for Key: - * [1,0] -- initial ver, may take Signature for createVerify or may not - * [1,1] -- added pkcs1, pkcs8 formats - * [1,2] -- added auto, ssh-private, openssh formats - * [1,3] -- added defaultHashAlgorithm - * [1,4] -- added ed support, createDH - * [1,5] -- first explicitly tagged version - * [1,6] -- changed ed25519 part names - */ -Key.prototype._sshpkApiVersion = [1, 6]; - -Key._oldVersionDetect = function (obj) { - assert.func(obj.toBuffer); - assert.func(obj.fingerprint); - if (obj.createDH) - return ([1, 4]); - if (obj.defaultHashAlgorithm) - return ([1, 3]); - if (obj.formats['auto']) - return ([1, 2]); - if (obj.formats['pkcs1']) - return ([1, 1]); - return ([1, 0]); -}; - - -/***/ }), -/* 28 */ -/***/ (function(module, exports) { - -module.exports = require("assert"); - -/***/ }), -/* 29 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = nullify; -function nullify(obj = {}) { - if (Array.isArray(obj)) { - for (var _iterator = obj, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } - - const item = _ref; - - nullify(item); - } - } else if (obj !== null && typeof obj === 'object' || typeof obj === 'function') { - Object.setPrototypeOf(obj, null); - - // for..in can only be applied to 'object', not 'function' - if (typeof obj === 'object') { - for (const key in obj) { - nullify(obj[key]); - } - } - } - - return obj; -} - -/***/ }), -/* 30 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -const escapeStringRegexp = __webpack_require__(388); -const ansiStyles = __webpack_require__(506); -const stdoutColor = __webpack_require__(598).stdout; - -const template = __webpack_require__(599); - -const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); - -// `supportsColor.level` → `ansiStyles.color[name]` mapping -const levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m']; - -// `color-convert` models to exclude from the Chalk API due to conflicts and such -const skipModels = new Set(['gray']); - -const styles = Object.create(null); - -function applyOptions(obj, options) { - options = options || {}; - - // Detect level if not set manually - const scLevel = stdoutColor ? stdoutColor.level : 0; - obj.level = options.level === undefined ? scLevel : options.level; - obj.enabled = 'enabled' in options ? options.enabled : obj.level > 0; -} - -function Chalk(options) { - // We check for this.template here since calling `chalk.constructor()` - // by itself will have a `this` of a previously constructed chalk object - if (!this || !(this instanceof Chalk) || this.template) { - const chalk = {}; - applyOptions(chalk, options); - - chalk.template = function () { - const args = [].slice.call(arguments); - return chalkTag.apply(null, [chalk.template].concat(args)); - }; - - Object.setPrototypeOf(chalk, Chalk.prototype); - Object.setPrototypeOf(chalk.template, chalk); - - chalk.template.constructor = Chalk; - - return chalk.template; - } - - applyOptions(this, options); -} - -// Use bright blue on Windows as the normal blue color is illegible -if (isSimpleWindowsTerm) { - ansiStyles.blue.open = '\u001B[94m'; -} - -for (const key of Object.keys(ansiStyles)) { - ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); - - styles[key] = { - get() { - const codes = ansiStyles[key]; - return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key); - } - }; -} - -styles.visible = { - get() { - return build.call(this, this._styles || [], true, 'visible'); - } -}; - -ansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g'); -for (const model of Object.keys(ansiStyles.color.ansi)) { - if (skipModels.has(model)) { - continue; - } - - styles[model] = { - get() { - const level = this.level; - return function () { - const open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments); - const codes = { - open, - close: ansiStyles.color.close, - closeRe: ansiStyles.color.closeRe - }; - return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); - }; - } - }; -} - -ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g'); -for (const model of Object.keys(ansiStyles.bgColor.ansi)) { - if (skipModels.has(model)) { - continue; - } - - const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1); - styles[bgModel] = { - get() { - const level = this.level; - return function () { - const open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments); - const codes = { - open, - close: ansiStyles.bgColor.close, - closeRe: ansiStyles.bgColor.closeRe - }; - return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); - }; - } - }; -} - -const proto = Object.defineProperties(() => {}, styles); - -function build(_styles, _empty, key) { - const builder = function () { - return applyStyle.apply(builder, arguments); - }; - - builder._styles = _styles; - builder._empty = _empty; - - const self = this; - - Object.defineProperty(builder, 'level', { - enumerable: true, - get() { - return self.level; - }, - set(level) { - self.level = level; - } - }); - - Object.defineProperty(builder, 'enabled', { - enumerable: true, - get() { - return self.enabled; - }, - set(enabled) { - self.enabled = enabled; - } - }); - - // See below for fix regarding invisible grey/dim combination on Windows - builder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey'; - - // `__proto__` is used because we must return a function, but there is - // no way to create a function with a different prototype - builder.__proto__ = proto; // eslint-disable-line no-proto - - return builder; -} - -function applyStyle() { - // Support varags, but simply cast to string in case there's only one arg - const args = arguments; - const argsLen = args.length; - let str = String(arguments[0]); - - if (argsLen === 0) { - return ''; - } - - if (argsLen > 1) { - // Don't slice `arguments`, it prevents V8 optimizations - for (let a = 1; a < argsLen; a++) { - str += ' ' + args[a]; - } - } - - if (!this.enabled || this.level <= 0 || !str) { - return this._empty ? '' : str; - } - - // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe, - // see https://github.com/chalk/chalk/issues/58 - // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop. - const originalDim = ansiStyles.dim.open; - if (isSimpleWindowsTerm && this.hasGrey) { - ansiStyles.dim.open = ''; - } - - for (const code of this._styles.slice().reverse()) { - // Replace any instances already present with a re-opening code - // otherwise only the part of the string until said closing code - // will be colored, and the rest will simply be 'plain'. - str = code.open + str.replace(code.closeRe, code.open) + code.close; - - // Close the styling before a linebreak and reopen - // after next line to fix a bleed issue on macOS - // https://github.com/chalk/chalk/pull/92 - str = str.replace(/\r?\n/g, `${code.close}$&${code.open}`); - } - - // Reset the original `dim` if we changed it to work around the Windows dimmed gray issue - ansiStyles.dim.open = originalDim; - - return str; -} - -function chalkTag(chalk, strings) { - if (!Array.isArray(strings)) { - // If chalk() was called by itself or with a string, - // return the string itself as a string. - return [].slice.call(arguments, 1).join(' '); - } - - const args = [].slice.call(arguments, 2); - const parts = [strings.raw[0]]; - - for (let i = 1; i < strings.length; i++) { - parts.push(String(args[i - 1]).replace(/[{}\\]/g, '\\$&')); - parts.push(String(strings.raw[i])); - } - - return template(chalk, parts.join('')); -} - -Object.defineProperties(Chalk.prototype, styles); - -module.exports = Chalk(); // eslint-disable-line new-cap -module.exports.supportsColor = stdoutColor; -module.exports.default = module.exports; // For TypeScript - - -/***/ }), -/* 31 */ -/***/ (function(module, exports) { - -var core = module.exports = { version: '2.5.7' }; -if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef - - -/***/ }), -/* 32 */ -/***/ (function(module, exports, __webpack_require__) { - -// Copyright 2015 Joyent, Inc. - -var Buffer = __webpack_require__(15).Buffer; - -var algInfo = { - 'dsa': { - parts: ['p', 'q', 'g', 'y'], - sizePart: 'p' - }, - 'rsa': { - parts: ['e', 'n'], - sizePart: 'n' - }, - 'ecdsa': { - parts: ['curve', 'Q'], - sizePart: 'Q' - }, - 'ed25519': { - parts: ['A'], - sizePart: 'A' - } -}; -algInfo['curve25519'] = algInfo['ed25519']; - -var algPrivInfo = { - 'dsa': { - parts: ['p', 'q', 'g', 'y', 'x'] - }, - 'rsa': { - parts: ['n', 'e', 'd', 'iqmp', 'p', 'q'] - }, - 'ecdsa': { - parts: ['curve', 'Q', 'd'] - }, - 'ed25519': { - parts: ['A', 'k'] - } -}; -algPrivInfo['curve25519'] = algPrivInfo['ed25519']; - -var hashAlgs = { - 'md5': true, - 'sha1': true, - 'sha256': true, - 'sha384': true, - 'sha512': true -}; - -/* - * Taken from - * http://csrc.nist.gov/groups/ST/toolkit/documents/dss/NISTReCur.pdf - */ -var curves = { - 'nistp256': { - size: 256, - pkcs8oid: '1.2.840.10045.3.1.7', - p: Buffer.from(('00' + - 'ffffffff 00000001 00000000 00000000' + - '00000000 ffffffff ffffffff ffffffff'). - replace(/ /g, ''), 'hex'), - a: Buffer.from(('00' + - 'FFFFFFFF 00000001 00000000 00000000' + - '00000000 FFFFFFFF FFFFFFFF FFFFFFFC'). - replace(/ /g, ''), 'hex'), - b: Buffer.from(( - '5ac635d8 aa3a93e7 b3ebbd55 769886bc' + - '651d06b0 cc53b0f6 3bce3c3e 27d2604b'). - replace(/ /g, ''), 'hex'), - s: Buffer.from(('00' + - 'c49d3608 86e70493 6a6678e1 139d26b7' + - '819f7e90'). - replace(/ /g, ''), 'hex'), - n: Buffer.from(('00' + - 'ffffffff 00000000 ffffffff ffffffff' + - 'bce6faad a7179e84 f3b9cac2 fc632551'). - replace(/ /g, ''), 'hex'), - G: Buffer.from(('04' + - '6b17d1f2 e12c4247 f8bce6e5 63a440f2' + - '77037d81 2deb33a0 f4a13945 d898c296' + - '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16' + - '2bce3357 6b315ece cbb64068 37bf51f5'). - replace(/ /g, ''), 'hex') - }, - 'nistp384': { - size: 384, - pkcs8oid: '1.3.132.0.34', - p: Buffer.from(('00' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff fffffffe' + - 'ffffffff 00000000 00000000 ffffffff'). - replace(/ /g, ''), 'hex'), - a: Buffer.from(('00' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE' + - 'FFFFFFFF 00000000 00000000 FFFFFFFC'). - replace(/ /g, ''), 'hex'), - b: Buffer.from(( - 'b3312fa7 e23ee7e4 988e056b e3f82d19' + - '181d9c6e fe814112 0314088f 5013875a' + - 'c656398d 8a2ed19d 2a85c8ed d3ec2aef'). - replace(/ /g, ''), 'hex'), - s: Buffer.from(('00' + - 'a335926a a319a27a 1d00896a 6773a482' + - '7acdac73'). - replace(/ /g, ''), 'hex'), - n: Buffer.from(('00' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff c7634d81 f4372ddf' + - '581a0db2 48b0a77a ecec196a ccc52973'). - replace(/ /g, ''), 'hex'), - G: Buffer.from(('04' + - 'aa87ca22 be8b0537 8eb1c71e f320ad74' + - '6e1d3b62 8ba79b98 59f741e0 82542a38' + - '5502f25d bf55296c 3a545e38 72760ab7' + - '3617de4a 96262c6f 5d9e98bf 9292dc29' + - 'f8f41dbd 289a147c e9da3113 b5f0b8c0' + - '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'). - replace(/ /g, ''), 'hex') - }, - 'nistp521': { - size: 521, - pkcs8oid: '1.3.132.0.35', - p: Buffer.from(( - '01ffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffff').replace(/ /g, ''), 'hex'), - a: Buffer.from(('01FF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFC'). - replace(/ /g, ''), 'hex'), - b: Buffer.from(('51' + - '953eb961 8e1c9a1f 929a21a0 b68540ee' + - 'a2da725b 99b315f3 b8b48991 8ef109e1' + - '56193951 ec7e937b 1652c0bd 3bb1bf07' + - '3573df88 3d2c34f1 ef451fd4 6b503f00'). - replace(/ /g, ''), 'hex'), - s: Buffer.from(('00' + - 'd09e8800 291cb853 96cc6717 393284aa' + - 'a0da64ba').replace(/ /g, ''), 'hex'), - n: Buffer.from(('01ff' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff fffffffa' + - '51868783 bf2f966b 7fcc0148 f709a5d0' + - '3bb5c9b8 899c47ae bb6fb71e 91386409'). - replace(/ /g, ''), 'hex'), - G: Buffer.from(('04' + - '00c6 858e06b7 0404e9cd 9e3ecb66 2395b442' + - '9c648139 053fb521 f828af60 6b4d3dba' + - 'a14b5e77 efe75928 fe1dc127 a2ffa8de' + - '3348b3c1 856a429b f97e7e31 c2e5bd66' + - '0118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9' + - '98f54449 579b4468 17afbd17 273e662c' + - '97ee7299 5ef42640 c550b901 3fad0761' + - '353c7086 a272c240 88be9476 9fd16650'). - replace(/ /g, ''), 'hex') - } -}; - -module.exports = { - info: algInfo, - privInfo: algPrivInfo, - hashAlgs: hashAlgs, - curves: curves -}; - - -/***/ }), -/* 33 */ -/***/ (function(module, exports, __webpack_require__) { - -// Copyright 2017 Joyent, Inc. - -module.exports = PrivateKey; - -var assert = __webpack_require__(16); -var Buffer = __webpack_require__(15).Buffer; -var algs = __webpack_require__(32); -var crypto = __webpack_require__(11); -var Fingerprint = __webpack_require__(156); -var Signature = __webpack_require__(75); -var errs = __webpack_require__(74); -var util = __webpack_require__(3); -var utils = __webpack_require__(26); -var dhe = __webpack_require__(325); -var generateECDSA = dhe.generateECDSA; -var generateED25519 = dhe.generateED25519; -var edCompat; -var nacl; - -try { - edCompat = __webpack_require__(454); -} catch (e) { - /* Just continue through, and bail out if we try to use it. */ -} - -var Key = __webpack_require__(27); - -var InvalidAlgorithmError = errs.InvalidAlgorithmError; -var KeyParseError = errs.KeyParseError; -var KeyEncryptedError = errs.KeyEncryptedError; - -var formats = {}; -formats['auto'] = __webpack_require__(455); -formats['pem'] = __webpack_require__(86); -formats['pkcs1'] = __webpack_require__(327); -formats['pkcs8'] = __webpack_require__(157); -formats['rfc4253'] = __webpack_require__(103); -formats['ssh-private'] = __webpack_require__(192); -formats['openssh'] = formats['ssh-private']; -formats['ssh'] = formats['ssh-private']; -formats['dnssec'] = __webpack_require__(326); - -function PrivateKey(opts) { - assert.object(opts, 'options'); - Key.call(this, opts); - - this._pubCache = undefined; -} -util.inherits(PrivateKey, Key); - -PrivateKey.formats = formats; - -PrivateKey.prototype.toBuffer = function (format, options) { - if (format === undefined) - format = 'pkcs1'; - assert.string(format, 'format'); - assert.object(formats[format], 'formats[format]'); - assert.optionalObject(options, 'options'); - - return (formats[format].write(this, options)); -}; - -PrivateKey.prototype.hash = function (algo) { - return (this.toPublic().hash(algo)); -}; - -PrivateKey.prototype.toPublic = function () { - if (this._pubCache) - return (this._pubCache); - - var algInfo = algs.info[this.type]; - var pubParts = []; - for (var i = 0; i < algInfo.parts.length; ++i) { - var p = algInfo.parts[i]; - pubParts.push(this.part[p]); - } - - this._pubCache = new Key({ - type: this.type, - source: this, - parts: pubParts - }); - if (this.comment) - this._pubCache.comment = this.comment; - return (this._pubCache); -}; - -PrivateKey.prototype.derive = function (newType) { - assert.string(newType, 'type'); - var priv, pub, pair; - - if (this.type === 'ed25519' && newType === 'curve25519') { - if (nacl === undefined) - nacl = __webpack_require__(76); - - priv = this.part.k.data; - if (priv[0] === 0x00) - priv = priv.slice(1); - - pair = nacl.box.keyPair.fromSecretKey(new Uint8Array(priv)); - pub = Buffer.from(pair.publicKey); - - return (new PrivateKey({ - type: 'curve25519', - parts: [ - { name: 'A', data: utils.mpNormalize(pub) }, - { name: 'k', data: utils.mpNormalize(priv) } - ] - })); - } else if (this.type === 'curve25519' && newType === 'ed25519') { - if (nacl === undefined) - nacl = __webpack_require__(76); - - priv = this.part.k.data; - if (priv[0] === 0x00) - priv = priv.slice(1); - - pair = nacl.sign.keyPair.fromSeed(new Uint8Array(priv)); - pub = Buffer.from(pair.publicKey); - - return (new PrivateKey({ - type: 'ed25519', - parts: [ - { name: 'A', data: utils.mpNormalize(pub) }, - { name: 'k', data: utils.mpNormalize(priv) } - ] - })); - } - throw (new Error('Key derivation not supported from ' + this.type + - ' to ' + newType)); -}; - -PrivateKey.prototype.createVerify = function (hashAlgo) { - return (this.toPublic().createVerify(hashAlgo)); -}; - -PrivateKey.prototype.createSign = function (hashAlgo) { - if (hashAlgo === undefined) - hashAlgo = this.defaultHashAlgorithm(); - assert.string(hashAlgo, 'hash algorithm'); - - /* ED25519 is not supported by OpenSSL, use a javascript impl. */ - if (this.type === 'ed25519' && edCompat !== undefined) - return (new edCompat.Signer(this, hashAlgo)); - if (this.type === 'curve25519') - throw (new Error('Curve25519 keys are not suitable for ' + - 'signing or verification')); - - var v, nm, err; - try { - nm = hashAlgo.toUpperCase(); - v = crypto.createSign(nm); - } catch (e) { - err = e; - } - if (v === undefined || (err instanceof Error && - err.message.match(/Unknown message digest/))) { - nm = 'RSA-'; - nm += hashAlgo.toUpperCase(); - v = crypto.createSign(nm); - } - assert.ok(v, 'failed to create verifier'); - var oldSign = v.sign.bind(v); - var key = this.toBuffer('pkcs1'); - var type = this.type; - var curve = this.curve; - v.sign = function () { - var sig = oldSign(key); - if (typeof (sig) === 'string') - sig = Buffer.from(sig, 'binary'); - sig = Signature.parse(sig, type, 'asn1'); - sig.hashAlgorithm = hashAlgo; - sig.curve = curve; - return (sig); - }; - return (v); -}; - -PrivateKey.parse = function (data, format, options) { - if (typeof (data) !== 'string') - assert.buffer(data, 'data'); - if (format === undefined) - format = 'auto'; - assert.string(format, 'format'); - if (typeof (options) === 'string') - options = { filename: options }; - assert.optionalObject(options, 'options'); - if (options === undefined) - options = {}; - assert.optionalString(options.filename, 'options.filename'); - if (options.filename === undefined) - options.filename = '(unnamed)'; - - assert.object(formats[format], 'formats[format]'); - - try { - var k = formats[format].read(data, options); - assert.ok(k instanceof PrivateKey, 'key is not a private key'); - if (!k.comment) - k.comment = options.filename; - return (k); - } catch (e) { - if (e.name === 'KeyEncryptedError') - throw (e); - throw (new KeyParseError(options.filename, format, e)); - } -}; - -PrivateKey.isPrivateKey = function (obj, ver) { - return (utils.isCompatible(obj, PrivateKey, ver)); -}; - -PrivateKey.generate = function (type, options) { - if (options === undefined) - options = {}; - assert.object(options, 'options'); - - switch (type) { - case 'ecdsa': - if (options.curve === undefined) - options.curve = 'nistp256'; - assert.string(options.curve, 'options.curve'); - return (generateECDSA(options.curve)); - case 'ed25519': - return (generateED25519()); - default: - throw (new Error('Key generation not supported with key ' + - 'type "' + type + '"')); - } -}; - -/* - * API versions for PrivateKey: - * [1,0] -- initial ver - * [1,1] -- added auto, pkcs[18], openssh/ssh-private formats - * [1,2] -- added defaultHashAlgorithm - * [1,3] -- added derive, ed, createDH - * [1,4] -- first tagged version - * [1,5] -- changed ed25519 part names and format - */ -PrivateKey.prototype._sshpkApiVersion = [1, 5]; - -PrivateKey._oldVersionDetect = function (obj) { - assert.func(obj.toPublic); - assert.func(obj.createSign); - if (obj.derive) - return ([1, 3]); - if (obj.defaultHashAlgorithm) - return ([1, 2]); - if (obj.formats['auto']) - return ([1, 1]); - return ([1, 0]); -}; - - -/***/ }), -/* 34 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.wrapLifecycle = exports.run = exports.install = exports.Install = undefined; - -var _extends2; - -function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); -} - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); -} - -let install = exports.install = (() => { - var _ref29 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, lockfile) { - yield wrapLifecycle(config, flags, (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - const install = new Install(flags, config, reporter, lockfile); - yield install.init(); - })); - }); - - return function install(_x7, _x8, _x9, _x10) { - return _ref29.apply(this, arguments); - }; -})(); - -let run = exports.run = (() => { - var _ref31 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) { - let lockfile; - let error = 'installCommandRenamed'; - if (flags.lockfile === false) { - lockfile = new (_lockfile || _load_lockfile()).default(); - } else { - lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.lockfileFolder, reporter); - } - - if (args.length) { - const exampleArgs = args.slice(); - - if (flags.saveDev) { - exampleArgs.push('--dev'); - } - if (flags.savePeer) { - exampleArgs.push('--peer'); - } - if (flags.saveOptional) { - exampleArgs.push('--optional'); - } - if (flags.saveExact) { - exampleArgs.push('--exact'); - } - if (flags.saveTilde) { - exampleArgs.push('--tilde'); - } - let command = 'add'; - if (flags.global) { - error = 'globalFlagRemoved'; - command = 'global add'; - } - throw new (_errors || _load_errors()).MessageError(reporter.lang(error, `yarn ${command} ${exampleArgs.join(' ')}`)); - } - - yield install(config, reporter, flags, lockfile); - }); - - return function run(_x11, _x12, _x13, _x14) { - return _ref31.apply(this, arguments); - }; -})(); - -let wrapLifecycle = exports.wrapLifecycle = (() => { - var _ref32 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, flags, factory) { - yield config.executeLifecycleScript('preinstall'); - - yield factory(); - - // npm behaviour, seems kinda funky but yay compatibility - yield config.executeLifecycleScript('install'); - yield config.executeLifecycleScript('postinstall'); - - if (!config.production) { - if (!config.disablePrepublish) { - yield config.executeLifecycleScript('prepublish'); - } - yield config.executeLifecycleScript('prepare'); - } - }); - - return function wrapLifecycle(_x15, _x16, _x17) { - return _ref32.apply(this, arguments); - }; -})(); - -exports.hasWrapper = hasWrapper; -exports.setFlags = setFlags; - -var _objectPath; - -function _load_objectPath() { - return _objectPath = _interopRequireDefault(__webpack_require__(304)); -} - -var _hooks; - -function _load_hooks() { - return _hooks = __webpack_require__(374); -} - -var _index; - -function _load_index() { - return _index = _interopRequireDefault(__webpack_require__(220)); -} - -var _errors; - -function _load_errors() { - return _errors = __webpack_require__(6); -} - -var _integrityChecker; - -function _load_integrityChecker() { - return _integrityChecker = _interopRequireDefault(__webpack_require__(208)); -} - -var _lockfile; - -function _load_lockfile() { - return _lockfile = _interopRequireDefault(__webpack_require__(19)); -} - -var _lockfile2; - -function _load_lockfile2() { - return _lockfile2 = __webpack_require__(19); -} - -var _packageFetcher; - -function _load_packageFetcher() { - return _packageFetcher = _interopRequireWildcard(__webpack_require__(210)); -} - -var _packageInstallScripts; - -function _load_packageInstallScripts() { - return _packageInstallScripts = _interopRequireDefault(__webpack_require__(557)); -} - -var _packageCompatibility; - -function _load_packageCompatibility() { - return _packageCompatibility = _interopRequireWildcard(__webpack_require__(209)); -} - -var _packageResolver; - -function _load_packageResolver() { - return _packageResolver = _interopRequireDefault(__webpack_require__(366)); -} - -var _packageLinker; - -function _load_packageLinker() { - return _packageLinker = _interopRequireDefault(__webpack_require__(211)); -} - -var _index2; - -function _load_index2() { - return _index2 = __webpack_require__(57); -} - -var _index3; - -function _load_index3() { - return _index3 = __webpack_require__(78); -} - -var _autoclean; - -function _load_autoclean() { - return _autoclean = __webpack_require__(354); -} - -var _constants; - -function _load_constants() { - return _constants = _interopRequireWildcard(__webpack_require__(8)); -} - -var _normalizePattern; - -function _load_normalizePattern() { - return _normalizePattern = __webpack_require__(37); -} - -var _fs; - -function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); -} - -var _map; - -function _load_map() { - return _map = _interopRequireDefault(__webpack_require__(29)); -} - -var _yarnVersion; - -function _load_yarnVersion() { - return _yarnVersion = __webpack_require__(120); -} - -var _generatePnpMap; - -function _load_generatePnpMap() { - return _generatePnpMap = __webpack_require__(579); -} - -var _workspaceLayout; - -function _load_workspaceLayout() { - return _workspaceLayout = _interopRequireDefault(__webpack_require__(90)); -} - -var _resolutionMap; - -function _load_resolutionMap() { - return _resolutionMap = _interopRequireDefault(__webpack_require__(214)); -} - -var _guessName; - -function _load_guessName() { - return _guessName = _interopRequireDefault(__webpack_require__(169)); -} - -var _audit; - -function _load_audit() { - return _audit = _interopRequireDefault(__webpack_require__(353)); -} - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -const deepEqual = __webpack_require__(631); - -const emoji = __webpack_require__(302); -const invariant = __webpack_require__(9); -const path = __webpack_require__(0); -const semver = __webpack_require__(22); -const uuid = __webpack_require__(119); -const ssri = __webpack_require__(65); - -const ONE_DAY = 1000 * 60 * 60 * 24; - -/** - * Try and detect the installation method for Yarn and provide a command to update it with. - */ - -function getUpdateCommand(installationMethod) { - if (installationMethod === 'tar') { - return `curl --compressed -o- -L ${(_constants || _load_constants()).YARN_INSTALLER_SH} | bash`; - } - - if (installationMethod === 'homebrew') { - return 'brew upgrade yarn'; - } - - if (installationMethod === 'deb') { - return 'sudo apt-get update && sudo apt-get install yarn'; - } - - if (installationMethod === 'rpm') { - return 'sudo yum install yarn'; - } - - if (installationMethod === 'npm') { - return 'npm install --global yarn'; - } - - if (installationMethod === 'chocolatey') { - return 'choco upgrade yarn'; - } - - if (installationMethod === 'apk') { - return 'apk update && apk add -u yarn'; - } - - if (installationMethod === 'portage') { - return 'sudo emerge --sync && sudo emerge -au sys-apps/yarn'; - } - - return null; -} - -function getUpdateInstaller(installationMethod) { - // Windows - if (installationMethod === 'msi') { - return (_constants || _load_constants()).YARN_INSTALLER_MSI; - } - - return null; -} - -function normalizeFlags(config, rawFlags) { - const flags = { - // install - har: !!rawFlags.har, - ignorePlatform: !!rawFlags.ignorePlatform, - ignoreEngines: !!rawFlags.ignoreEngines, - ignoreScripts: !!rawFlags.ignoreScripts, - ignoreOptional: !!rawFlags.ignoreOptional, - force: !!rawFlags.force, - flat: !!rawFlags.flat, - lockfile: rawFlags.lockfile !== false, - pureLockfile: !!rawFlags.pureLockfile, - updateChecksums: !!rawFlags.updateChecksums, - skipIntegrityCheck: !!rawFlags.skipIntegrityCheck, - frozenLockfile: !!rawFlags.frozenLockfile, - linkDuplicates: !!rawFlags.linkDuplicates, - checkFiles: !!rawFlags.checkFiles, - audit: !!rawFlags.audit, - - // add - peer: !!rawFlags.peer, - dev: !!rawFlags.dev, - optional: !!rawFlags.optional, - exact: !!rawFlags.exact, - tilde: !!rawFlags.tilde, - ignoreWorkspaceRootCheck: !!rawFlags.ignoreWorkspaceRootCheck, - - // outdated, update-interactive - includeWorkspaceDeps: !!rawFlags.includeWorkspaceDeps, - - // add, remove, update - workspaceRootIsCwd: rawFlags.workspaceRootIsCwd !== false - }; - - if (config.getOption('ignore-scripts')) { - flags.ignoreScripts = true; - } - - if (config.getOption('ignore-platform')) { - flags.ignorePlatform = true; - } - - if (config.getOption('ignore-engines')) { - flags.ignoreEngines = true; - } - - if (config.getOption('ignore-optional')) { - flags.ignoreOptional = true; - } - - if (config.getOption('force')) { - flags.force = true; - } - - return flags; -} - -class Install { - constructor(flags, config, reporter, lockfile) { - this.rootManifestRegistries = []; - this.rootPatternsToOrigin = (0, (_map || _load_map()).default)(); - this.lockfile = lockfile; - this.reporter = reporter; - this.config = config; - this.flags = normalizeFlags(config, flags); - this.resolutions = (0, (_map || _load_map()).default)(); // Legacy resolutions field used for flat install mode - this.resolutionMap = new (_resolutionMap || _load_resolutionMap()).default(config); // Selective resolutions for nested dependencies - this.resolver = new (_packageResolver || _load_packageResolver()).default(config, lockfile, this.resolutionMap); - this.integrityChecker = new (_integrityChecker || _load_integrityChecker()).default(config); - this.linker = new (_packageLinker || _load_packageLinker()).default(config, this.resolver); - this.scripts = new (_packageInstallScripts || _load_packageInstallScripts()).default(config, this.resolver, this.flags.force); - } - - /** - * Create a list of dependency requests from the current directories manifests. - */ - - fetchRequestFromCwd(excludePatterns = [], ignoreUnusedPatterns = false) { - var _this = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - const patterns = []; - const deps = []; - let resolutionDeps = []; - const manifest = {}; - - const ignorePatterns = []; - const usedPatterns = []; - let workspaceLayout; - - // some commands should always run in the context of the entire workspace - const cwd = _this.flags.includeWorkspaceDeps || _this.flags.workspaceRootIsCwd ? _this.config.lockfileFolder : _this.config.cwd; - - // non-workspaces are always root, otherwise check for workspace root - const cwdIsRoot = !_this.config.workspaceRootFolder || _this.config.lockfileFolder === cwd; - - // exclude package names that are in install args - const excludeNames = []; - for (var _iterator = excludePatterns, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } - - const pattern = _ref; - - if ((0, (_index3 || _load_index3()).getExoticResolver)(pattern)) { - excludeNames.push((0, (_guessName || _load_guessName()).default)(pattern)); - } else { - // extract the name - const parts = (0, (_normalizePattern || _load_normalizePattern()).normalizePattern)(pattern); - excludeNames.push(parts.name); - } - } - - const stripExcluded = function stripExcluded(manifest) { - for (var _iterator2 = excludeNames, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { - var _ref2; - - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref2 = _iterator2[_i2++]; - } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref2 = _i2.value; - } - - const exclude = _ref2; - - if (manifest.dependencies && manifest.dependencies[exclude]) { - delete manifest.dependencies[exclude]; - } - if (manifest.devDependencies && manifest.devDependencies[exclude]) { - delete manifest.devDependencies[exclude]; - } - if (manifest.optionalDependencies && manifest.optionalDependencies[exclude]) { - delete manifest.optionalDependencies[exclude]; - } - } - }; - - for (var _iterator3 = Object.keys((_index2 || _load_index2()).registries), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { - var _ref3; - - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref3 = _iterator3[_i3++]; - } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref3 = _i3.value; - } - - const registry = _ref3; - - const filename = (_index2 || _load_index2()).registries[registry].filename; - - const loc = path.join(cwd, filename); - if (!(yield (_fs || _load_fs()).exists(loc))) { - continue; - } - - _this.rootManifestRegistries.push(registry); - - const projectManifestJson = yield _this.config.readJson(loc); - yield (0, (_index || _load_index()).default)(projectManifestJson, cwd, _this.config, cwdIsRoot); - - Object.assign(_this.resolutions, projectManifestJson.resolutions); - Object.assign(manifest, projectManifestJson); - - _this.resolutionMap.init(_this.resolutions); - for (var _iterator4 = Object.keys(_this.resolutionMap.resolutionsByPackage), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { - var _ref4; - - if (_isArray4) { - if (_i4 >= _iterator4.length) break; - _ref4 = _iterator4[_i4++]; - } else { - _i4 = _iterator4.next(); - if (_i4.done) break; - _ref4 = _i4.value; - } - - const packageName = _ref4; - - const optional = (_objectPath || _load_objectPath()).default.has(manifest.optionalDependencies, packageName) && _this.flags.ignoreOptional; - for (var _iterator8 = _this.resolutionMap.resolutionsByPackage[packageName], _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) { - var _ref9; - - if (_isArray8) { - if (_i8 >= _iterator8.length) break; - _ref9 = _iterator8[_i8++]; - } else { - _i8 = _iterator8.next(); - if (_i8.done) break; - _ref9 = _i8.value; - } - - const _ref8 = _ref9; - const pattern = _ref8.pattern; - - resolutionDeps = [...resolutionDeps, { registry, pattern, optional, hint: 'resolution' }]; - } - } - - const pushDeps = function pushDeps(depType, manifest, { hint, optional }, isUsed) { - if (ignoreUnusedPatterns && !isUsed) { - return; - } - // We only take unused dependencies into consideration to get deterministic hoisting. - // Since flat mode doesn't care about hoisting and everything is top level and specified then we can safely - // leave these out. - if (_this.flags.flat && !isUsed) { - return; - } - const depMap = manifest[depType]; - for (const name in depMap) { - if (excludeNames.indexOf(name) >= 0) { - continue; - } - - let pattern = name; - if (!_this.lockfile.getLocked(pattern)) { - // when we use --save we save the dependency to the lockfile with just the name rather than the - // version combo - pattern += '@' + depMap[name]; - } - - // normalization made sure packages are mentioned only once - if (isUsed) { - usedPatterns.push(pattern); - } else { - ignorePatterns.push(pattern); - } - - _this.rootPatternsToOrigin[pattern] = depType; - patterns.push(pattern); - deps.push({ pattern, registry, hint, optional, workspaceName: manifest.name, workspaceLoc: manifest._loc }); - } - }; - - if (cwdIsRoot) { - pushDeps('dependencies', projectManifestJson, { hint: null, optional: false }, true); - pushDeps('devDependencies', projectManifestJson, { hint: 'dev', optional: false }, !_this.config.production); - pushDeps('optionalDependencies', projectManifestJson, { hint: 'optional', optional: true }, true); - } - - if (_this.config.workspaceRootFolder) { - const workspaceLoc = cwdIsRoot ? loc : path.join(_this.config.lockfileFolder, filename); - const workspacesRoot = path.dirname(workspaceLoc); - - let workspaceManifestJson = projectManifestJson; - if (!cwdIsRoot) { - // the manifest we read before was a child workspace, so get the root - workspaceManifestJson = yield _this.config.readJson(workspaceLoc); - yield (0, (_index || _load_index()).default)(workspaceManifestJson, workspacesRoot, _this.config, true); - } - - const workspaces = yield _this.config.resolveWorkspaces(workspacesRoot, workspaceManifestJson); - workspaceLayout = new (_workspaceLayout || _load_workspaceLayout()).default(workspaces, _this.config); - - // add virtual manifest that depends on all workspaces, this way package hoisters and resolvers will work fine - const workspaceDependencies = (0, (_extends2 || _load_extends()).default)({}, workspaceManifestJson.dependencies); - for (var _iterator5 = Object.keys(workspaces), _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { - var _ref5; - - if (_isArray5) { - if (_i5 >= _iterator5.length) break; - _ref5 = _iterator5[_i5++]; - } else { - _i5 = _iterator5.next(); - if (_i5.done) break; - _ref5 = _i5.value; - } - - const workspaceName = _ref5; - - const workspaceManifest = workspaces[workspaceName].manifest; - workspaceDependencies[workspaceName] = workspaceManifest.version; - - // include dependencies from all workspaces - if (_this.flags.includeWorkspaceDeps) { - pushDeps('dependencies', workspaceManifest, { hint: null, optional: false }, true); - pushDeps('devDependencies', workspaceManifest, { hint: 'dev', optional: false }, !_this.config.production); - pushDeps('optionalDependencies', workspaceManifest, { hint: 'optional', optional: true }, true); - } - } - const virtualDependencyManifest = { - _uid: '', - name: `workspace-aggregator-${uuid.v4()}`, - version: '1.0.0', - _registry: 'npm', - _loc: workspacesRoot, - dependencies: workspaceDependencies, - devDependencies: (0, (_extends2 || _load_extends()).default)({}, workspaceManifestJson.devDependencies), - optionalDependencies: (0, (_extends2 || _load_extends()).default)({}, workspaceManifestJson.optionalDependencies), - private: workspaceManifestJson.private, - workspaces: workspaceManifestJson.workspaces - }; - workspaceLayout.virtualManifestName = virtualDependencyManifest.name; - const virtualDep = {}; - virtualDep[virtualDependencyManifest.name] = virtualDependencyManifest.version; - workspaces[virtualDependencyManifest.name] = { loc: workspacesRoot, manifest: virtualDependencyManifest }; - - // ensure dependencies that should be excluded are stripped from the correct manifest - stripExcluded(cwdIsRoot ? virtualDependencyManifest : workspaces[projectManifestJson.name].manifest); - - pushDeps('workspaces', { workspaces: virtualDep }, { hint: 'workspaces', optional: false }, true); - - const implicitWorkspaceDependencies = (0, (_extends2 || _load_extends()).default)({}, workspaceDependencies); - - for (var _iterator6 = (_constants || _load_constants()).OWNED_DEPENDENCY_TYPES, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) { - var _ref6; - - if (_isArray6) { - if (_i6 >= _iterator6.length) break; - _ref6 = _iterator6[_i6++]; - } else { - _i6 = _iterator6.next(); - if (_i6.done) break; - _ref6 = _i6.value; - } - - const type = _ref6; - - for (var _iterator7 = Object.keys(projectManifestJson[type] || {}), _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) { - var _ref7; - - if (_isArray7) { - if (_i7 >= _iterator7.length) break; - _ref7 = _iterator7[_i7++]; - } else { - _i7 = _iterator7.next(); - if (_i7.done) break; - _ref7 = _i7.value; - } - - const dependencyName = _ref7; - - delete implicitWorkspaceDependencies[dependencyName]; - } - } - - pushDeps('dependencies', { dependencies: implicitWorkspaceDependencies }, { hint: 'workspaces', optional: false }, true); - } - - break; - } - - // inherit root flat flag - if (manifest.flat) { - _this.flags.flat = true; - } - - return { - requests: [...resolutionDeps, ...deps], - patterns, - manifest, - usedPatterns, - ignorePatterns, - workspaceLayout - }; - })(); - } - - /** - * TODO description - */ - - prepareRequests(requests) { - return requests; - } - - preparePatterns(patterns) { - return patterns; - } - preparePatternsForLinking(patterns, cwdManifest, cwdIsRoot) { - return patterns; - } - - prepareManifests() { - var _this2 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - const manifests = yield _this2.config.getRootManifests(); - return manifests; - })(); - } - - bailout(patterns, workspaceLayout) { - var _this3 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - // We don't want to skip the audit - it could yield important errors - if (_this3.flags.audit) { - return false; - } - // PNP is so fast that the integrity check isn't pertinent - if (_this3.config.plugnplayEnabled) { - return false; - } - if (_this3.flags.skipIntegrityCheck || _this3.flags.force) { - return false; - } - const lockfileCache = _this3.lockfile.cache; - if (!lockfileCache) { - return false; - } - const lockfileClean = _this3.lockfile.parseResultType === 'success'; - const match = yield _this3.integrityChecker.check(patterns, lockfileCache, _this3.flags, workspaceLayout); - if (_this3.flags.frozenLockfile && (!lockfileClean || match.missingPatterns.length > 0)) { - throw new (_errors || _load_errors()).MessageError(_this3.reporter.lang('frozenLockfileError')); - } - - const haveLockfile = yield (_fs || _load_fs()).exists(path.join(_this3.config.lockfileFolder, (_constants || _load_constants()).LOCKFILE_FILENAME)); - - const lockfileIntegrityPresent = !_this3.lockfile.hasEntriesExistWithoutIntegrity(); - const integrityBailout = lockfileIntegrityPresent || !_this3.config.autoAddIntegrity; - - if (match.integrityMatches && haveLockfile && lockfileClean && integrityBailout) { - _this3.reporter.success(_this3.reporter.lang('upToDate')); - return true; - } - - if (match.integrityFileMissing && haveLockfile) { - // Integrity file missing, force script installations - _this3.scripts.setForce(true); - return false; - } - - if (match.hardRefreshRequired) { - // e.g. node version doesn't match, force script installations - _this3.scripts.setForce(true); - return false; - } - - if (!patterns.length && !match.integrityFileMissing) { - _this3.reporter.success(_this3.reporter.lang('nothingToInstall')); - yield _this3.createEmptyManifestFolders(); - yield _this3.saveLockfileAndIntegrity(patterns, workspaceLayout); - return true; - } - - return false; - })(); - } - - /** - * Produce empty folders for all used root manifests. - */ - - createEmptyManifestFolders() { - var _this4 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - if (_this4.config.modulesFolder) { - // already created - return; - } - - for (var _iterator9 = _this4.rootManifestRegistries, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) { - var _ref10; - - if (_isArray9) { - if (_i9 >= _iterator9.length) break; - _ref10 = _iterator9[_i9++]; - } else { - _i9 = _iterator9.next(); - if (_i9.done) break; - _ref10 = _i9.value; - } - - const registryName = _ref10; - const folder = _this4.config.registries[registryName].folder; - - yield (_fs || _load_fs()).mkdirp(path.join(_this4.config.lockfileFolder, folder)); - } - })(); - } - - /** - * TODO description - */ - - markIgnored(patterns) { - for (var _iterator10 = patterns, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) { - var _ref11; - - if (_isArray10) { - if (_i10 >= _iterator10.length) break; - _ref11 = _iterator10[_i10++]; - } else { - _i10 = _iterator10.next(); - if (_i10.done) break; - _ref11 = _i10.value; - } - - const pattern = _ref11; - - const manifest = this.resolver.getStrictResolvedPattern(pattern); - const ref = manifest._reference; - invariant(ref, 'expected package reference'); - - // just mark the package as ignored. if the package is used by a required package, the hoister - // will take care of that. - ref.ignore = true; - } - } - - /** - * helper method that gets only recent manifests - * used by global.ls command - */ - getFlattenedDeps() { - var _this5 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var _ref12 = yield _this5.fetchRequestFromCwd(); - - const depRequests = _ref12.requests, - rawPatterns = _ref12.patterns; - - - yield _this5.resolver.init(depRequests, {}); - - const manifests = yield (_packageFetcher || _load_packageFetcher()).fetch(_this5.resolver.getManifests(), _this5.config); - _this5.resolver.updateManifests(manifests); - - return _this5.flatten(rawPatterns); - })(); - } - - /** - * TODO description - */ - - init() { - var _this6 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - _this6.checkUpdate(); - - // warn if we have a shrinkwrap - if (yield (_fs || _load_fs()).exists(path.join(_this6.config.lockfileFolder, (_constants || _load_constants()).NPM_SHRINKWRAP_FILENAME))) { - _this6.reporter.warn(_this6.reporter.lang('shrinkwrapWarning')); - } - - // warn if we have an npm lockfile - if (yield (_fs || _load_fs()).exists(path.join(_this6.config.lockfileFolder, (_constants || _load_constants()).NPM_LOCK_FILENAME))) { - _this6.reporter.warn(_this6.reporter.lang('npmLockfileWarning')); - } - - if (_this6.config.plugnplayEnabled) { - _this6.reporter.info(_this6.reporter.lang('plugnplaySuggestV2L1')); - _this6.reporter.info(_this6.reporter.lang('plugnplaySuggestV2L2')); - } - - let flattenedTopLevelPatterns = []; - const steps = []; - - var _ref13 = yield _this6.fetchRequestFromCwd(); - - const depRequests = _ref13.requests, - rawPatterns = _ref13.patterns, - ignorePatterns = _ref13.ignorePatterns, - workspaceLayout = _ref13.workspaceLayout, - manifest = _ref13.manifest; - - let topLevelPatterns = []; - - const artifacts = yield _this6.integrityChecker.getArtifacts(); - if (artifacts) { - _this6.linker.setArtifacts(artifacts); - _this6.scripts.setArtifacts(artifacts); - } - - if ((_packageCompatibility || _load_packageCompatibility()).shouldCheck(manifest, _this6.flags)) { - steps.push((() => { - var _ref14 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (curr, total) { - _this6.reporter.step(curr, total, _this6.reporter.lang('checkingManifest'), emoji.get('mag')); - yield _this6.checkCompatibility(); - }); - - return function (_x, _x2) { - return _ref14.apply(this, arguments); - }; - })()); - } - - const audit = new (_audit || _load_audit()).default(_this6.config, _this6.reporter, { groups: (_constants || _load_constants()).OWNED_DEPENDENCY_TYPES }); - let auditFoundProblems = false; - - steps.push(function (curr, total) { - return (0, (_hooks || _load_hooks()).callThroughHook)('resolveStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - _this6.reporter.step(curr, total, _this6.reporter.lang('resolvingPackages'), emoji.get('mag')); - yield _this6.resolver.init(_this6.prepareRequests(depRequests), { - isFlat: _this6.flags.flat, - isFrozen: _this6.flags.frozenLockfile, - workspaceLayout - }); - topLevelPatterns = _this6.preparePatterns(rawPatterns); - flattenedTopLevelPatterns = yield _this6.flatten(topLevelPatterns); - return { bailout: !_this6.flags.audit && (yield _this6.bailout(topLevelPatterns, workspaceLayout)) }; - })); - }); - - if (_this6.flags.audit) { - steps.push(function (curr, total) { - return (0, (_hooks || _load_hooks()).callThroughHook)('auditStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - _this6.reporter.step(curr, total, _this6.reporter.lang('auditRunning'), emoji.get('mag')); - if (_this6.flags.offline) { - _this6.reporter.warn(_this6.reporter.lang('auditOffline')); - return { bailout: false }; - } - const preparedManifests = yield _this6.prepareManifests(); - // $FlowFixMe - Flow considers `m` in the map operation to be "mixed", so does not recognize `m.object` - const mergedManifest = Object.assign({}, ...Object.values(preparedManifests).map(function (m) { - return m.object; - })); - const auditVulnerabilityCounts = yield audit.performAudit(mergedManifest, _this6.lockfile, _this6.resolver, _this6.linker, topLevelPatterns); - auditFoundProblems = auditVulnerabilityCounts.info || auditVulnerabilityCounts.low || auditVulnerabilityCounts.moderate || auditVulnerabilityCounts.high || auditVulnerabilityCounts.critical; - return { bailout: yield _this6.bailout(topLevelPatterns, workspaceLayout) }; - })); - }); - } - - steps.push(function (curr, total) { - return (0, (_hooks || _load_hooks()).callThroughHook)('fetchStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - _this6.markIgnored(ignorePatterns); - _this6.reporter.step(curr, total, _this6.reporter.lang('fetchingPackages'), emoji.get('truck')); - const manifests = yield (_packageFetcher || _load_packageFetcher()).fetch(_this6.resolver.getManifests(), _this6.config); - _this6.resolver.updateManifests(manifests); - yield (_packageCompatibility || _load_packageCompatibility()).check(_this6.resolver.getManifests(), _this6.config, _this6.flags.ignoreEngines); - })); - }); - - steps.push(function (curr, total) { - return (0, (_hooks || _load_hooks()).callThroughHook)('linkStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - // remove integrity hash to make this operation atomic - yield _this6.integrityChecker.removeIntegrityFile(); - _this6.reporter.step(curr, total, _this6.reporter.lang('linkingDependencies'), emoji.get('link')); - flattenedTopLevelPatterns = _this6.preparePatternsForLinking(flattenedTopLevelPatterns, manifest, _this6.config.lockfileFolder === _this6.config.cwd); - yield _this6.linker.init(flattenedTopLevelPatterns, workspaceLayout, { - linkDuplicates: _this6.flags.linkDuplicates, - ignoreOptional: _this6.flags.ignoreOptional - }); - })); - }); - - if (_this6.config.plugnplayEnabled) { - steps.push(function (curr, total) { - return (0, (_hooks || _load_hooks()).callThroughHook)('pnpStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - const pnpPath = `${_this6.config.lockfileFolder}/${(_constants || _load_constants()).PNP_FILENAME}`; - - const code = yield (0, (_generatePnpMap || _load_generatePnpMap()).generatePnpMap)(_this6.config, flattenedTopLevelPatterns, { - resolver: _this6.resolver, - reporter: _this6.reporter, - targetPath: pnpPath, - workspaceLayout - }); - - try { - const file = yield (_fs || _load_fs()).readFile(pnpPath); - if (file === code) { - return; - } - } catch (error) {} - - yield (_fs || _load_fs()).writeFile(pnpPath, code); - yield (_fs || _load_fs()).chmod(pnpPath, 0o755); - })); - }); - } - - steps.push(function (curr, total) { - return (0, (_hooks || _load_hooks()).callThroughHook)('buildStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - _this6.reporter.step(curr, total, _this6.flags.force ? _this6.reporter.lang('rebuildingPackages') : _this6.reporter.lang('buildingFreshPackages'), emoji.get('hammer')); - - if (_this6.config.ignoreScripts) { - _this6.reporter.warn(_this6.reporter.lang('ignoredScripts')); - } else { - yield _this6.scripts.init(flattenedTopLevelPatterns); - } - })); - }); - - if (_this6.flags.har) { - steps.push((() => { - var _ref21 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (curr, total) { - const formattedDate = new Date().toISOString().replace(/:/g, '-'); - const filename = `yarn-install_${formattedDate}.har`; - _this6.reporter.step(curr, total, _this6.reporter.lang('savingHar', filename), emoji.get('black_circle_for_record')); - yield _this6.config.requestManager.saveHar(filename); - }); - - return function (_x3, _x4) { - return _ref21.apply(this, arguments); - }; - })()); - } - - if (yield _this6.shouldClean()) { - steps.push((() => { - var _ref22 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (curr, total) { - _this6.reporter.step(curr, total, _this6.reporter.lang('cleaningModules'), emoji.get('recycle')); - yield (0, (_autoclean || _load_autoclean()).clean)(_this6.config, _this6.reporter); - }); - - return function (_x5, _x6) { - return _ref22.apply(this, arguments); - }; - })()); - } - - let currentStep = 0; - for (var _iterator11 = steps, _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) { - var _ref23; - - if (_isArray11) { - if (_i11 >= _iterator11.length) break; - _ref23 = _iterator11[_i11++]; - } else { - _i11 = _iterator11.next(); - if (_i11.done) break; - _ref23 = _i11.value; - } - - const step = _ref23; - - const stepResult = yield step(++currentStep, steps.length); - if (stepResult && stepResult.bailout) { - if (_this6.flags.audit) { - audit.summary(); - } - if (auditFoundProblems) { - _this6.reporter.warn(_this6.reporter.lang('auditRunAuditForDetails')); - } - _this6.maybeOutputUpdate(); - return flattenedTopLevelPatterns; - } - } - - // fin! - if (_this6.flags.audit) { - audit.summary(); - } - if (auditFoundProblems) { - _this6.reporter.warn(_this6.reporter.lang('auditRunAuditForDetails')); - } - yield _this6.saveLockfileAndIntegrity(topLevelPatterns, workspaceLayout); - yield _this6.persistChanges(); - _this6.maybeOutputUpdate(); - _this6.config.requestManager.clearCache(); - return flattenedTopLevelPatterns; - })(); - } - - checkCompatibility() { - var _this7 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var _ref24 = yield _this7.fetchRequestFromCwd(); - - const manifest = _ref24.manifest; - - yield (_packageCompatibility || _load_packageCompatibility()).checkOne(manifest, _this7.config, _this7.flags.ignoreEngines); - })(); - } - - persistChanges() { - var _this8 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - // get all the different registry manifests in this folder - const manifests = yield _this8.config.getRootManifests(); - - if (yield _this8.applyChanges(manifests)) { - yield _this8.config.saveRootManifests(manifests); - } - })(); - } - - applyChanges(manifests) { - let hasChanged = false; - - if (this.config.plugnplayPersist) { - const object = manifests.npm.object; - - - if (typeof object.installConfig !== 'object') { - object.installConfig = {}; - } - - if (this.config.plugnplayEnabled && object.installConfig.pnp !== true) { - object.installConfig.pnp = true; - hasChanged = true; - } else if (!this.config.plugnplayEnabled && typeof object.installConfig.pnp !== 'undefined') { - delete object.installConfig.pnp; - hasChanged = true; - } - - if (Object.keys(object.installConfig).length === 0) { - delete object.installConfig; - } - } - - return Promise.resolve(hasChanged); - } - - /** - * Check if we should run the cleaning step. - */ - - shouldClean() { - return (_fs || _load_fs()).exists(path.join(this.config.lockfileFolder, (_constants || _load_constants()).CLEAN_FILENAME)); - } - - /** - * TODO - */ - - flatten(patterns) { - var _this9 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - if (!_this9.flags.flat) { - return patterns; - } - - const flattenedPatterns = []; - - for (var _iterator12 = _this9.resolver.getAllDependencyNamesByLevelOrder(patterns), _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _iterator12[Symbol.iterator]();;) { - var _ref25; - - if (_isArray12) { - if (_i12 >= _iterator12.length) break; - _ref25 = _iterator12[_i12++]; - } else { - _i12 = _iterator12.next(); - if (_i12.done) break; - _ref25 = _i12.value; - } - - const name = _ref25; - - const infos = _this9.resolver.getAllInfoForPackageName(name).filter(function (manifest) { - const ref = manifest._reference; - invariant(ref, 'expected package reference'); - return !ref.ignore; - }); - - if (infos.length === 0) { - continue; - } - - if (infos.length === 1) { - // single version of this package - // take out a single pattern as multiple patterns may have resolved to this package - flattenedPatterns.push(_this9.resolver.patternsByPackage[name][0]); - continue; - } - - const options = infos.map(function (info) { - const ref = info._reference; - invariant(ref, 'expected reference'); - return { - // TODO `and is required by {PARENT}`, - name: _this9.reporter.lang('manualVersionResolutionOption', ref.patterns.join(', '), info.version), - - value: info.version - }; - }); - const versions = infos.map(function (info) { - return info.version; - }); - let version; - - const resolutionVersion = _this9.resolutions[name]; - if (resolutionVersion && versions.indexOf(resolutionVersion) >= 0) { - // use json `resolution` version - version = resolutionVersion; - } else { - version = yield _this9.reporter.select(_this9.reporter.lang('manualVersionResolution', name), _this9.reporter.lang('answer'), options); - _this9.resolutions[name] = version; - } - - flattenedPatterns.push(_this9.resolver.collapseAllVersionsOfPackage(name, version)); - } - - // save resolutions to their appropriate root manifest - if (Object.keys(_this9.resolutions).length) { - const manifests = yield _this9.config.getRootManifests(); - - for (const name in _this9.resolutions) { - const version = _this9.resolutions[name]; - - const patterns = _this9.resolver.patternsByPackage[name]; - if (!patterns) { - continue; - } - - let manifest; - for (var _iterator13 = patterns, _isArray13 = Array.isArray(_iterator13), _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : _iterator13[Symbol.iterator]();;) { - var _ref26; - - if (_isArray13) { - if (_i13 >= _iterator13.length) break; - _ref26 = _iterator13[_i13++]; - } else { - _i13 = _iterator13.next(); - if (_i13.done) break; - _ref26 = _i13.value; - } - - const pattern = _ref26; - - manifest = _this9.resolver.getResolvedPattern(pattern); - if (manifest) { - break; - } - } - invariant(manifest, 'expected manifest'); - - const ref = manifest._reference; - invariant(ref, 'expected reference'); - - const object = manifests[ref.registry].object; - object.resolutions = object.resolutions || {}; - object.resolutions[name] = version; - } - - yield _this9.config.saveRootManifests(manifests); - } - - return flattenedPatterns; - })(); - } - - /** - * Remove offline tarballs that are no longer required - */ - - pruneOfflineMirror(lockfile) { - var _this10 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - const mirror = _this10.config.getOfflineMirrorPath(); - if (!mirror) { - return; - } - - const requiredTarballs = new Set(); - for (const dependency in lockfile) { - const resolved = lockfile[dependency].resolved; - if (resolved) { - const basename = path.basename(resolved.split('#')[0]); - if (dependency[0] === '@' && basename[0] !== '@') { - requiredTarballs.add(`${dependency.split('/')[0]}-${basename}`); - } - requiredTarballs.add(basename); - } - } - - const mirrorFiles = yield (_fs || _load_fs()).walk(mirror); - for (var _iterator14 = mirrorFiles, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : _iterator14[Symbol.iterator]();;) { - var _ref27; - - if (_isArray14) { - if (_i14 >= _iterator14.length) break; - _ref27 = _iterator14[_i14++]; - } else { - _i14 = _iterator14.next(); - if (_i14.done) break; - _ref27 = _i14.value; - } - - const file = _ref27; - - const isTarball = path.extname(file.basename) === '.tgz'; - // if using experimental-pack-script-packages-in-mirror flag, don't unlink prebuilt packages - const hasPrebuiltPackage = file.relative.startsWith('prebuilt/'); - if (isTarball && !hasPrebuiltPackage && !requiredTarballs.has(file.basename)) { - yield (_fs || _load_fs()).unlink(file.absolute); - } - } - })(); - } - - /** - * Save updated integrity and lockfiles. - */ - - saveLockfileAndIntegrity(patterns, workspaceLayout) { - var _this11 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - const resolvedPatterns = {}; - Object.keys(_this11.resolver.patterns).forEach(function (pattern) { - if (!workspaceLayout || !workspaceLayout.getManifestByPattern(pattern)) { - resolvedPatterns[pattern] = _this11.resolver.patterns[pattern]; - } - }); - - // TODO this code is duplicated in a few places, need a common way to filter out workspace patterns from lockfile - patterns = patterns.filter(function (p) { - return !workspaceLayout || !workspaceLayout.getManifestByPattern(p); - }); - - const lockfileBasedOnResolver = _this11.lockfile.getLockfile(resolvedPatterns); - - if (_this11.config.pruneOfflineMirror) { - yield _this11.pruneOfflineMirror(lockfileBasedOnResolver); - } - - // write integrity hash - if (!_this11.config.plugnplayEnabled) { - yield _this11.integrityChecker.save(patterns, lockfileBasedOnResolver, _this11.flags, workspaceLayout, _this11.scripts.getArtifacts()); - } - - // --no-lockfile or --pure-lockfile or --frozen-lockfile - if (_this11.flags.lockfile === false || _this11.flags.pureLockfile || _this11.flags.frozenLockfile) { - return; - } - - const lockFileHasAllPatterns = patterns.every(function (p) { - return _this11.lockfile.getLocked(p); - }); - const lockfilePatternsMatch = Object.keys(_this11.lockfile.cache || {}).every(function (p) { - return lockfileBasedOnResolver[p]; - }); - const resolverPatternsAreSameAsInLockfile = Object.keys(lockfileBasedOnResolver).every(function (pattern) { - const manifest = _this11.lockfile.getLocked(pattern); - return manifest && manifest.resolved === lockfileBasedOnResolver[pattern].resolved && deepEqual(manifest.prebuiltVariants, lockfileBasedOnResolver[pattern].prebuiltVariants); - }); - const integrityPatternsAreSameAsInLockfile = Object.keys(lockfileBasedOnResolver).every(function (pattern) { - const existingIntegrityInfo = lockfileBasedOnResolver[pattern].integrity; - if (!existingIntegrityInfo) { - // if this entry does not have an integrity, no need to re-write the lockfile because of it - return true; - } - const manifest = _this11.lockfile.getLocked(pattern); - if (manifest && manifest.integrity) { - const manifestIntegrity = ssri.stringify(manifest.integrity); - return manifestIntegrity === existingIntegrityInfo; - } - return false; - }); - - // remove command is followed by install with force, lockfile will be rewritten in any case then - if (!_this11.flags.force && _this11.lockfile.parseResultType === 'success' && lockFileHasAllPatterns && lockfilePatternsMatch && resolverPatternsAreSameAsInLockfile && integrityPatternsAreSameAsInLockfile && patterns.length) { - return; - } - - // build lockfile location - const loc = path.join(_this11.config.lockfileFolder, (_constants || _load_constants()).LOCKFILE_FILENAME); - - // write lockfile - const lockSource = (0, (_lockfile2 || _load_lockfile2()).stringify)(lockfileBasedOnResolver, false, _this11.config.enableLockfileVersions); - yield (_fs || _load_fs()).writeFilePreservingEol(loc, lockSource); - - _this11._logSuccessSaveLockfile(); - })(); - } - - _logSuccessSaveLockfile() { - this.reporter.success(this.reporter.lang('savedLockfile')); - } - - /** - * Load the dependency graph of the current install. Only does package resolving and wont write to the cwd. - */ - hydrate(ignoreUnusedPatterns) { - var _this12 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - const request = yield _this12.fetchRequestFromCwd([], ignoreUnusedPatterns); - const depRequests = request.requests, - rawPatterns = request.patterns, - ignorePatterns = request.ignorePatterns, - workspaceLayout = request.workspaceLayout; - - - yield _this12.resolver.init(depRequests, { - isFlat: _this12.flags.flat, - isFrozen: _this12.flags.frozenLockfile, - workspaceLayout - }); - yield _this12.flatten(rawPatterns); - _this12.markIgnored(ignorePatterns); - - // fetch packages, should hit cache most of the time - const manifests = yield (_packageFetcher || _load_packageFetcher()).fetch(_this12.resolver.getManifests(), _this12.config); - _this12.resolver.updateManifests(manifests); - yield (_packageCompatibility || _load_packageCompatibility()).check(_this12.resolver.getManifests(), _this12.config, _this12.flags.ignoreEngines); - - // expand minimal manifests - for (var _iterator15 = _this12.resolver.getManifests(), _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : _iterator15[Symbol.iterator]();;) { - var _ref28; - - if (_isArray15) { - if (_i15 >= _iterator15.length) break; - _ref28 = _iterator15[_i15++]; - } else { - _i15 = _iterator15.next(); - if (_i15.done) break; - _ref28 = _i15.value; - } - - const manifest = _ref28; - - const ref = manifest._reference; - invariant(ref, 'expected reference'); - const type = ref.remote.type; - // link specifier won't ever hit cache - - let loc = ''; - if (type === 'link') { - continue; - } else if (type === 'workspace') { - if (!ref.remote.reference) { - continue; - } - loc = ref.remote.reference; - } else { - loc = _this12.config.generateModuleCachePath(ref); - } - const newPkg = yield _this12.config.readManifest(loc); - yield _this12.resolver.updateManifest(ref, newPkg); - } - - return request; - })(); - } - - /** - * Check for updates every day and output a nag message if there's a newer version. - */ - - checkUpdate() { - if (this.config.nonInteractive) { - // don't show upgrade dialog on CI or non-TTY terminals - return; - } - - // don't check if disabled - if (this.config.getOption('disable-self-update-check')) { - return; - } - - // only check for updates once a day - const lastUpdateCheck = Number(this.config.getOption('lastUpdateCheck')) || 0; - if (lastUpdateCheck && Date.now() - lastUpdateCheck < ONE_DAY) { - return; - } - - // don't bug for updates on tagged releases - if ((_yarnVersion || _load_yarnVersion()).version.indexOf('-') >= 0) { - return; - } - - this._checkUpdate().catch(() => { - // swallow errors - }); - } - - _checkUpdate() { - var _this13 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - let latestVersion = yield _this13.config.requestManager.request({ - url: (_constants || _load_constants()).SELF_UPDATE_VERSION_URL - }); - invariant(typeof latestVersion === 'string', 'expected string'); - latestVersion = latestVersion.trim(); - if (!semver.valid(latestVersion)) { - return; - } - - // ensure we only check for updates periodically - _this13.config.registries.yarn.saveHomeConfig({ - lastUpdateCheck: Date.now() - }); - - if (semver.gt(latestVersion, (_yarnVersion || _load_yarnVersion()).version)) { - const installationMethod = yield (0, (_yarnVersion || _load_yarnVersion()).getInstallationMethod)(); - _this13.maybeOutputUpdate = function () { - _this13.reporter.warn(_this13.reporter.lang('yarnOutdated', latestVersion, (_yarnVersion || _load_yarnVersion()).version)); - - const command = getUpdateCommand(installationMethod); - if (command) { - _this13.reporter.info(_this13.reporter.lang('yarnOutdatedCommand')); - _this13.reporter.command(command); - } else { - const installer = getUpdateInstaller(installationMethod); - if (installer) { - _this13.reporter.info(_this13.reporter.lang('yarnOutdatedInstaller', installer)); - } - } - }; - } - })(); - } - - /** - * Method to override with a possible upgrade message. - */ - - maybeOutputUpdate() {} -} - -exports.Install = Install; -function hasWrapper(commander, args) { - return true; -} - -function setFlags(commander) { - commander.description('Yarn install is used to install all dependencies for a project.'); - commander.usage('install [flags]'); - commander.option('-A, --audit', 'Run vulnerability audit on installed packages'); - commander.option('-g, --global', 'DEPRECATED'); - commander.option('-S, --save', 'DEPRECATED - save package to your `dependencies`'); - commander.option('-D, --save-dev', 'DEPRECATED - save package to your `devDependencies`'); - commander.option('-P, --save-peer', 'DEPRECATED - save package to your `peerDependencies`'); - commander.option('-O, --save-optional', 'DEPRECATED - save package to your `optionalDependencies`'); - commander.option('-E, --save-exact', 'DEPRECATED'); - commander.option('-T, --save-tilde', 'DEPRECATED'); -} - -/***/ }), -/* 35 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(52); -module.exports = function (it) { - if (!isObject(it)) throw TypeError(it + ' is not an object!'); - return it; -}; - - -/***/ }), -/* 36 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return SubjectSubscriber; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Subject; }); -/* unused harmony export AnonymousSubject */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Observable__ = __webpack_require__(12); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Subscriber__ = __webpack_require__(7); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Subscription__ = __webpack_require__(25); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_ObjectUnsubscribedError__ = __webpack_require__(189); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__SubjectSubscription__ = __webpack_require__(422); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__internal_symbol_rxSubscriber__ = __webpack_require__(321); -/** PURE_IMPORTS_START tslib,_Observable,_Subscriber,_Subscription,_util_ObjectUnsubscribedError,_SubjectSubscription,_internal_symbol_rxSubscriber PURE_IMPORTS_END */ - - - - - - - -var SubjectSubscriber = /*@__PURE__*/ (function (_super) { - __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SubjectSubscriber, _super); - function SubjectSubscriber(destination) { - var _this = _super.call(this, destination) || this; - _this.destination = destination; - return _this; - } - return SubjectSubscriber; -}(__WEBPACK_IMPORTED_MODULE_2__Subscriber__["a" /* Subscriber */])); - -var Subject = /*@__PURE__*/ (function (_super) { - __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](Subject, _super); - function Subject() { - var _this = _super.call(this) || this; - _this.observers = []; - _this.closed = false; - _this.isStopped = false; - _this.hasError = false; - _this.thrownError = null; - return _this; - } - Subject.prototype[__WEBPACK_IMPORTED_MODULE_6__internal_symbol_rxSubscriber__["a" /* rxSubscriber */]] = function () { - return new SubjectSubscriber(this); - }; - Subject.prototype.lift = function (operator) { - var subject = new AnonymousSubject(this, this); - subject.operator = operator; - return subject; - }; - Subject.prototype.next = function (value) { - if (this.closed) { - throw new __WEBPACK_IMPORTED_MODULE_4__util_ObjectUnsubscribedError__["a" /* ObjectUnsubscribedError */](); - } - if (!this.isStopped) { - var observers = this.observers; - var len = observers.length; - var copy = observers.slice(); - for (var i = 0; i < len; i++) { - copy[i].next(value); - } - } - }; - Subject.prototype.error = function (err) { - if (this.closed) { - throw new __WEBPACK_IMPORTED_MODULE_4__util_ObjectUnsubscribedError__["a" /* ObjectUnsubscribedError */](); - } - this.hasError = true; - this.thrownError = err; - this.isStopped = true; - var observers = this.observers; - var len = observers.length; - var copy = observers.slice(); - for (var i = 0; i < len; i++) { - copy[i].error(err); - } - this.observers.length = 0; - }; - Subject.prototype.complete = function () { - if (this.closed) { - throw new __WEBPACK_IMPORTED_MODULE_4__util_ObjectUnsubscribedError__["a" /* ObjectUnsubscribedError */](); - } - this.isStopped = true; - var observers = this.observers; - var len = observers.length; - var copy = observers.slice(); - for (var i = 0; i < len; i++) { - copy[i].complete(); - } - this.observers.length = 0; - }; - Subject.prototype.unsubscribe = function () { - this.isStopped = true; - this.closed = true; - this.observers = null; - }; - Subject.prototype._trySubscribe = function (subscriber) { - if (this.closed) { - throw new __WEBPACK_IMPORTED_MODULE_4__util_ObjectUnsubscribedError__["a" /* ObjectUnsubscribedError */](); - } - else { - return _super.prototype._trySubscribe.call(this, subscriber); - } - }; - Subject.prototype._subscribe = function (subscriber) { - if (this.closed) { - throw new __WEBPACK_IMPORTED_MODULE_4__util_ObjectUnsubscribedError__["a" /* ObjectUnsubscribedError */](); - } - else if (this.hasError) { - subscriber.error(this.thrownError); - return __WEBPACK_IMPORTED_MODULE_3__Subscription__["a" /* Subscription */].EMPTY; - } - else if (this.isStopped) { - subscriber.complete(); - return __WEBPACK_IMPORTED_MODULE_3__Subscription__["a" /* Subscription */].EMPTY; - } - else { - this.observers.push(subscriber); - return new __WEBPACK_IMPORTED_MODULE_5__SubjectSubscription__["a" /* SubjectSubscription */](this, subscriber); - } - }; - Subject.prototype.asObservable = function () { - var observable = new __WEBPACK_IMPORTED_MODULE_1__Observable__["a" /* Observable */](); - observable.source = this; - return observable; - }; - Subject.create = function (destination, source) { - return new AnonymousSubject(destination, source); - }; - return Subject; -}(__WEBPACK_IMPORTED_MODULE_1__Observable__["a" /* Observable */])); - -var AnonymousSubject = /*@__PURE__*/ (function (_super) { - __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](AnonymousSubject, _super); - function AnonymousSubject(destination, source) { - var _this = _super.call(this) || this; - _this.destination = destination; - _this.source = source; - return _this; - } - AnonymousSubject.prototype.next = function (value) { - var destination = this.destination; - if (destination && destination.next) { - destination.next(value); - } - }; - AnonymousSubject.prototype.error = function (err) { - var destination = this.destination; - if (destination && destination.error) { - this.destination.error(err); - } - }; - AnonymousSubject.prototype.complete = function () { - var destination = this.destination; - if (destination && destination.complete) { - this.destination.complete(); - } - }; - AnonymousSubject.prototype._subscribe = function (subscriber) { - var source = this.source; - if (source) { - return this.source.subscribe(subscriber); - } - else { - return __WEBPACK_IMPORTED_MODULE_3__Subscription__["a" /* Subscription */].EMPTY; - } - }; - return AnonymousSubject; -}(Subject)); - -//# sourceMappingURL=Subject.js.map - - -/***/ }), -/* 37 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.normalizePattern = normalizePattern; - -/** - * Explode and normalize a pattern into its name and range. - */ - -function normalizePattern(pattern) { - let hasVersion = false; - let range = 'latest'; - let name = pattern; - - // if we're a scope then remove the @ and add it back later - let isScoped = false; - if (name[0] === '@') { - isScoped = true; - name = name.slice(1); - } - - // take first part as the name - const parts = name.split('@'); - if (parts.length > 1) { - name = parts.shift(); - range = parts.join('@'); - - if (range) { - hasVersion = true; - } else { - range = '*'; - } - } - - // add back @ scope suffix - if (isScoped) { - name = `@${name}`; - } - - return { name, range, hasVersion }; -} - -/***/ }), -/* 38 */ -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_RESULT__;/** - * @license - * Lodash - * Copyright JS Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ -;(function() { - - /** Used as a safe reference for `undefined` in pre-ES5 environments. */ - var undefined; - - /** Used as the semantic version number. */ - var VERSION = '4.17.10'; - - /** Used as the size to enable large array optimizations. */ - var LARGE_ARRAY_SIZE = 200; - - /** Error message constants. */ - var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.', - FUNC_ERROR_TEXT = 'Expected a function'; - - /** Used to stand-in for `undefined` hash values. */ - var HASH_UNDEFINED = '__lodash_hash_undefined__'; - - /** Used as the maximum memoize cache size. */ - var MAX_MEMOIZE_SIZE = 500; - - /** Used as the internal argument placeholder. */ - var PLACEHOLDER = '__lodash_placeholder__'; - - /** Used to compose bitmasks for cloning. */ - var CLONE_DEEP_FLAG = 1, - CLONE_FLAT_FLAG = 2, - CLONE_SYMBOLS_FLAG = 4; - - /** Used to compose bitmasks for value comparisons. */ - var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; - - /** Used to compose bitmasks for function metadata. */ - var WRAP_BIND_FLAG = 1, - WRAP_BIND_KEY_FLAG = 2, - WRAP_CURRY_BOUND_FLAG = 4, - WRAP_CURRY_FLAG = 8, - WRAP_CURRY_RIGHT_FLAG = 16, - WRAP_PARTIAL_FLAG = 32, - WRAP_PARTIAL_RIGHT_FLAG = 64, - WRAP_ARY_FLAG = 128, - WRAP_REARG_FLAG = 256, - WRAP_FLIP_FLAG = 512; - - /** Used as default options for `_.truncate`. */ - var DEFAULT_TRUNC_LENGTH = 30, - DEFAULT_TRUNC_OMISSION = '...'; - - /** Used to detect hot functions by number of calls within a span of milliseconds. */ - var HOT_COUNT = 800, - HOT_SPAN = 16; - - /** Used to indicate the type of lazy iteratees. */ - var LAZY_FILTER_FLAG = 1, - LAZY_MAP_FLAG = 2, - LAZY_WHILE_FLAG = 3; - - /** Used as references for various `Number` constants. */ - var INFINITY = 1 / 0, - MAX_SAFE_INTEGER = 9007199254740991, - MAX_INTEGER = 1.7976931348623157e+308, - NAN = 0 / 0; - - /** Used as references for the maximum length and index of an array. */ - var MAX_ARRAY_LENGTH = 4294967295, - MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, - HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; - - /** Used to associate wrap methods with their bit flags. */ - var wrapFlags = [ - ['ary', WRAP_ARY_FLAG], - ['bind', WRAP_BIND_FLAG], - ['bindKey', WRAP_BIND_KEY_FLAG], - ['curry', WRAP_CURRY_FLAG], - ['curryRight', WRAP_CURRY_RIGHT_FLAG], - ['flip', WRAP_FLIP_FLAG], - ['partial', WRAP_PARTIAL_FLAG], - ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], - ['rearg', WRAP_REARG_FLAG] - ]; - - /** `Object#toString` result references. */ - var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - asyncTag = '[object AsyncFunction]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - domExcTag = '[object DOMException]', - errorTag = '[object Error]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - mapTag = '[object Map]', - numberTag = '[object Number]', - nullTag = '[object Null]', - objectTag = '[object Object]', - promiseTag = '[object Promise]', - proxyTag = '[object Proxy]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - symbolTag = '[object Symbol]', - undefinedTag = '[object Undefined]', - weakMapTag = '[object WeakMap]', - weakSetTag = '[object WeakSet]'; - - var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; - - /** Used to match empty string literals in compiled template source. */ - var reEmptyStringLeading = /\b__p \+= '';/g, - reEmptyStringMiddle = /\b(__p \+=) '' \+/g, - reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; - - /** Used to match HTML entities and HTML characters. */ - var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, - reUnescapedHtml = /[&<>"']/g, - reHasEscapedHtml = RegExp(reEscapedHtml.source), - reHasUnescapedHtml = RegExp(reUnescapedHtml.source); - - /** Used to match template delimiters. */ - var reEscape = /<%-([\s\S]+?)%>/g, - reEvaluate = /<%([\s\S]+?)%>/g, - reInterpolate = /<%=([\s\S]+?)%>/g; - - /** Used to match property names within property paths. */ - var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, - reIsPlainProp = /^\w*$/, - rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; - - /** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ - var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, - reHasRegExpChar = RegExp(reRegExpChar.source); - - /** Used to match leading and trailing whitespace. */ - var reTrim = /^\s+|\s+$/g, - reTrimStart = /^\s+/, - reTrimEnd = /\s+$/; - - /** Used to match wrap detail comments. */ - var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, - reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, - reSplitDetails = /,? & /; - - /** Used to match words composed of alphanumeric characters. */ - var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; - - /** Used to match backslashes in property paths. */ - var reEscapeChar = /\\(\\)?/g; - - /** - * Used to match - * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). - */ - var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; - - /** Used to match `RegExp` flags from their coerced string values. */ - var reFlags = /\w*$/; - - /** Used to detect bad signed hexadecimal string values. */ - var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; - - /** Used to detect binary string values. */ - var reIsBinary = /^0b[01]+$/i; - - /** Used to detect host constructors (Safari). */ - var reIsHostCtor = /^\[object .+?Constructor\]$/; - - /** Used to detect octal string values. */ - var reIsOctal = /^0o[0-7]+$/i; - - /** Used to detect unsigned integer values. */ - var reIsUint = /^(?:0|[1-9]\d*)$/; - - /** Used to match Latin Unicode letters (excluding mathematical operators). */ - var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; - - /** Used to ensure capturing order of template delimiters. */ - var reNoMatch = /($^)/; - - /** Used to match unescaped characters in compiled string literals. */ - var reUnescapedString = /['\n\r\u2028\u2029\\]/g; - - /** Used to compose unicode character classes. */ - var rsAstralRange = '\\ud800-\\udfff', - rsComboMarksRange = '\\u0300-\\u036f', - reComboHalfMarksRange = '\\ufe20-\\ufe2f', - rsComboSymbolsRange = '\\u20d0-\\u20ff', - rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, - rsDingbatRange = '\\u2700-\\u27bf', - rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', - rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', - rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', - rsPunctuationRange = '\\u2000-\\u206f', - rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', - rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', - rsVarRange = '\\ufe0e\\ufe0f', - rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; - - /** Used to compose unicode capture groups. */ - var rsApos = "['\u2019]", - rsAstral = '[' + rsAstralRange + ']', - rsBreak = '[' + rsBreakRange + ']', - rsCombo = '[' + rsComboRange + ']', - rsDigits = '\\d+', - rsDingbat = '[' + rsDingbatRange + ']', - rsLower = '[' + rsLowerRange + ']', - rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', - rsFitz = '\\ud83c[\\udffb-\\udfff]', - rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', - rsNonAstral = '[^' + rsAstralRange + ']', - rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', - rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', - rsUpper = '[' + rsUpperRange + ']', - rsZWJ = '\\u200d'; - - /** Used to compose unicode regexes. */ - var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')', - rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')', - rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', - rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', - reOptMod = rsModifier + '?', - rsOptVar = '[' + rsVarRange + ']?', - rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', - rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])', - rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])', - rsSeq = rsOptVar + reOptMod + rsOptJoin, - rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq, - rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; - - /** Used to match apostrophes. */ - var reApos = RegExp(rsApos, 'g'); - - /** - * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and - * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). - */ - var reComboMark = RegExp(rsCombo, 'g'); - - /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ - var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); - - /** Used to match complex or compound words. */ - var reUnicodeWord = RegExp([ - rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', - rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', - rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, - rsUpper + '+' + rsOptContrUpper, - rsOrdUpper, - rsOrdLower, - rsDigits, - rsEmoji - ].join('|'), 'g'); - - /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ - var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); - - /** Used to detect strings that need a more robust regexp to match words. */ - var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; - - /** Used to assign default `context` object properties. */ - var contextProps = [ - 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', - 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', - 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', - 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', - '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout' - ]; - - /** Used to make template sourceURLs easier to identify. */ - var templateCounter = -1; - - /** Used to identify `toStringTag` values of typed arrays. */ - var typedArrayTags = {}; - typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = - typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = - typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = - typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = - typedArrayTags[uint32Tag] = true; - typedArrayTags[argsTag] = typedArrayTags[arrayTag] = - typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = - typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = - typedArrayTags[errorTag] = typedArrayTags[funcTag] = - typedArrayTags[mapTag] = typedArrayTags[numberTag] = - typedArrayTags[objectTag] = typedArrayTags[regexpTag] = - typedArrayTags[setTag] = typedArrayTags[stringTag] = - typedArrayTags[weakMapTag] = false; - - /** Used to identify `toStringTag` values supported by `_.clone`. */ - var cloneableTags = {}; - cloneableTags[argsTag] = cloneableTags[arrayTag] = - cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = - cloneableTags[boolTag] = cloneableTags[dateTag] = - cloneableTags[float32Tag] = cloneableTags[float64Tag] = - cloneableTags[int8Tag] = cloneableTags[int16Tag] = - cloneableTags[int32Tag] = cloneableTags[mapTag] = - cloneableTags[numberTag] = cloneableTags[objectTag] = - cloneableTags[regexpTag] = cloneableTags[setTag] = - cloneableTags[stringTag] = cloneableTags[symbolTag] = - cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = - cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; - cloneableTags[errorTag] = cloneableTags[funcTag] = - cloneableTags[weakMapTag] = false; - - /** Used to map Latin Unicode letters to basic Latin letters. */ - var deburredLetters = { - // Latin-1 Supplement block. - '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', - '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', - '\xc7': 'C', '\xe7': 'c', - '\xd0': 'D', '\xf0': 'd', - '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', - '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', - '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', - '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', - '\xd1': 'N', '\xf1': 'n', - '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', - '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', - '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', - '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', - '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', - '\xc6': 'Ae', '\xe6': 'ae', - '\xde': 'Th', '\xfe': 'th', - '\xdf': 'ss', - // Latin Extended-A block. - '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', - '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', - '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', - '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', - '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', - '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', - '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', - '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', - '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', - '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', - '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', - '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', - '\u0134': 'J', '\u0135': 'j', - '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', - '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', - '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', - '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', - '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', - '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', - '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', - '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', - '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', - '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', - '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', - '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', - '\u0163': 't', '\u0165': 't', '\u0167': 't', - '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', - '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', - '\u0174': 'W', '\u0175': 'w', - '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', - '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', - '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', - '\u0132': 'IJ', '\u0133': 'ij', - '\u0152': 'Oe', '\u0153': 'oe', - '\u0149': "'n", '\u017f': 's' - }; - - /** Used to map characters to HTML entities. */ - var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' - }; - - /** Used to map HTML entities to characters. */ - var htmlUnescapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - ''': "'" - }; - - /** Used to escape characters for inclusion in compiled string literals. */ - var stringEscapes = { - '\\': '\\', - "'": "'", - '\n': 'n', - '\r': 'r', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; - - /** Built-in method references without a dependency on `root`. */ - var freeParseFloat = parseFloat, - freeParseInt = parseInt; - - /** Detect free variable `global` from Node.js. */ - var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; - - /** Detect free variable `self`. */ - var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - - /** Used as a reference to the global object. */ - var root = freeGlobal || freeSelf || Function('return this')(); - - /** Detect free variable `exports`. */ - var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; - - /** Detect free variable `module`. */ - var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; - - /** Detect the popular CommonJS extension `module.exports`. */ - var moduleExports = freeModule && freeModule.exports === freeExports; - - /** Detect free variable `process` from Node.js. */ - var freeProcess = moduleExports && freeGlobal.process; - - /** Used to access faster Node.js helpers. */ - var nodeUtil = (function() { - try { - // Use `util.types` for Node.js 10+. - var types = freeModule && freeModule.require && freeModule.require('util').types; - - if (types) { - return types; - } - - // Legacy `process.binding('util')` for Node.js < 10. - return freeProcess && freeProcess.binding && freeProcess.binding('util'); - } catch (e) {} - }()); - - /* Node.js helper references. */ - var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, - nodeIsDate = nodeUtil && nodeUtil.isDate, - nodeIsMap = nodeUtil && nodeUtil.isMap, - nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, - nodeIsSet = nodeUtil && nodeUtil.isSet, - nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; - - /*--------------------------------------------------------------------------*/ - - /** - * A faster alternative to `Function#apply`, this function invokes `func` - * with the `this` binding of `thisArg` and the arguments of `args`. - * - * @private - * @param {Function} func The function to invoke. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} args The arguments to invoke `func` with. - * @returns {*} Returns the result of `func`. - */ - function apply(func, thisArg, args) { - switch (args.length) { - case 0: return func.call(thisArg); - case 1: return func.call(thisArg, args[0]); - case 2: return func.call(thisArg, args[0], args[1]); - case 3: return func.call(thisArg, args[0], args[1], args[2]); - } - return func.apply(thisArg, args); - } - - /** - * A specialized version of `baseAggregator` for arrays. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform keys. - * @param {Object} accumulator The initial aggregated object. - * @returns {Function} Returns `accumulator`. - */ - function arrayAggregator(array, setter, iteratee, accumulator) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - var value = array[index]; - setter(accumulator, value, iteratee(value), array); - } - return accumulator; - } - - /** - * A specialized version of `_.forEach` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ - function arrayEach(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (iteratee(array[index], index, array) === false) { - break; - } - } - return array; - } - - /** - * A specialized version of `_.forEachRight` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ - function arrayEachRight(array, iteratee) { - var length = array == null ? 0 : array.length; - - while (length--) { - if (iteratee(array[length], length, array) === false) { - break; - } - } - return array; - } - - /** - * A specialized version of `_.every` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - */ - function arrayEvery(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (!predicate(array[index], index, array)) { - return false; - } - } - return true; - } - - /** - * A specialized version of `_.filter` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ - function arrayFilter(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result[resIndex++] = value; - } - } - return result; - } - - /** - * A specialized version of `_.includes` for arrays without support for - * specifying an index to search from. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ - function arrayIncludes(array, value) { - var length = array == null ? 0 : array.length; - return !!length && baseIndexOf(array, value, 0) > -1; - } - - /** - * This function is like `arrayIncludes` except that it accepts a comparator. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @param {Function} comparator The comparator invoked per element. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ - function arrayIncludesWith(array, value, comparator) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (comparator(value, array[index])) { - return true; - } - } - return false; - } - - /** - * A specialized version of `_.map` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ - function arrayMap(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length, - result = Array(length); - - while (++index < length) { - result[index] = iteratee(array[index], index, array); - } - return result; - } - - /** - * Appends the elements of `values` to `array`. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to append. - * @returns {Array} Returns `array`. - */ - function arrayPush(array, values) { - var index = -1, - length = values.length, - offset = array.length; - - while (++index < length) { - array[offset + index] = values[index]; - } - return array; - } - - /** - * A specialized version of `_.reduce` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the first element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ - function arrayReduce(array, iteratee, accumulator, initAccum) { - var index = -1, - length = array == null ? 0 : array.length; - - if (initAccum && length) { - accumulator = array[++index]; - } - while (++index < length) { - accumulator = iteratee(accumulator, array[index], index, array); - } - return accumulator; - } - - /** - * A specialized version of `_.reduceRight` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the last element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ - function arrayReduceRight(array, iteratee, accumulator, initAccum) { - var length = array == null ? 0 : array.length; - if (initAccum && length) { - accumulator = array[--length]; - } - while (length--) { - accumulator = iteratee(accumulator, array[length], length, array); - } - return accumulator; - } - - /** - * A specialized version of `_.some` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ - function arraySome(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (predicate(array[index], index, array)) { - return true; - } - } - return false; - } - - /** - * Gets the size of an ASCII `string`. - * - * @private - * @param {string} string The string inspect. - * @returns {number} Returns the string size. - */ - var asciiSize = baseProperty('length'); - - /** - * Converts an ASCII `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function asciiToArray(string) { - return string.split(''); - } - - /** - * Splits an ASCII `string` into an array of its words. - * - * @private - * @param {string} The string to inspect. - * @returns {Array} Returns the words of `string`. - */ - function asciiWords(string) { - return string.match(reAsciiWord) || []; - } - - /** - * The base implementation of methods like `_.findKey` and `_.findLastKey`, - * without support for iteratee shorthands, which iterates over `collection` - * using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the found element or its key, else `undefined`. - */ - function baseFindKey(collection, predicate, eachFunc) { - var result; - eachFunc(collection, function(value, key, collection) { - if (predicate(value, key, collection)) { - result = key; - return false; - } - }); - return result; - } - - /** - * The base implementation of `_.findIndex` and `_.findLastIndex` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {number} fromIndex The index to search from. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseFindIndex(array, predicate, fromIndex, fromRight) { - var length = array.length, - index = fromIndex + (fromRight ? 1 : -1); - - while ((fromRight ? index-- : ++index < length)) { - if (predicate(array[index], index, array)) { - return index; - } - } - return -1; - } - - /** - * The base implementation of `_.indexOf` without `fromIndex` bounds checks. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseIndexOf(array, value, fromIndex) { - return value === value - ? strictIndexOf(array, value, fromIndex) - : baseFindIndex(array, baseIsNaN, fromIndex); - } - - /** - * This function is like `baseIndexOf` except that it accepts a comparator. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @param {Function} comparator The comparator invoked per element. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseIndexOfWith(array, value, fromIndex, comparator) { - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (comparator(array[index], value)) { - return index; - } - } - return -1; - } - - /** - * The base implementation of `_.isNaN` without support for number objects. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - */ - function baseIsNaN(value) { - return value !== value; - } - - /** - * The base implementation of `_.mean` and `_.meanBy` without support for - * iteratee shorthands. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {number} Returns the mean. - */ - function baseMean(array, iteratee) { - var length = array == null ? 0 : array.length; - return length ? (baseSum(array, iteratee) / length) : NAN; - } - - /** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new accessor function. - */ - function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; - } - - /** - * The base implementation of `_.propertyOf` without support for deep paths. - * - * @private - * @param {Object} object The object to query. - * @returns {Function} Returns the new accessor function. - */ - function basePropertyOf(object) { - return function(key) { - return object == null ? undefined : object[key]; - }; - } - - /** - * The base implementation of `_.reduce` and `_.reduceRight`, without support - * for iteratee shorthands, which iterates over `collection` using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} accumulator The initial value. - * @param {boolean} initAccum Specify using the first or last element of - * `collection` as the initial value. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the accumulated value. - */ - function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { - eachFunc(collection, function(value, index, collection) { - accumulator = initAccum - ? (initAccum = false, value) - : iteratee(accumulator, value, index, collection); - }); - return accumulator; - } - - /** - * The base implementation of `_.sortBy` which uses `comparer` to define the - * sort order of `array` and replaces criteria objects with their corresponding - * values. - * - * @private - * @param {Array} array The array to sort. - * @param {Function} comparer The function to define sort order. - * @returns {Array} Returns `array`. - */ - function baseSortBy(array, comparer) { - var length = array.length; - - array.sort(comparer); - while (length--) { - array[length] = array[length].value; - } - return array; - } - - /** - * The base implementation of `_.sum` and `_.sumBy` without support for - * iteratee shorthands. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {number} Returns the sum. - */ - function baseSum(array, iteratee) { - var result, - index = -1, - length = array.length; - - while (++index < length) { - var current = iteratee(array[index]); - if (current !== undefined) { - result = result === undefined ? current : (result + current); - } - } - return result; - } - - /** - * The base implementation of `_.times` without support for iteratee shorthands - * or max array length checks. - * - * @private - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the array of results. - */ - function baseTimes(n, iteratee) { - var index = -1, - result = Array(n); - - while (++index < n) { - result[index] = iteratee(index); - } - return result; - } - - /** - * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array - * of key-value pairs for `object` corresponding to the property names of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the key-value pairs. - */ - function baseToPairs(object, props) { - return arrayMap(props, function(key) { - return [key, object[key]]; - }); - } - - /** - * The base implementation of `_.unary` without support for storing metadata. - * - * @private - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - */ - function baseUnary(func) { - return function(value) { - return func(value); - }; - } - - /** - * The base implementation of `_.values` and `_.valuesIn` which creates an - * array of `object` property values corresponding to the property names - * of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the array of property values. - */ - function baseValues(object, props) { - return arrayMap(props, function(key) { - return object[key]; - }); - } - - /** - * Checks if a `cache` value for `key` exists. - * - * @private - * @param {Object} cache The cache to query. - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function cacheHas(cache, key) { - return cache.has(key); - } - - /** - * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the first unmatched string symbol. - */ - function charsStartIndex(strSymbols, chrSymbols) { - var index = -1, - length = strSymbols.length; - - while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; - } - - /** - * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the last unmatched string symbol. - */ - function charsEndIndex(strSymbols, chrSymbols) { - var index = strSymbols.length; - - while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; - } - - /** - * Gets the number of `placeholder` occurrences in `array`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} placeholder The placeholder to search for. - * @returns {number} Returns the placeholder count. - */ - function countHolders(array, placeholder) { - var length = array.length, - result = 0; - - while (length--) { - if (array[length] === placeholder) { - ++result; - } - } - return result; - } - - /** - * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A - * letters to basic Latin letters. - * - * @private - * @param {string} letter The matched letter to deburr. - * @returns {string} Returns the deburred letter. - */ - var deburrLetter = basePropertyOf(deburredLetters); - - /** - * Used by `_.escape` to convert characters to HTML entities. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ - var escapeHtmlChar = basePropertyOf(htmlEscapes); - - /** - * Used by `_.template` to escape characters for inclusion in compiled string literals. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ - function escapeStringChar(chr) { - return '\\' + stringEscapes[chr]; - } - - /** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ - function getValue(object, key) { - return object == null ? undefined : object[key]; - } - - /** - * Checks if `string` contains Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a symbol is found, else `false`. - */ - function hasUnicode(string) { - return reHasUnicode.test(string); - } - - /** - * Checks if `string` contains a word composed of Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a word is found, else `false`. - */ - function hasUnicodeWord(string) { - return reHasUnicodeWord.test(string); - } - - /** - * Converts `iterator` to an array. - * - * @private - * @param {Object} iterator The iterator to convert. - * @returns {Array} Returns the converted array. - */ - function iteratorToArray(iterator) { - var data, - result = []; - - while (!(data = iterator.next()).done) { - result.push(data.value); - } - return result; - } - - /** - * Converts `map` to its key-value pairs. - * - * @private - * @param {Object} map The map to convert. - * @returns {Array} Returns the key-value pairs. - */ - function mapToArray(map) { - var index = -1, - result = Array(map.size); - - map.forEach(function(value, key) { - result[++index] = [key, value]; - }); - return result; - } - - /** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ - function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; - } - - /** - * Replaces all `placeholder` elements in `array` with an internal placeholder - * and returns an array of their indexes. - * - * @private - * @param {Array} array The array to modify. - * @param {*} placeholder The placeholder to replace. - * @returns {Array} Returns the new array of placeholder indexes. - */ - function replaceHolders(array, placeholder) { - var index = -1, - length = array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value === placeholder || value === PLACEHOLDER) { - array[index] = PLACEHOLDER; - result[resIndex++] = index; - } - } - return result; - } - - /** - * Gets the value at `key`, unless `key` is "__proto__". - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ - function safeGet(object, key) { - return key == '__proto__' - ? undefined - : object[key]; - } - - /** - * Converts `set` to an array of its values. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the values. - */ - function setToArray(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = value; - }); - return result; - } - - /** - * Converts `set` to its value-value pairs. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the value-value pairs. - */ - function setToPairs(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = [value, value]; - }); - return result; - } - - /** - * A specialized version of `_.indexOf` which performs strict equality - * comparisons of values, i.e. `===`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function strictIndexOf(array, value, fromIndex) { - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * A specialized version of `_.lastIndexOf` which performs strict equality - * comparisons of values, i.e. `===`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function strictLastIndexOf(array, value, fromIndex) { - var index = fromIndex + 1; - while (index--) { - if (array[index] === value) { - return index; - } - } - return index; - } - - /** - * Gets the number of symbols in `string`. - * - * @private - * @param {string} string The string to inspect. - * @returns {number} Returns the string size. - */ - function stringSize(string) { - return hasUnicode(string) - ? unicodeSize(string) - : asciiSize(string); - } - - /** - * Converts `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function stringToArray(string) { - return hasUnicode(string) - ? unicodeToArray(string) - : asciiToArray(string); - } - - /** - * Used by `_.unescape` to convert HTML entities to characters. - * - * @private - * @param {string} chr The matched character to unescape. - * @returns {string} Returns the unescaped character. - */ - var unescapeHtmlChar = basePropertyOf(htmlUnescapes); - - /** - * Gets the size of a Unicode `string`. - * - * @private - * @param {string} string The string inspect. - * @returns {number} Returns the string size. - */ - function unicodeSize(string) { - var result = reUnicode.lastIndex = 0; - while (reUnicode.test(string)) { - ++result; - } - return result; - } - - /** - * Converts a Unicode `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function unicodeToArray(string) { - return string.match(reUnicode) || []; - } - - /** - * Splits a Unicode `string` into an array of its words. - * - * @private - * @param {string} The string to inspect. - * @returns {Array} Returns the words of `string`. - */ - function unicodeWords(string) { - return string.match(reUnicodeWord) || []; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Create a new pristine `lodash` function using the `context` object. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Util - * @param {Object} [context=root] The context object. - * @returns {Function} Returns a new `lodash` function. - * @example - * - * _.mixin({ 'foo': _.constant('foo') }); - * - * var lodash = _.runInContext(); - * lodash.mixin({ 'bar': lodash.constant('bar') }); - * - * _.isFunction(_.foo); - * // => true - * _.isFunction(_.bar); - * // => false - * - * lodash.isFunction(lodash.foo); - * // => false - * lodash.isFunction(lodash.bar); - * // => true - * - * // Create a suped-up `defer` in Node.js. - * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; - */ - var runInContext = (function runInContext(context) { - context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps)); - - /** Built-in constructor references. */ - var Array = context.Array, - Date = context.Date, - Error = context.Error, - Function = context.Function, - Math = context.Math, - Object = context.Object, - RegExp = context.RegExp, - String = context.String, - TypeError = context.TypeError; - - /** Used for built-in method references. */ - var arrayProto = Array.prototype, - funcProto = Function.prototype, - objectProto = Object.prototype; - - /** Used to detect overreaching core-js shims. */ - var coreJsData = context['__core-js_shared__']; - - /** Used to resolve the decompiled source of functions. */ - var funcToString = funcProto.toString; - - /** Used to check objects for own properties. */ - var hasOwnProperty = objectProto.hasOwnProperty; - - /** Used to generate unique IDs. */ - var idCounter = 0; - - /** Used to detect methods masquerading as native. */ - var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; - }()); - - /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ - var nativeObjectToString = objectProto.toString; - - /** Used to infer the `Object` constructor. */ - var objectCtorString = funcToString.call(Object); - - /** Used to restore the original `_` reference in `_.noConflict`. */ - var oldDash = root._; - - /** Used to detect if a method is native. */ - var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' - ); - - /** Built-in value references. */ - var Buffer = moduleExports ? context.Buffer : undefined, - Symbol = context.Symbol, - Uint8Array = context.Uint8Array, - allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined, - getPrototype = overArg(Object.getPrototypeOf, Object), - objectCreate = Object.create, - propertyIsEnumerable = objectProto.propertyIsEnumerable, - splice = arrayProto.splice, - spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined, - symIterator = Symbol ? Symbol.iterator : undefined, - symToStringTag = Symbol ? Symbol.toStringTag : undefined; - - var defineProperty = (function() { - try { - var func = getNative(Object, 'defineProperty'); - func({}, '', {}); - return func; - } catch (e) {} - }()); - - /** Mocked built-ins. */ - var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, - ctxNow = Date && Date.now !== root.Date.now && Date.now, - ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; - - /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeCeil = Math.ceil, - nativeFloor = Math.floor, - nativeGetSymbols = Object.getOwnPropertySymbols, - nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, - nativeIsFinite = context.isFinite, - nativeJoin = arrayProto.join, - nativeKeys = overArg(Object.keys, Object), - nativeMax = Math.max, - nativeMin = Math.min, - nativeNow = Date.now, - nativeParseInt = context.parseInt, - nativeRandom = Math.random, - nativeReverse = arrayProto.reverse; - - /* Built-in method references that are verified to be native. */ - var DataView = getNative(context, 'DataView'), - Map = getNative(context, 'Map'), - Promise = getNative(context, 'Promise'), - Set = getNative(context, 'Set'), - WeakMap = getNative(context, 'WeakMap'), - nativeCreate = getNative(Object, 'create'); - - /** Used to store function metadata. */ - var metaMap = WeakMap && new WeakMap; - - /** Used to lookup unminified function names. */ - var realNames = {}; - - /** Used to detect maps, sets, and weakmaps. */ - var dataViewCtorString = toSource(DataView), - mapCtorString = toSource(Map), - promiseCtorString = toSource(Promise), - setCtorString = toSource(Set), - weakMapCtorString = toSource(WeakMap); - - /** Used to convert symbols to primitives and strings. */ - var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, - symbolToString = symbolProto ? symbolProto.toString : undefined; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` object which wraps `value` to enable implicit method - * chain sequences. Methods that operate on and return arrays, collections, - * and functions can be chained together. Methods that retrieve a single value - * or may return a primitive value will automatically end the chain sequence - * and return the unwrapped value. Otherwise, the value must be unwrapped - * with `_#value`. - * - * Explicit chain sequences, which must be unwrapped with `_#value`, may be - * enabled using `_.chain`. - * - * The execution of chained methods is lazy, that is, it's deferred until - * `_#value` is implicitly or explicitly called. - * - * Lazy evaluation allows several methods to support shortcut fusion. - * Shortcut fusion is an optimization to merge iteratee calls; this avoids - * the creation of intermediate arrays and can greatly reduce the number of - * iteratee executions. Sections of a chain sequence qualify for shortcut - * fusion if the section is applied to an array and iteratees accept only - * one argument. The heuristic for whether a section qualifies for shortcut - * fusion is subject to change. - * - * Chaining is supported in custom builds as long as the `_#value` method is - * directly or indirectly included in the build. - * - * In addition to lodash methods, wrappers have `Array` and `String` methods. - * - * The wrapper `Array` methods are: - * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` - * - * The wrapper `String` methods are: - * `replace` and `split` - * - * The wrapper methods that support shortcut fusion are: - * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, - * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, - * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` - * - * The chainable wrapper methods are: - * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, - * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, - * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, - * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, - * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, - * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, - * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, - * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, - * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, - * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, - * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, - * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, - * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, - * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, - * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, - * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, - * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, - * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, - * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, - * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, - * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, - * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, - * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, - * `zipObject`, `zipObjectDeep`, and `zipWith` - * - * The wrapper methods that are **not** chainable by default are: - * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, - * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, - * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, - * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, - * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, - * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, - * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, - * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, - * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, - * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, - * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, - * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, - * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, - * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, - * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, - * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, - * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, - * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, - * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, - * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, - * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, - * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, - * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, - * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, - * `upperFirst`, `value`, and `words` - * - * @name _ - * @constructor - * @category Seq - * @param {*} value The value to wrap in a `lodash` instance. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * function square(n) { - * return n * n; - * } - * - * var wrapped = _([1, 2, 3]); - * - * // Returns an unwrapped value. - * wrapped.reduce(_.add); - * // => 6 - * - * // Returns a wrapped value. - * var squares = wrapped.map(square); - * - * _.isArray(squares); - * // => false - * - * _.isArray(squares.value()); - * // => true - */ - function lodash(value) { - if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { - if (value instanceof LodashWrapper) { - return value; - } - if (hasOwnProperty.call(value, '__wrapped__')) { - return wrapperClone(value); - } - } - return new LodashWrapper(value); - } - - /** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} proto The object to inherit from. - * @returns {Object} Returns the new object. - */ - var baseCreate = (function() { - function object() {} - return function(proto) { - if (!isObject(proto)) { - return {}; - } - if (objectCreate) { - return objectCreate(proto); - } - object.prototype = proto; - var result = new object; - object.prototype = undefined; - return result; - }; - }()); - - /** - * The function whose prototype chain sequence wrappers inherit from. - * - * @private - */ - function baseLodash() { - // No operation performed. - } - - /** - * The base constructor for creating `lodash` wrapper objects. - * - * @private - * @param {*} value The value to wrap. - * @param {boolean} [chainAll] Enable explicit method chain sequences. - */ - function LodashWrapper(value, chainAll) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__chain__ = !!chainAll; - this.__index__ = 0; - this.__values__ = undefined; - } - - /** - * By default, the template delimiters used by lodash are like those in - * embedded Ruby (ERB) as well as ES2015 template strings. Change the - * following template settings to use alternative delimiters. - * - * @static - * @memberOf _ - * @type {Object} - */ - lodash.templateSettings = { - - /** - * Used to detect `data` property values to be HTML-escaped. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - 'escape': reEscape, - - /** - * Used to detect code to be evaluated. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - 'evaluate': reEvaluate, - - /** - * Used to detect `data` property values to inject. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - 'interpolate': reInterpolate, - - /** - * Used to reference the data object in the template text. - * - * @memberOf _.templateSettings - * @type {string} - */ - 'variable': '', - - /** - * Used to import variables into the compiled template. - * - * @memberOf _.templateSettings - * @type {Object} - */ - 'imports': { - - /** - * A reference to the `lodash` function. - * - * @memberOf _.templateSettings.imports - * @type {Function} - */ - '_': lodash - } - }; - - // Ensure wrappers are instances of `baseLodash`. - lodash.prototype = baseLodash.prototype; - lodash.prototype.constructor = lodash; - - LodashWrapper.prototype = baseCreate(baseLodash.prototype); - LodashWrapper.prototype.constructor = LodashWrapper; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. - * - * @private - * @constructor - * @param {*} value The value to wrap. - */ - function LazyWrapper(value) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__dir__ = 1; - this.__filtered__ = false; - this.__iteratees__ = []; - this.__takeCount__ = MAX_ARRAY_LENGTH; - this.__views__ = []; - } - - /** - * Creates a clone of the lazy wrapper object. - * - * @private - * @name clone - * @memberOf LazyWrapper - * @returns {Object} Returns the cloned `LazyWrapper` object. - */ - function lazyClone() { - var result = new LazyWrapper(this.__wrapped__); - result.__actions__ = copyArray(this.__actions__); - result.__dir__ = this.__dir__; - result.__filtered__ = this.__filtered__; - result.__iteratees__ = copyArray(this.__iteratees__); - result.__takeCount__ = this.__takeCount__; - result.__views__ = copyArray(this.__views__); - return result; - } - - /** - * Reverses the direction of lazy iteration. - * - * @private - * @name reverse - * @memberOf LazyWrapper - * @returns {Object} Returns the new reversed `LazyWrapper` object. - */ - function lazyReverse() { - if (this.__filtered__) { - var result = new LazyWrapper(this); - result.__dir__ = -1; - result.__filtered__ = true; - } else { - result = this.clone(); - result.__dir__ *= -1; - } - return result; - } - - /** - * Extracts the unwrapped value from its lazy wrapper. - * - * @private - * @name value - * @memberOf LazyWrapper - * @returns {*} Returns the unwrapped value. - */ - function lazyValue() { - var array = this.__wrapped__.value(), - dir = this.__dir__, - isArr = isArray(array), - isRight = dir < 0, - arrLength = isArr ? array.length : 0, - view = getView(0, arrLength, this.__views__), - start = view.start, - end = view.end, - length = end - start, - index = isRight ? end : (start - 1), - iteratees = this.__iteratees__, - iterLength = iteratees.length, - resIndex = 0, - takeCount = nativeMin(length, this.__takeCount__); - - if (!isArr || (!isRight && arrLength == length && takeCount == length)) { - return baseWrapperValue(array, this.__actions__); - } - var result = []; - - outer: - while (length-- && resIndex < takeCount) { - index += dir; - - var iterIndex = -1, - value = array[index]; - - while (++iterIndex < iterLength) { - var data = iteratees[iterIndex], - iteratee = data.iteratee, - type = data.type, - computed = iteratee(value); - - if (type == LAZY_MAP_FLAG) { - value = computed; - } else if (!computed) { - if (type == LAZY_FILTER_FLAG) { - continue outer; - } else { - break outer; - } - } - } - result[resIndex++] = value; - } - return result; - } - - // Ensure `LazyWrapper` is an instance of `baseLodash`. - LazyWrapper.prototype = baseCreate(baseLodash.prototype); - LazyWrapper.prototype.constructor = LazyWrapper; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function Hash(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash - */ - function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; - this.size = 0; - } - - /** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function hashDelete(key) { - var result = this.has(key) && delete this.__data__[key]; - this.size -= result ? 1 : 0; - return result; - } - - /** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; - } - return hasOwnProperty.call(data, key) ? data[key] : undefined; - } - - /** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function hashHas(key) { - var data = this.__data__; - return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); - } - - /** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ - function hashSet(key, value) { - var data = this.__data__; - this.size += this.has(key) ? 0 : 1; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; - return this; - } - - // Add methods to `Hash`. - Hash.prototype.clear = hashClear; - Hash.prototype['delete'] = hashDelete; - Hash.prototype.get = hashGet; - Hash.prototype.has = hashHas; - Hash.prototype.set = hashSet; - - /*------------------------------------------------------------------------*/ - - /** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function ListCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ - function listCacheClear() { - this.__data__ = []; - this.size = 0; - } - - /** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - --this.size; - return true; - } - - /** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - return index < 0 ? undefined : data[index][1]; - } - - /** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; - } - - /** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ - function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - ++this.size; - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; - } - - // Add methods to `ListCache`. - ListCache.prototype.clear = listCacheClear; - ListCache.prototype['delete'] = listCacheDelete; - ListCache.prototype.get = listCacheGet; - ListCache.prototype.has = listCacheHas; - ListCache.prototype.set = listCacheSet; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function MapCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ - function mapCacheClear() { - this.size = 0; - this.__data__ = { - 'hash': new Hash, - 'map': new (Map || ListCache), - 'string': new Hash - }; - } - - /** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function mapCacheDelete(key) { - var result = getMapData(this, key)['delete'](key); - this.size -= result ? 1 : 0; - return result; - } - - /** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function mapCacheGet(key) { - return getMapData(this, key).get(key); - } - - /** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function mapCacheHas(key) { - return getMapData(this, key).has(key); - } - - /** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. - */ - function mapCacheSet(key, value) { - var data = getMapData(this, key), - size = data.size; - - data.set(key, value); - this.size += data.size == size ? 0 : 1; - return this; - } - - // Add methods to `MapCache`. - MapCache.prototype.clear = mapCacheClear; - MapCache.prototype['delete'] = mapCacheDelete; - MapCache.prototype.get = mapCacheGet; - MapCache.prototype.has = mapCacheHas; - MapCache.prototype.set = mapCacheSet; - - /*------------------------------------------------------------------------*/ - - /** - * - * Creates an array cache object to store unique values. - * - * @private - * @constructor - * @param {Array} [values] The values to cache. - */ - function SetCache(values) { - var index = -1, - length = values == null ? 0 : values.length; - - this.__data__ = new MapCache; - while (++index < length) { - this.add(values[index]); - } - } - - /** - * Adds `value` to the array cache. - * - * @private - * @name add - * @memberOf SetCache - * @alias push - * @param {*} value The value to cache. - * @returns {Object} Returns the cache instance. - */ - function setCacheAdd(value) { - this.__data__.set(value, HASH_UNDEFINED); - return this; - } - - /** - * Checks if `value` is in the array cache. - * - * @private - * @name has - * @memberOf SetCache - * @param {*} value The value to search for. - * @returns {number} Returns `true` if `value` is found, else `false`. - */ - function setCacheHas(value) { - return this.__data__.has(value); - } - - // Add methods to `SetCache`. - SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; - SetCache.prototype.has = setCacheHas; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a stack cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function Stack(entries) { - var data = this.__data__ = new ListCache(entries); - this.size = data.size; - } - - /** - * Removes all key-value entries from the stack. - * - * @private - * @name clear - * @memberOf Stack - */ - function stackClear() { - this.__data__ = new ListCache; - this.size = 0; - } - - /** - * Removes `key` and its value from the stack. - * - * @private - * @name delete - * @memberOf Stack - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function stackDelete(key) { - var data = this.__data__, - result = data['delete'](key); - - this.size = data.size; - return result; - } - - /** - * Gets the stack value for `key`. - * - * @private - * @name get - * @memberOf Stack - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function stackGet(key) { - return this.__data__.get(key); - } - - /** - * Checks if a stack value for `key` exists. - * - * @private - * @name has - * @memberOf Stack - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function stackHas(key) { - return this.__data__.has(key); - } - - /** - * Sets the stack `key` to `value`. - * - * @private - * @name set - * @memberOf Stack - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the stack cache instance. - */ - function stackSet(key, value) { - var data = this.__data__; - if (data instanceof ListCache) { - var pairs = data.__data__; - if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { - pairs.push([key, value]); - this.size = ++data.size; - return this; - } - data = this.__data__ = new MapCache(pairs); - } - data.set(key, value); - this.size = data.size; - return this; - } - - // Add methods to `Stack`. - Stack.prototype.clear = stackClear; - Stack.prototype['delete'] = stackDelete; - Stack.prototype.get = stackGet; - Stack.prototype.has = stackHas; - Stack.prototype.set = stackSet; - - /*------------------------------------------------------------------------*/ - - /** - * Creates an array of the enumerable property names of the array-like `value`. - * - * @private - * @param {*} value The value to query. - * @param {boolean} inherited Specify returning inherited property names. - * @returns {Array} Returns the array of property names. - */ - function arrayLikeKeys(value, inherited) { - var isArr = isArray(value), - isArg = !isArr && isArguments(value), - isBuff = !isArr && !isArg && isBuffer(value), - isType = !isArr && !isArg && !isBuff && isTypedArray(value), - skipIndexes = isArr || isArg || isBuff || isType, - result = skipIndexes ? baseTimes(value.length, String) : [], - length = result.length; - - for (var key in value) { - if ((inherited || hasOwnProperty.call(value, key)) && - !(skipIndexes && ( - // Safari 9 has enumerable `arguments.length` in strict mode. - key == 'length' || - // Node.js 0.10 has enumerable non-index properties on buffers. - (isBuff && (key == 'offset' || key == 'parent')) || - // PhantomJS 2 has enumerable non-index properties on typed arrays. - (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || - // Skip index properties. - isIndex(key, length) - ))) { - result.push(key); - } - } - return result; - } - - /** - * A specialized version of `_.sample` for arrays. - * - * @private - * @param {Array} array The array to sample. - * @returns {*} Returns the random element. - */ - function arraySample(array) { - var length = array.length; - return length ? array[baseRandom(0, length - 1)] : undefined; - } - - /** - * A specialized version of `_.sampleSize` for arrays. - * - * @private - * @param {Array} array The array to sample. - * @param {number} n The number of elements to sample. - * @returns {Array} Returns the random elements. - */ - function arraySampleSize(array, n) { - return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); - } - - /** - * A specialized version of `_.shuffle` for arrays. - * - * @private - * @param {Array} array The array to shuffle. - * @returns {Array} Returns the new shuffled array. - */ - function arrayShuffle(array) { - return shuffleSelf(copyArray(array)); - } - - /** - * This function is like `assignValue` except that it doesn't assign - * `undefined` values. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function assignMergeValue(object, key, value) { - if ((value !== undefined && !eq(object[key], value)) || - (value === undefined && !(key in object))) { - baseAssignValue(object, key, value); - } - } - - /** - * Assigns `value` to `key` of `object` if the existing value is not equivalent - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function assignValue(object, key, value) { - var objValue = object[key]; - if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || - (value === undefined && !(key in object))) { - baseAssignValue(object, key, value); - } - } - - /** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } - } - return -1; - } - - /** - * Aggregates elements of `collection` on `accumulator` with keys transformed - * by `iteratee` and values set by `setter`. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform keys. - * @param {Object} accumulator The initial aggregated object. - * @returns {Function} Returns `accumulator`. - */ - function baseAggregator(collection, setter, iteratee, accumulator) { - baseEach(collection, function(value, key, collection) { - setter(accumulator, value, iteratee(value), collection); - }); - return accumulator; - } - - /** - * The base implementation of `_.assign` without support for multiple sources - * or `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ - function baseAssign(object, source) { - return object && copyObject(source, keys(source), object); - } - - /** - * The base implementation of `_.assignIn` without support for multiple sources - * or `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ - function baseAssignIn(object, source) { - return object && copyObject(source, keysIn(source), object); - } - - /** - * The base implementation of `assignValue` and `assignMergeValue` without - * value checks. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function baseAssignValue(object, key, value) { - if (key == '__proto__' && defineProperty) { - defineProperty(object, key, { - 'configurable': true, - 'enumerable': true, - 'value': value, - 'writable': true - }); - } else { - object[key] = value; - } - } - - /** - * The base implementation of `_.at` without support for individual paths. - * - * @private - * @param {Object} object The object to iterate over. - * @param {string[]} paths The property paths to pick. - * @returns {Array} Returns the picked elements. - */ - function baseAt(object, paths) { - var index = -1, - length = paths.length, - result = Array(length), - skip = object == null; - - while (++index < length) { - result[index] = skip ? undefined : get(object, paths[index]); - } - return result; - } - - /** - * The base implementation of `_.clamp` which doesn't coerce arguments. - * - * @private - * @param {number} number The number to clamp. - * @param {number} [lower] The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the clamped number. - */ - function baseClamp(number, lower, upper) { - if (number === number) { - if (upper !== undefined) { - number = number <= upper ? number : upper; - } - if (lower !== undefined) { - number = number >= lower ? number : lower; - } - } - return number; - } - - /** - * The base implementation of `_.clone` and `_.cloneDeep` which tracks - * traversed objects. - * - * @private - * @param {*} value The value to clone. - * @param {boolean} bitmask The bitmask flags. - * 1 - Deep clone - * 2 - Flatten inherited properties - * 4 - Clone symbols - * @param {Function} [customizer] The function to customize cloning. - * @param {string} [key] The key of `value`. - * @param {Object} [object] The parent object of `value`. - * @param {Object} [stack] Tracks traversed objects and their clone counterparts. - * @returns {*} Returns the cloned value. - */ - function baseClone(value, bitmask, customizer, key, object, stack) { - var result, - isDeep = bitmask & CLONE_DEEP_FLAG, - isFlat = bitmask & CLONE_FLAT_FLAG, - isFull = bitmask & CLONE_SYMBOLS_FLAG; - - if (customizer) { - result = object ? customizer(value, key, object, stack) : customizer(value); - } - if (result !== undefined) { - return result; - } - if (!isObject(value)) { - return value; - } - var isArr = isArray(value); - if (isArr) { - result = initCloneArray(value); - if (!isDeep) { - return copyArray(value, result); - } - } else { - var tag = getTag(value), - isFunc = tag == funcTag || tag == genTag; - - if (isBuffer(value)) { - return cloneBuffer(value, isDeep); - } - if (tag == objectTag || tag == argsTag || (isFunc && !object)) { - result = (isFlat || isFunc) ? {} : initCloneObject(value); - if (!isDeep) { - return isFlat - ? copySymbolsIn(value, baseAssignIn(result, value)) - : copySymbols(value, baseAssign(result, value)); - } - } else { - if (!cloneableTags[tag]) { - return object ? value : {}; - } - result = initCloneByTag(value, tag, isDeep); - } - } - // Check for circular references and return its corresponding clone. - stack || (stack = new Stack); - var stacked = stack.get(value); - if (stacked) { - return stacked; - } - stack.set(value, result); - - if (isSet(value)) { - value.forEach(function(subValue) { - result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); - }); - - return result; - } - - if (isMap(value)) { - value.forEach(function(subValue, key) { - result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); - }); - - return result; - } - - var keysFunc = isFull - ? (isFlat ? getAllKeysIn : getAllKeys) - : (isFlat ? keysIn : keys); - - var props = isArr ? undefined : keysFunc(value); - arrayEach(props || value, function(subValue, key) { - if (props) { - key = subValue; - subValue = value[key]; - } - // Recursively populate clone (susceptible to call stack limits). - assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); - }); - return result; - } - - /** - * The base implementation of `_.conforms` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property predicates to conform to. - * @returns {Function} Returns the new spec function. - */ - function baseConforms(source) { - var props = keys(source); - return function(object) { - return baseConformsTo(object, source, props); - }; - } - - /** - * The base implementation of `_.conformsTo` which accepts `props` to check. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property predicates to conform to. - * @returns {boolean} Returns `true` if `object` conforms, else `false`. - */ - function baseConformsTo(object, source, props) { - var length = props.length; - if (object == null) { - return !length; - } - object = Object(object); - while (length--) { - var key = props[length], - predicate = source[key], - value = object[key]; - - if ((value === undefined && !(key in object)) || !predicate(value)) { - return false; - } - } - return true; - } - - /** - * The base implementation of `_.delay` and `_.defer` which accepts `args` - * to provide to `func`. - * - * @private - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {Array} args The arguments to provide to `func`. - * @returns {number|Object} Returns the timer id or timeout object. - */ - function baseDelay(func, wait, args) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return setTimeout(function() { func.apply(undefined, args); }, wait); - } - - /** - * The base implementation of methods like `_.difference` without support - * for excluding multiple arrays or iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Array} values The values to exclude. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. - */ - function baseDifference(array, values, iteratee, comparator) { - var index = -1, - includes = arrayIncludes, - isCommon = true, - length = array.length, - result = [], - valuesLength = values.length; - - if (!length) { - return result; - } - if (iteratee) { - values = arrayMap(values, baseUnary(iteratee)); - } - if (comparator) { - includes = arrayIncludesWith; - isCommon = false; - } - else if (values.length >= LARGE_ARRAY_SIZE) { - includes = cacheHas; - isCommon = false; - values = new SetCache(values); - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee == null ? value : iteratee(value); - - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var valuesIndex = valuesLength; - while (valuesIndex--) { - if (values[valuesIndex] === computed) { - continue outer; - } - } - result.push(value); - } - else if (!includes(values, computed, comparator)) { - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.forEach` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ - var baseEach = createBaseEach(baseForOwn); - - /** - * The base implementation of `_.forEachRight` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ - var baseEachRight = createBaseEach(baseForOwnRight, true); - - /** - * The base implementation of `_.every` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false` - */ - function baseEvery(collection, predicate) { - var result = true; - baseEach(collection, function(value, index, collection) { - result = !!predicate(value, index, collection); - return result; - }); - return result; - } - - /** - * The base implementation of methods like `_.max` and `_.min` which accepts a - * `comparator` to determine the extremum value. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The iteratee invoked per iteration. - * @param {Function} comparator The comparator used to compare values. - * @returns {*} Returns the extremum value. - */ - function baseExtremum(array, iteratee, comparator) { - var index = -1, - length = array.length; - - while (++index < length) { - var value = array[index], - current = iteratee(value); - - if (current != null && (computed === undefined - ? (current === current && !isSymbol(current)) - : comparator(current, computed) - )) { - var computed = current, - result = value; - } - } - return result; - } - - /** - * The base implementation of `_.fill` without an iteratee call guard. - * - * @private - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns `array`. - */ - function baseFill(array, value, start, end) { - var length = array.length; - - start = toInteger(start); - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = (end === undefined || end > length) ? length : toInteger(end); - if (end < 0) { - end += length; - } - end = start > end ? 0 : toLength(end); - while (start < end) { - array[start++] = value; - } - return array; - } - - /** - * The base implementation of `_.filter` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ - function baseFilter(collection, predicate) { - var result = []; - baseEach(collection, function(value, index, collection) { - if (predicate(value, index, collection)) { - result.push(value); - } - }); - return result; - } - - /** - * The base implementation of `_.flatten` with support for restricting flattening. - * - * @private - * @param {Array} array The array to flatten. - * @param {number} depth The maximum recursion depth. - * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. - * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. - * @param {Array} [result=[]] The initial result value. - * @returns {Array} Returns the new flattened array. - */ - function baseFlatten(array, depth, predicate, isStrict, result) { - var index = -1, - length = array.length; - - predicate || (predicate = isFlattenable); - result || (result = []); - - while (++index < length) { - var value = array[index]; - if (depth > 0 && predicate(value)) { - if (depth > 1) { - // Recursively flatten arrays (susceptible to call stack limits). - baseFlatten(value, depth - 1, predicate, isStrict, result); - } else { - arrayPush(result, value); - } - } else if (!isStrict) { - result[result.length] = value; - } - } - return result; - } - - /** - * The base implementation of `baseForOwn` which iterates over `object` - * properties returned by `keysFunc` and invokes `iteratee` for each property. - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ - var baseFor = createBaseFor(); - - /** - * This function is like `baseFor` except that it iterates over properties - * in the opposite order. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ - var baseForRight = createBaseFor(true); - - /** - * The base implementation of `_.forOwn` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ - function baseForOwn(object, iteratee) { - return object && baseFor(object, iteratee, keys); - } - - /** - * The base implementation of `_.forOwnRight` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ - function baseForOwnRight(object, iteratee) { - return object && baseForRight(object, iteratee, keys); - } - - /** - * The base implementation of `_.functions` which creates an array of - * `object` function property names filtered from `props`. - * - * @private - * @param {Object} object The object to inspect. - * @param {Array} props The property names to filter. - * @returns {Array} Returns the function names. - */ - function baseFunctions(object, props) { - return arrayFilter(props, function(key) { - return isFunction(object[key]); - }); - } - - /** - * The base implementation of `_.get` without support for default values. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @returns {*} Returns the resolved value. - */ - function baseGet(object, path) { - path = castPath(path, object); - - var index = 0, - length = path.length; - - while (object != null && index < length) { - object = object[toKey(path[index++])]; - } - return (index && index == length) ? object : undefined; - } - - /** - * The base implementation of `getAllKeys` and `getAllKeysIn` which uses - * `keysFunc` and `symbolsFunc` to get the enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Function} keysFunc The function to get the keys of `object`. - * @param {Function} symbolsFunc The function to get the symbols of `object`. - * @returns {Array} Returns the array of property names and symbols. - */ - function baseGetAllKeys(object, keysFunc, symbolsFunc) { - var result = keysFunc(object); - return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); - } - - /** - * The base implementation of `getTag` without fallbacks for buggy environments. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ - function baseGetTag(value) { - if (value == null) { - return value === undefined ? undefinedTag : nullTag; - } - return (symToStringTag && symToStringTag in Object(value)) - ? getRawTag(value) - : objectToString(value); - } - - /** - * The base implementation of `_.gt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than `other`, - * else `false`. - */ - function baseGt(value, other) { - return value > other; - } - - /** - * The base implementation of `_.has` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ - function baseHas(object, key) { - return object != null && hasOwnProperty.call(object, key); - } - - /** - * The base implementation of `_.hasIn` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ - function baseHasIn(object, key) { - return object != null && key in Object(object); - } - - /** - * The base implementation of `_.inRange` which doesn't coerce arguments. - * - * @private - * @param {number} number The number to check. - * @param {number} start The start of the range. - * @param {number} end The end of the range. - * @returns {boolean} Returns `true` if `number` is in the range, else `false`. - */ - function baseInRange(number, start, end) { - return number >= nativeMin(start, end) && number < nativeMax(start, end); - } - - /** - * The base implementation of methods like `_.intersection`, without support - * for iteratee shorthands, that accepts an array of arrays to inspect. - * - * @private - * @param {Array} arrays The arrays to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of shared values. - */ - function baseIntersection(arrays, iteratee, comparator) { - var includes = comparator ? arrayIncludesWith : arrayIncludes, - length = arrays[0].length, - othLength = arrays.length, - othIndex = othLength, - caches = Array(othLength), - maxLength = Infinity, - result = []; - - while (othIndex--) { - var array = arrays[othIndex]; - if (othIndex && iteratee) { - array = arrayMap(array, baseUnary(iteratee)); - } - maxLength = nativeMin(array.length, maxLength); - caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) - ? new SetCache(othIndex && array) - : undefined; - } - array = arrays[0]; - - var index = -1, - seen = caches[0]; - - outer: - while (++index < length && result.length < maxLength) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - value = (comparator || value !== 0) ? value : 0; - if (!(seen - ? cacheHas(seen, computed) - : includes(result, computed, comparator) - )) { - othIndex = othLength; - while (--othIndex) { - var cache = caches[othIndex]; - if (!(cache - ? cacheHas(cache, computed) - : includes(arrays[othIndex], computed, comparator)) - ) { - continue outer; - } - } - if (seen) { - seen.push(computed); - } - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.invert` and `_.invertBy` which inverts - * `object` with values transformed by `iteratee` and set by `setter`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform values. - * @param {Object} accumulator The initial inverted object. - * @returns {Function} Returns `accumulator`. - */ - function baseInverter(object, setter, iteratee, accumulator) { - baseForOwn(object, function(value, key, object) { - setter(accumulator, iteratee(value), key, object); - }); - return accumulator; - } - - /** - * The base implementation of `_.invoke` without support for individual - * method arguments. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the method to invoke. - * @param {Array} args The arguments to invoke the method with. - * @returns {*} Returns the result of the invoked method. - */ - function baseInvoke(object, path, args) { - path = castPath(path, object); - object = parent(object, path); - var func = object == null ? object : object[toKey(last(path))]; - return func == null ? undefined : apply(func, object, args); - } - - /** - * The base implementation of `_.isArguments`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - */ - function baseIsArguments(value) { - return isObjectLike(value) && baseGetTag(value) == argsTag; - } - - /** - * The base implementation of `_.isArrayBuffer` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. - */ - function baseIsArrayBuffer(value) { - return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; - } - - /** - * The base implementation of `_.isDate` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a date object, else `false`. - */ - function baseIsDate(value) { - return isObjectLike(value) && baseGetTag(value) == dateTag; - } - - /** - * The base implementation of `_.isEqual` which supports partial comparisons - * and tracks traversed objects. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {boolean} bitmask The bitmask flags. - * 1 - Unordered comparison - * 2 - Partial comparison - * @param {Function} [customizer] The function to customize comparisons. - * @param {Object} [stack] Tracks traversed `value` and `other` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ - function baseIsEqual(value, other, bitmask, customizer, stack) { - if (value === other) { - return true; - } - if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { - return value !== value && other !== other; - } - return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); - } - - /** - * A specialized version of `baseIsEqual` for arrays and objects which performs - * deep comparisons and tracks traversed objects enabling objects with circular - * references to be compared. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} [stack] Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { - var objIsArr = isArray(object), - othIsArr = isArray(other), - objTag = objIsArr ? arrayTag : getTag(object), - othTag = othIsArr ? arrayTag : getTag(other); - - objTag = objTag == argsTag ? objectTag : objTag; - othTag = othTag == argsTag ? objectTag : othTag; - - var objIsObj = objTag == objectTag, - othIsObj = othTag == objectTag, - isSameTag = objTag == othTag; - - if (isSameTag && isBuffer(object)) { - if (!isBuffer(other)) { - return false; - } - objIsArr = true; - objIsObj = false; - } - if (isSameTag && !objIsObj) { - stack || (stack = new Stack); - return (objIsArr || isTypedArray(object)) - ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) - : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); - } - if (!(bitmask & COMPARE_PARTIAL_FLAG)) { - var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), - othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); - - if (objIsWrapped || othIsWrapped) { - var objUnwrapped = objIsWrapped ? object.value() : object, - othUnwrapped = othIsWrapped ? other.value() : other; - - stack || (stack = new Stack); - return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); - } - } - if (!isSameTag) { - return false; - } - stack || (stack = new Stack); - return equalObjects(object, other, bitmask, customizer, equalFunc, stack); - } - - /** - * The base implementation of `_.isMap` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - */ - function baseIsMap(value) { - return isObjectLike(value) && getTag(value) == mapTag; - } - - /** - * The base implementation of `_.isMatch` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Array} matchData The property names, values, and compare flags to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - */ - function baseIsMatch(object, source, matchData, customizer) { - var index = matchData.length, - length = index, - noCustomizer = !customizer; - - if (object == null) { - return !length; - } - object = Object(object); - while (index--) { - var data = matchData[index]; - if ((noCustomizer && data[2]) - ? data[1] !== object[data[0]] - : !(data[0] in object) - ) { - return false; - } - } - while (++index < length) { - data = matchData[index]; - var key = data[0], - objValue = object[key], - srcValue = data[1]; - - if (noCustomizer && data[2]) { - if (objValue === undefined && !(key in object)) { - return false; - } - } else { - var stack = new Stack; - if (customizer) { - var result = customizer(objValue, srcValue, key, object, source, stack); - } - if (!(result === undefined - ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) - : result - )) { - return false; - } - } - } - return true; - } - - /** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ - function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = isFunction(value) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); - } - - /** - * The base implementation of `_.isRegExp` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. - */ - function baseIsRegExp(value) { - return isObjectLike(value) && baseGetTag(value) == regexpTag; - } - - /** - * The base implementation of `_.isSet` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. - */ - function baseIsSet(value) { - return isObjectLike(value) && getTag(value) == setTag; - } - - /** - * The base implementation of `_.isTypedArray` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - */ - function baseIsTypedArray(value) { - return isObjectLike(value) && - isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; - } - - /** - * The base implementation of `_.iteratee`. - * - * @private - * @param {*} [value=_.identity] The value to convert to an iteratee. - * @returns {Function} Returns the iteratee. - */ - function baseIteratee(value) { - // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. - // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. - if (typeof value == 'function') { - return value; - } - if (value == null) { - return identity; - } - if (typeof value == 'object') { - return isArray(value) - ? baseMatchesProperty(value[0], value[1]) - : baseMatches(value); - } - return property(value); - } - - /** - * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function baseKeys(object) { - if (!isPrototype(object)) { - return nativeKeys(object); - } - var result = []; - for (var key in Object(object)) { - if (hasOwnProperty.call(object, key) && key != 'constructor') { - result.push(key); - } - } - return result; - } - - /** - * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function baseKeysIn(object) { - if (!isObject(object)) { - return nativeKeysIn(object); - } - var isProto = isPrototype(object), - result = []; - - for (var key in object) { - if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { - result.push(key); - } - } - return result; - } - - /** - * The base implementation of `_.lt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than `other`, - * else `false`. - */ - function baseLt(value, other) { - return value < other; - } - - /** - * The base implementation of `_.map` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ - function baseMap(collection, iteratee) { - var index = -1, - result = isArrayLike(collection) ? Array(collection.length) : []; - - baseEach(collection, function(value, key, collection) { - result[++index] = iteratee(value, key, collection); - }); - return result; - } - - /** - * The base implementation of `_.matches` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new spec function. - */ - function baseMatches(source) { - var matchData = getMatchData(source); - if (matchData.length == 1 && matchData[0][2]) { - return matchesStrictComparable(matchData[0][0], matchData[0][1]); - } - return function(object) { - return object === source || baseIsMatch(object, source, matchData); - }; - } - - /** - * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. - * - * @private - * @param {string} path The path of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ - function baseMatchesProperty(path, srcValue) { - if (isKey(path) && isStrictComparable(srcValue)) { - return matchesStrictComparable(toKey(path), srcValue); - } - return function(object) { - var objValue = get(object, path); - return (objValue === undefined && objValue === srcValue) - ? hasIn(object, path) - : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); - }; - } - - /** - * The base implementation of `_.merge` without support for multiple sources. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {number} srcIndex The index of `source`. - * @param {Function} [customizer] The function to customize merged values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ - function baseMerge(object, source, srcIndex, customizer, stack) { - if (object === source) { - return; - } - baseFor(source, function(srcValue, key) { - if (isObject(srcValue)) { - stack || (stack = new Stack); - baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); - } - else { - var newValue = customizer - ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) - : undefined; - - if (newValue === undefined) { - newValue = srcValue; - } - assignMergeValue(object, key, newValue); - } - }, keysIn); - } - - /** - * A specialized version of `baseMerge` for arrays and objects which performs - * deep merges and tracks traversed objects enabling objects with circular - * references to be merged. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {string} key The key of the value to merge. - * @param {number} srcIndex The index of `source`. - * @param {Function} mergeFunc The function to merge values. - * @param {Function} [customizer] The function to customize assigned values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ - function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { - var objValue = safeGet(object, key), - srcValue = safeGet(source, key), - stacked = stack.get(srcValue); - - if (stacked) { - assignMergeValue(object, key, stacked); - return; - } - var newValue = customizer - ? customizer(objValue, srcValue, (key + ''), object, source, stack) - : undefined; - - var isCommon = newValue === undefined; - - if (isCommon) { - var isArr = isArray(srcValue), - isBuff = !isArr && isBuffer(srcValue), - isTyped = !isArr && !isBuff && isTypedArray(srcValue); - - newValue = srcValue; - if (isArr || isBuff || isTyped) { - if (isArray(objValue)) { - newValue = objValue; - } - else if (isArrayLikeObject(objValue)) { - newValue = copyArray(objValue); - } - else if (isBuff) { - isCommon = false; - newValue = cloneBuffer(srcValue, true); - } - else if (isTyped) { - isCommon = false; - newValue = cloneTypedArray(srcValue, true); - } - else { - newValue = []; - } - } - else if (isPlainObject(srcValue) || isArguments(srcValue)) { - newValue = objValue; - if (isArguments(objValue)) { - newValue = toPlainObject(objValue); - } - else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) { - newValue = initCloneObject(srcValue); - } - } - else { - isCommon = false; - } - } - if (isCommon) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, newValue); - mergeFunc(newValue, srcValue, srcIndex, customizer, stack); - stack['delete'](srcValue); - } - assignMergeValue(object, key, newValue); - } - - /** - * The base implementation of `_.nth` which doesn't coerce arguments. - * - * @private - * @param {Array} array The array to query. - * @param {number} n The index of the element to return. - * @returns {*} Returns the nth element of `array`. - */ - function baseNth(array, n) { - var length = array.length; - if (!length) { - return; - } - n += n < 0 ? length : 0; - return isIndex(n, length) ? array[n] : undefined; - } - - /** - * The base implementation of `_.orderBy` without param guards. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. - * @param {string[]} orders The sort orders of `iteratees`. - * @returns {Array} Returns the new sorted array. - */ - function baseOrderBy(collection, iteratees, orders) { - var index = -1; - iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee())); - - var result = baseMap(collection, function(value, key, collection) { - var criteria = arrayMap(iteratees, function(iteratee) { - return iteratee(value); - }); - return { 'criteria': criteria, 'index': ++index, 'value': value }; - }); - - return baseSortBy(result, function(object, other) { - return compareMultiple(object, other, orders); - }); - } - - /** - * The base implementation of `_.pick` without support for individual - * property identifiers. - * - * @private - * @param {Object} object The source object. - * @param {string[]} paths The property paths to pick. - * @returns {Object} Returns the new object. - */ - function basePick(object, paths) { - return basePickBy(object, paths, function(value, path) { - return hasIn(object, path); - }); - } - - /** - * The base implementation of `_.pickBy` without support for iteratee shorthands. - * - * @private - * @param {Object} object The source object. - * @param {string[]} paths The property paths to pick. - * @param {Function} predicate The function invoked per property. - * @returns {Object} Returns the new object. - */ - function basePickBy(object, paths, predicate) { - var index = -1, - length = paths.length, - result = {}; - - while (++index < length) { - var path = paths[index], - value = baseGet(object, path); - - if (predicate(value, path)) { - baseSet(result, castPath(path, object), value); - } - } - return result; - } - - /** - * A specialized version of `baseProperty` which supports deep paths. - * - * @private - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - */ - function basePropertyDeep(path) { - return function(object) { - return baseGet(object, path); - }; - } - - /** - * The base implementation of `_.pullAllBy` without support for iteratee - * shorthands. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns `array`. - */ - function basePullAll(array, values, iteratee, comparator) { - var indexOf = comparator ? baseIndexOfWith : baseIndexOf, - index = -1, - length = values.length, - seen = array; - - if (array === values) { - values = copyArray(values); - } - if (iteratee) { - seen = arrayMap(array, baseUnary(iteratee)); - } - while (++index < length) { - var fromIndex = 0, - value = values[index], - computed = iteratee ? iteratee(value) : value; - - while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { - if (seen !== array) { - splice.call(seen, fromIndex, 1); - } - splice.call(array, fromIndex, 1); - } - } - return array; - } - - /** - * The base implementation of `_.pullAt` without support for individual - * indexes or capturing the removed elements. - * - * @private - * @param {Array} array The array to modify. - * @param {number[]} indexes The indexes of elements to remove. - * @returns {Array} Returns `array`. - */ - function basePullAt(array, indexes) { - var length = array ? indexes.length : 0, - lastIndex = length - 1; - - while (length--) { - var index = indexes[length]; - if (length == lastIndex || index !== previous) { - var previous = index; - if (isIndex(index)) { - splice.call(array, index, 1); - } else { - baseUnset(array, index); - } - } - } - return array; - } - - /** - * The base implementation of `_.random` without support for returning - * floating-point numbers. - * - * @private - * @param {number} lower The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the random number. - */ - function baseRandom(lower, upper) { - return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); - } - - /** - * The base implementation of `_.range` and `_.rangeRight` which doesn't - * coerce arguments. - * - * @private - * @param {number} start The start of the range. - * @param {number} end The end of the range. - * @param {number} step The value to increment or decrement by. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Array} Returns the range of numbers. - */ - function baseRange(start, end, step, fromRight) { - var index = -1, - length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), - result = Array(length); - - while (length--) { - result[fromRight ? length : ++index] = start; - start += step; - } - return result; - } - - /** - * The base implementation of `_.repeat` which doesn't coerce arguments. - * - * @private - * @param {string} string The string to repeat. - * @param {number} n The number of times to repeat the string. - * @returns {string} Returns the repeated string. - */ - function baseRepeat(string, n) { - var result = ''; - if (!string || n < 1 || n > MAX_SAFE_INTEGER) { - return result; - } - // Leverage the exponentiation by squaring algorithm for a faster repeat. - // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. - do { - if (n % 2) { - result += string; - } - n = nativeFloor(n / 2); - if (n) { - string += string; - } - } while (n); - - return result; - } - - /** - * The base implementation of `_.rest` which doesn't validate or coerce arguments. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - */ - function baseRest(func, start) { - return setToString(overRest(func, start, identity), func + ''); - } - - /** - * The base implementation of `_.sample`. - * - * @private - * @param {Array|Object} collection The collection to sample. - * @returns {*} Returns the random element. - */ - function baseSample(collection) { - return arraySample(values(collection)); - } - - /** - * The base implementation of `_.sampleSize` without param guards. - * - * @private - * @param {Array|Object} collection The collection to sample. - * @param {number} n The number of elements to sample. - * @returns {Array} Returns the random elements. - */ - function baseSampleSize(collection, n) { - var array = values(collection); - return shuffleSelf(array, baseClamp(n, 0, array.length)); - } - - /** - * The base implementation of `_.set`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. - */ - function baseSet(object, path, value, customizer) { - if (!isObject(object)) { - return object; - } - path = castPath(path, object); - - var index = -1, - length = path.length, - lastIndex = length - 1, - nested = object; - - while (nested != null && ++index < length) { - var key = toKey(path[index]), - newValue = value; - - if (index != lastIndex) { - var objValue = nested[key]; - newValue = customizer ? customizer(objValue, key, nested) : undefined; - if (newValue === undefined) { - newValue = isObject(objValue) - ? objValue - : (isIndex(path[index + 1]) ? [] : {}); - } - } - assignValue(nested, key, newValue); - nested = nested[key]; - } - return object; - } - - /** - * The base implementation of `setData` without support for hot loop shorting. - * - * @private - * @param {Function} func The function to associate metadata with. - * @param {*} data The metadata. - * @returns {Function} Returns `func`. - */ - var baseSetData = !metaMap ? identity : function(func, data) { - metaMap.set(func, data); - return func; - }; - - /** - * The base implementation of `setToString` without support for hot loop shorting. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ - var baseSetToString = !defineProperty ? identity : function(func, string) { - return defineProperty(func, 'toString', { - 'configurable': true, - 'enumerable': false, - 'value': constant(string), - 'writable': true - }); - }; - - /** - * The base implementation of `_.shuffle`. - * - * @private - * @param {Array|Object} collection The collection to shuffle. - * @returns {Array} Returns the new shuffled array. - */ - function baseShuffle(collection) { - return shuffleSelf(values(collection)); - } - - /** - * The base implementation of `_.slice` without an iteratee call guard. - * - * @private - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ - function baseSlice(array, start, end) { - var index = -1, - length = array.length; - - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = end > length ? length : end; - if (end < 0) { - end += length; - } - length = start > end ? 0 : ((end - start) >>> 0); - start >>>= 0; - - var result = Array(length); - while (++index < length) { - result[index] = array[index + start]; - } - return result; - } - - /** - * The base implementation of `_.some` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ - function baseSome(collection, predicate) { - var result; - - baseEach(collection, function(value, index, collection) { - result = predicate(value, index, collection); - return !result; - }); - return !!result; - } - - /** - * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which - * performs a binary search of `array` to determine the index at which `value` - * should be inserted into `array` in order to maintain its sort order. - * - * @private - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {boolean} [retHighest] Specify returning the highest qualified index. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - */ - function baseSortedIndex(array, value, retHighest) { - var low = 0, - high = array == null ? low : array.length; - - if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { - while (low < high) { - var mid = (low + high) >>> 1, - computed = array[mid]; - - if (computed !== null && !isSymbol(computed) && - (retHighest ? (computed <= value) : (computed < value))) { - low = mid + 1; - } else { - high = mid; - } - } - return high; - } - return baseSortedIndexBy(array, value, identity, retHighest); - } - - /** - * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy` - * which invokes `iteratee` for `value` and each element of `array` to compute - * their sort ranking. The iteratee is invoked with one argument; (value). - * - * @private - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} iteratee The iteratee invoked per element. - * @param {boolean} [retHighest] Specify returning the highest qualified index. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - */ - function baseSortedIndexBy(array, value, iteratee, retHighest) { - value = iteratee(value); - - var low = 0, - high = array == null ? 0 : array.length, - valIsNaN = value !== value, - valIsNull = value === null, - valIsSymbol = isSymbol(value), - valIsUndefined = value === undefined; - - while (low < high) { - var mid = nativeFloor((low + high) / 2), - computed = iteratee(array[mid]), - othIsDefined = computed !== undefined, - othIsNull = computed === null, - othIsReflexive = computed === computed, - othIsSymbol = isSymbol(computed); - - if (valIsNaN) { - var setLow = retHighest || othIsReflexive; - } else if (valIsUndefined) { - setLow = othIsReflexive && (retHighest || othIsDefined); - } else if (valIsNull) { - setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); - } else if (valIsSymbol) { - setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); - } else if (othIsNull || othIsSymbol) { - setLow = false; - } else { - setLow = retHighest ? (computed <= value) : (computed < value); - } - if (setLow) { - low = mid + 1; - } else { - high = mid; - } - } - return nativeMin(high, MAX_ARRAY_INDEX); - } - - /** - * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - */ - function baseSortedUniq(array, iteratee) { - var index = -1, - length = array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - if (!index || !eq(computed, seen)) { - var seen = computed; - result[resIndex++] = value === 0 ? 0 : value; - } - } - return result; - } - - /** - * The base implementation of `_.toNumber` which doesn't ensure correct - * conversions of binary, hexadecimal, or octal string values. - * - * @private - * @param {*} value The value to process. - * @returns {number} Returns the number. - */ - function baseToNumber(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol(value)) { - return NAN; - } - return +value; - } - - /** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ - function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isArray(value)) { - // Recursively convert values (susceptible to call stack limits). - return arrayMap(value, baseToString) + ''; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; - } - - /** - * The base implementation of `_.uniqBy` without support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new duplicate free array. - */ - function baseUniq(array, iteratee, comparator) { - var index = -1, - includes = arrayIncludes, - length = array.length, - isCommon = true, - result = [], - seen = result; - - if (comparator) { - isCommon = false; - includes = arrayIncludesWith; - } - else if (length >= LARGE_ARRAY_SIZE) { - var set = iteratee ? null : createSet(array); - if (set) { - return setToArray(set); - } - isCommon = false; - includes = cacheHas; - seen = new SetCache; - } - else { - seen = iteratee ? [] : result; - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var seenIndex = seen.length; - while (seenIndex--) { - if (seen[seenIndex] === computed) { - continue outer; - } - } - if (iteratee) { - seen.push(computed); - } - result.push(value); - } - else if (!includes(seen, computed, comparator)) { - if (seen !== result) { - seen.push(computed); - } - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.unset`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The property path to unset. - * @returns {boolean} Returns `true` if the property is deleted, else `false`. - */ - function baseUnset(object, path) { - path = castPath(path, object); - object = parent(object, path); - return object == null || delete object[toKey(last(path))]; - } - - /** - * The base implementation of `_.update`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to update. - * @param {Function} updater The function to produce the updated value. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. - */ - function baseUpdate(object, path, updater, customizer) { - return baseSet(object, path, updater(baseGet(object, path)), customizer); - } - - /** - * The base implementation of methods like `_.dropWhile` and `_.takeWhile` - * without support for iteratee shorthands. - * - * @private - * @param {Array} array The array to query. - * @param {Function} predicate The function invoked per iteration. - * @param {boolean} [isDrop] Specify dropping elements instead of taking them. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Array} Returns the slice of `array`. - */ - function baseWhile(array, predicate, isDrop, fromRight) { - var length = array.length, - index = fromRight ? length : -1; - - while ((fromRight ? index-- : ++index < length) && - predicate(array[index], index, array)) {} - - return isDrop - ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) - : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); - } - - /** - * The base implementation of `wrapperValue` which returns the result of - * performing a sequence of actions on the unwrapped `value`, where each - * successive action is supplied the return value of the previous. - * - * @private - * @param {*} value The unwrapped value. - * @param {Array} actions Actions to perform to resolve the unwrapped value. - * @returns {*} Returns the resolved value. - */ - function baseWrapperValue(value, actions) { - var result = value; - if (result instanceof LazyWrapper) { - result = result.value(); - } - return arrayReduce(actions, function(result, action) { - return action.func.apply(action.thisArg, arrayPush([result], action.args)); - }, result); - } - - /** - * The base implementation of methods like `_.xor`, without support for - * iteratee shorthands, that accepts an array of arrays to inspect. - * - * @private - * @param {Array} arrays The arrays to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of values. - */ - function baseXor(arrays, iteratee, comparator) { - var length = arrays.length; - if (length < 2) { - return length ? baseUniq(arrays[0]) : []; - } - var index = -1, - result = Array(length); - - while (++index < length) { - var array = arrays[index], - othIndex = -1; - - while (++othIndex < length) { - if (othIndex != index) { - result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator); - } - } - } - return baseUniq(baseFlatten(result, 1), iteratee, comparator); - } - - /** - * This base implementation of `_.zipObject` which assigns values using `assignFunc`. - * - * @private - * @param {Array} props The property identifiers. - * @param {Array} values The property values. - * @param {Function} assignFunc The function to assign values. - * @returns {Object} Returns the new object. - */ - function baseZipObject(props, values, assignFunc) { - var index = -1, - length = props.length, - valsLength = values.length, - result = {}; - - while (++index < length) { - var value = index < valsLength ? values[index] : undefined; - assignFunc(result, props[index], value); - } - return result; - } - - /** - * Casts `value` to an empty array if it's not an array like object. - * - * @private - * @param {*} value The value to inspect. - * @returns {Array|Object} Returns the cast array-like object. - */ - function castArrayLikeObject(value) { - return isArrayLikeObject(value) ? value : []; - } - - /** - * Casts `value` to `identity` if it's not a function. - * - * @private - * @param {*} value The value to inspect. - * @returns {Function} Returns cast function. - */ - function castFunction(value) { - return typeof value == 'function' ? value : identity; - } - - /** - * Casts `value` to a path array if it's not one. - * - * @private - * @param {*} value The value to inspect. - * @param {Object} [object] The object to query keys on. - * @returns {Array} Returns the cast property path array. - */ - function castPath(value, object) { - if (isArray(value)) { - return value; - } - return isKey(value, object) ? [value] : stringToPath(toString(value)); - } - - /** - * A `baseRest` alias which can be replaced with `identity` by module - * replacement plugins. - * - * @private - * @type {Function} - * @param {Function} func The function to apply a rest parameter to. - * @returns {Function} Returns the new function. - */ - var castRest = baseRest; - - /** - * Casts `array` to a slice if it's needed. - * - * @private - * @param {Array} array The array to inspect. - * @param {number} start The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the cast slice. - */ - function castSlice(array, start, end) { - var length = array.length; - end = end === undefined ? length : end; - return (!start && end >= length) ? array : baseSlice(array, start, end); - } - - /** - * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout). - * - * @private - * @param {number|Object} id The timer id or timeout object of the timer to clear. - */ - var clearTimeout = ctxClearTimeout || function(id) { - return root.clearTimeout(id); - }; - - /** - * Creates a clone of `buffer`. - * - * @private - * @param {Buffer} buffer The buffer to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Buffer} Returns the cloned buffer. - */ - function cloneBuffer(buffer, isDeep) { - if (isDeep) { - return buffer.slice(); - } - var length = buffer.length, - result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); - - buffer.copy(result); - return result; - } - - /** - * Creates a clone of `arrayBuffer`. - * - * @private - * @param {ArrayBuffer} arrayBuffer The array buffer to clone. - * @returns {ArrayBuffer} Returns the cloned array buffer. - */ - function cloneArrayBuffer(arrayBuffer) { - var result = new arrayBuffer.constructor(arrayBuffer.byteLength); - new Uint8Array(result).set(new Uint8Array(arrayBuffer)); - return result; - } - - /** - * Creates a clone of `dataView`. - * - * @private - * @param {Object} dataView The data view to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned data view. - */ - function cloneDataView(dataView, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; - return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); - } - - /** - * Creates a clone of `regexp`. - * - * @private - * @param {Object} regexp The regexp to clone. - * @returns {Object} Returns the cloned regexp. - */ - function cloneRegExp(regexp) { - var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); - result.lastIndex = regexp.lastIndex; - return result; - } - - /** - * Creates a clone of the `symbol` object. - * - * @private - * @param {Object} symbol The symbol object to clone. - * @returns {Object} Returns the cloned symbol object. - */ - function cloneSymbol(symbol) { - return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; - } - - /** - * Creates a clone of `typedArray`. - * - * @private - * @param {Object} typedArray The typed array to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned typed array. - */ - function cloneTypedArray(typedArray, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; - return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); - } - - /** - * Compares values to sort them in ascending order. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {number} Returns the sort order indicator for `value`. - */ - function compareAscending(value, other) { - if (value !== other) { - var valIsDefined = value !== undefined, - valIsNull = value === null, - valIsReflexive = value === value, - valIsSymbol = isSymbol(value); - - var othIsDefined = other !== undefined, - othIsNull = other === null, - othIsReflexive = other === other, - othIsSymbol = isSymbol(other); - - if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || - (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || - (valIsNull && othIsDefined && othIsReflexive) || - (!valIsDefined && othIsReflexive) || - !valIsReflexive) { - return 1; - } - if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || - (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || - (othIsNull && valIsDefined && valIsReflexive) || - (!othIsDefined && valIsReflexive) || - !othIsReflexive) { - return -1; - } - } - return 0; - } - - /** - * Used by `_.orderBy` to compare multiple properties of a value to another - * and stable sort them. - * - * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, - * specify an order of "desc" for descending or "asc" for ascending sort order - * of corresponding values. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {boolean[]|string[]} orders The order to sort by for each property. - * @returns {number} Returns the sort order indicator for `object`. - */ - function compareMultiple(object, other, orders) { - var index = -1, - objCriteria = object.criteria, - othCriteria = other.criteria, - length = objCriteria.length, - ordersLength = orders.length; - - while (++index < length) { - var result = compareAscending(objCriteria[index], othCriteria[index]); - if (result) { - if (index >= ordersLength) { - return result; - } - var order = orders[index]; - return result * (order == 'desc' ? -1 : 1); - } - } - // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications - // that causes it, under certain circumstances, to provide the same value for - // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 - // for more details. - // - // This also ensures a stable sort in V8 and other engines. - // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. - return object.index - other.index; - } - - /** - * Creates an array that is the composition of partially applied arguments, - * placeholders, and provided arguments into a single array of arguments. - * - * @private - * @param {Array} args The provided arguments. - * @param {Array} partials The arguments to prepend to those provided. - * @param {Array} holders The `partials` placeholder indexes. - * @params {boolean} [isCurried] Specify composing for a curried function. - * @returns {Array} Returns the new array of composed arguments. - */ - function composeArgs(args, partials, holders, isCurried) { - var argsIndex = -1, - argsLength = args.length, - holdersLength = holders.length, - leftIndex = -1, - leftLength = partials.length, - rangeLength = nativeMax(argsLength - holdersLength, 0), - result = Array(leftLength + rangeLength), - isUncurried = !isCurried; - - while (++leftIndex < leftLength) { - result[leftIndex] = partials[leftIndex]; - } - while (++argsIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result[holders[argsIndex]] = args[argsIndex]; - } - } - while (rangeLength--) { - result[leftIndex++] = args[argsIndex++]; - } - return result; - } - - /** - * This function is like `composeArgs` except that the arguments composition - * is tailored for `_.partialRight`. - * - * @private - * @param {Array} args The provided arguments. - * @param {Array} partials The arguments to append to those provided. - * @param {Array} holders The `partials` placeholder indexes. - * @params {boolean} [isCurried] Specify composing for a curried function. - * @returns {Array} Returns the new array of composed arguments. - */ - function composeArgsRight(args, partials, holders, isCurried) { - var argsIndex = -1, - argsLength = args.length, - holdersIndex = -1, - holdersLength = holders.length, - rightIndex = -1, - rightLength = partials.length, - rangeLength = nativeMax(argsLength - holdersLength, 0), - result = Array(rangeLength + rightLength), - isUncurried = !isCurried; - - while (++argsIndex < rangeLength) { - result[argsIndex] = args[argsIndex]; - } - var offset = argsIndex; - while (++rightIndex < rightLength) { - result[offset + rightIndex] = partials[rightIndex]; - } - while (++holdersIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result[offset + holders[holdersIndex]] = args[argsIndex++]; - } - } - return result; - } - - /** - * Copies the values of `source` to `array`. - * - * @private - * @param {Array} source The array to copy values from. - * @param {Array} [array=[]] The array to copy values to. - * @returns {Array} Returns `array`. - */ - function copyArray(source, array) { - var index = -1, - length = source.length; - - array || (array = Array(length)); - while (++index < length) { - array[index] = source[index]; - } - return array; - } - - /** - * Copies properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy properties from. - * @param {Array} props The property identifiers to copy. - * @param {Object} [object={}] The object to copy properties to. - * @param {Function} [customizer] The function to customize copied values. - * @returns {Object} Returns `object`. - */ - function copyObject(source, props, object, customizer) { - var isNew = !object; - object || (object = {}); - - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - - var newValue = customizer - ? customizer(object[key], source[key], key, object, source) - : undefined; - - if (newValue === undefined) { - newValue = source[key]; - } - if (isNew) { - baseAssignValue(object, key, newValue); - } else { - assignValue(object, key, newValue); - } - } - return object; - } - - /** - * Copies own symbols of `source` to `object`. - * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. - */ - function copySymbols(source, object) { - return copyObject(source, getSymbols(source), object); - } - - /** - * Copies own and inherited symbols of `source` to `object`. - * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. - */ - function copySymbolsIn(source, object) { - return copyObject(source, getSymbolsIn(source), object); - } - - /** - * Creates a function like `_.groupBy`. - * - * @private - * @param {Function} setter The function to set accumulator values. - * @param {Function} [initializer] The accumulator object initializer. - * @returns {Function} Returns the new aggregator function. - */ - function createAggregator(setter, initializer) { - return function(collection, iteratee) { - var func = isArray(collection) ? arrayAggregator : baseAggregator, - accumulator = initializer ? initializer() : {}; - - return func(collection, setter, getIteratee(iteratee, 2), accumulator); - }; - } - - /** - * Creates a function like `_.assign`. - * - * @private - * @param {Function} assigner The function to assign values. - * @returns {Function} Returns the new assigner function. - */ - function createAssigner(assigner) { - return baseRest(function(object, sources) { - var index = -1, - length = sources.length, - customizer = length > 1 ? sources[length - 1] : undefined, - guard = length > 2 ? sources[2] : undefined; - - customizer = (assigner.length > 3 && typeof customizer == 'function') - ? (length--, customizer) - : undefined; - - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - customizer = length < 3 ? undefined : customizer; - length = 1; - } - object = Object(object); - while (++index < length) { - var source = sources[index]; - if (source) { - assigner(object, source, index, customizer); - } - } - return object; - }); - } - - /** - * Creates a `baseEach` or `baseEachRight` function. - * - * @private - * @param {Function} eachFunc The function to iterate over a collection. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ - function createBaseEach(eachFunc, fromRight) { - return function(collection, iteratee) { - if (collection == null) { - return collection; - } - if (!isArrayLike(collection)) { - return eachFunc(collection, iteratee); - } - var length = collection.length, - index = fromRight ? length : -1, - iterable = Object(collection); - - while ((fromRight ? index-- : ++index < length)) { - if (iteratee(iterable[index], index, iterable) === false) { - break; - } - } - return collection; - }; - } - - /** - * Creates a base function for methods like `_.forIn` and `_.forOwn`. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ - function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var index = -1, - iterable = Object(object), - props = keysFunc(object), - length = props.length; - - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; - } - - /** - * Creates a function that wraps `func` to invoke it with the optional `this` - * binding of `thisArg`. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} [thisArg] The `this` binding of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createBind(func, bitmask, thisArg) { - var isBind = bitmask & WRAP_BIND_FLAG, - Ctor = createCtor(func); - - function wrapper() { - var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - return fn.apply(isBind ? thisArg : this, arguments); - } - return wrapper; - } - - /** - * Creates a function like `_.lowerFirst`. - * - * @private - * @param {string} methodName The name of the `String` case method to use. - * @returns {Function} Returns the new case function. - */ - function createCaseFirst(methodName) { - return function(string) { - string = toString(string); - - var strSymbols = hasUnicode(string) - ? stringToArray(string) - : undefined; - - var chr = strSymbols - ? strSymbols[0] - : string.charAt(0); - - var trailing = strSymbols - ? castSlice(strSymbols, 1).join('') - : string.slice(1); - - return chr[methodName]() + trailing; - }; - } - - /** - * Creates a function like `_.camelCase`. - * - * @private - * @param {Function} callback The function to combine each word. - * @returns {Function} Returns the new compounder function. - */ - function createCompounder(callback) { - return function(string) { - return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); - }; - } - - /** - * Creates a function that produces an instance of `Ctor` regardless of - * whether it was invoked as part of a `new` expression or by `call` or `apply`. - * - * @private - * @param {Function} Ctor The constructor to wrap. - * @returns {Function} Returns the new wrapped function. - */ - function createCtor(Ctor) { - return function() { - // Use a `switch` statement to work with class constructors. See - // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist - // for more details. - var args = arguments; - switch (args.length) { - case 0: return new Ctor; - case 1: return new Ctor(args[0]); - case 2: return new Ctor(args[0], args[1]); - case 3: return new Ctor(args[0], args[1], args[2]); - case 4: return new Ctor(args[0], args[1], args[2], args[3]); - case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); - case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); - case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); - } - var thisBinding = baseCreate(Ctor.prototype), - result = Ctor.apply(thisBinding, args); - - // Mimic the constructor's `return` behavior. - // See https://es5.github.io/#x13.2.2 for more details. - return isObject(result) ? result : thisBinding; - }; - } - - /** - * Creates a function that wraps `func` to enable currying. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {number} arity The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createCurry(func, bitmask, arity) { - var Ctor = createCtor(func); - - function wrapper() { - var length = arguments.length, - args = Array(length), - index = length, - placeholder = getHolder(wrapper); - - while (index--) { - args[index] = arguments[index]; - } - var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) - ? [] - : replaceHolders(args, placeholder); - - length -= holders.length; - if (length < arity) { - return createRecurry( - func, bitmask, createHybrid, wrapper.placeholder, undefined, - args, holders, undefined, undefined, arity - length); - } - var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - return apply(fn, this, args); - } - return wrapper; - } - - /** - * Creates a `_.find` or `_.findLast` function. - * - * @private - * @param {Function} findIndexFunc The function to find the collection index. - * @returns {Function} Returns the new find function. - */ - function createFind(findIndexFunc) { - return function(collection, predicate, fromIndex) { - var iterable = Object(collection); - if (!isArrayLike(collection)) { - var iteratee = getIteratee(predicate, 3); - collection = keys(collection); - predicate = function(key) { return iteratee(iterable[key], key, iterable); }; - } - var index = findIndexFunc(collection, predicate, fromIndex); - return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; - }; - } - - /** - * Creates a `_.flow` or `_.flowRight` function. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new flow function. - */ - function createFlow(fromRight) { - return flatRest(function(funcs) { - var length = funcs.length, - index = length, - prereq = LodashWrapper.prototype.thru; - - if (fromRight) { - funcs.reverse(); - } - while (index--) { - var func = funcs[index]; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - if (prereq && !wrapper && getFuncName(func) == 'wrapper') { - var wrapper = new LodashWrapper([], true); - } - } - index = wrapper ? index : length; - while (++index < length) { - func = funcs[index]; - - var funcName = getFuncName(func), - data = funcName == 'wrapper' ? getData(func) : undefined; - - if (data && isLaziable(data[0]) && - data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && - !data[4].length && data[9] == 1 - ) { - wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); - } else { - wrapper = (func.length == 1 && isLaziable(func)) - ? wrapper[funcName]() - : wrapper.thru(func); - } - } - return function() { - var args = arguments, - value = args[0]; - - if (wrapper && args.length == 1 && isArray(value)) { - return wrapper.plant(value).value(); - } - var index = 0, - result = length ? funcs[index].apply(this, args) : value; - - while (++index < length) { - result = funcs[index].call(this, result); - } - return result; - }; - }); - } - - /** - * Creates a function that wraps `func` to invoke it with optional `this` - * binding of `thisArg`, partial application, and currying. - * - * @private - * @param {Function|string} func The function or method name to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to prepend to those provided to - * the new function. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [partialsRight] The arguments to append to those provided - * to the new function. - * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { - var isAry = bitmask & WRAP_ARY_FLAG, - isBind = bitmask & WRAP_BIND_FLAG, - isBindKey = bitmask & WRAP_BIND_KEY_FLAG, - isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), - isFlip = bitmask & WRAP_FLIP_FLAG, - Ctor = isBindKey ? undefined : createCtor(func); - - function wrapper() { - var length = arguments.length, - args = Array(length), - index = length; - - while (index--) { - args[index] = arguments[index]; - } - if (isCurried) { - var placeholder = getHolder(wrapper), - holdersCount = countHolders(args, placeholder); - } - if (partials) { - args = composeArgs(args, partials, holders, isCurried); - } - if (partialsRight) { - args = composeArgsRight(args, partialsRight, holdersRight, isCurried); - } - length -= holdersCount; - if (isCurried && length < arity) { - var newHolders = replaceHolders(args, placeholder); - return createRecurry( - func, bitmask, createHybrid, wrapper.placeholder, thisArg, - args, newHolders, argPos, ary, arity - length - ); - } - var thisBinding = isBind ? thisArg : this, - fn = isBindKey ? thisBinding[func] : func; - - length = args.length; - if (argPos) { - args = reorder(args, argPos); - } else if (isFlip && length > 1) { - args.reverse(); - } - if (isAry && ary < length) { - args.length = ary; - } - if (this && this !== root && this instanceof wrapper) { - fn = Ctor || createCtor(fn); - } - return fn.apply(thisBinding, args); - } - return wrapper; - } - - /** - * Creates a function like `_.invertBy`. - * - * @private - * @param {Function} setter The function to set accumulator values. - * @param {Function} toIteratee The function to resolve iteratees. - * @returns {Function} Returns the new inverter function. - */ - function createInverter(setter, toIteratee) { - return function(object, iteratee) { - return baseInverter(object, setter, toIteratee(iteratee), {}); - }; - } - - /** - * Creates a function that performs a mathematical operation on two values. - * - * @private - * @param {Function} operator The function to perform the operation. - * @param {number} [defaultValue] The value used for `undefined` arguments. - * @returns {Function} Returns the new mathematical operation function. - */ - function createMathOperation(operator, defaultValue) { - return function(value, other) { - var result; - if (value === undefined && other === undefined) { - return defaultValue; - } - if (value !== undefined) { - result = value; - } - if (other !== undefined) { - if (result === undefined) { - return other; - } - if (typeof value == 'string' || typeof other == 'string') { - value = baseToString(value); - other = baseToString(other); - } else { - value = baseToNumber(value); - other = baseToNumber(other); - } - result = operator(value, other); - } - return result; - }; - } - - /** - * Creates a function like `_.over`. - * - * @private - * @param {Function} arrayFunc The function to iterate over iteratees. - * @returns {Function} Returns the new over function. - */ - function createOver(arrayFunc) { - return flatRest(function(iteratees) { - iteratees = arrayMap(iteratees, baseUnary(getIteratee())); - return baseRest(function(args) { - var thisArg = this; - return arrayFunc(iteratees, function(iteratee) { - return apply(iteratee, thisArg, args); - }); - }); - }); - } - - /** - * Creates the padding for `string` based on `length`. The `chars` string - * is truncated if the number of characters exceeds `length`. - * - * @private - * @param {number} length The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padding for `string`. - */ - function createPadding(length, chars) { - chars = chars === undefined ? ' ' : baseToString(chars); - - var charsLength = chars.length; - if (charsLength < 2) { - return charsLength ? baseRepeat(chars, length) : chars; - } - var result = baseRepeat(chars, nativeCeil(length / stringSize(chars))); - return hasUnicode(chars) - ? castSlice(stringToArray(result), 0, length).join('') - : result.slice(0, length); - } - - /** - * Creates a function that wraps `func` to invoke it with the `this` binding - * of `thisArg` and `partials` prepended to the arguments it receives. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} partials The arguments to prepend to those provided to - * the new function. - * @returns {Function} Returns the new wrapped function. - */ - function createPartial(func, bitmask, thisArg, partials) { - var isBind = bitmask & WRAP_BIND_FLAG, - Ctor = createCtor(func); - - function wrapper() { - var argsIndex = -1, - argsLength = arguments.length, - leftIndex = -1, - leftLength = partials.length, - args = Array(leftLength + argsLength), - fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - - while (++leftIndex < leftLength) { - args[leftIndex] = partials[leftIndex]; - } - while (argsLength--) { - args[leftIndex++] = arguments[++argsIndex]; - } - return apply(fn, isBind ? thisArg : this, args); - } - return wrapper; - } - - /** - * Creates a `_.range` or `_.rangeRight` function. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new range function. - */ - function createRange(fromRight) { - return function(start, end, step) { - if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { - end = step = undefined; - } - // Ensure the sign of `-0` is preserved. - start = toFinite(start); - if (end === undefined) { - end = start; - start = 0; - } else { - end = toFinite(end); - } - step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); - return baseRange(start, end, step, fromRight); - }; - } - - /** - * Creates a function that performs a relational operation on two values. - * - * @private - * @param {Function} operator The function to perform the operation. - * @returns {Function} Returns the new relational operation function. - */ - function createRelationalOperation(operator) { - return function(value, other) { - if (!(typeof value == 'string' && typeof other == 'string')) { - value = toNumber(value); - other = toNumber(other); - } - return operator(value, other); - }; - } - - /** - * Creates a function that wraps `func` to continue currying. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {Function} wrapFunc The function to create the `func` wrapper. - * @param {*} placeholder The placeholder value. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to prepend to those provided to - * the new function. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) { - var isCurry = bitmask & WRAP_CURRY_FLAG, - newHolders = isCurry ? holders : undefined, - newHoldersRight = isCurry ? undefined : holders, - newPartials = isCurry ? partials : undefined, - newPartialsRight = isCurry ? undefined : partials; - - bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG); - bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); - - if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { - bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); - } - var newData = [ - func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, - newHoldersRight, argPos, ary, arity - ]; - - var result = wrapFunc.apply(undefined, newData); - if (isLaziable(func)) { - setData(result, newData); - } - result.placeholder = placeholder; - return setWrapToString(result, func, bitmask); - } - - /** - * Creates a function like `_.round`. - * - * @private - * @param {string} methodName The name of the `Math` method to use when rounding. - * @returns {Function} Returns the new round function. - */ - function createRound(methodName) { - var func = Math[methodName]; - return function(number, precision) { - number = toNumber(number); - precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); - if (precision) { - // Shift with exponential notation to avoid floating-point issues. - // See [MDN](https://mdn.io/round#Examples) for more details. - var pair = (toString(number) + 'e').split('e'), - value = func(pair[0] + 'e' + (+pair[1] + precision)); - - pair = (toString(value) + 'e').split('e'); - return +(pair[0] + 'e' + (+pair[1] - precision)); - } - return func(number); - }; - } - - /** - * Creates a set object of `values`. - * - * @private - * @param {Array} values The values to add to the set. - * @returns {Object} Returns the new set. - */ - var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { - return new Set(values); - }; - - /** - * Creates a `_.toPairs` or `_.toPairsIn` function. - * - * @private - * @param {Function} keysFunc The function to get the keys of a given object. - * @returns {Function} Returns the new pairs function. - */ - function createToPairs(keysFunc) { - return function(object) { - var tag = getTag(object); - if (tag == mapTag) { - return mapToArray(object); - } - if (tag == setTag) { - return setToPairs(object); - } - return baseToPairs(object, keysFunc(object)); - }; - } - - /** - * Creates a function that either curries or invokes `func` with optional - * `this` binding and partially applied arguments. - * - * @private - * @param {Function|string} func The function or method name to wrap. - * @param {number} bitmask The bitmask flags. - * 1 - `_.bind` - * 2 - `_.bindKey` - * 4 - `_.curry` or `_.curryRight` of a bound function - * 8 - `_.curry` - * 16 - `_.curryRight` - * 32 - `_.partial` - * 64 - `_.partialRight` - * 128 - `_.rearg` - * 256 - `_.ary` - * 512 - `_.flip` - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to be partially applied. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { - var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; - if (!isBindKey && typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - var length = partials ? partials.length : 0; - if (!length) { - bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); - partials = holders = undefined; - } - ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0); - arity = arity === undefined ? arity : toInteger(arity); - length -= holders ? holders.length : 0; - - if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { - var partialsRight = partials, - holdersRight = holders; - - partials = holders = undefined; - } - var data = isBindKey ? undefined : getData(func); - - var newData = [ - func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, - argPos, ary, arity - ]; - - if (data) { - mergeData(newData, data); - } - func = newData[0]; - bitmask = newData[1]; - thisArg = newData[2]; - partials = newData[3]; - holders = newData[4]; - arity = newData[9] = newData[9] === undefined - ? (isBindKey ? 0 : func.length) - : nativeMax(newData[9] - length, 0); - - if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { - bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); - } - if (!bitmask || bitmask == WRAP_BIND_FLAG) { - var result = createBind(func, bitmask, thisArg); - } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { - result = createCurry(func, bitmask, arity); - } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { - result = createPartial(func, bitmask, thisArg, partials); - } else { - result = createHybrid.apply(undefined, newData); - } - var setter = data ? baseSetData : setData; - return setWrapToString(setter(result, newData), func, bitmask); - } - - /** - * Used by `_.defaults` to customize its `_.assignIn` use to assign properties - * of source objects to the destination object for all destination properties - * that resolve to `undefined`. - * - * @private - * @param {*} objValue The destination value. - * @param {*} srcValue The source value. - * @param {string} key The key of the property to assign. - * @param {Object} object The parent object of `objValue`. - * @returns {*} Returns the value to assign. - */ - function customDefaultsAssignIn(objValue, srcValue, key, object) { - if (objValue === undefined || - (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { - return srcValue; - } - return objValue; - } - - /** - * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source - * objects into destination objects that are passed thru. - * - * @private - * @param {*} objValue The destination value. - * @param {*} srcValue The source value. - * @param {string} key The key of the property to merge. - * @param {Object} object The parent object of `objValue`. - * @param {Object} source The parent object of `srcValue`. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - * @returns {*} Returns the value to assign. - */ - function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { - if (isObject(objValue) && isObject(srcValue)) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, objValue); - baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack); - stack['delete'](srcValue); - } - return objValue; - } - - /** - * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain - * objects. - * - * @private - * @param {*} value The value to inspect. - * @param {string} key The key of the property to inspect. - * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`. - */ - function customOmitClone(value) { - return isPlainObject(value) ? undefined : value; - } - - /** - * A specialized version of `baseIsEqualDeep` for arrays with support for - * partial deep comparisons. - * - * @private - * @param {Array} array The array to compare. - * @param {Array} other The other array to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `array` and `other` objects. - * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. - */ - function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - arrLength = array.length, - othLength = other.length; - - if (arrLength != othLength && !(isPartial && othLength > arrLength)) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(array); - if (stacked && stack.get(other)) { - return stacked == other; - } - var index = -1, - result = true, - seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; - - stack.set(array, other); - stack.set(other, array); - - // Ignore non-index properties. - while (++index < arrLength) { - var arrValue = array[index], - othValue = other[index]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, arrValue, index, other, array, stack) - : customizer(arrValue, othValue, index, array, other, stack); - } - if (compared !== undefined) { - if (compared) { - continue; - } - result = false; - break; - } - // Recursively compare arrays (susceptible to call stack limits). - if (seen) { - if (!arraySome(other, function(othValue, othIndex) { - if (!cacheHas(seen, othIndex) && - (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { - return seen.push(othIndex); - } - })) { - result = false; - break; - } - } else if (!( - arrValue === othValue || - equalFunc(arrValue, othValue, bitmask, customizer, stack) - )) { - result = false; - break; - } - } - stack['delete'](array); - stack['delete'](other); - return result; - } - - /** - * A specialized version of `baseIsEqualDeep` for comparing objects of - * the same `toStringTag`. - * - * **Note:** This function only supports comparing values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {string} tag The `toStringTag` of the objects to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { - switch (tag) { - case dataViewTag: - if ((object.byteLength != other.byteLength) || - (object.byteOffset != other.byteOffset)) { - return false; - } - object = object.buffer; - other = other.buffer; - - case arrayBufferTag: - if ((object.byteLength != other.byteLength) || - !equalFunc(new Uint8Array(object), new Uint8Array(other))) { - return false; - } - return true; - - case boolTag: - case dateTag: - case numberTag: - // Coerce booleans to `1` or `0` and dates to milliseconds. - // Invalid dates are coerced to `NaN`. - return eq(+object, +other); - - case errorTag: - return object.name == other.name && object.message == other.message; - - case regexpTag: - case stringTag: - // Coerce regexes to strings and treat strings, primitives and objects, - // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring - // for more details. - return object == (other + ''); - - case mapTag: - var convert = mapToArray; - - case setTag: - var isPartial = bitmask & COMPARE_PARTIAL_FLAG; - convert || (convert = setToArray); - - if (object.size != other.size && !isPartial) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked) { - return stacked == other; - } - bitmask |= COMPARE_UNORDERED_FLAG; - - // Recursively compare objects (susceptible to call stack limits). - stack.set(object, other); - var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); - stack['delete'](object); - return result; - - case symbolTag: - if (symbolValueOf) { - return symbolValueOf.call(object) == symbolValueOf.call(other); - } - } - return false; - } - - /** - * A specialized version of `baseIsEqualDeep` for objects with support for - * partial deep comparisons. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - objProps = getAllKeys(object), - objLength = objProps.length, - othProps = getAllKeys(other), - othLength = othProps.length; - - if (objLength != othLength && !isPartial) { - return false; - } - var index = objLength; - while (index--) { - var key = objProps[index]; - if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { - return false; - } - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked && stack.get(other)) { - return stacked == other; - } - var result = true; - stack.set(object, other); - stack.set(other, object); - - var skipCtor = isPartial; - while (++index < objLength) { - key = objProps[index]; - var objValue = object[key], - othValue = other[key]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, objValue, key, other, object, stack) - : customizer(objValue, othValue, key, object, other, stack); - } - // Recursively compare objects (susceptible to call stack limits). - if (!(compared === undefined - ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) - : compared - )) { - result = false; - break; - } - skipCtor || (skipCtor = key == 'constructor'); - } - if (result && !skipCtor) { - var objCtor = object.constructor, - othCtor = other.constructor; - - // Non `Object` object instances with different constructors are not equal. - if (objCtor != othCtor && - ('constructor' in object && 'constructor' in other) && - !(typeof objCtor == 'function' && objCtor instanceof objCtor && - typeof othCtor == 'function' && othCtor instanceof othCtor)) { - result = false; - } - } - stack['delete'](object); - stack['delete'](other); - return result; - } - - /** - * A specialized version of `baseRest` which flattens the rest array. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @returns {Function} Returns the new function. - */ - function flatRest(func) { - return setToString(overRest(func, undefined, flatten), func + ''); - } - - /** - * Creates an array of own enumerable property names and symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ - function getAllKeys(object) { - return baseGetAllKeys(object, keys, getSymbols); - } - - /** - * Creates an array of own and inherited enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ - function getAllKeysIn(object) { - return baseGetAllKeys(object, keysIn, getSymbolsIn); - } - - /** - * Gets metadata for `func`. - * - * @private - * @param {Function} func The function to query. - * @returns {*} Returns the metadata for `func`. - */ - var getData = !metaMap ? noop : function(func) { - return metaMap.get(func); - }; - - /** - * Gets the name of `func`. - * - * @private - * @param {Function} func The function to query. - * @returns {string} Returns the function name. - */ - function getFuncName(func) { - var result = (func.name + ''), - array = realNames[result], - length = hasOwnProperty.call(realNames, result) ? array.length : 0; - - while (length--) { - var data = array[length], - otherFunc = data.func; - if (otherFunc == null || otherFunc == func) { - return data.name; - } - } - return result; - } - - /** - * Gets the argument placeholder value for `func`. - * - * @private - * @param {Function} func The function to inspect. - * @returns {*} Returns the placeholder value. - */ - function getHolder(func) { - var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func; - return object.placeholder; - } - - /** - * Gets the appropriate "iteratee" function. If `_.iteratee` is customized, - * this function returns the custom method, otherwise it returns `baseIteratee`. - * If arguments are provided, the chosen function is invoked with them and - * its result is returned. - * - * @private - * @param {*} [value] The value to convert to an iteratee. - * @param {number} [arity] The arity of the created iteratee. - * @returns {Function} Returns the chosen function or its result. - */ - function getIteratee() { - var result = lodash.iteratee || iteratee; - result = result === iteratee ? baseIteratee : result; - return arguments.length ? result(arguments[0], arguments[1]) : result; - } - - /** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ - function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; - } - - /** - * Gets the property names, values, and compare flags of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the match data of `object`. - */ - function getMatchData(object) { - var result = keys(object), - length = result.length; - - while (length--) { - var key = result[length], - value = object[key]; - - result[length] = [key, value, isStrictComparable(value)]; - } - return result; - } - - /** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ - function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; - } - - /** - * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the raw `toStringTag`. - */ - function getRawTag(value) { - var isOwn = hasOwnProperty.call(value, symToStringTag), - tag = value[symToStringTag]; - - try { - value[symToStringTag] = undefined; - var unmasked = true; - } catch (e) {} - - var result = nativeObjectToString.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag] = tag; - } else { - delete value[symToStringTag]; - } - } - return result; - } - - /** - * Creates an array of the own enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ - var getSymbols = !nativeGetSymbols ? stubArray : function(object) { - if (object == null) { - return []; - } - object = Object(object); - return arrayFilter(nativeGetSymbols(object), function(symbol) { - return propertyIsEnumerable.call(object, symbol); - }); - }; - - /** - * Creates an array of the own and inherited enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ - var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { - var result = []; - while (object) { - arrayPush(result, getSymbols(object)); - object = getPrototype(object); - } - return result; - }; - - /** - * Gets the `toStringTag` of `value`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ - var getTag = baseGetTag; - - // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. - if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || - (Map && getTag(new Map) != mapTag) || - (Promise && getTag(Promise.resolve()) != promiseTag) || - (Set && getTag(new Set) != setTag) || - (WeakMap && getTag(new WeakMap) != weakMapTag)) { - getTag = function(value) { - var result = baseGetTag(value), - Ctor = result == objectTag ? value.constructor : undefined, - ctorString = Ctor ? toSource(Ctor) : ''; - - if (ctorString) { - switch (ctorString) { - case dataViewCtorString: return dataViewTag; - case mapCtorString: return mapTag; - case promiseCtorString: return promiseTag; - case setCtorString: return setTag; - case weakMapCtorString: return weakMapTag; - } - } - return result; - }; - } - - /** - * Gets the view, applying any `transforms` to the `start` and `end` positions. - * - * @private - * @param {number} start The start of the view. - * @param {number} end The end of the view. - * @param {Array} transforms The transformations to apply to the view. - * @returns {Object} Returns an object containing the `start` and `end` - * positions of the view. - */ - function getView(start, end, transforms) { - var index = -1, - length = transforms.length; - - while (++index < length) { - var data = transforms[index], - size = data.size; - - switch (data.type) { - case 'drop': start += size; break; - case 'dropRight': end -= size; break; - case 'take': end = nativeMin(end, start + size); break; - case 'takeRight': start = nativeMax(start, end - size); break; - } - } - return { 'start': start, 'end': end }; - } - - /** - * Extracts wrapper details from the `source` body comment. - * - * @private - * @param {string} source The source to inspect. - * @returns {Array} Returns the wrapper details. - */ - function getWrapDetails(source) { - var match = source.match(reWrapDetails); - return match ? match[1].split(reSplitDetails) : []; - } - - /** - * Checks if `path` exists on `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @param {Function} hasFunc The function to check properties. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - */ - function hasPath(object, path, hasFunc) { - path = castPath(path, object); - - var index = -1, - length = path.length, - result = false; - - while (++index < length) { - var key = toKey(path[index]); - if (!(result = object != null && hasFunc(object, key))) { - break; - } - object = object[key]; - } - if (result || ++index != length) { - return result; - } - length = object == null ? 0 : object.length; - return !!length && isLength(length) && isIndex(key, length) && - (isArray(object) || isArguments(object)); - } - - /** - * Initializes an array clone. - * - * @private - * @param {Array} array The array to clone. - * @returns {Array} Returns the initialized clone. - */ - function initCloneArray(array) { - var length = array.length, - result = new array.constructor(length); - - // Add properties assigned by `RegExp#exec`. - if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { - result.index = array.index; - result.input = array.input; - } - return result; - } - - /** - * Initializes an object clone. - * - * @private - * @param {Object} object The object to clone. - * @returns {Object} Returns the initialized clone. - */ - function initCloneObject(object) { - return (typeof object.constructor == 'function' && !isPrototype(object)) - ? baseCreate(getPrototype(object)) - : {}; - } - - /** - * Initializes an object clone based on its `toStringTag`. - * - * **Note:** This function only supports cloning values with tags of - * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. - * - * @private - * @param {Object} object The object to clone. - * @param {string} tag The `toStringTag` of the object to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the initialized clone. - */ - function initCloneByTag(object, tag, isDeep) { - var Ctor = object.constructor; - switch (tag) { - case arrayBufferTag: - return cloneArrayBuffer(object); - - case boolTag: - case dateTag: - return new Ctor(+object); - - case dataViewTag: - return cloneDataView(object, isDeep); - - case float32Tag: case float64Tag: - case int8Tag: case int16Tag: case int32Tag: - case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: - return cloneTypedArray(object, isDeep); - - case mapTag: - return new Ctor; - - case numberTag: - case stringTag: - return new Ctor(object); - - case regexpTag: - return cloneRegExp(object); - - case setTag: - return new Ctor; - - case symbolTag: - return cloneSymbol(object); - } - } - - /** - * Inserts wrapper `details` in a comment at the top of the `source` body. - * - * @private - * @param {string} source The source to modify. - * @returns {Array} details The details to insert. - * @returns {string} Returns the modified source. - */ - function insertWrapDetails(source, details) { - var length = details.length; - if (!length) { - return source; - } - var lastIndex = length - 1; - details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex]; - details = details.join(length > 2 ? ', ' : ' '); - return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n'); - } - - /** - * Checks if `value` is a flattenable `arguments` object or array. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. - */ - function isFlattenable(value) { - return isArray(value) || isArguments(value) || - !!(spreadableSymbol && value && value[spreadableSymbol]); - } - - /** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ - function isIndex(value, length) { - var type = typeof value; - length = length == null ? MAX_SAFE_INTEGER : length; - - return !!length && - (type == 'number' || - (type != 'symbol' && reIsUint.test(value))) && - (value > -1 && value % 1 == 0 && value < length); - } - - /** - * Checks if the given arguments are from an iteratee call. - * - * @private - * @param {*} value The potential iteratee value argument. - * @param {*} index The potential iteratee index or key argument. - * @param {*} object The potential iteratee object argument. - * @returns {boolean} Returns `true` if the arguments are from an iteratee call, - * else `false`. - */ - function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; - } - var type = typeof index; - if (type == 'number' - ? (isArrayLike(object) && isIndex(index, object.length)) - : (type == 'string' && index in object) - ) { - return eq(object[index], value); - } - return false; - } - - /** - * Checks if `value` is a property name and not a property path. - * - * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. - */ - function isKey(value, object) { - if (isArray(value)) { - return false; - } - var type = typeof value; - if (type == 'number' || type == 'symbol' || type == 'boolean' || - value == null || isSymbol(value)) { - return true; - } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || - (object != null && value in Object(object)); - } - - /** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ - function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); - } - - /** - * Checks if `func` has a lazy counterpart. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` has a lazy counterpart, - * else `false`. - */ - function isLaziable(func) { - var funcName = getFuncName(func), - other = lodash[funcName]; - - if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { - return false; - } - if (func === other) { - return true; - } - var data = getData(other); - return !!data && func === data[0]; - } - - /** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ - function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); - } - - /** - * Checks if `func` is capable of being masked. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `func` is maskable, else `false`. - */ - var isMaskable = coreJsData ? isFunction : stubFalse; - - /** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */ - function isPrototype(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; - - return value === proto; - } - - /** - * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` if suitable for strict - * equality comparisons, else `false`. - */ - function isStrictComparable(value) { - return value === value && !isObject(value); - } - - /** - * A specialized version of `matchesProperty` for source values suitable - * for strict equality comparisons, i.e. `===`. - * - * @private - * @param {string} key The key of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ - function matchesStrictComparable(key, srcValue) { - return function(object) { - if (object == null) { - return false; - } - return object[key] === srcValue && - (srcValue !== undefined || (key in Object(object))); - }; - } - - /** - * A specialized version of `_.memoize` which clears the memoized function's - * cache when it exceeds `MAX_MEMOIZE_SIZE`. - * - * @private - * @param {Function} func The function to have its output memoized. - * @returns {Function} Returns the new memoized function. - */ - function memoizeCapped(func) { - var result = memoize(func, function(key) { - if (cache.size === MAX_MEMOIZE_SIZE) { - cache.clear(); - } - return key; - }); - - var cache = result.cache; - return result; - } - - /** - * Merges the function metadata of `source` into `data`. - * - * Merging metadata reduces the number of wrappers used to invoke a function. - * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` - * may be applied regardless of execution order. Methods like `_.ary` and - * `_.rearg` modify function arguments, making the order in which they are - * executed important, preventing the merging of metadata. However, we make - * an exception for a safe combined case where curried functions have `_.ary` - * and or `_.rearg` applied. - * - * @private - * @param {Array} data The destination metadata. - * @param {Array} source The source metadata. - * @returns {Array} Returns `data`. - */ - function mergeData(data, source) { - var bitmask = data[1], - srcBitmask = source[1], - newBitmask = bitmask | srcBitmask, - isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); - - var isCombo = - ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) || - ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) || - ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG)); - - // Exit early if metadata can't be merged. - if (!(isCommon || isCombo)) { - return data; - } - // Use source `thisArg` if available. - if (srcBitmask & WRAP_BIND_FLAG) { - data[2] = source[2]; - // Set when currying a bound function. - newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; - } - // Compose partial arguments. - var value = source[3]; - if (value) { - var partials = data[3]; - data[3] = partials ? composeArgs(partials, value, source[4]) : value; - data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; - } - // Compose partial right arguments. - value = source[5]; - if (value) { - partials = data[5]; - data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; - data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; - } - // Use source `argPos` if available. - value = source[7]; - if (value) { - data[7] = value; - } - // Use source `ary` if it's smaller. - if (srcBitmask & WRAP_ARY_FLAG) { - data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); - } - // Use source `arity` if one is not provided. - if (data[9] == null) { - data[9] = source[9]; - } - // Use source `func` and merge bitmasks. - data[0] = source[0]; - data[1] = newBitmask; - - return data; - } - - /** - * This function is like - * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * except that it includes inherited enumerable properties. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function nativeKeysIn(object) { - var result = []; - if (object != null) { - for (var key in Object(object)) { - result.push(key); - } - } - return result; - } - - /** - * Converts `value` to a string using `Object.prototype.toString`. - * - * @private - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - */ - function objectToString(value) { - return nativeObjectToString.call(value); - } - - /** - * A specialized version of `baseRest` which transforms the rest array. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @param {Function} transform The rest array transform. - * @returns {Function} Returns the new function. - */ - function overRest(func, start, transform) { - start = nativeMax(start === undefined ? (func.length - 1) : start, 0); - return function() { - var args = arguments, - index = -1, - length = nativeMax(args.length - start, 0), - array = Array(length); - - while (++index < length) { - array[index] = args[start + index]; - } - index = -1; - var otherArgs = Array(start + 1); - while (++index < start) { - otherArgs[index] = args[index]; - } - otherArgs[start] = transform(array); - return apply(func, this, otherArgs); - }; - } - - /** - * Gets the parent value at `path` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} path The path to get the parent value of. - * @returns {*} Returns the parent value. - */ - function parent(object, path) { - return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); - } - - /** - * Reorder `array` according to the specified indexes where the element at - * the first index is assigned as the first element, the element at - * the second index is assigned as the second element, and so on. - * - * @private - * @param {Array} array The array to reorder. - * @param {Array} indexes The arranged array indexes. - * @returns {Array} Returns `array`. - */ - function reorder(array, indexes) { - var arrLength = array.length, - length = nativeMin(indexes.length, arrLength), - oldArray = copyArray(array); - - while (length--) { - var index = indexes[length]; - array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; - } - return array; - } - - /** - * Sets metadata for `func`. - * - * **Note:** If this function becomes hot, i.e. is invoked a lot in a short - * period of time, it will trip its breaker and transition to an identity - * function to avoid garbage collection pauses in V8. See - * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070) - * for more details. - * - * @private - * @param {Function} func The function to associate metadata with. - * @param {*} data The metadata. - * @returns {Function} Returns `func`. - */ - var setData = shortOut(baseSetData); - - /** - * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout). - * - * @private - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @returns {number|Object} Returns the timer id or timeout object. - */ - var setTimeout = ctxSetTimeout || function(func, wait) { - return root.setTimeout(func, wait); - }; - - /** - * Sets the `toString` method of `func` to return `string`. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ - var setToString = shortOut(baseSetToString); - - /** - * Sets the `toString` method of `wrapper` to mimic the source of `reference` - * with wrapper details in a comment at the top of the source body. - * - * @private - * @param {Function} wrapper The function to modify. - * @param {Function} reference The reference function. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @returns {Function} Returns `wrapper`. - */ - function setWrapToString(wrapper, reference, bitmask) { - var source = (reference + ''); - return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); - } - - /** - * Creates a function that'll short out and invoke `identity` instead - * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` - * milliseconds. - * - * @private - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new shortable function. - */ - function shortOut(func) { - var count = 0, - lastCalled = 0; - - return function() { - var stamp = nativeNow(), - remaining = HOT_SPAN - (stamp - lastCalled); - - lastCalled = stamp; - if (remaining > 0) { - if (++count >= HOT_COUNT) { - return arguments[0]; - } - } else { - count = 0; - } - return func.apply(undefined, arguments); - }; - } - - /** - * A specialized version of `_.shuffle` which mutates and sets the size of `array`. - * - * @private - * @param {Array} array The array to shuffle. - * @param {number} [size=array.length] The size of `array`. - * @returns {Array} Returns `array`. - */ - function shuffleSelf(array, size) { - var index = -1, - length = array.length, - lastIndex = length - 1; - - size = size === undefined ? length : size; - while (++index < size) { - var rand = baseRandom(index, lastIndex), - value = array[rand]; - - array[rand] = array[index]; - array[index] = value; - } - array.length = size; - return array; - } - - /** - * Converts `string` to a property path array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the property path array. - */ - var stringToPath = memoizeCapped(function(string) { - var result = []; - if (string.charCodeAt(0) === 46 /* . */) { - result.push(''); - } - string.replace(rePropName, function(match, number, quote, subString) { - result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); - }); - return result; - }); - - /** - * Converts `value` to a string key if it's not a string or symbol. - * - * @private - * @param {*} value The value to inspect. - * @returns {string|symbol} Returns the key. - */ - function toKey(value) { - if (typeof value == 'string' || isSymbol(value)) { - return value; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; - } - - /** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to convert. - * @returns {string} Returns the source code. - */ - function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} - } - return ''; - } - - /** - * Updates wrapper `details` based on `bitmask` flags. - * - * @private - * @returns {Array} details The details to modify. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @returns {Array} Returns `details`. - */ - function updateWrapDetails(details, bitmask) { - arrayEach(wrapFlags, function(pair) { - var value = '_.' + pair[0]; - if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { - details.push(value); - } - }); - return details.sort(); - } - - /** - * Creates a clone of `wrapper`. - * - * @private - * @param {Object} wrapper The wrapper to clone. - * @returns {Object} Returns the cloned wrapper. - */ - function wrapperClone(wrapper) { - if (wrapper instanceof LazyWrapper) { - return wrapper.clone(); - } - var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); - result.__actions__ = copyArray(wrapper.__actions__); - result.__index__ = wrapper.__index__; - result.__values__ = wrapper.__values__; - return result; - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates an array of elements split into groups the length of `size`. - * If `array` can't be split evenly, the final chunk will be the remaining - * elements. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to process. - * @param {number} [size=1] The length of each chunk - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the new array of chunks. - * @example - * - * _.chunk(['a', 'b', 'c', 'd'], 2); - * // => [['a', 'b'], ['c', 'd']] - * - * _.chunk(['a', 'b', 'c', 'd'], 3); - * // => [['a', 'b', 'c'], ['d']] - */ - function chunk(array, size, guard) { - if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) { - size = 1; - } else { - size = nativeMax(toInteger(size), 0); - } - var length = array == null ? 0 : array.length; - if (!length || size < 1) { - return []; - } - var index = 0, - resIndex = 0, - result = Array(nativeCeil(length / size)); - - while (index < length) { - result[resIndex++] = baseSlice(array, index, (index += size)); - } - return result; - } - - /** - * Creates an array with all falsey values removed. The values `false`, `null`, - * `0`, `""`, `undefined`, and `NaN` are falsey. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to compact. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.compact([0, 1, false, 2, '', 3]); - * // => [1, 2, 3] - */ - function compact(array) { - var index = -1, - length = array == null ? 0 : array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value) { - result[resIndex++] = value; - } - } - return result; - } - - /** - * Creates a new array concatenating `array` with any additional arrays - * and/or values. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to concatenate. - * @param {...*} [values] The values to concatenate. - * @returns {Array} Returns the new concatenated array. - * @example - * - * var array = [1]; - * var other = _.concat(array, 2, [3], [[4]]); - * - * console.log(other); - * // => [1, 2, 3, [4]] - * - * console.log(array); - * // => [1] - */ - function concat() { - var length = arguments.length; - if (!length) { - return []; - } - var args = Array(length - 1), - array = arguments[0], - index = length; - - while (index--) { - args[index - 1] = arguments[index]; - } - return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); - } - - /** - * Creates an array of `array` values not included in the other given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. The order and references of result values are - * determined by the first array. - * - * **Note:** Unlike `_.pullAll`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @see _.without, _.xor - * @example - * - * _.difference([2, 1], [2, 3]); - * // => [1] - */ - var difference = baseRest(function(array, values) { - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) - : []; - }); - - /** - * This method is like `_.difference` except that it accepts `iteratee` which - * is invoked for each element of `array` and `values` to generate the criterion - * by which they're compared. The order and references of result values are - * determined by the first array. The iteratee is invoked with one argument: - * (value). - * - * **Note:** Unlike `_.pullAllBy`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [1.2] - * - * // The `_.property` iteratee shorthand. - * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); - * // => [{ 'x': 2 }] - */ - var differenceBy = baseRest(function(array, values) { - var iteratee = last(values); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined; - } - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)) - : []; - }); - - /** - * This method is like `_.difference` except that it accepts `comparator` - * which is invoked to compare elements of `array` to `values`. The order and - * references of result values are determined by the first array. The comparator - * is invoked with two arguments: (arrVal, othVal). - * - * **Note:** Unlike `_.pullAllWith`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * - * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); - * // => [{ 'x': 2, 'y': 1 }] - */ - var differenceWith = baseRest(function(array, values) { - var comparator = last(values); - if (isArrayLikeObject(comparator)) { - comparator = undefined; - } - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) - : []; - }); - - /** - * Creates a slice of `array` with `n` elements dropped from the beginning. - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.drop([1, 2, 3]); - * // => [2, 3] - * - * _.drop([1, 2, 3], 2); - * // => [3] - * - * _.drop([1, 2, 3], 5); - * // => [] - * - * _.drop([1, 2, 3], 0); - * // => [1, 2, 3] - */ - function drop(array, n, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - return baseSlice(array, n < 0 ? 0 : n, length); - } - - /** - * Creates a slice of `array` with `n` elements dropped from the end. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.dropRight([1, 2, 3]); - * // => [1, 2] - * - * _.dropRight([1, 2, 3], 2); - * // => [1] - * - * _.dropRight([1, 2, 3], 5); - * // => [] - * - * _.dropRight([1, 2, 3], 0); - * // => [1, 2, 3] - */ - function dropRight(array, n, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - n = length - n; - return baseSlice(array, 0, n < 0 ? 0 : n); - } - - /** - * Creates a slice of `array` excluding elements dropped from the end. - * Elements are dropped until `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.dropRightWhile(users, function(o) { return !o.active; }); - * // => objects for ['barney'] - * - * // The `_.matches` iteratee shorthand. - * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); - * // => objects for ['barney', 'fred'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.dropRightWhile(users, ['active', false]); - * // => objects for ['barney'] - * - * // The `_.property` iteratee shorthand. - * _.dropRightWhile(users, 'active'); - * // => objects for ['barney', 'fred', 'pebbles'] - */ - function dropRightWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3), true, true) - : []; - } - - /** - * Creates a slice of `array` excluding elements dropped from the beginning. - * Elements are dropped until `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.dropWhile(users, function(o) { return !o.active; }); - * // => objects for ['pebbles'] - * - * // The `_.matches` iteratee shorthand. - * _.dropWhile(users, { 'user': 'barney', 'active': false }); - * // => objects for ['fred', 'pebbles'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.dropWhile(users, ['active', false]); - * // => objects for ['pebbles'] - * - * // The `_.property` iteratee shorthand. - * _.dropWhile(users, 'active'); - * // => objects for ['barney', 'fred', 'pebbles'] - */ - function dropWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3), true) - : []; - } - - /** - * Fills elements of `array` with `value` from `start` up to, but not - * including, `end`. - * - * **Note:** This method mutates `array`. - * - * @static - * @memberOf _ - * @since 3.2.0 - * @category Array - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3]; - * - * _.fill(array, 'a'); - * console.log(array); - * // => ['a', 'a', 'a'] - * - * _.fill(Array(3), 2); - * // => [2, 2, 2] - * - * _.fill([4, 6, 8, 10], '*', 1, 3); - * // => [4, '*', '*', 10] - */ - function fill(array, value, start, end) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { - start = 0; - end = length; - } - return baseFill(array, value, start, end); - } - - /** - * This method is like `_.find` except that it returns the index of the first - * element `predicate` returns truthy for instead of the element itself. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.findIndex(users, function(o) { return o.user == 'barney'; }); - * // => 0 - * - * // The `_.matches` iteratee shorthand. - * _.findIndex(users, { 'user': 'fred', 'active': false }); - * // => 1 - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findIndex(users, ['active', false]); - * // => 0 - * - * // The `_.property` iteratee shorthand. - * _.findIndex(users, 'active'); - * // => 2 - */ - function findIndex(array, predicate, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseFindIndex(array, getIteratee(predicate, 3), index); - } - - /** - * This method is like `_.findIndex` except that it iterates over elements - * of `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=array.length-1] The index to search from. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); - * // => 2 - * - * // The `_.matches` iteratee shorthand. - * _.findLastIndex(users, { 'user': 'barney', 'active': true }); - * // => 0 - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findLastIndex(users, ['active', false]); - * // => 2 - * - * // The `_.property` iteratee shorthand. - * _.findLastIndex(users, 'active'); - * // => 0 - */ - function findLastIndex(array, predicate, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = length - 1; - if (fromIndex !== undefined) { - index = toInteger(fromIndex); - index = fromIndex < 0 - ? nativeMax(length + index, 0) - : nativeMin(index, length - 1); - } - return baseFindIndex(array, getIteratee(predicate, 3), index, true); - } - - /** - * Flattens `array` a single level deep. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flatten([1, [2, [3, [4]], 5]]); - * // => [1, 2, [3, [4]], 5] - */ - function flatten(array) { - var length = array == null ? 0 : array.length; - return length ? baseFlatten(array, 1) : []; - } - - /** - * Recursively flattens `array`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flattenDeep([1, [2, [3, [4]], 5]]); - * // => [1, 2, 3, 4, 5] - */ - function flattenDeep(array) { - var length = array == null ? 0 : array.length; - return length ? baseFlatten(array, INFINITY) : []; - } - - /** - * Recursively flatten `array` up to `depth` times. - * - * @static - * @memberOf _ - * @since 4.4.0 - * @category Array - * @param {Array} array The array to flatten. - * @param {number} [depth=1] The maximum recursion depth. - * @returns {Array} Returns the new flattened array. - * @example - * - * var array = [1, [2, [3, [4]], 5]]; - * - * _.flattenDepth(array, 1); - * // => [1, 2, [3, [4]], 5] - * - * _.flattenDepth(array, 2); - * // => [1, 2, 3, [4], 5] - */ - function flattenDepth(array, depth) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - depth = depth === undefined ? 1 : toInteger(depth); - return baseFlatten(array, depth); - } - - /** - * The inverse of `_.toPairs`; this method returns an object composed - * from key-value `pairs`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} pairs The key-value pairs. - * @returns {Object} Returns the new object. - * @example - * - * _.fromPairs([['a', 1], ['b', 2]]); - * // => { 'a': 1, 'b': 2 } - */ - function fromPairs(pairs) { - var index = -1, - length = pairs == null ? 0 : pairs.length, - result = {}; - - while (++index < length) { - var pair = pairs[index]; - result[pair[0]] = pair[1]; - } - return result; - } - - /** - * Gets the first element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias first - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the first element of `array`. - * @example - * - * _.head([1, 2, 3]); - * // => 1 - * - * _.head([]); - * // => undefined - */ - function head(array) { - return (array && array.length) ? array[0] : undefined; - } - - /** - * Gets the index at which the first occurrence of `value` is found in `array` - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. If `fromIndex` is negative, it's used as the - * offset from the end of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.indexOf([1, 2, 1, 2], 2); - * // => 1 - * - * // Search from the `fromIndex`. - * _.indexOf([1, 2, 1, 2], 2, 2); - * // => 3 - */ - function indexOf(array, value, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseIndexOf(array, value, index); - } - - /** - * Gets all but the last element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.initial([1, 2, 3]); - * // => [1, 2] - */ - function initial(array) { - var length = array == null ? 0 : array.length; - return length ? baseSlice(array, 0, -1) : []; - } - - /** - * Creates an array of unique values that are included in all given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. The order and references of result values are - * determined by the first array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * _.intersection([2, 1], [2, 3]); - * // => [2] - */ - var intersection = baseRest(function(arrays) { - var mapped = arrayMap(arrays, castArrayLikeObject); - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped) - : []; - }); - - /** - * This method is like `_.intersection` except that it accepts `iteratee` - * which is invoked for each element of each `arrays` to generate the criterion - * by which they're compared. The order and references of result values are - * determined by the first array. The iteratee is invoked with one argument: - * (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [2.1] - * - * // The `_.property` iteratee shorthand. - * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }] - */ - var intersectionBy = baseRest(function(arrays) { - var iteratee = last(arrays), - mapped = arrayMap(arrays, castArrayLikeObject); - - if (iteratee === last(mapped)) { - iteratee = undefined; - } else { - mapped.pop(); - } - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped, getIteratee(iteratee, 2)) - : []; - }); - - /** - * This method is like `_.intersection` except that it accepts `comparator` - * which is invoked to compare elements of `arrays`. The order and references - * of result values are determined by the first array. The comparator is - * invoked with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.intersectionWith(objects, others, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }] - */ - var intersectionWith = baseRest(function(arrays) { - var comparator = last(arrays), - mapped = arrayMap(arrays, castArrayLikeObject); - - comparator = typeof comparator == 'function' ? comparator : undefined; - if (comparator) { - mapped.pop(); - } - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped, undefined, comparator) - : []; - }); - - /** - * Converts all elements in `array` into a string separated by `separator`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to convert. - * @param {string} [separator=','] The element separator. - * @returns {string} Returns the joined string. - * @example - * - * _.join(['a', 'b', 'c'], '~'); - * // => 'a~b~c' - */ - function join(array, separator) { - return array == null ? '' : nativeJoin.call(array, separator); - } - - /** - * Gets the last element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the last element of `array`. - * @example - * - * _.last([1, 2, 3]); - * // => 3 - */ - function last(array) { - var length = array == null ? 0 : array.length; - return length ? array[length - 1] : undefined; - } - - /** - * This method is like `_.indexOf` except that it iterates over elements of - * `array` from right to left. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=array.length-1] The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.lastIndexOf([1, 2, 1, 2], 2); - * // => 3 - * - * // Search from the `fromIndex`. - * _.lastIndexOf([1, 2, 1, 2], 2, 2); - * // => 1 - */ - function lastIndexOf(array, value, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = length; - if (fromIndex !== undefined) { - index = toInteger(fromIndex); - index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); - } - return value === value - ? strictLastIndexOf(array, value, index) - : baseFindIndex(array, baseIsNaN, index, true); - } - - /** - * Gets the element at index `n` of `array`. If `n` is negative, the nth - * element from the end is returned. - * - * @static - * @memberOf _ - * @since 4.11.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=0] The index of the element to return. - * @returns {*} Returns the nth element of `array`. - * @example - * - * var array = ['a', 'b', 'c', 'd']; - * - * _.nth(array, 1); - * // => 'b' - * - * _.nth(array, -2); - * // => 'c'; - */ - function nth(array, n) { - return (array && array.length) ? baseNth(array, toInteger(n)) : undefined; - } - - /** - * Removes all given values from `array` using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove` - * to remove elements from an array by predicate. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {...*} [values] The values to remove. - * @returns {Array} Returns `array`. - * @example - * - * var array = ['a', 'b', 'c', 'a', 'b', 'c']; - * - * _.pull(array, 'a', 'c'); - * console.log(array); - * // => ['b', 'b'] - */ - var pull = baseRest(pullAll); - - /** - * This method is like `_.pull` except that it accepts an array of values to remove. - * - * **Note:** Unlike `_.difference`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @returns {Array} Returns `array`. - * @example - * - * var array = ['a', 'b', 'c', 'a', 'b', 'c']; - * - * _.pullAll(array, ['a', 'c']); - * console.log(array); - * // => ['b', 'b'] - */ - function pullAll(array, values) { - return (array && array.length && values && values.length) - ? basePullAll(array, values) - : array; - } - - /** - * This method is like `_.pullAll` except that it accepts `iteratee` which is - * invoked for each element of `array` and `values` to generate the criterion - * by which they're compared. The iteratee is invoked with one argument: (value). - * - * **Note:** Unlike `_.differenceBy`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns `array`. - * @example - * - * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; - * - * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); - * console.log(array); - * // => [{ 'x': 2 }] - */ - function pullAllBy(array, values, iteratee) { - return (array && array.length && values && values.length) - ? basePullAll(array, values, getIteratee(iteratee, 2)) - : array; - } - - /** - * This method is like `_.pullAll` except that it accepts `comparator` which - * is invoked to compare elements of `array` to `values`. The comparator is - * invoked with two arguments: (arrVal, othVal). - * - * **Note:** Unlike `_.differenceWith`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 4.6.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns `array`. - * @example - * - * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; - * - * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); - * console.log(array); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] - */ - function pullAllWith(array, values, comparator) { - return (array && array.length && values && values.length) - ? basePullAll(array, values, undefined, comparator) - : array; - } - - /** - * Removes elements from `array` corresponding to `indexes` and returns an - * array of removed elements. - * - * **Note:** Unlike `_.at`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {...(number|number[])} [indexes] The indexes of elements to remove. - * @returns {Array} Returns the new array of removed elements. - * @example - * - * var array = ['a', 'b', 'c', 'd']; - * var pulled = _.pullAt(array, [1, 3]); - * - * console.log(array); - * // => ['a', 'c'] - * - * console.log(pulled); - * // => ['b', 'd'] - */ - var pullAt = flatRest(function(array, indexes) { - var length = array == null ? 0 : array.length, - result = baseAt(array, indexes); - - basePullAt(array, arrayMap(indexes, function(index) { - return isIndex(index, length) ? +index : index; - }).sort(compareAscending)); - - return result; - }); - - /** - * Removes all elements from `array` that `predicate` returns truthy for - * and returns an array of the removed elements. The predicate is invoked - * with three arguments: (value, index, array). - * - * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull` - * to pull elements from an array by value. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new array of removed elements. - * @example - * - * var array = [1, 2, 3, 4]; - * var evens = _.remove(array, function(n) { - * return n % 2 == 0; - * }); - * - * console.log(array); - * // => [1, 3] - * - * console.log(evens); - * // => [2, 4] - */ - function remove(array, predicate) { - var result = []; - if (!(array && array.length)) { - return result; - } - var index = -1, - indexes = [], - length = array.length; - - predicate = getIteratee(predicate, 3); - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result.push(value); - indexes.push(index); - } - } - basePullAt(array, indexes); - return result; - } - - /** - * Reverses `array` so that the first element becomes the last, the second - * element becomes the second to last, and so on. - * - * **Note:** This method mutates `array` and is based on - * [`Array#reverse`](https://mdn.io/Array/reverse). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to modify. - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3]; - * - * _.reverse(array); - * // => [3, 2, 1] - * - * console.log(array); - * // => [3, 2, 1] - */ - function reverse(array) { - return array == null ? array : nativeReverse.call(array); - } - - /** - * Creates a slice of `array` from `start` up to, but not including, `end`. - * - * **Note:** This method is used instead of - * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are - * returned. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ - function slice(array, start, end) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { - start = 0; - end = length; - } - else { - start = start == null ? 0 : toInteger(start); - end = end === undefined ? length : toInteger(end); - } - return baseSlice(array, start, end); - } - - /** - * Uses a binary search to determine the lowest index at which `value` - * should be inserted into `array` in order to maintain its sort order. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * _.sortedIndex([30, 50], 40); - * // => 1 - */ - function sortedIndex(array, value) { - return baseSortedIndex(array, value); - } - - /** - * This method is like `_.sortedIndex` except that it accepts `iteratee` - * which is invoked for `value` and each element of `array` to compute their - * sort ranking. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * var objects = [{ 'x': 4 }, { 'x': 5 }]; - * - * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); - * // => 0 - * - * // The `_.property` iteratee shorthand. - * _.sortedIndexBy(objects, { 'x': 4 }, 'x'); - * // => 0 - */ - function sortedIndexBy(array, value, iteratee) { - return baseSortedIndexBy(array, value, getIteratee(iteratee, 2)); - } - - /** - * This method is like `_.indexOf` except that it performs a binary - * search on a sorted `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.sortedIndexOf([4, 5, 5, 5, 6], 5); - * // => 1 - */ - function sortedIndexOf(array, value) { - var length = array == null ? 0 : array.length; - if (length) { - var index = baseSortedIndex(array, value); - if (index < length && eq(array[index], value)) { - return index; - } - } - return -1; - } - - /** - * This method is like `_.sortedIndex` except that it returns the highest - * index at which `value` should be inserted into `array` in order to - * maintain its sort order. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * _.sortedLastIndex([4, 5, 5, 5, 6], 5); - * // => 4 - */ - function sortedLastIndex(array, value) { - return baseSortedIndex(array, value, true); - } - - /** - * This method is like `_.sortedLastIndex` except that it accepts `iteratee` - * which is invoked for `value` and each element of `array` to compute their - * sort ranking. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * var objects = [{ 'x': 4 }, { 'x': 5 }]; - * - * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); - * // => 1 - * - * // The `_.property` iteratee shorthand. - * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x'); - * // => 1 - */ - function sortedLastIndexBy(array, value, iteratee) { - return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true); - } - - /** - * This method is like `_.lastIndexOf` except that it performs a binary - * search on a sorted `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5); - * // => 3 - */ - function sortedLastIndexOf(array, value) { - var length = array == null ? 0 : array.length; - if (length) { - var index = baseSortedIndex(array, value, true) - 1; - if (eq(array[index], value)) { - return index; - } - } - return -1; - } - - /** - * This method is like `_.uniq` except that it's designed and optimized - * for sorted arrays. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.sortedUniq([1, 1, 2]); - * // => [1, 2] - */ - function sortedUniq(array) { - return (array && array.length) - ? baseSortedUniq(array) - : []; - } - - /** - * This method is like `_.uniqBy` except that it's designed and optimized - * for sorted arrays. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); - * // => [1.1, 2.3] - */ - function sortedUniqBy(array, iteratee) { - return (array && array.length) - ? baseSortedUniq(array, getIteratee(iteratee, 2)) - : []; - } - - /** - * Gets all but the first element of `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to query. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.tail([1, 2, 3]); - * // => [2, 3] - */ - function tail(array) { - var length = array == null ? 0 : array.length; - return length ? baseSlice(array, 1, length) : []; - } - - /** - * Creates a slice of `array` with `n` elements taken from the beginning. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to take. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.take([1, 2, 3]); - * // => [1] - * - * _.take([1, 2, 3], 2); - * // => [1, 2] - * - * _.take([1, 2, 3], 5); - * // => [1, 2, 3] - * - * _.take([1, 2, 3], 0); - * // => [] - */ - function take(array, n, guard) { - if (!(array && array.length)) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - return baseSlice(array, 0, n < 0 ? 0 : n); - } - - /** - * Creates a slice of `array` with `n` elements taken from the end. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to take. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.takeRight([1, 2, 3]); - * // => [3] - * - * _.takeRight([1, 2, 3], 2); - * // => [2, 3] - * - * _.takeRight([1, 2, 3], 5); - * // => [1, 2, 3] - * - * _.takeRight([1, 2, 3], 0); - * // => [] - */ - function takeRight(array, n, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - n = length - n; - return baseSlice(array, n < 0 ? 0 : n, length); - } - - /** - * Creates a slice of `array` with elements taken from the end. Elements are - * taken until `predicate` returns falsey. The predicate is invoked with - * three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.takeRightWhile(users, function(o) { return !o.active; }); - * // => objects for ['fred', 'pebbles'] - * - * // The `_.matches` iteratee shorthand. - * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false }); - * // => objects for ['pebbles'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.takeRightWhile(users, ['active', false]); - * // => objects for ['fred', 'pebbles'] - * - * // The `_.property` iteratee shorthand. - * _.takeRightWhile(users, 'active'); - * // => [] - */ - function takeRightWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3), false, true) - : []; - } - - /** - * Creates a slice of `array` with elements taken from the beginning. Elements - * are taken until `predicate` returns falsey. The predicate is invoked with - * three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.takeWhile(users, function(o) { return !o.active; }); - * // => objects for ['barney', 'fred'] - * - * // The `_.matches` iteratee shorthand. - * _.takeWhile(users, { 'user': 'barney', 'active': false }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.takeWhile(users, ['active', false]); - * // => objects for ['barney', 'fred'] - * - * // The `_.property` iteratee shorthand. - * _.takeWhile(users, 'active'); - * // => [] - */ - function takeWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3)) - : []; - } - - /** - * Creates an array of unique values, in order, from all given arrays using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of combined values. - * @example - * - * _.union([2], [1, 2]); - * // => [2, 1] - */ - var union = baseRest(function(arrays) { - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); - }); - - /** - * This method is like `_.union` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by - * which uniqueness is computed. Result values are chosen from the first - * array in which the value occurs. The iteratee is invoked with one argument: - * (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of combined values. - * @example - * - * _.unionBy([2.1], [1.2, 2.3], Math.floor); - * // => [2.1, 1.2] - * - * // The `_.property` iteratee shorthand. - * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ - var unionBy = baseRest(function(arrays) { - var iteratee = last(arrays); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined; - } - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)); - }); - - /** - * This method is like `_.union` except that it accepts `comparator` which - * is invoked to compare elements of `arrays`. Result values are chosen from - * the first array in which the value occurs. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of combined values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.unionWith(objects, others, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] - */ - var unionWith = baseRest(function(arrays) { - var comparator = last(arrays); - comparator = typeof comparator == 'function' ? comparator : undefined; - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator); - }); - - /** - * Creates a duplicate-free version of an array, using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons, in which only the first occurrence of each element - * is kept. The order of result values is determined by the order they occur - * in the array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.uniq([2, 1, 2]); - * // => [2, 1] - */ - function uniq(array) { - return (array && array.length) ? baseUniq(array) : []; - } - - /** - * This method is like `_.uniq` except that it accepts `iteratee` which is - * invoked for each element in `array` to generate the criterion by which - * uniqueness is computed. The order of result values is determined by the - * order they occur in the array. The iteratee is invoked with one argument: - * (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.uniqBy([2.1, 1.2, 2.3], Math.floor); - * // => [2.1, 1.2] - * - * // The `_.property` iteratee shorthand. - * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ - function uniqBy(array, iteratee) { - return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : []; - } - - /** - * This method is like `_.uniq` except that it accepts `comparator` which - * is invoked to compare elements of `array`. The order of result values is - * determined by the order they occur in the array.The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.uniqWith(objects, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] - */ - function uniqWith(array, comparator) { - comparator = typeof comparator == 'function' ? comparator : undefined; - return (array && array.length) ? baseUniq(array, undefined, comparator) : []; - } - - /** - * This method is like `_.zip` except that it accepts an array of grouped - * elements and creates an array regrouping the elements to their pre-zip - * configuration. - * - * @static - * @memberOf _ - * @since 1.2.0 - * @category Array - * @param {Array} array The array of grouped elements to process. - * @returns {Array} Returns the new array of regrouped elements. - * @example - * - * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); - * // => [['a', 1, true], ['b', 2, false]] - * - * _.unzip(zipped); - * // => [['a', 'b'], [1, 2], [true, false]] - */ - function unzip(array) { - if (!(array && array.length)) { - return []; - } - var length = 0; - array = arrayFilter(array, function(group) { - if (isArrayLikeObject(group)) { - length = nativeMax(group.length, length); - return true; - } - }); - return baseTimes(length, function(index) { - return arrayMap(array, baseProperty(index)); - }); - } - - /** - * This method is like `_.unzip` except that it accepts `iteratee` to specify - * how regrouped values should be combined. The iteratee is invoked with the - * elements of each group: (...group). - * - * @static - * @memberOf _ - * @since 3.8.0 - * @category Array - * @param {Array} array The array of grouped elements to process. - * @param {Function} [iteratee=_.identity] The function to combine - * regrouped values. - * @returns {Array} Returns the new array of regrouped elements. - * @example - * - * var zipped = _.zip([1, 2], [10, 20], [100, 200]); - * // => [[1, 10, 100], [2, 20, 200]] - * - * _.unzipWith(zipped, _.add); - * // => [3, 30, 300] - */ - function unzipWith(array, iteratee) { - if (!(array && array.length)) { - return []; - } - var result = unzip(array); - if (iteratee == null) { - return result; - } - return arrayMap(result, function(group) { - return apply(iteratee, undefined, group); - }); - } - - /** - * Creates an array excluding all given values using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * **Note:** Unlike `_.pull`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...*} [values] The values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @see _.difference, _.xor - * @example - * - * _.without([2, 1, 2, 3], 1, 2); - * // => [3] - */ - var without = baseRest(function(array, values) { - return isArrayLikeObject(array) - ? baseDifference(array, values) - : []; - }); - - /** - * Creates an array of unique values that is the - * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) - * of the given arrays. The order of result values is determined by the order - * they occur in the arrays. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of filtered values. - * @see _.difference, _.without - * @example - * - * _.xor([2, 1], [2, 3]); - * // => [1, 3] - */ - var xor = baseRest(function(arrays) { - return baseXor(arrayFilter(arrays, isArrayLikeObject)); - }); - - /** - * This method is like `_.xor` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by - * which by which they're compared. The order of result values is determined - * by the order they occur in the arrays. The iteratee is invoked with one - * argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [1.2, 3.4] - * - * // The `_.property` iteratee shorthand. - * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 2 }] - */ - var xorBy = baseRest(function(arrays) { - var iteratee = last(arrays); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined; - } - return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2)); - }); - - /** - * This method is like `_.xor` except that it accepts `comparator` which is - * invoked to compare elements of `arrays`. The order of result values is - * determined by the order they occur in the arrays. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.xorWith(objects, others, _.isEqual); - * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] - */ - var xorWith = baseRest(function(arrays) { - var comparator = last(arrays); - comparator = typeof comparator == 'function' ? comparator : undefined; - return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator); - }); - - /** - * Creates an array of grouped elements, the first of which contains the - * first elements of the given arrays, the second of which contains the - * second elements of the given arrays, and so on. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to process. - * @returns {Array} Returns the new array of grouped elements. - * @example - * - * _.zip(['a', 'b'], [1, 2], [true, false]); - * // => [['a', 1, true], ['b', 2, false]] - */ - var zip = baseRest(unzip); - - /** - * This method is like `_.fromPairs` except that it accepts two arrays, - * one of property identifiers and one of corresponding values. - * - * @static - * @memberOf _ - * @since 0.4.0 - * @category Array - * @param {Array} [props=[]] The property identifiers. - * @param {Array} [values=[]] The property values. - * @returns {Object} Returns the new object. - * @example - * - * _.zipObject(['a', 'b'], [1, 2]); - * // => { 'a': 1, 'b': 2 } - */ - function zipObject(props, values) { - return baseZipObject(props || [], values || [], assignValue); - } - - /** - * This method is like `_.zipObject` except that it supports property paths. - * - * @static - * @memberOf _ - * @since 4.1.0 - * @category Array - * @param {Array} [props=[]] The property identifiers. - * @param {Array} [values=[]] The property values. - * @returns {Object} Returns the new object. - * @example - * - * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]); - * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } - */ - function zipObjectDeep(props, values) { - return baseZipObject(props || [], values || [], baseSet); - } - - /** - * This method is like `_.zip` except that it accepts `iteratee` to specify - * how grouped values should be combined. The iteratee is invoked with the - * elements of each group: (...group). - * - * @static - * @memberOf _ - * @since 3.8.0 - * @category Array - * @param {...Array} [arrays] The arrays to process. - * @param {Function} [iteratee=_.identity] The function to combine - * grouped values. - * @returns {Array} Returns the new array of grouped elements. - * @example - * - * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) { - * return a + b + c; - * }); - * // => [111, 222] - */ - var zipWith = baseRest(function(arrays) { - var length = arrays.length, - iteratee = length > 1 ? arrays[length - 1] : undefined; - - iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined; - return unzipWith(arrays, iteratee); - }); - - /*------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` wrapper instance that wraps `value` with explicit method - * chain sequences enabled. The result of such sequences must be unwrapped - * with `_#value`. - * - * @static - * @memberOf _ - * @since 1.3.0 - * @category Seq - * @param {*} value The value to wrap. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'pebbles', 'age': 1 } - * ]; - * - * var youngest = _ - * .chain(users) - * .sortBy('age') - * .map(function(o) { - * return o.user + ' is ' + o.age; - * }) - * .head() - * .value(); - * // => 'pebbles is 1' - */ - function chain(value) { - var result = lodash(value); - result.__chain__ = true; - return result; - } - - /** - * This method invokes `interceptor` and returns `value`. The interceptor - * is invoked with one argument; (value). The purpose of this method is to - * "tap into" a method chain sequence in order to modify intermediate results. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Seq - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @returns {*} Returns `value`. - * @example - * - * _([1, 2, 3]) - * .tap(function(array) { - * // Mutate input array. - * array.pop(); - * }) - * .reverse() - * .value(); - * // => [2, 1] - */ - function tap(value, interceptor) { - interceptor(value); - return value; - } - - /** - * This method is like `_.tap` except that it returns the result of `interceptor`. - * The purpose of this method is to "pass thru" values replacing intermediate - * results in a method chain sequence. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Seq - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @returns {*} Returns the result of `interceptor`. - * @example - * - * _(' abc ') - * .chain() - * .trim() - * .thru(function(value) { - * return [value]; - * }) - * .value(); - * // => ['abc'] - */ - function thru(value, interceptor) { - return interceptor(value); - } - - /** - * This method is the wrapper version of `_.at`. - * - * @name at - * @memberOf _ - * @since 1.0.0 - * @category Seq - * @param {...(string|string[])} [paths] The property paths to pick. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; - * - * _(object).at(['a[0].b.c', 'a[1]']).value(); - * // => [3, 4] - */ - var wrapperAt = flatRest(function(paths) { - var length = paths.length, - start = length ? paths[0] : 0, - value = this.__wrapped__, - interceptor = function(object) { return baseAt(object, paths); }; - - if (length > 1 || this.__actions__.length || - !(value instanceof LazyWrapper) || !isIndex(start)) { - return this.thru(interceptor); - } - value = value.slice(start, +start + (length ? 1 : 0)); - value.__actions__.push({ - 'func': thru, - 'args': [interceptor], - 'thisArg': undefined - }); - return new LodashWrapper(value, this.__chain__).thru(function(array) { - if (length && !array.length) { - array.push(undefined); - } - return array; - }); - }); - - /** - * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. - * - * @name chain - * @memberOf _ - * @since 0.1.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 } - * ]; - * - * // A sequence without explicit chaining. - * _(users).head(); - * // => { 'user': 'barney', 'age': 36 } - * - * // A sequence with explicit chaining. - * _(users) - * .chain() - * .head() - * .pick('user') - * .value(); - * // => { 'user': 'barney' } - */ - function wrapperChain() { - return chain(this); - } - - /** - * Executes the chain sequence and returns the wrapped result. - * - * @name commit - * @memberOf _ - * @since 3.2.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var array = [1, 2]; - * var wrapped = _(array).push(3); - * - * console.log(array); - * // => [1, 2] - * - * wrapped = wrapped.commit(); - * console.log(array); - * // => [1, 2, 3] - * - * wrapped.last(); - * // => 3 - * - * console.log(array); - * // => [1, 2, 3] - */ - function wrapperCommit() { - return new LodashWrapper(this.value(), this.__chain__); - } - - /** - * Gets the next value on a wrapped object following the - * [iterator protocol](https://mdn.io/iteration_protocols#iterator). - * - * @name next - * @memberOf _ - * @since 4.0.0 - * @category Seq - * @returns {Object} Returns the next iterator value. - * @example - * - * var wrapped = _([1, 2]); - * - * wrapped.next(); - * // => { 'done': false, 'value': 1 } - * - * wrapped.next(); - * // => { 'done': false, 'value': 2 } - * - * wrapped.next(); - * // => { 'done': true, 'value': undefined } - */ - function wrapperNext() { - if (this.__values__ === undefined) { - this.__values__ = toArray(this.value()); - } - var done = this.__index__ >= this.__values__.length, - value = done ? undefined : this.__values__[this.__index__++]; - - return { 'done': done, 'value': value }; - } - - /** - * Enables the wrapper to be iterable. - * - * @name Symbol.iterator - * @memberOf _ - * @since 4.0.0 - * @category Seq - * @returns {Object} Returns the wrapper object. - * @example - * - * var wrapped = _([1, 2]); - * - * wrapped[Symbol.iterator]() === wrapped; - * // => true - * - * Array.from(wrapped); - * // => [1, 2] - */ - function wrapperToIterator() { - return this; - } - - /** - * Creates a clone of the chain sequence planting `value` as the wrapped value. - * - * @name plant - * @memberOf _ - * @since 3.2.0 - * @category Seq - * @param {*} value The value to plant. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * function square(n) { - * return n * n; - * } - * - * var wrapped = _([1, 2]).map(square); - * var other = wrapped.plant([3, 4]); - * - * other.value(); - * // => [9, 16] - * - * wrapped.value(); - * // => [1, 4] - */ - function wrapperPlant(value) { - var result, - parent = this; - - while (parent instanceof baseLodash) { - var clone = wrapperClone(parent); - clone.__index__ = 0; - clone.__values__ = undefined; - if (result) { - previous.__wrapped__ = clone; - } else { - result = clone; - } - var previous = clone; - parent = parent.__wrapped__; - } - previous.__wrapped__ = value; - return result; - } - - /** - * This method is the wrapper version of `_.reverse`. - * - * **Note:** This method mutates the wrapped array. - * - * @name reverse - * @memberOf _ - * @since 0.1.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var array = [1, 2, 3]; - * - * _(array).reverse().value() - * // => [3, 2, 1] - * - * console.log(array); - * // => [3, 2, 1] - */ - function wrapperReverse() { - var value = this.__wrapped__; - if (value instanceof LazyWrapper) { - var wrapped = value; - if (this.__actions__.length) { - wrapped = new LazyWrapper(this); - } - wrapped = wrapped.reverse(); - wrapped.__actions__.push({ - 'func': thru, - 'args': [reverse], - 'thisArg': undefined - }); - return new LodashWrapper(wrapped, this.__chain__); - } - return this.thru(reverse); - } - - /** - * Executes the chain sequence to resolve the unwrapped value. - * - * @name value - * @memberOf _ - * @since 0.1.0 - * @alias toJSON, valueOf - * @category Seq - * @returns {*} Returns the resolved unwrapped value. - * @example - * - * _([1, 2, 3]).value(); - * // => [1, 2, 3] - */ - function wrapperValue() { - return baseWrapperValue(this.__wrapped__, this.__actions__); - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The corresponding value of - * each key is the number of times the key was returned by `iteratee`. The - * iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.countBy([6.1, 4.2, 6.3], Math.floor); - * // => { '4': 1, '6': 2 } - * - * // The `_.property` iteratee shorthand. - * _.countBy(['one', 'two', 'three'], 'length'); - * // => { '3': 2, '5': 1 } - */ - var countBy = createAggregator(function(result, value, key) { - if (hasOwnProperty.call(result, key)) { - ++result[key]; - } else { - baseAssignValue(result, key, 1); - } - }); - - /** - * Checks if `predicate` returns truthy for **all** elements of `collection`. - * Iteration is stopped once `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index|key, collection). - * - * **Note:** This method returns `true` for - * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because - * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of - * elements of empty collections. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes'], Boolean); - * // => false - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.every(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // The `_.matchesProperty` iteratee shorthand. - * _.every(users, ['active', false]); - * // => true - * - * // The `_.property` iteratee shorthand. - * _.every(users, 'active'); - * // => false - */ - function every(collection, predicate, guard) { - var func = isArray(collection) ? arrayEvery : baseEvery; - if (guard && isIterateeCall(collection, predicate, guard)) { - predicate = undefined; - } - return func(collection, getIteratee(predicate, 3)); - } - - /** - * Iterates over elements of `collection`, returning an array of all elements - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * **Note:** Unlike `_.remove`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - * @see _.reject - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * _.filter(users, function(o) { return !o.active; }); - * // => objects for ['fred'] - * - * // The `_.matches` iteratee shorthand. - * _.filter(users, { 'age': 36, 'active': true }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.filter(users, ['active', false]); - * // => objects for ['fred'] - * - * // The `_.property` iteratee shorthand. - * _.filter(users, 'active'); - * // => objects for ['barney'] - */ - function filter(collection, predicate) { - var func = isArray(collection) ? arrayFilter : baseFilter; - return func(collection, getIteratee(predicate, 3)); - } - - /** - * Iterates over elements of `collection`, returning the first element - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false }, - * { 'user': 'pebbles', 'age': 1, 'active': true } - * ]; - * - * _.find(users, function(o) { return o.age < 40; }); - * // => object for 'barney' - * - * // The `_.matches` iteratee shorthand. - * _.find(users, { 'age': 1, 'active': true }); - * // => object for 'pebbles' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.find(users, ['active', false]); - * // => object for 'fred' - * - * // The `_.property` iteratee shorthand. - * _.find(users, 'active'); - * // => object for 'barney' - */ - var find = createFind(findIndex); - - /** - * This method is like `_.find` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Collection - * @param {Array|Object} collection The collection to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=collection.length-1] The index to search from. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * _.findLast([1, 2, 3, 4], function(n) { - * return n % 2 == 1; - * }); - * // => 3 - */ - var findLast = createFind(findLastIndex); - - /** - * Creates a flattened array of values by running each element in `collection` - * thru `iteratee` and flattening the mapped results. The iteratee is invoked - * with three arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [n, n]; - * } - * - * _.flatMap([1, 2], duplicate); - * // => [1, 1, 2, 2] - */ - function flatMap(collection, iteratee) { - return baseFlatten(map(collection, iteratee), 1); - } - - /** - * This method is like `_.flatMap` except that it recursively flattens the - * mapped results. - * - * @static - * @memberOf _ - * @since 4.7.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [[[n, n]]]; - * } - * - * _.flatMapDeep([1, 2], duplicate); - * // => [1, 1, 2, 2] - */ - function flatMapDeep(collection, iteratee) { - return baseFlatten(map(collection, iteratee), INFINITY); - } - - /** - * This method is like `_.flatMap` except that it recursively flattens the - * mapped results up to `depth` times. - * - * @static - * @memberOf _ - * @since 4.7.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {number} [depth=1] The maximum recursion depth. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [[[n, n]]]; - * } - * - * _.flatMapDepth([1, 2], duplicate, 2); - * // => [[1, 1], [2, 2]] - */ - function flatMapDepth(collection, iteratee, depth) { - depth = depth === undefined ? 1 : toInteger(depth); - return baseFlatten(map(collection, iteratee), depth); - } - - /** - * Iterates over elements of `collection` and invokes `iteratee` for each element. - * The iteratee is invoked with three arguments: (value, index|key, collection). - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * **Note:** As with other "Collections" methods, objects with a "length" - * property are iterated like arrays. To avoid this behavior use `_.forIn` - * or `_.forOwn` for object iteration. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias each - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEachRight - * @example - * - * _.forEach([1, 2], function(value) { - * console.log(value); - * }); - * // => Logs `1` then `2`. - * - * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ - function forEach(collection, iteratee) { - var func = isArray(collection) ? arrayEach : baseEach; - return func(collection, getIteratee(iteratee, 3)); - } - - /** - * This method is like `_.forEach` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @alias eachRight - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEach - * @example - * - * _.forEachRight([1, 2], function(value) { - * console.log(value); - * }); - * // => Logs `2` then `1`. - */ - function forEachRight(collection, iteratee) { - var func = isArray(collection) ? arrayEachRight : baseEachRight; - return func(collection, getIteratee(iteratee, 3)); - } - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The order of grouped values - * is determined by the order they occur in `collection`. The corresponding - * value of each key is an array of elements responsible for generating the - * key. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.groupBy([6.1, 4.2, 6.3], Math.floor); - * // => { '4': [4.2], '6': [6.1, 6.3] } - * - * // The `_.property` iteratee shorthand. - * _.groupBy(['one', 'two', 'three'], 'length'); - * // => { '3': ['one', 'two'], '5': ['three'] } - */ - var groupBy = createAggregator(function(result, value, key) { - if (hasOwnProperty.call(result, key)) { - result[key].push(value); - } else { - baseAssignValue(result, key, [value]); - } - }); - - /** - * Checks if `value` is in `collection`. If `collection` is a string, it's - * checked for a substring of `value`, otherwise - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * is used for equality comparisons. If `fromIndex` is negative, it's used as - * the offset from the end of `collection`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. - * @returns {boolean} Returns `true` if `value` is found, else `false`. - * @example - * - * _.includes([1, 2, 3], 1); - * // => true - * - * _.includes([1, 2, 3], 1, 2); - * // => false - * - * _.includes({ 'a': 1, 'b': 2 }, 1); - * // => true - * - * _.includes('abcd', 'bc'); - * // => true - */ - function includes(collection, value, fromIndex, guard) { - collection = isArrayLike(collection) ? collection : values(collection); - fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; - - var length = collection.length; - if (fromIndex < 0) { - fromIndex = nativeMax(length + fromIndex, 0); - } - return isString(collection) - ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) - : (!!length && baseIndexOf(collection, value, fromIndex) > -1); - } - - /** - * Invokes the method at `path` of each element in `collection`, returning - * an array of the results of each invoked method. Any additional arguments - * are provided to each invoked method. If `path` is a function, it's invoked - * for, and `this` bound to, each element in `collection`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Array|Function|string} path The path of the method to invoke or - * the function invoked per iteration. - * @param {...*} [args] The arguments to invoke each method with. - * @returns {Array} Returns the array of results. - * @example - * - * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); - * // => [[1, 5, 7], [1, 2, 3]] - * - * _.invokeMap([123, 456], String.prototype.split, ''); - * // => [['1', '2', '3'], ['4', '5', '6']] - */ - var invokeMap = baseRest(function(collection, path, args) { - var index = -1, - isFunc = typeof path == 'function', - result = isArrayLike(collection) ? Array(collection.length) : []; - - baseEach(collection, function(value) { - result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); - }); - return result; - }); - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The corresponding value of - * each key is the last element responsible for generating the key. The - * iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * var array = [ - * { 'dir': 'left', 'code': 97 }, - * { 'dir': 'right', 'code': 100 } - * ]; - * - * _.keyBy(array, function(o) { - * return String.fromCharCode(o.code); - * }); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } - * - * _.keyBy(array, 'dir'); - * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } - */ - var keyBy = createAggregator(function(result, value, key) { - baseAssignValue(result, key, value); - }); - - /** - * Creates an array of values by running each element in `collection` thru - * `iteratee`. The iteratee is invoked with three arguments: - * (value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. - * - * The guarded methods are: - * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, - * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, - * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, - * `template`, `trim`, `trimEnd`, `trimStart`, and `words` - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - * @example - * - * function square(n) { - * return n * n; - * } - * - * _.map([4, 8], square); - * // => [16, 64] - * - * _.map({ 'a': 4, 'b': 8 }, square); - * // => [16, 64] (iteration order is not guaranteed) - * - * var users = [ - * { 'user': 'barney' }, - * { 'user': 'fred' } - * ]; - * - * // The `_.property` iteratee shorthand. - * _.map(users, 'user'); - * // => ['barney', 'fred'] - */ - function map(collection, iteratee) { - var func = isArray(collection) ? arrayMap : baseMap; - return func(collection, getIteratee(iteratee, 3)); - } - - /** - * This method is like `_.sortBy` except that it allows specifying the sort - * orders of the iteratees to sort by. If `orders` is unspecified, all values - * are sorted in ascending order. Otherwise, specify an order of "desc" for - * descending or "asc" for ascending sort order of corresponding values. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]] - * The iteratees to sort by. - * @param {string[]} [orders] The sort orders of `iteratees`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 34 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'barney', 'age': 36 } - * ]; - * - * // Sort by `user` in ascending order and by `age` in descending order. - * _.orderBy(users, ['user', 'age'], ['asc', 'desc']); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] - */ - function orderBy(collection, iteratees, orders, guard) { - if (collection == null) { - return []; - } - if (!isArray(iteratees)) { - iteratees = iteratees == null ? [] : [iteratees]; - } - orders = guard ? undefined : orders; - if (!isArray(orders)) { - orders = orders == null ? [] : [orders]; - } - return baseOrderBy(collection, iteratees, orders); - } - - /** - * Creates an array of elements split into two groups, the first of which - * contains elements `predicate` returns truthy for, the second of which - * contains elements `predicate` returns falsey for. The predicate is - * invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the array of grouped elements. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': true }, - * { 'user': 'pebbles', 'age': 1, 'active': false } - * ]; - * - * _.partition(users, function(o) { return o.active; }); - * // => objects for [['fred'], ['barney', 'pebbles']] - * - * // The `_.matches` iteratee shorthand. - * _.partition(users, { 'age': 1, 'active': false }); - * // => objects for [['pebbles'], ['barney', 'fred']] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.partition(users, ['active', false]); - * // => objects for [['barney', 'pebbles'], ['fred']] - * - * // The `_.property` iteratee shorthand. - * _.partition(users, 'active'); - * // => objects for [['fred'], ['barney', 'pebbles']] - */ - var partition = createAggregator(function(result, value, key) { - result[key ? 0 : 1].push(value); - }, function() { return [[], []]; }); - - /** - * Reduces `collection` to a value which is the accumulated result of running - * each element in `collection` thru `iteratee`, where each successive - * invocation is supplied the return value of the previous. If `accumulator` - * is not given, the first element of `collection` is used as the initial - * value. The iteratee is invoked with four arguments: - * (accumulator, value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.reduce`, `_.reduceRight`, and `_.transform`. - * - * The guarded methods are: - * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, - * and `sortBy` - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @returns {*} Returns the accumulated value. - * @see _.reduceRight - * @example - * - * _.reduce([1, 2], function(sum, n) { - * return sum + n; - * }, 0); - * // => 3 - * - * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { - * (result[value] || (result[value] = [])).push(key); - * return result; - * }, {}); - * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) - */ - function reduce(collection, iteratee, accumulator) { - var func = isArray(collection) ? arrayReduce : baseReduce, - initAccum = arguments.length < 3; - - return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach); - } - - /** - * This method is like `_.reduce` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @returns {*} Returns the accumulated value. - * @see _.reduce - * @example - * - * var array = [[0, 1], [2, 3], [4, 5]]; - * - * _.reduceRight(array, function(flattened, other) { - * return flattened.concat(other); - * }, []); - * // => [4, 5, 2, 3, 0, 1] - */ - function reduceRight(collection, iteratee, accumulator) { - var func = isArray(collection) ? arrayReduceRight : baseReduce, - initAccum = arguments.length < 3; - - return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight); - } - - /** - * The opposite of `_.filter`; this method returns the elements of `collection` - * that `predicate` does **not** return truthy for. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - * @see _.filter - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': true } - * ]; - * - * _.reject(users, function(o) { return !o.active; }); - * // => objects for ['fred'] - * - * // The `_.matches` iteratee shorthand. - * _.reject(users, { 'age': 40, 'active': true }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.reject(users, ['active', false]); - * // => objects for ['fred'] - * - * // The `_.property` iteratee shorthand. - * _.reject(users, 'active'); - * // => objects for ['barney'] - */ - function reject(collection, predicate) { - var func = isArray(collection) ? arrayFilter : baseFilter; - return func(collection, negate(getIteratee(predicate, 3))); - } - - /** - * Gets a random element from `collection`. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Collection - * @param {Array|Object} collection The collection to sample. - * @returns {*} Returns the random element. - * @example - * - * _.sample([1, 2, 3, 4]); - * // => 2 - */ - function sample(collection) { - var func = isArray(collection) ? arraySample : baseSample; - return func(collection); - } - - /** - * Gets `n` random elements at unique keys from `collection` up to the - * size of `collection`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to sample. - * @param {number} [n=1] The number of elements to sample. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the random elements. - * @example - * - * _.sampleSize([1, 2, 3], 2); - * // => [3, 1] - * - * _.sampleSize([1, 2, 3], 4); - * // => [2, 3, 1] - */ - function sampleSize(collection, n, guard) { - if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) { - n = 1; - } else { - n = toInteger(n); - } - var func = isArray(collection) ? arraySampleSize : baseSampleSize; - return func(collection, n); - } - - /** - * Creates an array of shuffled values, using a version of the - * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to shuffle. - * @returns {Array} Returns the new shuffled array. - * @example - * - * _.shuffle([1, 2, 3, 4]); - * // => [4, 1, 3, 2] - */ - function shuffle(collection) { - var func = isArray(collection) ? arrayShuffle : baseShuffle; - return func(collection); - } - - /** - * Gets the size of `collection` by returning its length for array-like - * values or the number of own enumerable string keyed properties for objects. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @returns {number} Returns the collection size. - * @example - * - * _.size([1, 2, 3]); - * // => 3 - * - * _.size({ 'a': 1, 'b': 2 }); - * // => 2 - * - * _.size('pebbles'); - * // => 7 - */ - function size(collection) { - if (collection == null) { - return 0; - } - if (isArrayLike(collection)) { - return isString(collection) ? stringSize(collection) : collection.length; - } - var tag = getTag(collection); - if (tag == mapTag || tag == setTag) { - return collection.size; - } - return baseKeys(collection).length; - } - - /** - * Checks if `predicate` returns truthy for **any** element of `collection`. - * Iteration is stopped once `predicate` returns truthy. The predicate is - * invoked with three arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - * @example - * - * _.some([null, 0, 'yes', false], Boolean); - * // => true - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.some(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // The `_.matchesProperty` iteratee shorthand. - * _.some(users, ['active', false]); - * // => true - * - * // The `_.property` iteratee shorthand. - * _.some(users, 'active'); - * // => true - */ - function some(collection, predicate, guard) { - var func = isArray(collection) ? arraySome : baseSome; - if (guard && isIterateeCall(collection, predicate, guard)) { - predicate = undefined; - } - return func(collection, getIteratee(predicate, 3)); - } - - /** - * Creates an array of elements, sorted in ascending order by the results of - * running each element in a collection thru each iteratee. This method - * performs a stable sort, that is, it preserves the original sort order of - * equal elements. The iteratees are invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {...(Function|Function[])} [iteratees=[_.identity]] - * The iteratees to sort by. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'barney', 'age': 34 } - * ]; - * - * _.sortBy(users, [function(o) { return o.user; }]); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] - * - * _.sortBy(users, ['user', 'age']); - * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]] - */ - var sortBy = baseRest(function(collection, iteratees) { - if (collection == null) { - return []; - } - var length = iteratees.length; - if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { - iteratees = []; - } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { - iteratees = [iteratees[0]]; - } - return baseOrderBy(collection, baseFlatten(iteratees, 1), []); - }); - - /*------------------------------------------------------------------------*/ - - /** - * Gets the timestamp of the number of milliseconds that have elapsed since - * the Unix epoch (1 January 1970 00:00:00 UTC). - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Date - * @returns {number} Returns the timestamp. - * @example - * - * _.defer(function(stamp) { - * console.log(_.now() - stamp); - * }, _.now()); - * // => Logs the number of milliseconds it took for the deferred invocation. - */ - var now = ctxNow || function() { - return root.Date.now(); - }; - - /*------------------------------------------------------------------------*/ - - /** - * The opposite of `_.before`; this method creates a function that invokes - * `func` once it's called `n` or more times. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {number} n The number of calls before `func` is invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var saves = ['profile', 'settings']; - * - * var done = _.after(saves.length, function() { - * console.log('done saving!'); - * }); - * - * _.forEach(saves, function(type) { - * asyncSave({ 'type': type, 'complete': done }); - * }); - * // => Logs 'done saving!' after the two async saves have completed. - */ - function after(n, func) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - n = toInteger(n); - return function() { - if (--n < 1) { - return func.apply(this, arguments); - } - }; - } - - /** - * Creates a function that invokes `func`, with up to `n` arguments, - * ignoring any additional arguments. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to cap arguments for. - * @param {number} [n=func.length] The arity cap. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new capped function. - * @example - * - * _.map(['6', '8', '10'], _.ary(parseInt, 1)); - * // => [6, 8, 10] - */ - function ary(func, n, guard) { - n = guard ? undefined : n; - n = (func && n == null) ? func.length : n; - return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n); - } - - /** - * Creates a function that invokes `func`, with the `this` binding and arguments - * of the created function, while it's called less than `n` times. Subsequent - * calls to the created function return the result of the last `func` invocation. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {number} n The number of calls at which `func` is no longer invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * jQuery(element).on('click', _.before(5, addContactToList)); - * // => Allows adding up to 4 contacts to the list. - */ - function before(n, func) { - var result; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - n = toInteger(n); - return function() { - if (--n > 0) { - result = func.apply(this, arguments); - } - if (n <= 1) { - func = undefined; - } - return result; - }; - } - - /** - * Creates a function that invokes `func` with the `this` binding of `thisArg` - * and `partials` prepended to the arguments it receives. - * - * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for partially applied arguments. - * - * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" - * property of bound functions. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to bind. - * @param {*} thisArg The `this` binding of `func`. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * function greet(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * - * var object = { 'user': 'fred' }; - * - * var bound = _.bind(greet, object, 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * // Bound with placeholders. - * var bound = _.bind(greet, object, _, '!'); - * bound('hi'); - * // => 'hi fred!' - */ - var bind = baseRest(function(func, thisArg, partials) { - var bitmask = WRAP_BIND_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, getHolder(bind)); - bitmask |= WRAP_PARTIAL_FLAG; - } - return createWrap(func, bitmask, thisArg, partials, holders); - }); - - /** - * Creates a function that invokes the method at `object[key]` with `partials` - * prepended to the arguments it receives. - * - * This method differs from `_.bind` by allowing bound functions to reference - * methods that may be redefined or don't yet exist. See - * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) - * for more details. - * - * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * @static - * @memberOf _ - * @since 0.10.0 - * @category Function - * @param {Object} object The object to invoke the method on. - * @param {string} key The key of the method. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var object = { - * 'user': 'fred', - * 'greet': function(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * }; - * - * var bound = _.bindKey(object, 'greet', 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * object.greet = function(greeting, punctuation) { - * return greeting + 'ya ' + this.user + punctuation; - * }; - * - * bound('!'); - * // => 'hiya fred!' - * - * // Bound with placeholders. - * var bound = _.bindKey(object, 'greet', _, '!'); - * bound('hi'); - * // => 'hiya fred!' - */ - var bindKey = baseRest(function(object, key, partials) { - var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, getHolder(bindKey)); - bitmask |= WRAP_PARTIAL_FLAG; - } - return createWrap(key, bitmask, object, partials, holders); - }); - - /** - * Creates a function that accepts arguments of `func` and either invokes - * `func` returning its result, if at least `arity` number of arguments have - * been provided, or returns a function that accepts the remaining `func` - * arguments, and so on. The arity of `func` may be specified if `func.length` - * is not sufficient. - * - * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for provided arguments. - * - * **Note:** This method doesn't set the "length" property of curried functions. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new curried function. - * @example - * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curry(abc); - * - * curried(1)(2)(3); - * // => [1, 2, 3] - * - * curried(1, 2)(3); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] - * - * // Curried with placeholders. - * curried(1)(_, 3)(2); - * // => [1, 2, 3] - */ - function curry(func, arity, guard) { - arity = guard ? undefined : arity; - var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity); - result.placeholder = curry.placeholder; - return result; - } - - /** - * This method is like `_.curry` except that arguments are applied to `func` - * in the manner of `_.partialRight` instead of `_.partial`. - * - * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for provided arguments. - * - * **Note:** This method doesn't set the "length" property of curried functions. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new curried function. - * @example - * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curryRight(abc); - * - * curried(3)(2)(1); - * // => [1, 2, 3] - * - * curried(2, 3)(1); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] - * - * // Curried with placeholders. - * curried(3)(1, _)(2); - * // => [1, 2, 3] - */ - function curryRight(func, arity, guard) { - arity = guard ? undefined : arity; - var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity); - result.placeholder = curryRight.placeholder; - return result; - } - - /** - * Creates a debounced function that delays invoking `func` until after `wait` - * milliseconds have elapsed since the last time the debounced function was - * invoked. The debounced function comes with a `cancel` method to cancel - * delayed `func` invocations and a `flush` method to immediately invoke them. - * Provide `options` to indicate whether `func` should be invoked on the - * leading and/or trailing edge of the `wait` timeout. The `func` is invoked - * with the last arguments provided to the debounced function. Subsequent - * calls to the debounced function return the result of the last `func` - * invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is - * invoked on the trailing edge of the timeout only if the debounced function - * is invoked more than once during the `wait` timeout. - * - * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred - * until to the next tick, similar to `setTimeout` with a timeout of `0`. - * - * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) - * for details over the differences between `_.debounce` and `_.throttle`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to debounce. - * @param {number} [wait=0] The number of milliseconds to delay. - * @param {Object} [options={}] The options object. - * @param {boolean} [options.leading=false] - * Specify invoking on the leading edge of the timeout. - * @param {number} [options.maxWait] - * The maximum time `func` is allowed to be delayed before it's invoked. - * @param {boolean} [options.trailing=true] - * Specify invoking on the trailing edge of the timeout. - * @returns {Function} Returns the new debounced function. - * @example - * - * // Avoid costly calculations while the window size is in flux. - * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); - * - * // Invoke `sendMail` when clicked, debouncing subsequent calls. - * jQuery(element).on('click', _.debounce(sendMail, 300, { - * 'leading': true, - * 'trailing': false - * })); - * - * // Ensure `batchLog` is invoked once after 1 second of debounced calls. - * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); - * var source = new EventSource('/stream'); - * jQuery(source).on('message', debounced); - * - * // Cancel the trailing debounced invocation. - * jQuery(window).on('popstate', debounced.cancel); - */ - function debounce(func, wait, options) { - var lastArgs, - lastThis, - maxWait, - result, - timerId, - lastCallTime, - lastInvokeTime = 0, - leading = false, - maxing = false, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - wait = toNumber(wait) || 0; - if (isObject(options)) { - leading = !!options.leading; - maxing = 'maxWait' in options; - maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - - function invokeFunc(time) { - var args = lastArgs, - thisArg = lastThis; - - lastArgs = lastThis = undefined; - lastInvokeTime = time; - result = func.apply(thisArg, args); - return result; - } - - function leadingEdge(time) { - // Reset any `maxWait` timer. - lastInvokeTime = time; - // Start the timer for the trailing edge. - timerId = setTimeout(timerExpired, wait); - // Invoke the leading edge. - return leading ? invokeFunc(time) : result; - } - - function remainingWait(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime, - timeWaiting = wait - timeSinceLastCall; - - return maxing - ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) - : timeWaiting; - } - - function shouldInvoke(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime; - - // Either this is the first call, activity has stopped and we're at the - // trailing edge, the system time has gone backwards and we're treating - // it as the trailing edge, or we've hit the `maxWait` limit. - return (lastCallTime === undefined || (timeSinceLastCall >= wait) || - (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); - } - - function timerExpired() { - var time = now(); - if (shouldInvoke(time)) { - return trailingEdge(time); - } - // Restart the timer. - timerId = setTimeout(timerExpired, remainingWait(time)); - } - - function trailingEdge(time) { - timerId = undefined; - - // Only invoke if we have `lastArgs` which means `func` has been - // debounced at least once. - if (trailing && lastArgs) { - return invokeFunc(time); - } - lastArgs = lastThis = undefined; - return result; - } - - function cancel() { - if (timerId !== undefined) { - clearTimeout(timerId); - } - lastInvokeTime = 0; - lastArgs = lastCallTime = lastThis = timerId = undefined; - } - - function flush() { - return timerId === undefined ? result : trailingEdge(now()); - } - - function debounced() { - var time = now(), - isInvoking = shouldInvoke(time); - - lastArgs = arguments; - lastThis = this; - lastCallTime = time; - - if (isInvoking) { - if (timerId === undefined) { - return leadingEdge(lastCallTime); - } - if (maxing) { - // Handle invocations in a tight loop. - timerId = setTimeout(timerExpired, wait); - return invokeFunc(lastCallTime); - } - } - if (timerId === undefined) { - timerId = setTimeout(timerExpired, wait); - } - return result; - } - debounced.cancel = cancel; - debounced.flush = flush; - return debounced; - } - - /** - * Defers invoking the `func` until the current call stack has cleared. Any - * additional arguments are provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to defer. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * @example - * - * _.defer(function(text) { - * console.log(text); - * }, 'deferred'); - * // => Logs 'deferred' after one millisecond. - */ - var defer = baseRest(function(func, args) { - return baseDelay(func, 1, args); - }); - - /** - * Invokes `func` after `wait` milliseconds. Any additional arguments are - * provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * @example - * - * _.delay(function(text) { - * console.log(text); - * }, 1000, 'later'); - * // => Logs 'later' after one second. - */ - var delay = baseRest(function(func, wait, args) { - return baseDelay(func, toNumber(wait) || 0, args); - }); - - /** - * Creates a function that invokes `func` with arguments reversed. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Function - * @param {Function} func The function to flip arguments for. - * @returns {Function} Returns the new flipped function. - * @example - * - * var flipped = _.flip(function() { - * return _.toArray(arguments); - * }); - * - * flipped('a', 'b', 'c', 'd'); - * // => ['d', 'c', 'b', 'a'] - */ - function flip(func) { - return createWrap(func, WRAP_FLIP_FLAG); - } - - /** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided, it determines the cache key for storing the result based on the - * arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is used as the map cache key. The `func` - * is invoked with the `this` binding of the memoized function. - * - * **Note:** The cache is exposed as the `cache` property on the memoized - * function. Its creation may be customized by replacing the `_.memoize.Cache` - * constructor with one whose instances implement the - * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) - * method interface of `clear`, `delete`, `get`, `has`, and `set`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @returns {Function} Returns the new memoized function. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * var other = { 'c': 3, 'd': 4 }; - * - * var values = _.memoize(_.values); - * values(object); - * // => [1, 2] - * - * values(other); - * // => [3, 4] - * - * object.a = 2; - * values(object); - * // => [1, 2] - * - * // Modify the result cache. - * values.cache.set(object, ['a', 'b']); - * values(object); - * // => ['a', 'b'] - * - * // Replace `_.memoize.Cache`. - * _.memoize.Cache = WeakMap; - */ - function memoize(func, resolver) { - if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { - throw new TypeError(FUNC_ERROR_TEXT); - } - var memoized = function() { - var args = arguments, - key = resolver ? resolver.apply(this, args) : args[0], - cache = memoized.cache; - - if (cache.has(key)) { - return cache.get(key); - } - var result = func.apply(this, args); - memoized.cache = cache.set(key, result) || cache; - return result; - }; - memoized.cache = new (memoize.Cache || MapCache); - return memoized; - } - - // Expose `MapCache`. - memoize.Cache = MapCache; - - /** - * Creates a function that negates the result of the predicate `func`. The - * `func` predicate is invoked with the `this` binding and arguments of the - * created function. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} predicate The predicate to negate. - * @returns {Function} Returns the new negated function. - * @example - * - * function isEven(n) { - * return n % 2 == 0; - * } - * - * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); - * // => [1, 3, 5] - */ - function negate(predicate) { - if (typeof predicate != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return function() { - var args = arguments; - switch (args.length) { - case 0: return !predicate.call(this); - case 1: return !predicate.call(this, args[0]); - case 2: return !predicate.call(this, args[0], args[1]); - case 3: return !predicate.call(this, args[0], args[1], args[2]); - } - return !predicate.apply(this, args); - }; - } - - /** - * Creates a function that is restricted to invoking `func` once. Repeat calls - * to the function return the value of the first invocation. The `func` is - * invoked with the `this` binding and arguments of the created function. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var initialize = _.once(createApplication); - * initialize(); - * initialize(); - * // => `createApplication` is invoked once - */ - function once(func) { - return before(2, func); - } - - /** - * Creates a function that invokes `func` with its arguments transformed. - * - * @static - * @since 4.0.0 - * @memberOf _ - * @category Function - * @param {Function} func The function to wrap. - * @param {...(Function|Function[])} [transforms=[_.identity]] - * The argument transforms. - * @returns {Function} Returns the new function. - * @example - * - * function doubled(n) { - * return n * 2; - * } - * - * function square(n) { - * return n * n; - * } - * - * var func = _.overArgs(function(x, y) { - * return [x, y]; - * }, [square, doubled]); - * - * func(9, 3); - * // => [81, 6] - * - * func(10, 5); - * // => [100, 10] - */ - var overArgs = castRest(function(func, transforms) { - transforms = (transforms.length == 1 && isArray(transforms[0])) - ? arrayMap(transforms[0], baseUnary(getIteratee())) - : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); - - var funcsLength = transforms.length; - return baseRest(function(args) { - var index = -1, - length = nativeMin(args.length, funcsLength); - - while (++index < length) { - args[index] = transforms[index].call(this, args[index]); - } - return apply(func, this, args); - }); - }); - - /** - * Creates a function that invokes `func` with `partials` prepended to the - * arguments it receives. This method is like `_.bind` except it does **not** - * alter the `this` binding. - * - * The `_.partial.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * **Note:** This method doesn't set the "length" property of partially - * applied functions. - * - * @static - * @memberOf _ - * @since 0.2.0 - * @category Function - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * function greet(greeting, name) { - * return greeting + ' ' + name; - * } - * - * var sayHelloTo = _.partial(greet, 'hello'); - * sayHelloTo('fred'); - * // => 'hello fred' - * - * // Partially applied with placeholders. - * var greetFred = _.partial(greet, _, 'fred'); - * greetFred('hi'); - * // => 'hi fred' - */ - var partial = baseRest(function(func, partials) { - var holders = replaceHolders(partials, getHolder(partial)); - return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders); - }); - - /** - * This method is like `_.partial` except that partially applied arguments - * are appended to the arguments it receives. - * - * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * **Note:** This method doesn't set the "length" property of partially - * applied functions. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Function - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * function greet(greeting, name) { - * return greeting + ' ' + name; - * } - * - * var greetFred = _.partialRight(greet, 'fred'); - * greetFred('hi'); - * // => 'hi fred' - * - * // Partially applied with placeholders. - * var sayHelloTo = _.partialRight(greet, 'hello', _); - * sayHelloTo('fred'); - * // => 'hello fred' - */ - var partialRight = baseRest(function(func, partials) { - var holders = replaceHolders(partials, getHolder(partialRight)); - return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders); - }); - - /** - * Creates a function that invokes `func` with arguments arranged according - * to the specified `indexes` where the argument value at the first index is - * provided as the first argument, the argument value at the second index is - * provided as the second argument, and so on. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to rearrange arguments for. - * @param {...(number|number[])} indexes The arranged argument indexes. - * @returns {Function} Returns the new function. - * @example - * - * var rearged = _.rearg(function(a, b, c) { - * return [a, b, c]; - * }, [2, 0, 1]); - * - * rearged('b', 'c', 'a') - * // => ['a', 'b', 'c'] - */ - var rearg = flatRest(function(func, indexes) { - return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes); - }); - - /** - * Creates a function that invokes `func` with the `this` binding of the - * created function and arguments from `start` and beyond provided as - * an array. - * - * **Note:** This method is based on the - * [rest parameter](https://mdn.io/rest_parameters). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Function - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - * @example - * - * var say = _.rest(function(what, names) { - * return what + ' ' + _.initial(names).join(', ') + - * (_.size(names) > 1 ? ', & ' : '') + _.last(names); - * }); - * - * say('hello', 'fred', 'barney', 'pebbles'); - * // => 'hello fred, barney, & pebbles' - */ - function rest(func, start) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - start = start === undefined ? start : toInteger(start); - return baseRest(func, start); - } - - /** - * Creates a function that invokes `func` with the `this` binding of the - * create function and an array of arguments much like - * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply). - * - * **Note:** This method is based on the - * [spread operator](https://mdn.io/spread_operator). - * - * @static - * @memberOf _ - * @since 3.2.0 - * @category Function - * @param {Function} func The function to spread arguments over. - * @param {number} [start=0] The start position of the spread. - * @returns {Function} Returns the new function. - * @example - * - * var say = _.spread(function(who, what) { - * return who + ' says ' + what; - * }); - * - * say(['fred', 'hello']); - * // => 'fred says hello' - * - * var numbers = Promise.all([ - * Promise.resolve(40), - * Promise.resolve(36) - * ]); - * - * numbers.then(_.spread(function(x, y) { - * return x + y; - * })); - * // => a Promise of 76 - */ - function spread(func, start) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - start = start == null ? 0 : nativeMax(toInteger(start), 0); - return baseRest(function(args) { - var array = args[start], - otherArgs = castSlice(args, 0, start); - - if (array) { - arrayPush(otherArgs, array); - } - return apply(func, this, otherArgs); - }); - } - - /** - * Creates a throttled function that only invokes `func` at most once per - * every `wait` milliseconds. The throttled function comes with a `cancel` - * method to cancel delayed `func` invocations and a `flush` method to - * immediately invoke them. Provide `options` to indicate whether `func` - * should be invoked on the leading and/or trailing edge of the `wait` - * timeout. The `func` is invoked with the last arguments provided to the - * throttled function. Subsequent calls to the throttled function return the - * result of the last `func` invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is - * invoked on the trailing edge of the timeout only if the throttled function - * is invoked more than once during the `wait` timeout. - * - * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred - * until to the next tick, similar to `setTimeout` with a timeout of `0`. - * - * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) - * for details over the differences between `_.throttle` and `_.debounce`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to throttle. - * @param {number} [wait=0] The number of milliseconds to throttle invocations to. - * @param {Object} [options={}] The options object. - * @param {boolean} [options.leading=true] - * Specify invoking on the leading edge of the timeout. - * @param {boolean} [options.trailing=true] - * Specify invoking on the trailing edge of the timeout. - * @returns {Function} Returns the new throttled function. - * @example - * - * // Avoid excessively updating the position while scrolling. - * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); - * - * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. - * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); - * jQuery(element).on('click', throttled); - * - * // Cancel the trailing throttled invocation. - * jQuery(window).on('popstate', throttled.cancel); - */ - function throttle(func, wait, options) { - var leading = true, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - if (isObject(options)) { - leading = 'leading' in options ? !!options.leading : leading; - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - return debounce(func, wait, { - 'leading': leading, - 'maxWait': wait, - 'trailing': trailing - }); - } - - /** - * Creates a function that accepts up to one argument, ignoring any - * additional arguments. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Function - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - * @example - * - * _.map(['6', '8', '10'], _.unary(parseInt)); - * // => [6, 8, 10] - */ - function unary(func) { - return ary(func, 1); - } - - /** - * Creates a function that provides `value` to `wrapper` as its first - * argument. Any additional arguments provided to the function are appended - * to those provided to the `wrapper`. The wrapper is invoked with the `this` - * binding of the created function. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {*} value The value to wrap. - * @param {Function} [wrapper=identity] The wrapper function. - * @returns {Function} Returns the new function. - * @example - * - * var p = _.wrap(_.escape, function(func, text) { - * return '

' + func(text) + '

'; - * }); - * - * p('fred, barney, & pebbles'); - * // => '

fred, barney, & pebbles

' - */ - function wrap(value, wrapper) { - return partial(castFunction(wrapper), value); - } - - /*------------------------------------------------------------------------*/ - - /** - * Casts `value` as an array if it's not one. - * - * @static - * @memberOf _ - * @since 4.4.0 - * @category Lang - * @param {*} value The value to inspect. - * @returns {Array} Returns the cast array. - * @example - * - * _.castArray(1); - * // => [1] - * - * _.castArray({ 'a': 1 }); - * // => [{ 'a': 1 }] - * - * _.castArray('abc'); - * // => ['abc'] - * - * _.castArray(null); - * // => [null] - * - * _.castArray(undefined); - * // => [undefined] - * - * _.castArray(); - * // => [] - * - * var array = [1, 2, 3]; - * console.log(_.castArray(array) === array); - * // => true - */ - function castArray() { - if (!arguments.length) { - return []; - } - var value = arguments[0]; - return isArray(value) ? value : [value]; - } - - /** - * Creates a shallow clone of `value`. - * - * **Note:** This method is loosely based on the - * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) - * and supports cloning arrays, array buffers, booleans, date objects, maps, - * numbers, `Object` objects, regexes, sets, strings, symbols, and typed - * arrays. The own enumerable properties of `arguments` objects are cloned - * as plain objects. An empty object is returned for uncloneable values such - * as error objects, functions, DOM nodes, and WeakMaps. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to clone. - * @returns {*} Returns the cloned value. - * @see _.cloneDeep - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var shallow = _.clone(objects); - * console.log(shallow[0] === objects[0]); - * // => true - */ - function clone(value) { - return baseClone(value, CLONE_SYMBOLS_FLAG); - } - - /** - * This method is like `_.clone` except that it accepts `customizer` which - * is invoked to produce the cloned value. If `customizer` returns `undefined`, - * cloning is handled by the method instead. The `customizer` is invoked with - * up to four arguments; (value [, index|key, object, stack]). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to clone. - * @param {Function} [customizer] The function to customize cloning. - * @returns {*} Returns the cloned value. - * @see _.cloneDeepWith - * @example - * - * function customizer(value) { - * if (_.isElement(value)) { - * return value.cloneNode(false); - * } - * } - * - * var el = _.cloneWith(document.body, customizer); - * - * console.log(el === document.body); - * // => false - * console.log(el.nodeName); - * // => 'BODY' - * console.log(el.childNodes.length); - * // => 0 - */ - function cloneWith(value, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); - } - - /** - * This method is like `_.clone` except that it recursively clones `value`. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Lang - * @param {*} value The value to recursively clone. - * @returns {*} Returns the deep cloned value. - * @see _.clone - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var deep = _.cloneDeep(objects); - * console.log(deep[0] === objects[0]); - * // => false - */ - function cloneDeep(value) { - return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); - } - - /** - * This method is like `_.cloneWith` except that it recursively clones `value`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to recursively clone. - * @param {Function} [customizer] The function to customize cloning. - * @returns {*} Returns the deep cloned value. - * @see _.cloneWith - * @example - * - * function customizer(value) { - * if (_.isElement(value)) { - * return value.cloneNode(true); - * } - * } - * - * var el = _.cloneDeepWith(document.body, customizer); - * - * console.log(el === document.body); - * // => false - * console.log(el.nodeName); - * // => 'BODY' - * console.log(el.childNodes.length); - * // => 20 - */ - function cloneDeepWith(value, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); - } - - /** - * Checks if `object` conforms to `source` by invoking the predicate - * properties of `source` with the corresponding property values of `object`. - * - * **Note:** This method is equivalent to `_.conforms` when `source` is - * partially applied. - * - * @static - * @memberOf _ - * @since 4.14.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property predicates to conform to. - * @returns {boolean} Returns `true` if `object` conforms, else `false`. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * - * _.conformsTo(object, { 'b': function(n) { return n > 1; } }); - * // => true - * - * _.conformsTo(object, { 'b': function(n) { return n > 2; } }); - * // => false - */ - function conformsTo(object, source) { - return source == null || baseConformsTo(object, source, keys(source)); - } - - /** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ - function eq(value, other) { - return value === other || (value !== value && other !== other); - } - - /** - * Checks if `value` is greater than `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than `other`, - * else `false`. - * @see _.lt - * @example - * - * _.gt(3, 1); - * // => true - * - * _.gt(3, 3); - * // => false - * - * _.gt(1, 3); - * // => false - */ - var gt = createRelationalOperation(baseGt); - - /** - * Checks if `value` is greater than or equal to `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than or equal to - * `other`, else `false`. - * @see _.lte - * @example - * - * _.gte(3, 1); - * // => true - * - * _.gte(3, 3); - * // => true - * - * _.gte(1, 3); - * // => false - */ - var gte = createRelationalOperation(function(value, other) { - return value >= other; - }); - - /** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ - var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { - return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && - !propertyIsEnumerable.call(value, 'callee'); - }; - - /** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ - var isArray = Array.isArray; - - /** - * Checks if `value` is classified as an `ArrayBuffer` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. - * @example - * - * _.isArrayBuffer(new ArrayBuffer(2)); - * // => true - * - * _.isArrayBuffer(new Array(2)); - * // => false - */ - var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; - - /** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ - function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); - } - - /** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ - function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); - } - - /** - * Checks if `value` is classified as a boolean primitive or object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. - * @example - * - * _.isBoolean(false); - * // => true - * - * _.isBoolean(null); - * // => false - */ - function isBoolean(value) { - return value === true || value === false || - (isObjectLike(value) && baseGetTag(value) == boolTag); - } - - /** - * Checks if `value` is a buffer. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. - * @example - * - * _.isBuffer(new Buffer(2)); - * // => true - * - * _.isBuffer(new Uint8Array(2)); - * // => false - */ - var isBuffer = nativeIsBuffer || stubFalse; - - /** - * Checks if `value` is classified as a `Date` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a date object, else `false`. - * @example - * - * _.isDate(new Date); - * // => true - * - * _.isDate('Mon April 23 2012'); - * // => false - */ - var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; - - /** - * Checks if `value` is likely a DOM element. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. - * @example - * - * _.isElement(document.body); - * // => true - * - * _.isElement(''); - * // => false - */ - function isElement(value) { - return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); - } - - /** - * Checks if `value` is an empty object, collection, map, or set. - * - * Objects are considered empty if they have no own enumerable string keyed - * properties. - * - * Array-like values such as `arguments` objects, arrays, buffers, strings, or - * jQuery-like collections are considered empty if they have a `length` of `0`. - * Similarly, maps and sets are considered empty if they have a `size` of `0`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is empty, else `false`. - * @example - * - * _.isEmpty(null); - * // => true - * - * _.isEmpty(true); - * // => true - * - * _.isEmpty(1); - * // => true - * - * _.isEmpty([1, 2, 3]); - * // => false - * - * _.isEmpty({ 'a': 1 }); - * // => false - */ - function isEmpty(value) { - if (value == null) { - return true; - } - if (isArrayLike(value) && - (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || - isBuffer(value) || isTypedArray(value) || isArguments(value))) { - return !value.length; - } - var tag = getTag(value); - if (tag == mapTag || tag == setTag) { - return !value.size; - } - if (isPrototype(value)) { - return !baseKeys(value).length; - } - for (var key in value) { - if (hasOwnProperty.call(value, key)) { - return false; - } - } - return true; - } - - /** - * Performs a deep comparison between two values to determine if they are - * equivalent. - * - * **Note:** This method supports comparing arrays, array buffers, booleans, - * date objects, error objects, maps, numbers, `Object` objects, regexes, - * sets, strings, symbols, and typed arrays. `Object` objects are compared - * by their own, not inherited, enumerable properties. Functions and DOM - * nodes are compared by strict equality, i.e. `===`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.isEqual(object, other); - * // => true - * - * object === other; - * // => false - */ - function isEqual(value, other) { - return baseIsEqual(value, other); - } - - /** - * This method is like `_.isEqual` except that it accepts `customizer` which - * is invoked to compare values. If `customizer` returns `undefined`, comparisons - * are handled by the method instead. The `customizer` is invoked with up to - * six arguments: (objValue, othValue [, index|key, object, other, stack]). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * function isGreeting(value) { - * return /^h(?:i|ello)$/.test(value); - * } - * - * function customizer(objValue, othValue) { - * if (isGreeting(objValue) && isGreeting(othValue)) { - * return true; - * } - * } - * - * var array = ['hello', 'goodbye']; - * var other = ['hi', 'goodbye']; - * - * _.isEqualWith(array, other, customizer); - * // => true - */ - function isEqualWith(value, other, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - var result = customizer ? customizer(value, other) : undefined; - return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result; - } - - /** - * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, - * `SyntaxError`, `TypeError`, or `URIError` object. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an error object, else `false`. - * @example - * - * _.isError(new Error); - * // => true - * - * _.isError(Error); - * // => false - */ - function isError(value) { - if (!isObjectLike(value)) { - return false; - } - var tag = baseGetTag(value); - return tag == errorTag || tag == domExcTag || - (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value)); - } - - /** - * Checks if `value` is a finite primitive number. - * - * **Note:** This method is based on - * [`Number.isFinite`](https://mdn.io/Number/isFinite). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. - * @example - * - * _.isFinite(3); - * // => true - * - * _.isFinite(Number.MIN_VALUE); - * // => true - * - * _.isFinite(Infinity); - * // => false - * - * _.isFinite('3'); - * // => false - */ - function isFinite(value) { - return typeof value == 'number' && nativeIsFinite(value); - } - - /** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ - function isFunction(value) { - if (!isObject(value)) { - return false; - } - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 9 which returns 'object' for typed arrays and other constructors. - var tag = baseGetTag(value); - return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; - } - - /** - * Checks if `value` is an integer. - * - * **Note:** This method is based on - * [`Number.isInteger`](https://mdn.io/Number/isInteger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an integer, else `false`. - * @example - * - * _.isInteger(3); - * // => true - * - * _.isInteger(Number.MIN_VALUE); - * // => false - * - * _.isInteger(Infinity); - * // => false - * - * _.isInteger('3'); - * // => false - */ - function isInteger(value) { - return typeof value == 'number' && value == toInteger(value); - } - - /** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ - function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; - } - - /** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ - function isObject(value) { - var type = typeof value; - return value != null && (type == 'object' || type == 'function'); - } - - /** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ - function isObjectLike(value) { - return value != null && typeof value == 'object'; - } - - /** - * Checks if `value` is classified as a `Map` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - * @example - * - * _.isMap(new Map); - * // => true - * - * _.isMap(new WeakMap); - * // => false - */ - var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; - - /** - * Performs a partial deep comparison between `object` and `source` to - * determine if `object` contains equivalent property values. - * - * **Note:** This method is equivalent to `_.matches` when `source` is - * partially applied. - * - * Partial comparisons will match empty array and empty object `source` - * values against any array or object value, respectively. See `_.isEqual` - * for a list of supported value comparisons. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * - * _.isMatch(object, { 'b': 2 }); - * // => true - * - * _.isMatch(object, { 'b': 1 }); - * // => false - */ - function isMatch(object, source) { - return object === source || baseIsMatch(object, source, getMatchData(source)); - } - - /** - * This method is like `_.isMatch` except that it accepts `customizer` which - * is invoked to compare values. If `customizer` returns `undefined`, comparisons - * are handled by the method instead. The `customizer` is invoked with five - * arguments: (objValue, srcValue, index|key, object, source). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - * @example - * - * function isGreeting(value) { - * return /^h(?:i|ello)$/.test(value); - * } - * - * function customizer(objValue, srcValue) { - * if (isGreeting(objValue) && isGreeting(srcValue)) { - * return true; - * } - * } - * - * var object = { 'greeting': 'hello' }; - * var source = { 'greeting': 'hi' }; - * - * _.isMatchWith(object, source, customizer); - * // => true - */ - function isMatchWith(object, source, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return baseIsMatch(object, source, getMatchData(source), customizer); - } - - /** - * Checks if `value` is `NaN`. - * - * **Note:** This method is based on - * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as - * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for - * `undefined` and other non-number values. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - * @example - * - * _.isNaN(NaN); - * // => true - * - * _.isNaN(new Number(NaN)); - * // => true - * - * isNaN(undefined); - * // => true - * - * _.isNaN(undefined); - * // => false - */ - function isNaN(value) { - // An `NaN` primitive is the only value that is not equal to itself. - // Perform the `toStringTag` check first to avoid errors with some - // ActiveX objects in IE. - return isNumber(value) && value != +value; - } - - /** - * Checks if `value` is a pristine native function. - * - * **Note:** This method can't reliably detect native functions in the presence - * of the core-js package because core-js circumvents this kind of detection. - * Despite multiple requests, the core-js maintainer has made it clear: any - * attempt to fix the detection will be obstructed. As a result, we're left - * with little choice but to throw an error. Unfortunately, this also affects - * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill), - * which rely on core-js. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - * @example - * - * _.isNative(Array.prototype.push); - * // => true - * - * _.isNative(_); - * // => false - */ - function isNative(value) { - if (isMaskable(value)) { - throw new Error(CORE_ERROR_TEXT); - } - return baseIsNative(value); - } - - /** - * Checks if `value` is `null`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `null`, else `false`. - * @example - * - * _.isNull(null); - * // => true - * - * _.isNull(void 0); - * // => false - */ - function isNull(value) { - return value === null; - } - - /** - * Checks if `value` is `null` or `undefined`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is nullish, else `false`. - * @example - * - * _.isNil(null); - * // => true - * - * _.isNil(void 0); - * // => true - * - * _.isNil(NaN); - * // => false - */ - function isNil(value) { - return value == null; - } - - /** - * Checks if `value` is classified as a `Number` primitive or object. - * - * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are - * classified as numbers, use the `_.isFinite` method. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a number, else `false`. - * @example - * - * _.isNumber(3); - * // => true - * - * _.isNumber(Number.MIN_VALUE); - * // => true - * - * _.isNumber(Infinity); - * // => true - * - * _.isNumber('3'); - * // => false - */ - function isNumber(value) { - return typeof value == 'number' || - (isObjectLike(value) && baseGetTag(value) == numberTag); - } - - /** - * Checks if `value` is a plain object, that is, an object created by the - * `Object` constructor or one with a `[[Prototype]]` of `null`. - * - * @static - * @memberOf _ - * @since 0.8.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * _.isPlainObject(new Foo); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'x': 0, 'y': 0 }); - * // => true - * - * _.isPlainObject(Object.create(null)); - * // => true - */ - function isPlainObject(value) { - if (!isObjectLike(value) || baseGetTag(value) != objectTag) { - return false; - } - var proto = getPrototype(value); - if (proto === null) { - return true; - } - var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; - return typeof Ctor == 'function' && Ctor instanceof Ctor && - funcToString.call(Ctor) == objectCtorString; - } - - /** - * Checks if `value` is classified as a `RegExp` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. - * @example - * - * _.isRegExp(/abc/); - * // => true - * - * _.isRegExp('/abc/'); - * // => false - */ - var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; - - /** - * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 - * double precision number which isn't the result of a rounded unsafe integer. - * - * **Note:** This method is based on - * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. - * @example - * - * _.isSafeInteger(3); - * // => true - * - * _.isSafeInteger(Number.MIN_VALUE); - * // => false - * - * _.isSafeInteger(Infinity); - * // => false - * - * _.isSafeInteger('3'); - * // => false - */ - function isSafeInteger(value) { - return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; - } - - /** - * Checks if `value` is classified as a `Set` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. - * @example - * - * _.isSet(new Set); - * // => true - * - * _.isSet(new WeakSet); - * // => false - */ - var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; - - /** - * Checks if `value` is classified as a `String` primitive or object. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a string, else `false`. - * @example - * - * _.isString('abc'); - * // => true - * - * _.isString(1); - * // => false - */ - function isString(value) { - return typeof value == 'string' || - (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); - } - - /** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ - function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && baseGetTag(value) == symbolTag); - } - - /** - * Checks if `value` is classified as a typed array. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - * @example - * - * _.isTypedArray(new Uint8Array); - * // => true - * - * _.isTypedArray([]); - * // => false - */ - var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; - - /** - * Checks if `value` is `undefined`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. - * @example - * - * _.isUndefined(void 0); - * // => true - * - * _.isUndefined(null); - * // => false - */ - function isUndefined(value) { - return value === undefined; - } - - /** - * Checks if `value` is classified as a `WeakMap` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a weak map, else `false`. - * @example - * - * _.isWeakMap(new WeakMap); - * // => true - * - * _.isWeakMap(new Map); - * // => false - */ - function isWeakMap(value) { - return isObjectLike(value) && getTag(value) == weakMapTag; - } - - /** - * Checks if `value` is classified as a `WeakSet` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a weak set, else `false`. - * @example - * - * _.isWeakSet(new WeakSet); - * // => true - * - * _.isWeakSet(new Set); - * // => false - */ - function isWeakSet(value) { - return isObjectLike(value) && baseGetTag(value) == weakSetTag; - } - - /** - * Checks if `value` is less than `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than `other`, - * else `false`. - * @see _.gt - * @example - * - * _.lt(1, 3); - * // => true - * - * _.lt(3, 3); - * // => false - * - * _.lt(3, 1); - * // => false - */ - var lt = createRelationalOperation(baseLt); - - /** - * Checks if `value` is less than or equal to `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than or equal to - * `other`, else `false`. - * @see _.gte - * @example - * - * _.lte(1, 3); - * // => true - * - * _.lte(3, 3); - * // => true - * - * _.lte(3, 1); - * // => false - */ - var lte = createRelationalOperation(function(value, other) { - return value <= other; - }); - - /** - * Converts `value` to an array. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to convert. - * @returns {Array} Returns the converted array. - * @example - * - * _.toArray({ 'a': 1, 'b': 2 }); - * // => [1, 2] - * - * _.toArray('abc'); - * // => ['a', 'b', 'c'] - * - * _.toArray(1); - * // => [] - * - * _.toArray(null); - * // => [] - */ - function toArray(value) { - if (!value) { - return []; - } - if (isArrayLike(value)) { - return isString(value) ? stringToArray(value) : copyArray(value); - } - if (symIterator && value[symIterator]) { - return iteratorToArray(value[symIterator]()); - } - var tag = getTag(value), - func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values); - - return func(value); - } - - /** - * Converts `value` to a finite number. - * - * @static - * @memberOf _ - * @since 4.12.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted number. - * @example - * - * _.toFinite(3.2); - * // => 3.2 - * - * _.toFinite(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toFinite(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toFinite('3.2'); - * // => 3.2 - */ - function toFinite(value) { - if (!value) { - return value === 0 ? value : 0; - } - value = toNumber(value); - if (value === INFINITY || value === -INFINITY) { - var sign = (value < 0 ? -1 : 1); - return sign * MAX_INTEGER; - } - return value === value ? value : 0; - } - - /** - * Converts `value` to an integer. - * - * **Note:** This method is loosely based on - * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toInteger(3.2); - * // => 3 - * - * _.toInteger(Number.MIN_VALUE); - * // => 0 - * - * _.toInteger(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toInteger('3.2'); - * // => 3 - */ - function toInteger(value) { - var result = toFinite(value), - remainder = result % 1; - - return result === result ? (remainder ? result - remainder : result) : 0; - } - - /** - * Converts `value` to an integer suitable for use as the length of an - * array-like object. - * - * **Note:** This method is based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toLength(3.2); - * // => 3 - * - * _.toLength(Number.MIN_VALUE); - * // => 0 - * - * _.toLength(Infinity); - * // => 4294967295 - * - * _.toLength('3.2'); - * // => 3 - */ - function toLength(value) { - return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; - } - - /** - * Converts `value` to a number. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {number} Returns the number. - * @example - * - * _.toNumber(3.2); - * // => 3.2 - * - * _.toNumber(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toNumber(Infinity); - * // => Infinity - * - * _.toNumber('3.2'); - * // => 3.2 - */ - function toNumber(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol(value)) { - return NAN; - } - if (isObject(value)) { - var other = typeof value.valueOf == 'function' ? value.valueOf() : value; - value = isObject(other) ? (other + '') : other; - } - if (typeof value != 'string') { - return value === 0 ? value : +value; - } - value = value.replace(reTrim, ''); - var isBinary = reIsBinary.test(value); - return (isBinary || reIsOctal.test(value)) - ? freeParseInt(value.slice(2), isBinary ? 2 : 8) - : (reIsBadHex.test(value) ? NAN : +value); - } - - /** - * Converts `value` to a plain object flattening inherited enumerable string - * keyed properties of `value` to own properties of the plain object. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {Object} Returns the converted plain object. - * @example - * - * function Foo() { - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.assign({ 'a': 1 }, new Foo); - * // => { 'a': 1, 'b': 2 } - * - * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); - * // => { 'a': 1, 'b': 2, 'c': 3 } - */ - function toPlainObject(value) { - return copyObject(value, keysIn(value)); - } - - /** - * Converts `value` to a safe integer. A safe integer can be compared and - * represented correctly. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toSafeInteger(3.2); - * // => 3 - * - * _.toSafeInteger(Number.MIN_VALUE); - * // => 0 - * - * _.toSafeInteger(Infinity); - * // => 9007199254740991 - * - * _.toSafeInteger('3.2'); - * // => 3 - */ - function toSafeInteger(value) { - return value - ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) - : (value === 0 ? value : 0); - } - - /** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ - function toString(value) { - return value == null ? '' : baseToString(value); - } - - /*------------------------------------------------------------------------*/ - - /** - * Assigns own enumerable string keyed properties of source objects to the - * destination object. Source objects are applied from left to right. - * Subsequent sources overwrite property assignments of previous sources. - * - * **Note:** This method mutates `object` and is loosely based on - * [`Object.assign`](https://mdn.io/Object/assign). - * - * @static - * @memberOf _ - * @since 0.10.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.assignIn - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * function Bar() { - * this.c = 3; - * } - * - * Foo.prototype.b = 2; - * Bar.prototype.d = 4; - * - * _.assign({ 'a': 0 }, new Foo, new Bar); - * // => { 'a': 1, 'c': 3 } - */ - var assign = createAssigner(function(object, source) { - if (isPrototype(source) || isArrayLike(source)) { - copyObject(source, keys(source), object); - return; - } - for (var key in source) { - if (hasOwnProperty.call(source, key)) { - assignValue(object, key, source[key]); - } - } - }); - - /** - * This method is like `_.assign` except that it iterates over own and - * inherited source properties. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias extend - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.assign - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * function Bar() { - * this.c = 3; - * } - * - * Foo.prototype.b = 2; - * Bar.prototype.d = 4; - * - * _.assignIn({ 'a': 0 }, new Foo, new Bar); - * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } - */ - var assignIn = createAssigner(function(object, source) { - copyObject(source, keysIn(source), object); - }); - - /** - * This method is like `_.assignIn` except that it accepts `customizer` - * which is invoked to produce the assigned values. If `customizer` returns - * `undefined`, assignment is handled by the method instead. The `customizer` - * is invoked with five arguments: (objValue, srcValue, key, object, source). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias extendWith - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @see _.assignWith - * @example - * - * function customizer(objValue, srcValue) { - * return _.isUndefined(objValue) ? srcValue : objValue; - * } - * - * var defaults = _.partialRight(_.assignInWith, customizer); - * - * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { - copyObject(source, keysIn(source), object, customizer); - }); - - /** - * This method is like `_.assign` except that it accepts `customizer` - * which is invoked to produce the assigned values. If `customizer` returns - * `undefined`, assignment is handled by the method instead. The `customizer` - * is invoked with five arguments: (objValue, srcValue, key, object, source). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @see _.assignInWith - * @example - * - * function customizer(objValue, srcValue) { - * return _.isUndefined(objValue) ? srcValue : objValue; - * } - * - * var defaults = _.partialRight(_.assignWith, customizer); - * - * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - var assignWith = createAssigner(function(object, source, srcIndex, customizer) { - copyObject(source, keys(source), object, customizer); - }); - - /** - * Creates an array of values corresponding to `paths` of `object`. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {...(string|string[])} [paths] The property paths to pick. - * @returns {Array} Returns the picked values. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; - * - * _.at(object, ['a[0].b.c', 'a[1]']); - * // => [3, 4] - */ - var at = flatRest(baseAt); - - /** - * Creates an object that inherits from the `prototype` object. If a - * `properties` object is given, its own enumerable string keyed properties - * are assigned to the created object. - * - * @static - * @memberOf _ - * @since 2.3.0 - * @category Object - * @param {Object} prototype The object to inherit from. - * @param {Object} [properties] The properties to assign to the object. - * @returns {Object} Returns the new object. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * function Circle() { - * Shape.call(this); - * } - * - * Circle.prototype = _.create(Shape.prototype, { - * 'constructor': Circle - * }); - * - * var circle = new Circle; - * circle instanceof Circle; - * // => true - * - * circle instanceof Shape; - * // => true - */ - function create(prototype, properties) { - var result = baseCreate(prototype); - return properties == null ? result : baseAssign(result, properties); - } - - /** - * Assigns own and inherited enumerable string keyed properties of source - * objects to the destination object for all destination properties that - * resolve to `undefined`. Source objects are applied from left to right. - * Once a property is set, additional values of the same property are ignored. - * - * **Note:** This method mutates `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.defaultsDeep - * @example - * - * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - var defaults = baseRest(function(object, sources) { - object = Object(object); - - var index = -1; - var length = sources.length; - var guard = length > 2 ? sources[2] : undefined; - - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - length = 1; - } - - while (++index < length) { - var source = sources[index]; - var props = keysIn(source); - var propsIndex = -1; - var propsLength = props.length; - - while (++propsIndex < propsLength) { - var key = props[propsIndex]; - var value = object[key]; - - if (value === undefined || - (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) { - object[key] = source[key]; - } - } - } - - return object; - }); - - /** - * This method is like `_.defaults` except that it recursively assigns - * default properties. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 3.10.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.defaults - * @example - * - * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); - * // => { 'a': { 'b': 2, 'c': 3 } } - */ - var defaultsDeep = baseRest(function(args) { - args.push(undefined, customDefaultsMerge); - return apply(mergeWith, undefined, args); - }); - - /** - * This method is like `_.find` except that it returns the key of the first - * element `predicate` returns truthy for instead of the element itself. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Object - * @param {Object} object The object to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {string|undefined} Returns the key of the matched element, - * else `undefined`. - * @example - * - * var users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * - * _.findKey(users, function(o) { return o.age < 40; }); - * // => 'barney' (iteration order is not guaranteed) - * - * // The `_.matches` iteratee shorthand. - * _.findKey(users, { 'age': 1, 'active': true }); - * // => 'pebbles' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findKey(users, ['active', false]); - * // => 'fred' - * - * // The `_.property` iteratee shorthand. - * _.findKey(users, 'active'); - * // => 'barney' - */ - function findKey(object, predicate) { - return baseFindKey(object, getIteratee(predicate, 3), baseForOwn); - } - - /** - * This method is like `_.findKey` except that it iterates over elements of - * a collection in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {string|undefined} Returns the key of the matched element, - * else `undefined`. - * @example - * - * var users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * - * _.findLastKey(users, function(o) { return o.age < 40; }); - * // => returns 'pebbles' assuming `_.findKey` returns 'barney' - * - * // The `_.matches` iteratee shorthand. - * _.findLastKey(users, { 'age': 36, 'active': true }); - * // => 'barney' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findLastKey(users, ['active', false]); - * // => 'fred' - * - * // The `_.property` iteratee shorthand. - * _.findLastKey(users, 'active'); - * // => 'pebbles' - */ - function findLastKey(object, predicate) { - return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); - } - - /** - * Iterates over own and inherited enumerable string keyed properties of an - * object and invokes `iteratee` for each property. The iteratee is invoked - * with three arguments: (value, key, object). Iteratee functions may exit - * iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 0.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forInRight - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forIn(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). - */ - function forIn(object, iteratee) { - return object == null - ? object - : baseFor(object, getIteratee(iteratee, 3), keysIn); - } - - /** - * This method is like `_.forIn` except that it iterates over properties of - * `object` in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forIn - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forInRight(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'. - */ - function forInRight(object, iteratee) { - return object == null - ? object - : baseForRight(object, getIteratee(iteratee, 3), keysIn); - } - - /** - * Iterates over own enumerable string keyed properties of an object and - * invokes `iteratee` for each property. The iteratee is invoked with three - * arguments: (value, key, object). Iteratee functions may exit iteration - * early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 0.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forOwnRight - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forOwn(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ - function forOwn(object, iteratee) { - return object && baseForOwn(object, getIteratee(iteratee, 3)); - } - - /** - * This method is like `_.forOwn` except that it iterates over properties of - * `object` in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forOwn - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forOwnRight(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'. - */ - function forOwnRight(object, iteratee) { - return object && baseForOwnRight(object, getIteratee(iteratee, 3)); - } - - /** - * Creates an array of function property names from own enumerable properties - * of `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the function names. - * @see _.functionsIn - * @example - * - * function Foo() { - * this.a = _.constant('a'); - * this.b = _.constant('b'); - * } - * - * Foo.prototype.c = _.constant('c'); - * - * _.functions(new Foo); - * // => ['a', 'b'] - */ - function functions(object) { - return object == null ? [] : baseFunctions(object, keys(object)); - } - - /** - * Creates an array of function property names from own and inherited - * enumerable properties of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the function names. - * @see _.functions - * @example - * - * function Foo() { - * this.a = _.constant('a'); - * this.b = _.constant('b'); - * } - * - * Foo.prototype.c = _.constant('c'); - * - * _.functionsIn(new Foo); - * // => ['a', 'b', 'c'] - */ - function functionsIn(object) { - return object == null ? [] : baseFunctions(object, keysIn(object)); - } - - /** - * Gets the value at `path` of `object`. If the resolved value is - * `undefined`, the `defaultValue` is returned in its place. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.get(object, 'a[0].b.c'); - * // => 3 - * - * _.get(object, ['a', '0', 'b', 'c']); - * // => 3 - * - * _.get(object, 'a.b.c', 'default'); - * // => 'default' - */ - function get(object, path, defaultValue) { - var result = object == null ? undefined : baseGet(object, path); - return result === undefined ? defaultValue : result; - } - - /** - * Checks if `path` is a direct property of `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = { 'a': { 'b': 2 } }; - * var other = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.has(object, 'a'); - * // => true - * - * _.has(object, 'a.b'); - * // => true - * - * _.has(object, ['a', 'b']); - * // => true - * - * _.has(other, 'a'); - * // => false - */ - function has(object, path) { - return object != null && hasPath(object, path, baseHas); - } - - /** - * Checks if `path` is a direct or inherited property of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.hasIn(object, 'a'); - * // => true - * - * _.hasIn(object, 'a.b'); - * // => true - * - * _.hasIn(object, ['a', 'b']); - * // => true - * - * _.hasIn(object, 'b'); - * // => false - */ - function hasIn(object, path) { - return object != null && hasPath(object, path, baseHasIn); - } - - /** - * Creates an object composed of the inverted keys and values of `object`. - * If `object` contains duplicate values, subsequent values overwrite - * property assignments of previous values. - * - * @static - * @memberOf _ - * @since 0.7.0 - * @category Object - * @param {Object} object The object to invert. - * @returns {Object} Returns the new inverted object. - * @example - * - * var object = { 'a': 1, 'b': 2, 'c': 1 }; - * - * _.invert(object); - * // => { '1': 'c', '2': 'b' } - */ - var invert = createInverter(function(result, value, key) { - if (value != null && - typeof value.toString != 'function') { - value = nativeObjectToString.call(value); - } - - result[value] = key; - }, constant(identity)); - - /** - * This method is like `_.invert` except that the inverted object is generated - * from the results of running each element of `object` thru `iteratee`. The - * corresponding inverted value of each inverted key is an array of keys - * responsible for generating the inverted value. The iteratee is invoked - * with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.1.0 - * @category Object - * @param {Object} object The object to invert. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Object} Returns the new inverted object. - * @example - * - * var object = { 'a': 1, 'b': 2, 'c': 1 }; - * - * _.invertBy(object); - * // => { '1': ['a', 'c'], '2': ['b'] } - * - * _.invertBy(object, function(value) { - * return 'group' + value; - * }); - * // => { 'group1': ['a', 'c'], 'group2': ['b'] } - */ - var invertBy = createInverter(function(result, value, key) { - if (value != null && - typeof value.toString != 'function') { - value = nativeObjectToString.call(value); - } - - if (hasOwnProperty.call(result, value)) { - result[value].push(key); - } else { - result[value] = [key]; - } - }, getIteratee); - - /** - * Invokes the method at `path` of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the method to invoke. - * @param {...*} [args] The arguments to invoke the method with. - * @returns {*} Returns the result of the invoked method. - * @example - * - * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] }; - * - * _.invoke(object, 'a[0].b.c.slice', 1, 3); - * // => [2, 3] - */ - var invoke = baseRest(baseInvoke); - - /** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * for more details. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ - function keys(object) { - return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); - } - - /** - * Creates an array of the own and inherited enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keysIn(new Foo); - * // => ['a', 'b', 'c'] (iteration order is not guaranteed) - */ - function keysIn(object) { - return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); - } - - /** - * The opposite of `_.mapValues`; this method creates an object with the - * same values as `object` and keys generated by running each own enumerable - * string keyed property of `object` thru `iteratee`. The iteratee is invoked - * with three arguments: (value, key, object). - * - * @static - * @memberOf _ - * @since 3.8.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns the new mapped object. - * @see _.mapValues - * @example - * - * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { - * return key + value; - * }); - * // => { 'a1': 1, 'b2': 2 } - */ - function mapKeys(object, iteratee) { - var result = {}; - iteratee = getIteratee(iteratee, 3); - - baseForOwn(object, function(value, key, object) { - baseAssignValue(result, iteratee(value, key, object), value); - }); - return result; - } - - /** - * Creates an object with the same keys as `object` and values generated - * by running each own enumerable string keyed property of `object` thru - * `iteratee`. The iteratee is invoked with three arguments: - * (value, key, object). - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns the new mapped object. - * @see _.mapKeys - * @example - * - * var users = { - * 'fred': { 'user': 'fred', 'age': 40 }, - * 'pebbles': { 'user': 'pebbles', 'age': 1 } - * }; - * - * _.mapValues(users, function(o) { return o.age; }); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - * - * // The `_.property` iteratee shorthand. - * _.mapValues(users, 'age'); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - */ - function mapValues(object, iteratee) { - var result = {}; - iteratee = getIteratee(iteratee, 3); - - baseForOwn(object, function(value, key, object) { - baseAssignValue(result, key, iteratee(value, key, object)); - }); - return result; - } - - /** - * This method is like `_.assign` except that it recursively merges own and - * inherited enumerable string keyed properties of source objects into the - * destination object. Source properties that resolve to `undefined` are - * skipped if a destination value exists. Array and plain object properties - * are merged recursively. Other objects and value types are overridden by - * assignment. Source objects are applied from left to right. Subsequent - * sources overwrite property assignments of previous sources. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @example - * - * var object = { - * 'a': [{ 'b': 2 }, { 'd': 4 }] - * }; - * - * var other = { - * 'a': [{ 'c': 3 }, { 'e': 5 }] - * }; - * - * _.merge(object, other); - * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } - */ - var merge = createAssigner(function(object, source, srcIndex) { - baseMerge(object, source, srcIndex); - }); - - /** - * This method is like `_.merge` except that it accepts `customizer` which - * is invoked to produce the merged values of the destination and source - * properties. If `customizer` returns `undefined`, merging is handled by the - * method instead. The `customizer` is invoked with six arguments: - * (objValue, srcValue, key, object, source, stack). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} customizer The function to customize assigned values. - * @returns {Object} Returns `object`. - * @example - * - * function customizer(objValue, srcValue) { - * if (_.isArray(objValue)) { - * return objValue.concat(srcValue); - * } - * } - * - * var object = { 'a': [1], 'b': [2] }; - * var other = { 'a': [3], 'b': [4] }; - * - * _.mergeWith(object, other, customizer); - * // => { 'a': [1, 3], 'b': [2, 4] } - */ - var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { - baseMerge(object, source, srcIndex, customizer); - }); - - /** - * The opposite of `_.pick`; this method creates an object composed of the - * own and inherited enumerable property paths of `object` that are not omitted. - * - * **Note:** This method is considerably slower than `_.pick`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {...(string|string[])} [paths] The property paths to omit. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.omit(object, ['a', 'c']); - * // => { 'b': '2' } - */ - var omit = flatRest(function(object, paths) { - var result = {}; - if (object == null) { - return result; - } - var isDeep = false; - paths = arrayMap(paths, function(path) { - path = castPath(path, object); - isDeep || (isDeep = path.length > 1); - return path; - }); - copyObject(object, getAllKeysIn(object), result); - if (isDeep) { - result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); - } - var length = paths.length; - while (length--) { - baseUnset(result, paths[length]); - } - return result; - }); - - /** - * The opposite of `_.pickBy`; this method creates an object composed of - * the own and inherited enumerable string keyed properties of `object` that - * `predicate` doesn't return truthy for. The predicate is invoked with two - * arguments: (value, key). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The source object. - * @param {Function} [predicate=_.identity] The function invoked per property. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.omitBy(object, _.isNumber); - * // => { 'b': '2' } - */ - function omitBy(object, predicate) { - return pickBy(object, negate(getIteratee(predicate))); - } - - /** - * Creates an object composed of the picked `object` properties. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {...(string|string[])} [paths] The property paths to pick. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.pick(object, ['a', 'c']); - * // => { 'a': 1, 'c': 3 } - */ - var pick = flatRest(function(object, paths) { - return object == null ? {} : basePick(object, paths); - }); - - /** - * Creates an object composed of the `object` properties `predicate` returns - * truthy for. The predicate is invoked with two arguments: (value, key). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The source object. - * @param {Function} [predicate=_.identity] The function invoked per property. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.pickBy(object, _.isNumber); - * // => { 'a': 1, 'c': 3 } - */ - function pickBy(object, predicate) { - if (object == null) { - return {}; - } - var props = arrayMap(getAllKeysIn(object), function(prop) { - return [prop]; - }); - predicate = getIteratee(predicate); - return basePickBy(object, props, function(value, path) { - return predicate(value, path[0]); - }); - } - - /** - * This method is like `_.get` except that if the resolved value is a - * function it's invoked with the `this` binding of its parent object and - * its result is returned. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to resolve. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; - * - * _.result(object, 'a[0].b.c1'); - * // => 3 - * - * _.result(object, 'a[0].b.c2'); - * // => 4 - * - * _.result(object, 'a[0].b.c3', 'default'); - * // => 'default' - * - * _.result(object, 'a[0].b.c3', _.constant('default')); - * // => 'default' - */ - function result(object, path, defaultValue) { - path = castPath(path, object); - - var index = -1, - length = path.length; - - // Ensure the loop is entered when path is empty. - if (!length) { - length = 1; - object = undefined; - } - while (++index < length) { - var value = object == null ? undefined : object[toKey(path[index])]; - if (value === undefined) { - index = length; - value = defaultValue; - } - object = isFunction(value) ? value.call(object) : value; - } - return object; - } - - /** - * Sets the value at `path` of `object`. If a portion of `path` doesn't exist, - * it's created. Arrays are created for missing index properties while objects - * are created for all other missing properties. Use `_.setWith` to customize - * `path` creation. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @returns {Object} Returns `object`. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.set(object, 'a[0].b.c', 4); - * console.log(object.a[0].b.c); - * // => 4 - * - * _.set(object, ['x', '0', 'y', 'z'], 5); - * console.log(object.x[0].y.z); - * // => 5 - */ - function set(object, path, value) { - return object == null ? object : baseSet(object, path, value); - } - - /** - * This method is like `_.set` except that it accepts `customizer` which is - * invoked to produce the objects of `path`. If `customizer` returns `undefined` - * path creation is handled by the method instead. The `customizer` is invoked - * with three arguments: (nsValue, key, nsObject). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @example - * - * var object = {}; - * - * _.setWith(object, '[0][1]', 'a', Object); - * // => { '0': { '1': 'a' } } - */ - function setWith(object, path, value, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return object == null ? object : baseSet(object, path, value, customizer); - } - - /** - * Creates an array of own enumerable string keyed-value pairs for `object` - * which can be consumed by `_.fromPairs`. If `object` is a map or set, its - * entries are returned. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias entries - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the key-value pairs. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.toPairs(new Foo); - * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed) - */ - var toPairs = createToPairs(keys); - - /** - * Creates an array of own and inherited enumerable string keyed-value pairs - * for `object` which can be consumed by `_.fromPairs`. If `object` is a map - * or set, its entries are returned. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias entriesIn - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the key-value pairs. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.toPairsIn(new Foo); - * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed) - */ - var toPairsIn = createToPairs(keysIn); - - /** - * An alternative to `_.reduce`; this method transforms `object` to a new - * `accumulator` object which is the result of running each of its own - * enumerable string keyed properties thru `iteratee`, with each invocation - * potentially mutating the `accumulator` object. If `accumulator` is not - * provided, a new object with the same `[[Prototype]]` will be used. The - * iteratee is invoked with four arguments: (accumulator, value, key, object). - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 1.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The custom accumulator value. - * @returns {*} Returns the accumulated value. - * @example - * - * _.transform([2, 3, 4], function(result, n) { - * result.push(n *= n); - * return n % 2 == 0; - * }, []); - * // => [4, 9] - * - * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { - * (result[value] || (result[value] = [])).push(key); - * }, {}); - * // => { '1': ['a', 'c'], '2': ['b'] } - */ - function transform(object, iteratee, accumulator) { - var isArr = isArray(object), - isArrLike = isArr || isBuffer(object) || isTypedArray(object); - - iteratee = getIteratee(iteratee, 4); - if (accumulator == null) { - var Ctor = object && object.constructor; - if (isArrLike) { - accumulator = isArr ? new Ctor : []; - } - else if (isObject(object)) { - accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; - } - else { - accumulator = {}; - } - } - (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) { - return iteratee(accumulator, value, index, object); - }); - return accumulator; - } - - /** - * Removes the property at `path` of `object`. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to unset. - * @returns {boolean} Returns `true` if the property is deleted, else `false`. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 7 } }] }; - * _.unset(object, 'a[0].b.c'); - * // => true - * - * console.log(object); - * // => { 'a': [{ 'b': {} }] }; - * - * _.unset(object, ['a', '0', 'b', 'c']); - * // => true - * - * console.log(object); - * // => { 'a': [{ 'b': {} }] }; - */ - function unset(object, path) { - return object == null ? true : baseUnset(object, path); - } - - /** - * This method is like `_.set` except that accepts `updater` to produce the - * value to set. Use `_.updateWith` to customize `path` creation. The `updater` - * is invoked with one argument: (value). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.6.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {Function} updater The function to produce the updated value. - * @returns {Object} Returns `object`. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.update(object, 'a[0].b.c', function(n) { return n * n; }); - * console.log(object.a[0].b.c); - * // => 9 - * - * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; }); - * console.log(object.x[0].y.z); - * // => 0 - */ - function update(object, path, updater) { - return object == null ? object : baseUpdate(object, path, castFunction(updater)); - } - - /** - * This method is like `_.update` except that it accepts `customizer` which is - * invoked to produce the objects of `path`. If `customizer` returns `undefined` - * path creation is handled by the method instead. The `customizer` is invoked - * with three arguments: (nsValue, key, nsObject). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.6.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {Function} updater The function to produce the updated value. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @example - * - * var object = {}; - * - * _.updateWith(object, '[0][1]', _.constant('a'), Object); - * // => { '0': { '1': 'a' } } - */ - function updateWith(object, path, updater, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer); - } - - /** - * Creates an array of the own enumerable string keyed property values of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property values. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.values(new Foo); - * // => [1, 2] (iteration order is not guaranteed) - * - * _.values('hi'); - * // => ['h', 'i'] - */ - function values(object) { - return object == null ? [] : baseValues(object, keys(object)); - } - - /** - * Creates an array of the own and inherited enumerable string keyed property - * values of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property values. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.valuesIn(new Foo); - * // => [1, 2, 3] (iteration order is not guaranteed) - */ - function valuesIn(object) { - return object == null ? [] : baseValues(object, keysIn(object)); - } - - /*------------------------------------------------------------------------*/ - - /** - * Clamps `number` within the inclusive `lower` and `upper` bounds. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Number - * @param {number} number The number to clamp. - * @param {number} [lower] The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the clamped number. - * @example - * - * _.clamp(-10, -5, 5); - * // => -5 - * - * _.clamp(10, -5, 5); - * // => 5 - */ - function clamp(number, lower, upper) { - if (upper === undefined) { - upper = lower; - lower = undefined; - } - if (upper !== undefined) { - upper = toNumber(upper); - upper = upper === upper ? upper : 0; - } - if (lower !== undefined) { - lower = toNumber(lower); - lower = lower === lower ? lower : 0; - } - return baseClamp(toNumber(number), lower, upper); - } - - /** - * Checks if `n` is between `start` and up to, but not including, `end`. If - * `end` is not specified, it's set to `start` with `start` then set to `0`. - * If `start` is greater than `end` the params are swapped to support - * negative ranges. - * - * @static - * @memberOf _ - * @since 3.3.0 - * @category Number - * @param {number} number The number to check. - * @param {number} [start=0] The start of the range. - * @param {number} end The end of the range. - * @returns {boolean} Returns `true` if `number` is in the range, else `false`. - * @see _.range, _.rangeRight - * @example - * - * _.inRange(3, 2, 4); - * // => true - * - * _.inRange(4, 8); - * // => true - * - * _.inRange(4, 2); - * // => false - * - * _.inRange(2, 2); - * // => false - * - * _.inRange(1.2, 2); - * // => true - * - * _.inRange(5.2, 4); - * // => false - * - * _.inRange(-3, -2, -6); - * // => true - */ - function inRange(number, start, end) { - start = toFinite(start); - if (end === undefined) { - end = start; - start = 0; - } else { - end = toFinite(end); - } - number = toNumber(number); - return baseInRange(number, start, end); - } - - /** - * Produces a random number between the inclusive `lower` and `upper` bounds. - * If only one argument is provided a number between `0` and the given number - * is returned. If `floating` is `true`, or either `lower` or `upper` are - * floats, a floating-point number is returned instead of an integer. - * - * **Note:** JavaScript follows the IEEE-754 standard for resolving - * floating-point values which can produce unexpected results. - * - * @static - * @memberOf _ - * @since 0.7.0 - * @category Number - * @param {number} [lower=0] The lower bound. - * @param {number} [upper=1] The upper bound. - * @param {boolean} [floating] Specify returning a floating-point number. - * @returns {number} Returns the random number. - * @example - * - * _.random(0, 5); - * // => an integer between 0 and 5 - * - * _.random(5); - * // => also an integer between 0 and 5 - * - * _.random(5, true); - * // => a floating-point number between 0 and 5 - * - * _.random(1.2, 5.2); - * // => a floating-point number between 1.2 and 5.2 - */ - function random(lower, upper, floating) { - if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) { - upper = floating = undefined; - } - if (floating === undefined) { - if (typeof upper == 'boolean') { - floating = upper; - upper = undefined; - } - else if (typeof lower == 'boolean') { - floating = lower; - lower = undefined; - } - } - if (lower === undefined && upper === undefined) { - lower = 0; - upper = 1; - } - else { - lower = toFinite(lower); - if (upper === undefined) { - upper = lower; - lower = 0; - } else { - upper = toFinite(upper); - } - } - if (lower > upper) { - var temp = lower; - lower = upper; - upper = temp; - } - if (floating || lower % 1 || upper % 1) { - var rand = nativeRandom(); - return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper); - } - return baseRandom(lower, upper); - } - - /*------------------------------------------------------------------------*/ - - /** - * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the camel cased string. - * @example - * - * _.camelCase('Foo Bar'); - * // => 'fooBar' - * - * _.camelCase('--foo-bar--'); - * // => 'fooBar' - * - * _.camelCase('__FOO_BAR__'); - * // => 'fooBar' - */ - var camelCase = createCompounder(function(result, word, index) { - word = word.toLowerCase(); - return result + (index ? capitalize(word) : word); - }); - - /** - * Converts the first character of `string` to upper case and the remaining - * to lower case. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to capitalize. - * @returns {string} Returns the capitalized string. - * @example - * - * _.capitalize('FRED'); - * // => 'Fred' - */ - function capitalize(string) { - return upperFirst(toString(string).toLowerCase()); - } - - /** - * Deburrs `string` by converting - * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) - * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) - * letters to basic Latin letters and removing - * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to deburr. - * @returns {string} Returns the deburred string. - * @example - * - * _.deburr('déjà vu'); - * // => 'deja vu' - */ - function deburr(string) { - string = toString(string); - return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); - } - - /** - * Checks if `string` ends with the given target string. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to inspect. - * @param {string} [target] The string to search for. - * @param {number} [position=string.length] The position to search up to. - * @returns {boolean} Returns `true` if `string` ends with `target`, - * else `false`. - * @example - * - * _.endsWith('abc', 'c'); - * // => true - * - * _.endsWith('abc', 'b'); - * // => false - * - * _.endsWith('abc', 'b', 2); - * // => true - */ - function endsWith(string, target, position) { - string = toString(string); - target = baseToString(target); - - var length = string.length; - position = position === undefined - ? length - : baseClamp(toInteger(position), 0, length); - - var end = position; - position -= target.length; - return position >= 0 && string.slice(position, end) == target; - } - - /** - * Converts the characters "&", "<", ">", '"', and "'" in `string` to their - * corresponding HTML entities. - * - * **Note:** No other characters are escaped. To escape additional - * characters use a third-party library like [_he_](https://mths.be/he). - * - * Though the ">" character is escaped for symmetry, characters like - * ">" and "/" don't need escaping in HTML and have no special meaning - * unless they're part of a tag or unquoted attribute value. See - * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) - * (under "semi-related fun fact") for more details. - * - * When working with HTML you should always - * [quote attribute values](http://wonko.com/post/html-escaping) to reduce - * XSS vectors. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escape('fred, barney, & pebbles'); - * // => 'fred, barney, & pebbles' - */ - function escape(string) { - string = toString(string); - return (string && reHasUnescapedHtml.test(string)) - ? string.replace(reUnescapedHtml, escapeHtmlChar) - : string; - } - - /** - * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", - * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escapeRegExp('[lodash](https://lodash.com/)'); - * // => '\[lodash\]\(https://lodash\.com/\)' - */ - function escapeRegExp(string) { - string = toString(string); - return (string && reHasRegExpChar.test(string)) - ? string.replace(reRegExpChar, '\\$&') - : string; - } - - /** - * Converts `string` to - * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the kebab cased string. - * @example - * - * _.kebabCase('Foo Bar'); - * // => 'foo-bar' - * - * _.kebabCase('fooBar'); - * // => 'foo-bar' - * - * _.kebabCase('__FOO_BAR__'); - * // => 'foo-bar' - */ - var kebabCase = createCompounder(function(result, word, index) { - return result + (index ? '-' : '') + word.toLowerCase(); - }); - - /** - * Converts `string`, as space separated words, to lower case. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the lower cased string. - * @example - * - * _.lowerCase('--Foo-Bar--'); - * // => 'foo bar' - * - * _.lowerCase('fooBar'); - * // => 'foo bar' - * - * _.lowerCase('__FOO_BAR__'); - * // => 'foo bar' - */ - var lowerCase = createCompounder(function(result, word, index) { - return result + (index ? ' ' : '') + word.toLowerCase(); - }); - - /** - * Converts the first character of `string` to lower case. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.lowerFirst('Fred'); - * // => 'fred' - * - * _.lowerFirst('FRED'); - * // => 'fRED' - */ - var lowerFirst = createCaseFirst('toLowerCase'); - - /** - * Pads `string` on the left and right sides if it's shorter than `length`. - * Padding characters are truncated if they can't be evenly divided by `length`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. - * @example - * - * _.pad('abc', 8); - * // => ' abc ' - * - * _.pad('abc', 8, '_-'); - * // => '_-abc_-_' - * - * _.pad('abc', 3); - * // => 'abc' - */ - function pad(string, length, chars) { - string = toString(string); - length = toInteger(length); - - var strLength = length ? stringSize(string) : 0; - if (!length || strLength >= length) { - return string; - } - var mid = (length - strLength) / 2; - return ( - createPadding(nativeFloor(mid), chars) + - string + - createPadding(nativeCeil(mid), chars) - ); - } - - /** - * Pads `string` on the right side if it's shorter than `length`. Padding - * characters are truncated if they exceed `length`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. - * @example - * - * _.padEnd('abc', 6); - * // => 'abc ' - * - * _.padEnd('abc', 6, '_-'); - * // => 'abc_-_' - * - * _.padEnd('abc', 3); - * // => 'abc' - */ - function padEnd(string, length, chars) { - string = toString(string); - length = toInteger(length); - - var strLength = length ? stringSize(string) : 0; - return (length && strLength < length) - ? (string + createPadding(length - strLength, chars)) - : string; - } - - /** - * Pads `string` on the left side if it's shorter than `length`. Padding - * characters are truncated if they exceed `length`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. - * @example - * - * _.padStart('abc', 6); - * // => ' abc' - * - * _.padStart('abc', 6, '_-'); - * // => '_-_abc' - * - * _.padStart('abc', 3); - * // => 'abc' - */ - function padStart(string, length, chars) { - string = toString(string); - length = toInteger(length); - - var strLength = length ? stringSize(string) : 0; - return (length && strLength < length) - ? (createPadding(length - strLength, chars) + string) - : string; - } - - /** - * Converts `string` to an integer of the specified radix. If `radix` is - * `undefined` or `0`, a `radix` of `10` is used unless `value` is a - * hexadecimal, in which case a `radix` of `16` is used. - * - * **Note:** This method aligns with the - * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category String - * @param {string} string The string to convert. - * @param {number} [radix=10] The radix to interpret `value` by. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {number} Returns the converted integer. - * @example - * - * _.parseInt('08'); - * // => 8 - * - * _.map(['6', '08', '10'], _.parseInt); - * // => [6, 8, 10] - */ - function parseInt(string, radix, guard) { - if (guard || radix == null) { - radix = 0; - } else if (radix) { - radix = +radix; - } - return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0); - } - - /** - * Repeats the given string `n` times. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to repeat. - * @param {number} [n=1] The number of times to repeat the string. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {string} Returns the repeated string. - * @example - * - * _.repeat('*', 3); - * // => '***' - * - * _.repeat('abc', 2); - * // => 'abcabc' - * - * _.repeat('abc', 0); - * // => '' - */ - function repeat(string, n, guard) { - if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) { - n = 1; - } else { - n = toInteger(n); - } - return baseRepeat(toString(string), n); - } - - /** - * Replaces matches for `pattern` in `string` with `replacement`. - * - * **Note:** This method is based on - * [`String#replace`](https://mdn.io/String/replace). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to modify. - * @param {RegExp|string} pattern The pattern to replace. - * @param {Function|string} replacement The match replacement. - * @returns {string} Returns the modified string. - * @example - * - * _.replace('Hi Fred', 'Fred', 'Barney'); - * // => 'Hi Barney' - */ - function replace() { - var args = arguments, - string = toString(args[0]); - - return args.length < 3 ? string : string.replace(args[1], args[2]); - } - - /** - * Converts `string` to - * [snake case](https://en.wikipedia.org/wiki/Snake_case). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the snake cased string. - * @example - * - * _.snakeCase('Foo Bar'); - * // => 'foo_bar' - * - * _.snakeCase('fooBar'); - * // => 'foo_bar' - * - * _.snakeCase('--FOO-BAR--'); - * // => 'foo_bar' - */ - var snakeCase = createCompounder(function(result, word, index) { - return result + (index ? '_' : '') + word.toLowerCase(); - }); - - /** - * Splits `string` by `separator`. - * - * **Note:** This method is based on - * [`String#split`](https://mdn.io/String/split). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to split. - * @param {RegExp|string} separator The separator pattern to split by. - * @param {number} [limit] The length to truncate results to. - * @returns {Array} Returns the string segments. - * @example - * - * _.split('a-b-c', '-', 2); - * // => ['a', 'b'] - */ - function split(string, separator, limit) { - if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) { - separator = limit = undefined; - } - limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0; - if (!limit) { - return []; - } - string = toString(string); - if (string && ( - typeof separator == 'string' || - (separator != null && !isRegExp(separator)) - )) { - separator = baseToString(separator); - if (!separator && hasUnicode(string)) { - return castSlice(stringToArray(string), 0, limit); - } - } - return string.split(separator, limit); - } - - /** - * Converts `string` to - * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). - * - * @static - * @memberOf _ - * @since 3.1.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the start cased string. - * @example - * - * _.startCase('--foo-bar--'); - * // => 'Foo Bar' - * - * _.startCase('fooBar'); - * // => 'Foo Bar' - * - * _.startCase('__FOO_BAR__'); - * // => 'FOO BAR' - */ - var startCase = createCompounder(function(result, word, index) { - return result + (index ? ' ' : '') + upperFirst(word); - }); - - /** - * Checks if `string` starts with the given target string. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to inspect. - * @param {string} [target] The string to search for. - * @param {number} [position=0] The position to search from. - * @returns {boolean} Returns `true` if `string` starts with `target`, - * else `false`. - * @example - * - * _.startsWith('abc', 'a'); - * // => true - * - * _.startsWith('abc', 'b'); - * // => false - * - * _.startsWith('abc', 'b', 1); - * // => true - */ - function startsWith(string, target, position) { - string = toString(string); - position = position == null - ? 0 - : baseClamp(toInteger(position), 0, string.length); - - target = baseToString(target); - return string.slice(position, position + target.length) == target; - } - - /** - * Creates a compiled template function that can interpolate data properties - * in "interpolate" delimiters, HTML-escape interpolated data properties in - * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data - * properties may be accessed as free variables in the template. If a setting - * object is given, it takes precedence over `_.templateSettings` values. - * - * **Note:** In the development build `_.template` utilizes - * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) - * for easier debugging. - * - * For more information on precompiling templates see - * [lodash's custom builds documentation](https://lodash.com/custom-builds). - * - * For more information on Chrome extension sandboxes see - * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category String - * @param {string} [string=''] The template string. - * @param {Object} [options={}] The options object. - * @param {RegExp} [options.escape=_.templateSettings.escape] - * The HTML "escape" delimiter. - * @param {RegExp} [options.evaluate=_.templateSettings.evaluate] - * The "evaluate" delimiter. - * @param {Object} [options.imports=_.templateSettings.imports] - * An object to import into the template as free variables. - * @param {RegExp} [options.interpolate=_.templateSettings.interpolate] - * The "interpolate" delimiter. - * @param {string} [options.sourceURL='lodash.templateSources[n]'] - * The sourceURL of the compiled template. - * @param {string} [options.variable='obj'] - * The data object variable name. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the compiled template function. - * @example - * - * // Use the "interpolate" delimiter to create a compiled template. - * var compiled = _.template('hello <%= user %>!'); - * compiled({ 'user': 'fred' }); - * // => 'hello fred!' - * - * // Use the HTML "escape" delimiter to escape data property values. - * var compiled = _.template('<%- value %>'); - * compiled({ 'value': ''); - expect(content).not.toMatch(''); - }); - - it('should generate main.dev.ts and main.prod.ts', async () => { - host = await schematicRunner.runSchematicAsync('ng-add', defaultOptions, host).toPromise(); - const {files} = host; - expect(files).toContain('/src/main.dev.ts'); - expect(files).toContain('/src/main.prod.ts'); - }); - - it('should overwrite .gitignore for bazel-out directory', async () => { - host.create('.gitignore', '\n# compiled output\n'); - host = await schematicRunner.runSchematicAsync('ng-add', defaultOptions, host).toPromise(); - const {files} = host; - expect(files).toContain('/.gitignore'); - const content = host.readContent('/.gitignore'); - expect(content).toMatch('\n# compiled output\n/bazel-out\n'); - }); - - it('should create a backup for original angular.json', async () => { - expect(host.files).toContain('/angular.json'); - const original = host.readContent('/angular.json'); - host = await schematicRunner.runSchematicAsync('ng-add', defaultOptions, host).toPromise(); - expect(host.files).toContain('/angular.json.bak'); - const content = host.readContent('/angular.json.bak'); - expect(content.startsWith('// This is a backup file')).toBe(true); - expect(content).toMatch(original); - }); - - it('should update angular.json to use Bazel builder', async () => { - host = await schematicRunner.runSchematicAsync('ng-add', defaultOptions, host).toPromise(); - const {files} = host; - expect(files).toContain('/angular.json'); - const content = host.readContent('/angular.json'); - expect(() => JSON.parse(content)).not.toThrow(); - const json = JSON.parse(content); - const demo = json.projects.demo; - const demo_e2e = json.projects['demo-e2e']; - const {build, serve, test} = demo.architect; - expect(build.builder).toBe('@angular/bazel:build'); - expect(serve.builder).toBe('@angular/bazel:build'); - expect(test.builder).toBe('@angular/bazel:build'); - const {e2e, lint} = demo_e2e.architect; - expect(e2e.builder).toBe('@angular/bazel:build'); - // it should leave non-Bazel commands unmodified - expect(demo.architect['extract-i18n'].builder) - .toBe('@angular-devkit/build-angular:extract-i18n'); - expect(lint.builder).toBe('@angular-devkit/build-angular:tslint'); - }); - - it('should get defaultProject if name is not provided', async () => { - const options = {}; - host = await schematicRunner.runSchematicAsync('ng-add', options, host).toPromise(); - const content = host.readContent('/angular.json'); - const json = JSON.parse(content); - const builder = json.projects.demo.architect.build.builder; - expect(builder).toBe('@angular/bazel:build'); - }); - - describe('rxjs', () => { - const cases = [ - // version|upgrade - ['6.3.3', true], - ['~6.3.3', true], - ['^6.3.3', true], - ['~6.3.11', true], - ['6.4.0', true], - ['~6.4.0', true], - ['~6.4.1', true], - ['6.5.0', false], - ['~6.5.0', false], - ['^6.5.0', false], - ['~7.0.1', false], - ]; - for (const [version, upgrade] of cases) { - it(`should ${upgrade ? '' : 'not '}upgrade v${version}')`, async () => { - host.overwrite('package.json', JSON.stringify({ - name: 'demo', - dependencies: { - '@angular/core': '1.2.3', - 'rxjs': version, - }, - devDependencies: { - 'typescript': '3.2.2', - }, - })); - host = await schematicRunner.runSchematicAsync('ng-add', defaultOptions, host).toPromise(); - expect(host.files).toContain('/package.json'); - const content = host.readContent('/package.json'); - const json = JSON.parse(content); - if (upgrade) { - expect(json.dependencies.rxjs).toBe('~6.5.3'); - } else { - expect(json.dependencies.rxjs).toBe(version); - } - }); - } - }); - - it('should add a postinstall step to package.json', async () => { - host = await schematicRunner.runSchematicAsync('ng-add', defaultOptions, host).toPromise(); - expect(host.files).toContain('/package.json'); - const content = host.readContent('/package.json'); - const json = JSON.parse(content); - expect(json.scripts.postinstall).toBe('ngcc --properties es2015 browser module main'); - }); - - it('should work when run on a minimal project (without test and e2e targets)', async () => { - host.overwrite('angular.json', JSON.stringify({ - projects: { - 'demo': { - architect: { - build: {}, - serve: {}, - 'extract-i18n': { - builder: '@angular-devkit/build-angular:extract-i18n', - }, - }, - }, - }, - })); - - let error: Error|null = null; - - try { - await schematicRunner.runSchematicAsync('ng-add', defaultOptions, host).toPromise(); - } catch (e) { - error = e; - } - - expect(error).toBeNull(); - }); -}); diff --git a/packages/bazel/src/schematics/ng-add/schema.d.ts b/packages/bazel/src/schematics/ng-add/schema.d.ts deleted file mode 100644 index 9fa5a4be2b..0000000000 --- a/packages/bazel/src/schematics/ng-add/schema.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -export interface Schema { - /** - * The name of the project. - */ - name?: string; - /** - * When true, does not install dependency packages. - */ - skipInstall?: boolean; -} diff --git a/packages/bazel/src/schematics/ng-new/index.ts b/packages/bazel/src/schematics/ng-new/index.ts deleted file mode 100644 index 05ffc596da..0000000000 --- a/packages/bazel/src/schematics/ng-new/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * @license - * 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 - * - * @fileoverview Schematics for ng-new project that builds with Bazel. - */ - -import {chain, externalSchematic, Rule, schematic, Tree} from '@angular-devkit/schematics'; -import {validateProjectName} from '@schematics/angular/utility/validation'; - -import {Schema} from './schema'; - -export default function(options: Schema): Rule { - return (host: Tree) => { - validateProjectName(options.name); - - return chain([ - externalSchematic('@schematics/angular', 'ng-new', options), - schematic( - 'ng-add', { - name: options.name, - // skip install since `ng-new` above will schedule the task - skipInstall: true, - }, - { - scope: options.name, - }), - ]); - }; -} diff --git a/packages/bazel/src/schematics/ng-new/index_spec.ts b/packages/bazel/src/schematics/ng-new/index_spec.ts deleted file mode 100644 index 99322d7bac..0000000000 --- a/packages/bazel/src/schematics/ng-new/index_spec.ts +++ /dev/null @@ -1,37 +0,0 @@ -/** - * @license - * 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 - */ - -import {SchematicTestRunner} from '@angular-devkit/schematics/testing'; - -describe('ng-new schematic', () => { - const schematicRunner = new SchematicTestRunner( - '@angular/bazel', - require.resolve('../collection.json'), - ); - const defaultOptions = { - name: 'demo', - version: '7.0.0', - }; - - it('should call external @schematics/angular', async () => { - const options = {...defaultOptions}; - const host = await schematicRunner.runSchematicAsync('ng-new', options).toPromise(); - const {files} = host; - // External schematic should produce workspace file angular.json - expect(files).toContain('/demo/angular.json'); - expect(files).toContain('/demo/package.json'); - }); - - it('should call ng-add to generate additional files needed by Bazel', async () => { - const options = {...defaultOptions}; - const host = await schematicRunner.runSchematicAsync('ng-new', options).toPromise(); - const {files} = host; - expect(files).toContain('/demo/src/main.dev.ts'); - expect(files).toContain('/demo/src/main.prod.ts'); - }); -}); diff --git a/packages/bazel/src/schematics/ng-new/schema.d.ts b/packages/bazel/src/schematics/ng-new/schema.d.ts deleted file mode 100644 index a734a45e27..0000000000 --- a/packages/bazel/src/schematics/ng-new/schema.d.ts +++ /dev/null @@ -1,112 +0,0 @@ -/** - * @license - * 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 - */ - -export interface Schema { - /** - * Initial git repository commit information. - */ - commit?: CommitUnion; - /** - * When true (the default), creates a new initial app project in the src folder of the new - * workspace. When false, creates an empty workspace with no initial app. You can then use - * the generate application command so that all apps are created in the projects folder. - */ - createApplication?: boolean; - /** - * The directory name to create the workspace in. - */ - directory?: string; - /** - * When true, creates a new app that uses the Ivy rendering engine. - */ - enableIvy?: boolean; - /** - * When true, includes styles inline in the component TS file. By default, an external - * styles file is created and referenced in the component TS file. - */ - inlineStyle?: boolean; - /** - * When true, includes template inline in the component TS file. By default, an external - * template file is created and referenced in the component TS file. - */ - inlineTemplate?: boolean; - /** - * When true, links the CLI to the global version (internal development only). - */ - linkCli?: boolean; - /** - * When true, creates a project without any testing frameworks. (Use for learning purposes - * only.) - */ - minimal?: boolean; - /** - * The name of the new workspace and initial project. - */ - name: string; - /** - * The path where new projects will be created, relative to the new workspace root. - */ - newProjectRoot?: string; - /** - * The prefix to apply to generated selectors for the initial project. - */ - prefix?: string; - /** - * When true, generates a routing module for the initial project. - */ - routing?: boolean; - /** - * When true, does not initialize a git repository. - */ - skipGit?: boolean; - /** - * When true, does not install dependency packages. - */ - skipInstall?: boolean; - /** - * When true, does not generate "spec.ts" test files for the new project. - */ - skipTests?: boolean; - /** - * The file extension or preprocessor to use for style files. - */ - style?: Style; - /** - * The version of the Angular CLI to use. - */ - version: string; - /** - * The view encapsulation strategy to use in the initial project. - */ - viewEncapsulation?: ViewEncapsulation; -} -/** - * Initial git repository commit information. - */ -export declare type CommitUnion = boolean | CommitObject; -export interface CommitObject { - email: string; - message?: string; - name: string; -} -/** - * The file extension or preprocessor to use for style files. - */ -export declare enum Style { - Css = 'css', - Sass = 'sass', - Scss = 'scss', -} -/** - * The view encapsulation strategy to use in the initial project. - */ -export declare enum ViewEncapsulation { - Emulated = 'Emulated', - None = 'None', - ShadowDom = 'ShadowDom' -} diff --git a/packages/bazel/src/schematics/utility/json-utils.ts b/packages/bazel/src/schematics/utility/json-utils.ts deleted file mode 100644 index 4feb7f5f8f..0000000000 --- a/packages/bazel/src/schematics/utility/json-utils.ts +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @license - * 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 - */ - -import {JsonAstNode, JsonAstObject, JsonValue} from '@angular-devkit/core'; -import {UpdateRecorder} from '@angular-devkit/schematics'; -import {findPropertyInAstObject} from '@schematics/angular/utility/json-utils'; - -/** - * Replace the value of the key-value pair in the 'node' object with a different - * 'value' and record the update using the specified 'recorder'. - */ -export function replacePropertyInAstObject( - recorder: UpdateRecorder, node: JsonAstObject, propertyName: string, value: JsonValue, - indent: number = 0) { - const property = findPropertyInAstObject(node, propertyName); - if (property === null) { - throw new Error(`Property '${propertyName}' does not exist in JSON object`); - } - const {start, text} = property; - recorder.remove(start.offset, text.length); - const indentStr = '\n' + - ' '.repeat(indent); - const content = JSON.stringify(value, null, ' ').replace(/\n/g, indentStr); - recorder.insertLeft(start.offset, content); -} - -/** - * Remove the key-value pair with the specified 'key' in the specified 'node' - * object and record the update using the specified 'recorder'. - */ -export function removeKeyValueInAstObject( - recorder: UpdateRecorder, content: string, node: JsonAstObject, key: string) { - for (const [i, prop] of node.properties.entries()) { - if (prop.key.value === key) { - const start = prop.start.offset; - const end = prop.end.offset; - let length = end - start; - const match = content.slice(end).match(/^[,\s]+/); - if (match) { - length += match.pop()!.length; - } - recorder.remove(start, length); - if (i === node.properties.length - 1) { // last property - let offset = 0; - while (/(,|\s)/.test(content.charAt(start - offset - 1))) { - offset++; - } - recorder.remove(start - offset, offset); - } - return; - } - } -} - -/** - * Returns true if the specified 'node' is a JsonAstObject, false otherwise. - */ -export function isJsonAstObject(node: JsonAstNode|null): node is JsonAstObject { - return !!node && node.kind === 'object'; -} diff --git a/packages/bazel/src/schematics/utility/json-utils_spec.ts b/packages/bazel/src/schematics/utility/json-utils_spec.ts deleted file mode 100644 index e8abe05120..0000000000 --- a/packages/bazel/src/schematics/utility/json-utils_spec.ts +++ /dev/null @@ -1,110 +0,0 @@ -/** - * @license - * 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 - */ - -import {JsonAstObject, parseJsonAst} from '@angular-devkit/core'; -import {HostTree} from '@angular-devkit/schematics'; -import {UnitTestTree} from '@angular-devkit/schematics/testing'; -import {isJsonAstObject, removeKeyValueInAstObject, replacePropertyInAstObject} from './json-utils'; - -describe('JsonUtils', () => { - let tree: UnitTestTree; - beforeEach(() => { - tree = new UnitTestTree(new HostTree()); - }); - - describe('replacePropertyInAstObject', () => { - it('should replace property', () => { - const content = JSON.stringify({foo: {bar: 'baz'}}); - tree.create('tmp', content); - const ast = parseJsonAst(content) as JsonAstObject; - const recorder = tree.beginUpdate('tmp'); - replacePropertyInAstObject(recorder, ast, 'foo', [1, 2, 3]); - tree.commitUpdate(recorder); - const value = tree.readContent('tmp'); - expect(JSON.parse(value)).toEqual({ - foo: [1, 2, 3], - }); - expect(value).toBe(`{"foo":[ - 1, - 2, - 3 -]}`); - }); - - it('should respect the indent parameter', () => { - const content = JSON.stringify({hello: 'world'}, null, 2); - tree.create('tmp', content); - const ast = parseJsonAst(content) as JsonAstObject; - const recorder = tree.beginUpdate('tmp'); - replacePropertyInAstObject(recorder, ast, 'hello', 'world!', 2); - tree.commitUpdate(recorder); - const value = tree.readContent('tmp'); - expect(JSON.parse(value)).toEqual({ - hello: 'world!', - }); - expect(value).toBe(`{ - "hello": "world!" -}`); - }); - - it('should throw error if property is not found', () => { - const content = JSON.stringify({}); - tree.create('tmp', content); - const ast = parseJsonAst(content) as JsonAstObject; - const recorder = tree.beginUpdate('tmp'); - expect(() => replacePropertyInAstObject(recorder, ast, 'foo', 'bar')) - .toThrowError(`Property 'foo' does not exist in JSON object`); - }); - }); - - describe('removeKeyValueInAstObject', () => { - it('should remove key-value pair', () => { - const content = JSON.stringify({hello: 'world', foo: 'bar'}); - tree.create('tmp', content); - const ast = parseJsonAst(content) as JsonAstObject; - let recorder = tree.beginUpdate('tmp'); - removeKeyValueInAstObject(recorder, content, ast, 'foo'); - tree.commitUpdate(recorder); - const tmp = tree.readContent('tmp'); - expect(JSON.parse(tmp)).toEqual({ - hello: 'world', - }); - expect(tmp).toBe('{"hello":"world"}'); - recorder = tree.beginUpdate('tmp'); - const newContent = tree.readContent('tmp'); - removeKeyValueInAstObject(recorder, newContent, ast, 'hello'); - tree.commitUpdate(recorder); - const value = tree.readContent('tmp'); - expect(JSON.parse(value)).toEqual({}); - expect(value).toBe('{}'); - }); - - it('should be a noop if key is not found', () => { - const content = JSON.stringify({foo: 'bar'}); - tree.create('tmp', content); - const ast = parseJsonAst(content) as JsonAstObject; - let recorder = tree.beginUpdate('tmp'); - expect(() => removeKeyValueInAstObject(recorder, content, ast, 'hello')).not.toThrow(); - tree.commitUpdate(recorder); - const value = tree.readContent('tmp'); - expect(JSON.parse(value)).toEqual({foo: 'bar'}); - expect(value).toBe('{"foo":"bar"}'); - }); - }); - - describe('isJsonAstObject', () => { - it('should return true for an object', () => { - const ast = parseJsonAst(JSON.stringify({})); - expect(isJsonAstObject(ast)).toBe(true); - }); - it('should return false for a non-object', () => { - const ast = parseJsonAst(JSON.stringify([])); - expect(isJsonAstObject(ast)).toBe(false); - }); - }); -}); diff --git a/packages/bazel/src/schematics/utility/workspace-utils.ts b/packages/bazel/src/schematics/utility/workspace-utils.ts deleted file mode 100644 index ef1f43e608..0000000000 --- a/packages/bazel/src/schematics/utility/workspace-utils.ts +++ /dev/null @@ -1,40 +0,0 @@ -/** - * @license - * 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 - */ - -import {JsonAstNode, JsonAstObject} from '@angular-devkit/core'; -import {findPropertyInAstObject} from '@schematics/angular/utility/json-utils'; -import {isJsonAstObject} from './json-utils'; - -/** - * Find the e2e architect node in the JSON ast. - * The e2e application is relocated alongside the existing application. - * This function supports looking up the e2e architect in both the new and old - * layout. - * See https://github.com/angular/angular-cli/pull/13780 - */ -export function findE2eArchitect(ast: JsonAstObject, name: string): JsonAstObject|null { - const projects = findPropertyInAstObject(ast, 'projects'); - if (!isJsonAstObject(projects)) { - return null; - } - let architect: JsonAstNode|null; - const e2e = findPropertyInAstObject(projects, `${name}-e2e`); - if (isJsonAstObject(e2e)) { - architect = findPropertyInAstObject(e2e, 'architect'); - } else { - const project = findPropertyInAstObject(projects, name); - if (!isJsonAstObject(project)) { - return null; - } - architect = findPropertyInAstObject(project, 'architect'); - } - if (!isJsonAstObject(architect)) { - return null; - } - return architect; -} diff --git a/packages/bazel/src/schematics/utility/workspace-utils_spec.ts b/packages/bazel/src/schematics/utility/workspace-utils_spec.ts deleted file mode 100644 index 6d8909f32a..0000000000 --- a/packages/bazel/src/schematics/utility/workspace-utils_spec.ts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * @license - * 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 - */ - -import {JsonAstObject, parseJsonAst} from '@angular-devkit/core'; -import {isJsonAstObject} from './json-utils'; -import {findE2eArchitect} from './workspace-utils'; - -describe('Workspace utils', () => { - describe('findE2eArchitect', () => { - it('should find e2e architect in old project layout', () => { - const workspace = { - projects: { - demo: {}, - 'demo-e2e': { - architect: {}, - }, - }, - }; - const ast = parseJsonAst(JSON.stringify(workspace)); - const architect = findE2eArchitect(ast as JsonAstObject, 'demo'); - expect(isJsonAstObject(architect)).toBe(true); - }); - - it('should find e2e architect in new project layout', () => { - const workspace = { - projects: { - demo: { - architect: {}, - }, - }, - }; - const ast = parseJsonAst(JSON.stringify(workspace)); - const architect = findE2eArchitect(ast as JsonAstObject, 'demo'); - expect(isJsonAstObject(architect)).toBe(true); - }); - }); -}); diff --git a/packages/bazel/test/ng_package/BUILD.bazel b/packages/bazel/test/ng_package/BUILD.bazel index 0b2d2adb4a..46327cdf1e 100644 --- a/packages/bazel/test/ng_package/BUILD.bazel +++ b/packages/bazel/test/ng_package/BUILD.bazel @@ -13,6 +13,7 @@ ts_library( deps = [ "//packages:types", "//packages/private/testing", + "@npm//@bazel/runfiles", "@npm//@types/shelljs", ], ) @@ -34,6 +35,7 @@ ts_library( deps = [ "//packages:types", "//packages/private/testing", + "@npm//@bazel/runfiles", "@npm//@types/shelljs", ], ) @@ -53,6 +55,7 @@ ts_library( srcs = ["example_package.spec.ts"], deps = [ "//packages:types", + "@npm//@bazel/runfiles", "@npm//@types/diff", ], ) diff --git a/packages/bazel/test/ng_package/common_package.spec.ts b/packages/bazel/test/ng_package/common_package.spec.ts index 50e881b37b..527cadbe66 100644 --- a/packages/bazel/test/ng_package/common_package.spec.ts +++ b/packages/bazel/test/ng_package/common_package.spec.ts @@ -7,6 +7,7 @@ */ import {obsoleteInIvy} from '@angular/private/testing'; +import {runfiles} from '@bazel/runfiles'; import * as fs from 'fs'; import * as path from 'path'; import * as shx from 'shelljs'; @@ -42,24 +43,14 @@ describe('@angular/common ng_package', () => { expect(shx.ls('-R', 'bundles').stdout.split('\n').filter(n => !!n).sort()).toEqual([ 'common-http-testing.umd.js', 'common-http-testing.umd.js.map', - 'common-http-testing.umd.min.js', - 'common-http-testing.umd.min.js.map', 'common-http.umd.js', 'common-http.umd.js.map', - 'common-http.umd.min.js', - 'common-http.umd.min.js.map', 'common-testing.umd.js', 'common-testing.umd.js.map', - 'common-testing.umd.min.js', - 'common-testing.umd.min.js.map', 'common-upgrade.umd.js', 'common-upgrade.umd.js.map', - 'common-upgrade.umd.min.js', - 'common-upgrade.umd.min.js.map', 'common.umd.js', 'common.umd.js.map', - 'common.umd.min.js', - 'common.umd.min.js.map', ]); }); diff --git a/packages/bazel/test/ng_package/core_package.spec.ts b/packages/bazel/test/ng_package/core_package.spec.ts index 7c5876c2ec..7e6e00ec9a 100644 --- a/packages/bazel/test/ng_package/core_package.spec.ts +++ b/packages/bazel/test/ng_package/core_package.spec.ts @@ -6,7 +6,8 @@ * found in the LICENSE file at https://angular.io/license */ -import {ivyEnabled, obsoleteInIvy} from '@angular/private/testing'; +import {obsoleteInIvy} from '@angular/private/testing'; +import {runfiles} from '@bazel/runfiles'; import * as path from 'path'; import * as shx from 'shelljs'; @@ -71,22 +72,16 @@ describe('@angular/core ng_package', () => { }); describe('typescript support', () => { - if (ivyEnabled) { - it('should have an index d.ts file', () => { - expect(shx.cat('core.d.ts')).toContain(`export *`); - }); - - it('should not have amd module names', () => { - expect(shx.cat('public_api.d.ts')).not.toContain(' { - expect(shx.cat('core.d.ts')).toContain('export declare'); - }); - it('should have an r3_symbols d.ts file', () => { - expect(shx.cat('src/r3_symbols.d.ts')).toContain('export declare'); - }); - } + it('should not have amd module names', () => { + expect(shx.cat('core.d.ts')).not.toContain(' { + expect(shx.cat('core.d.ts')).toContain('export declare'); + }); + obsoleteInIvy('we no longer need to export r3_symbols') + .it('should have an r3_symbols d.ts file', () => { + expect(shx.cat('src/r3_symbols.d.ts')).toContain('export declare'); + }); }); obsoleteInIvy('metadata files are no longer needed or produced in Ivy') @@ -139,14 +134,6 @@ describe('@angular/core ng_package', () => { expect(shx.ls('bundles/core.umd.js.map').length).toBe(1, 'File not found'); }); - it('should have a minified umd file in the /bundles directory', () => { - expect(shx.ls('bundles/core.umd.min.js').length).toBe(1, 'File not found'); - }); - - it('should have a source map next to the minified umd file', () => { - expect(shx.ls('bundles/core.umd.min.js.map').length).toBe(1, 'File not found'); - }); - it('should have the version info in the header', () => { expect(shx.cat('bundles/core.umd.js')) .toMatch(/@license Angular v\d+\.\d+\.\d+(?!-PLACEHOLDER)/); @@ -184,17 +171,10 @@ describe('@angular/core ng_package', () => { }); describe('typings', () => { - if (ivyEnabled) { - const typingsFile = p`testing/index.d.ts`; - it('should have a typings file', () => { - expect(shx.cat(typingsFile)).toContain(`export * from './public_api';`); - }); - } else { - const typingsFile = p`testing/testing.d.ts`; - it('should have a typings file', () => { - expect(shx.cat(typingsFile)).toContain('export declare'); - }); - } + const typingsFile = p`testing/testing.d.ts`; + it('should have a typings file', () => { + expect(shx.cat(typingsFile)).toContain('export declare'); + }); obsoleteInIvy( 'now that we don\'t need metadata files, we don\'t need these redirects to help resolve paths to them') @@ -237,14 +217,6 @@ describe('@angular/core ng_package', () => { expect(shx.ls('bundles/core-testing.umd.js.map').length).toBe(1, 'File not found'); }); - it('should have a minified umd file in the /bundles directory', () => { - expect(shx.ls('bundles/core-testing.umd.min.js').length).toBe(1, 'File not found'); - }); - - it('should have a source map next to the minified umd file', () => { - expect(shx.ls('bundles/core-testing.umd.min.js.map').length).toBe(1, 'File not found'); - }); - it('should have an AMD name', () => { expect(shx.cat('bundles/core-testing.umd.js')) .toContain('define(\'@angular/core/testing\''); diff --git a/packages/bazel/test/ng_package/example_package.golden b/packages/bazel/test/ng_package/example_package.golden index 38876cb8e7..07c3d88306 100644 --- a/packages/bazel/test/ng_package/example_package.golden +++ b/packages/bazel/test/ng_package/example_package.golden @@ -11,20 +11,12 @@ arbitrary_genfiles.txt bundles bundles/waffels-a11y.umd.js bundles/waffels-a11y.umd.js.map - bundles/waffels-a11y.umd.min.js - bundles/waffels-a11y.umd.min.js.map bundles/waffels-imports.umd.js bundles/waffels-imports.umd.js.map - bundles/waffels-imports.umd.min.js - bundles/waffels-imports.umd.min.js.map bundles/waffels-secondary.umd.js bundles/waffels-secondary.umd.js.map - bundles/waffels-secondary.umd.min.js - bundles/waffels-secondary.umd.min.js.map bundles/waffels.umd.js bundles/waffels.umd.js.map - bundles/waffels.umd.min.js - bundles/waffels.umd.min.js.map esm2015 esm2015/a11y esm2015/a11y/a11y.externs.js @@ -94,7 +86,6 @@ License: MIT */ - export declare class A11yModule { } @@ -206,30 +197,6 @@ Hello //# sourceMappingURL=waffels-a11y.umd.js.map ---- bundles/waffels-a11y.umd.min.js --- - -/** - * @license Angular v0.0.0 - * (c) 2010-2021 Google LLC. https://angular.io/ - * License: MIT - */ -!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("@angular/core")):"function"==typeof define&&define.amd?define("example/a11y",["exports","@angular/core"],o):o(((e=e||self).example=e.example||{},e.example.a11y={}),e.ng.core)}(this,(function(e,o){"use strict"; -/** - * @license - * 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 - */var t;(t=function t(){}).decorators=[{type:o.NgModule,args:[{}]}], -/** - * @license - * 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 - */ -e.A11yModule=t,Object.defineProperty(e,"__esModule",{value:!0})})); - --- bundles/waffels-imports.umd.js --- /** @@ -303,30 +270,6 @@ e.A11yModule=t,Object.defineProperty(e,"__esModule",{value:!0})})); //# sourceMappingURL=waffels-imports.umd.js.map ---- bundles/waffels-imports.umd.min.js --- - -/** - * @license Angular v0.0.0 - * (c) 2010-2021 Google LLC. https://angular.io/ - * License: MIT - */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core")):"function"==typeof define&&define.amd?define("example/imports",["exports","@angular/core"],t):t(((e=e||self).example=e.example||{},e.example.imports={}),e.ng.core)}(this,(function(e,t){"use strict"; -/** - * @license - * 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 - */var o,r;(o=function o(){}).ɵprov=t.ɵɵdefineInjectable({factory:function e(){return new o},token:o,providedIn:"root"}),o.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],(r=function r(e){this.secondService=e}).ɵprov=t.ɵɵdefineInjectable({factory:function e(){return new r(t.ɵɵinject(o))},token:r,providedIn:"root"}),r.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],r.ctorParameters=function(){return[{type:o}]}, -/** - * @license - * 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 - */ -e.MyService=r,e.ɵangular_packages_bazel_test_ng_package_example_imports_imports_a=o,Object.defineProperty(e,"__esModule",{value:!0})})); - --- bundles/waffels-secondary.umd.js --- /** @@ -379,30 +322,6 @@ e.MyService=r,e.ɵangular_packages_bazel_test_ng_package_example_imports_imports //# sourceMappingURL=waffels-secondary.umd.js.map ---- bundles/waffels-secondary.umd.min.js --- - -/** - * @license Angular v0.0.0 - * (c) 2010-2021 Google LLC. https://angular.io/ - * License: MIT - */ -!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("@angular/core")):"function"==typeof define&&define.amd?define("example/secondary",["exports","@angular/core"],o):o(((e=e||self).example=e.example||{},e.example.secondary={}),e.ng.core)}(this,(function(e,o){"use strict"; -/** - * @license - * 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 - */var n;(n=function n(){}).decorators=[{type:o.NgModule,args:[{}]}], -/** - * @license - * 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 - */ -e.SecondaryModule=n,e.a=1,Object.defineProperty(e,"__esModule",{value:!0})})); - --- bundles/waffels.umd.js --- /** @@ -453,30 +372,6 @@ e.SecondaryModule=n,e.a=1,Object.defineProperty(e,"__esModule",{value:!0})})); //# sourceMappingURL=waffels.umd.js.map ---- bundles/waffels.umd.min.js --- - -/** - * @license Angular v0.0.0 - * (c) 2010-2021 Google LLC. https://angular.io/ - * License: MIT - */ -!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("@angular/core")):"function"==typeof define&&define.amd?define("example",["exports","@angular/core"],o):o((e=e||self).example={},e.ng.core)}(this,(function(e,o){"use strict"; -/** - * @license - * 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 - */var t;(t=function t(){}).decorators=[{type:o.NgModule,args:[{}]}], -/** - * @license - * 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 - */ -e.MyModule=t,Object.defineProperty(e,"__esModule",{value:!0})})); - --- esm2015/a11y/a11y.externs.js --- /** @externs */ @@ -705,7 +600,6 @@ export const a = 1; */ - export declare class MyModule { } @@ -909,7 +803,6 @@ export { MyModule }; * License: MIT */ - export declare class MyService { secondService: ɵangular_packages_bazel_test_ng_package_example_imports_imports_a; constructor(secondService: ɵangular_packages_bazel_test_ng_package_example_imports_imports_a); @@ -991,7 +884,6 @@ export * from './imports/imports'; * License: MIT */ - export declare const a = 1; diff --git a/packages/bazel/test/ng_package/example_package.spec.ts b/packages/bazel/test/ng_package/example_package.spec.ts index 50f3eb8fdc..c7ae1a3f58 100644 --- a/packages/bazel/test/ng_package/example_package.spec.ts +++ b/packages/bazel/test/ng_package/example_package.spec.ts @@ -6,6 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ +import {runfiles} from '@bazel/runfiles'; import * as crypto from 'crypto'; import {createPatch} from 'diff'; import * as fs from 'fs'; diff --git a/packages/bazel/test/ng_package/example_with_ts_library_package.golden b/packages/bazel/test/ng_package/example_with_ts_library_package.golden index e51a783e69..29f7ed4636 100644 --- a/packages/bazel/test/ng_package/example_with_ts_library_package.golden +++ b/packages/bazel/test/ng_package/example_with_ts_library_package.golden @@ -2,16 +2,10 @@ README.md bundles bundles/example-with-ts-library-portal.umd.js bundles/example-with-ts-library-portal.umd.js.map - bundles/example-with-ts-library-portal.umd.min.js - bundles/example-with-ts-library-portal.umd.min.js.map bundles/example-with-ts-library-utils.umd.js bundles/example-with-ts-library-utils.umd.js.map - bundles/example-with-ts-library-utils.umd.min.js - bundles/example-with-ts-library-utils.umd.min.js.map bundles/example-with-ts-library.umd.js bundles/example-with-ts-library.umd.js.map - bundles/example-with-ts-library.umd.min.js - bundles/example-with-ts-library.umd.min.js.map esm2015 esm2015/example.externs.js esm2015/index.js @@ -110,30 +104,6 @@ License: MIT //# sourceMappingURL=example-with-ts-library-portal.umd.js.map ---- bundles/example-with-ts-library-portal.umd.min.js --- - -/** - * @license Angular v0.0.0 - * (c) 2010-2021 Google LLC. https://angular.io/ - * License: MIT - */ -!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@angular/core")):"function"==typeof define&&define.amd?define("example-with-ts-library/portal",["exports","@angular/core"],r):r(((e=e||self).exampleWithTsLibrary=e.exampleWithTsLibrary||{},e.exampleWithTsLibrary.portal={}),e.ng.core)}(this,(function(e,r){"use strict"; -/** - * @license - * 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 - */var t;(t=function t(){}).decorators=[{type:r.NgModule,args:[{}]}], -/** - * @license - * 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 - */ -e.PortalModule=t,e.a=1,Object.defineProperty(e,"__esModule",{value:!0})})); - --- bundles/example-with-ts-library-utils.umd.js --- /** @@ -175,30 +145,6 @@ e.PortalModule=t,e.a=1,Object.defineProperty(e,"__esModule",{value:!0})})); //# sourceMappingURL=example-with-ts-library-utils.umd.js.map ---- bundles/example-with-ts-library-utils.umd.min.js --- - -/** - * @license Angular v0.0.0 - * (c) 2010-2021 Google LLC. https://angular.io/ - * License: MIT - */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define("example-with-ts-library/utils",["exports"],t):t(((e=e||self).exampleWithTsLibrary=e.exampleWithTsLibrary||{},e.exampleWithTsLibrary.utils={}))}(this,(function(e){"use strict"; -/** - * @license - * 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 - */ -/** - * @license - * 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 - */ -e.dispatchFakeEvent=function t(e,i){e.dispatchEvent(i)},Object.defineProperty(e,"__esModule",{value:!0})})); - --- bundles/example-with-ts-library.umd.js --- /** @@ -230,22 +176,6 @@ e.dispatchFakeEvent=function t(e,i){e.dispatchEvent(i)},Object.defineProperty(e, //# sourceMappingURL=example-with-ts-library.umd.js.map ---- bundles/example-with-ts-library.umd.min.js --- - -/** - * @license Angular v0.0.0 - * (c) 2010-2021 Google LLC. https://angular.io/ - * License: MIT - */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define("example-with-ts-library",["exports"],t):t((e=e||self).exampleWithTsLibrary={})}(this,(function(e){"use strict"; -/** - * @license - * 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 - */e.VERSION="0.0.0",Object.defineProperty(e,"__esModule",{value:!0})})); - --- esm2015/example.externs.js --- diff --git a/packages/bazel/test/ngc-wrapped/BUILD.bazel b/packages/bazel/test/ngc-wrapped/BUILD.bazel index a2dc5ad314..f7cd67482c 100644 --- a/packages/bazel/test/ngc-wrapped/BUILD.bazel +++ b/packages/bazel/test/ngc-wrapped/BUILD.bazel @@ -43,6 +43,7 @@ ts_library( tsconfig = ":tsconfig.json", deps = [ "//packages/private/testing", + "@npm//@bazel/runfiles", ], ) diff --git a/packages/bazel/test/ngc-wrapped/flat_module_test.ts b/packages/bazel/test/ngc-wrapped/flat_module_test.ts index 492ca59d48..94abb05faf 100644 --- a/packages/bazel/test/ngc-wrapped/flat_module_test.ts +++ b/packages/bazel/test/ngc-wrapped/flat_module_test.ts @@ -7,6 +7,7 @@ */ import {obsoleteInIvy, onlyInIvy} from '@angular/private/testing'; +import {runfiles} from '@bazel/runfiles'; import {existsSync, readFileSync} from 'fs'; import {dirname, join} from 'path'; diff --git a/packages/bazel/test/ngc-wrapped/ivy_enabled/BUILD.bazel b/packages/bazel/test/ngc-wrapped/ivy_enabled/BUILD.bazel index 93f9263fe0..ff92ca2a7f 100644 --- a/packages/bazel/test/ngc-wrapped/ivy_enabled/BUILD.bazel +++ b/packages/bazel/test/ngc-wrapped/ivy_enabled/BUILD.bazel @@ -5,6 +5,7 @@ ts_library( testonly = True, srcs = ["ng_module_ivy_test.ts"], tags = ["ivy-only"], + deps = ["@npm//@bazel/runfiles"], ) # `ng_module` with `compilation_mode` explicitly set to `partial`. diff --git a/packages/bazel/test/ngc-wrapped/ivy_enabled/ng_module_ivy_test.ts b/packages/bazel/test/ngc-wrapped/ivy_enabled/ng_module_ivy_test.ts index 9e64b1e628..b3a6905442 100644 --- a/packages/bazel/test/ngc-wrapped/ivy_enabled/ng_module_ivy_test.ts +++ b/packages/bazel/test/ngc-wrapped/ivy_enabled/ng_module_ivy_test.ts @@ -6,11 +6,9 @@ * found in the LICENSE file at https://angular.io/license */ +import {runfiles} from '@bazel/runfiles'; import {readFileSync} from 'fs'; -/** Runfiles helper from bazel to resolve file name paths. */ -const runfiles = require(process.env['BAZEL_NODE_RUNFILES_HELPER']!); - describe('ng_module with ivy enabled', () => { describe('default compilation mode', () => { it('should generate definitions', () => { diff --git a/packages/benchpress/package.json b/packages/benchpress/package.json index 103ed391d3..d0e639b8b4 100644 --- a/packages/benchpress/package.json +++ b/packages/benchpress/package.json @@ -6,7 +6,7 @@ "typings": "./index.d.ts", "strictNullChecks": true, "dependencies": { - "@angular/core": "^10.0.0-0 || ^11.0.0", + "@angular/core": "^12.0.0", "reflect-metadata": "^0.1.13" }, "repository": { diff --git a/packages/benchpress/src/metric/multi_metric.ts b/packages/benchpress/src/metric/multi_metric.ts index c494363c4f..7b26ea4883 100644 --- a/packages/benchpress/src/metric/multi_metric.ts +++ b/packages/benchpress/src/metric/multi_metric.ts @@ -33,7 +33,7 @@ export class MultiMetric extends Metric { /** * Starts measuring */ - beginMeasure(): Promise { + override beginMeasure(): Promise { return Promise.all(this._metrics.map(metric => metric.beginMeasure())); } @@ -42,7 +42,7 @@ export class MultiMetric extends Metric { * since the begin call. * @param restart: Whether to restart right after this. */ - endMeasure(restart: boolean): Promise<{[key: string]: any}> { + override endMeasure(restart: boolean): Promise<{[key: string]: any}> { return Promise.all(this._metrics.map(metric => metric.endMeasure(restart))) .then(values => mergeStringMaps(values)); } @@ -51,7 +51,7 @@ export class MultiMetric extends Metric { * Describes the metrics provided by this metric implementation. * (e.g. units, ...) */ - describe(): {[key: string]: any} { + override describe(): {[key: string]: any} { return mergeStringMaps(this._metrics.map((metric) => metric.describe())); } } diff --git a/packages/benchpress/src/metric/perflog_metric.ts b/packages/benchpress/src/metric/perflog_metric.ts index a56bb856cc..a506a17f78 100644 --- a/packages/benchpress/src/metric/perflog_metric.ts +++ b/packages/benchpress/src/metric/perflog_metric.ts @@ -69,7 +69,7 @@ export class PerflogMetric extends Metric { } } - describe(): {[key: string]: string} { + override describe(): {[key: string]: string} { const res: {[key: string]: any} = { 'scriptTime': 'script execution time in ms, including gc and render', 'pureScriptTime': 'script execution time in ms, without gc nor render' @@ -113,7 +113,7 @@ export class PerflogMetric extends Metric { return res; } - beginMeasure(): Promise { + override beginMeasure(): Promise { let resultPromise = Promise.resolve(null); if (this._forceGc) { resultPromise = resultPromise.then((_) => this._driverExtension.gc()); @@ -121,7 +121,7 @@ export class PerflogMetric extends Metric { return resultPromise.then((_) => this._beginMeasure()); } - endMeasure(restart: boolean): Promise<{[key: string]: number}> { + override endMeasure(restart: boolean): Promise<{[key: string]: number}> { if (this._forceGc) { return this._endPlainMeasureAndMeasureForceGc(restart); } else { @@ -238,13 +238,26 @@ export class PerflogMetric extends Metric { events.forEach((event) => { const ph = event['ph']; const name = event['name']; - if (ph === 'B' && name === markName) { + + // Here we are determining if this is the event signaling the start or end of our performance + // testing (this is triggered by us calling #timeBegin and #timeEnd). + // + // Previously, this was done by checking that the event name matched our mark name and that + // the phase was either "B" or "E" ("begin" or "end"). However, since Chrome v90 this is + // showing up as "-bpstart" and "-bpend" ("benchpress start/end"), which is what one would + // actually expect since that is the mark name used in ChromeDriverExtension - see the + // #timeBegin and #timeEnd implementations in chrome_driver_extension.ts. For + // backwards-compatibility with Chrome v89 (and older), we do both checks: the phase-based + // one ("B" or "E") and event name-based (the "-bp(start/end)" suffix). + const isStartEvent = (ph === 'B' && name === markName) || name === markName + '-bpstart'; + const isEndEvent = (ph === 'E' && name === markName) || name === markName + '-bpend'; + if (isStartEvent) { markStartEvent = event; } else if (ph === 'I' && name === 'navigationStart' && !this._ignoreNavigation) { // if a benchmark measures reload of a page, use the last // navigationStart as begin event markStartEvent = event; - } else if (ph === 'E' && name === markName) { + } else if (isEndEvent) { markEndEvent = event; } }); diff --git a/packages/benchpress/src/metric/user_metric.ts b/packages/benchpress/src/metric/user_metric.ts index cf91050a7b..2b9eaeb4f7 100644 --- a/packages/benchpress/src/metric/user_metric.ts +++ b/packages/benchpress/src/metric/user_metric.ts @@ -26,14 +26,14 @@ export class UserMetric extends Metric { /** * Starts measuring */ - beginMeasure(): Promise { + override beginMeasure(): Promise { return Promise.resolve(true); } /** * Ends measuring. */ - endMeasure(restart: boolean): Promise<{[key: string]: any}> { + override endMeasure(restart: boolean): Promise<{[key: string]: any}> { let resolve: (result: any) => void; let reject: (error: any) => void; const promise = new Promise<{[key: string]: any;}>((res, rej) => { @@ -68,7 +68,7 @@ export class UserMetric extends Metric { * Describes the metrics provided by this metric implementation. * (e.g. units, ...) */ - describe(): {[key: string]: any} { + override describe(): {[key: string]: any} { return this._userMetrics; } } diff --git a/packages/benchpress/src/reporter/console_reporter.ts b/packages/benchpress/src/reporter/console_reporter.ts index 4a5755cb47..da2a96f902 100644 --- a/packages/benchpress/src/reporter/console_reporter.ts +++ b/packages/benchpress/src/reporter/console_reporter.ts @@ -71,7 +71,7 @@ export class ConsoleReporter extends Reporter { this._printStringRow(this._metricNames.map((_) => ''), '-'); } - reportMeasureValues(measureValues: MeasureValues): Promise { + override reportMeasureValues(measureValues: MeasureValues): Promise { const formattedValues = this._metricNames.map(metricName => { const value = measureValues.values[metricName]; return formatNum(value); @@ -80,7 +80,8 @@ export class ConsoleReporter extends Reporter { return Promise.resolve(null); } - reportSample(completeSample: MeasureValues[], validSamples: MeasureValues[]): Promise { + override reportSample(completeSample: MeasureValues[], validSamples: MeasureValues[]): + Promise { this._printStringRow(this._metricNames.map((_) => ''), '='); this._printStringRow( this._metricNames.map(metricName => formatStats(validSamples, metricName))); diff --git a/packages/benchpress/src/reporter/json_file_reporter.ts b/packages/benchpress/src/reporter/json_file_reporter.ts index 7abb45f09d..fbde2a26cb 100644 --- a/packages/benchpress/src/reporter/json_file_reporter.ts +++ b/packages/benchpress/src/reporter/json_file_reporter.ts @@ -37,11 +37,12 @@ export class JsonFileReporter extends Reporter { super(); } - reportMeasureValues(measureValues: MeasureValues): Promise { + override reportMeasureValues(measureValues: MeasureValues): Promise { return Promise.resolve(null); } - reportSample(completeSample: MeasureValues[], validSample: MeasureValues[]): Promise { + override reportSample(completeSample: MeasureValues[], validSample: MeasureValues[]): + Promise { const stats: {[key: string]: string} = {}; sortedProps(this._description.metrics).forEach((metricName) => { stats[metricName] = formatStats(validSample, metricName); diff --git a/packages/benchpress/src/reporter/multi_reporter.ts b/packages/benchpress/src/reporter/multi_reporter.ts index aefadc18f9..81122c4c46 100644 --- a/packages/benchpress/src/reporter/multi_reporter.ts +++ b/packages/benchpress/src/reporter/multi_reporter.ts @@ -31,11 +31,12 @@ export class MultiReporter extends Reporter { super(); } - reportMeasureValues(values: MeasureValues): Promise { + override reportMeasureValues(values: MeasureValues): Promise { return Promise.all(this._reporters.map(reporter => reporter.reportMeasureValues(values))); } - reportSample(completeSample: MeasureValues[], validSample: MeasureValues[]): Promise { + override reportSample(completeSample: MeasureValues[], validSample: MeasureValues[]): + Promise { return Promise.all( this._reporters.map(reporter => reporter.reportSample(completeSample, validSample))); } diff --git a/packages/benchpress/src/validator/regression_slope_validator.ts b/packages/benchpress/src/validator/regression_slope_validator.ts index 40d72e9cfb..82eb82ab1d 100644 --- a/packages/benchpress/src/validator/regression_slope_validator.ts +++ b/packages/benchpress/src/validator/regression_slope_validator.ts @@ -35,11 +35,11 @@ export class RegressionSlopeValidator extends Validator { super(); } - describe(): {[key: string]: any} { + override describe(): {[key: string]: any} { return {'sampleSize': this._sampleSize, 'regressionSlopeMetric': this._metric}; } - validate(completeSample: MeasureValues[]): MeasureValues[]|null { + override validate(completeSample: MeasureValues[]): MeasureValues[]|null { if (completeSample.length >= this._sampleSize) { const latestSample = completeSample.slice(completeSample.length - this._sampleSize, completeSample.length); diff --git a/packages/benchpress/src/validator/size_validator.ts b/packages/benchpress/src/validator/size_validator.ts index 7120ca6de0..6fcf182504 100644 --- a/packages/benchpress/src/validator/size_validator.ts +++ b/packages/benchpress/src/validator/size_validator.ts @@ -26,11 +26,11 @@ export class SizeValidator extends Validator { super(); } - describe(): {[key: string]: any} { + override describe(): {[key: string]: any} { return {'sampleSize': this._sampleSize}; } - validate(completeSample: MeasureValues[]): MeasureValues[]|null { + override validate(completeSample: MeasureValues[]): MeasureValues[]|null { if (completeSample.length >= this._sampleSize) { return completeSample.slice(completeSample.length - this._sampleSize, completeSample.length); } else { diff --git a/packages/benchpress/src/webdriver/chrome_driver_extension.ts b/packages/benchpress/src/webdriver/chrome_driver_extension.ts index 9fecaa33a3..01ca950645 100644 --- a/packages/benchpress/src/webdriver/chrome_driver_extension.ts +++ b/packages/benchpress/src/webdriver/chrome_driver_extension.ts @@ -54,11 +54,11 @@ export class ChromeDriverExtension extends WebDriverExtension { return parseInt(v, 10); } - gc() { + override gc() { return this.driver.executeScript('window.gc()'); } - async timeBegin(name: string): Promise { + override async timeBegin(name: string): Promise { if (this._firstRun) { this._firstRun = false; // Before the first run, read out the existing performance logs @@ -68,7 +68,7 @@ export class ChromeDriverExtension extends WebDriverExtension { return this.driver.executeScript(`performance.mark('${name}-bpstart');`); } - timeEnd(name: string, restartName: string|null = null): Promise { + override timeEnd(name: string, restartName: string|null = null): Promise { let script = `performance.mark('${name}-bpend');`; if (restartName) { script += `performance.mark('${restartName}-bpstart');`; @@ -78,7 +78,7 @@ export class ChromeDriverExtension extends WebDriverExtension { // See [Chrome Trace Event // Format](https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/edit) - readPerfLog(): Promise { + override readPerfLog(): Promise { // TODO(tbosch): Chromedriver bug https://code.google.com/p/chromedriver/issues/detail?id=1098 // Need to execute at least one command so that the browser logs can be read out! return this.driver.executeScript('1+1') @@ -200,11 +200,11 @@ export class ChromeDriverExtension extends WebDriverExtension { return !expectedName ? hasCategories : hasCategories && eventName === expectedName; } - perfLogFeatures(): PerfLogFeatures { + override perfLogFeatures(): PerfLogFeatures { return new PerfLogFeatures({render: true, gc: true, frameCapture: true, userTiming: true}); } - supports(capabilities: {[key: string]: any}): boolean { + override supports(capabilities: {[key: string]: any}): boolean { return this._majorChromeVersion >= 44 && capabilities['browserName'].toLowerCase() === 'chrome'; } } diff --git a/packages/benchpress/src/webdriver/firefox_driver_extension.ts b/packages/benchpress/src/webdriver/firefox_driver_extension.ts index a56498f8d0..4f2673f989 100644 --- a/packages/benchpress/src/webdriver/firefox_driver_extension.ts +++ b/packages/benchpress/src/webdriver/firefox_driver_extension.ts @@ -22,11 +22,11 @@ export class FirefoxDriverExtension extends WebDriverExtension { this._profilerStarted = false; } - gc() { + override gc() { return this._driver.executeScript('window.forceGC()'); } - timeBegin(name: string): Promise { + override timeBegin(name: string): Promise { if (!this._profilerStarted) { this._profilerStarted = true; this._driver.executeScript('window.startProfiler();'); @@ -34,7 +34,7 @@ export class FirefoxDriverExtension extends WebDriverExtension { return this._driver.executeScript('window.markStart("' + name + '");'); } - timeEnd(name: string, restartName: string|null = null): Promise { + override timeEnd(name: string, restartName: string|null = null): Promise { let script = 'window.markEnd("' + name + '");'; if (restartName != null) { script += 'window.markStart("' + restartName + '");'; @@ -42,15 +42,15 @@ export class FirefoxDriverExtension extends WebDriverExtension { return this._driver.executeScript(script); } - readPerfLog(): Promise { + override readPerfLog(): Promise { return this._driver.executeAsyncScript('var cb = arguments[0]; window.getProfile(cb);'); } - perfLogFeatures(): PerfLogFeatures { + override perfLogFeatures(): PerfLogFeatures { return new PerfLogFeatures({render: true, gc: true}); } - supports(capabilities: {[key: string]: any}): boolean { + override supports(capabilities: {[key: string]: any}): boolean { return capabilities['browserName'].toLowerCase() === 'firefox'; } } diff --git a/packages/benchpress/src/webdriver/ios_driver_extension.ts b/packages/benchpress/src/webdriver/ios_driver_extension.ts index 5da139a7e8..4e99d73684 100644 --- a/packages/benchpress/src/webdriver/ios_driver_extension.ts +++ b/packages/benchpress/src/webdriver/ios_driver_extension.ts @@ -19,15 +19,15 @@ export class IOsDriverExtension extends WebDriverExtension { super(); } - gc(): Promise { + override gc(): Promise { throw new Error('Force GC is not supported on iOS'); } - timeBegin(name: string): Promise { + override timeBegin(name: string): Promise { return this._driver.executeScript(`console.time('${name}');`); } - timeEnd(name: string, restartName: string|null = null): Promise { + override timeEnd(name: string, restartName: string|null = null): Promise { let script = `console.timeEnd('${name}');`; if (restartName != null) { script += `console.time('${restartName}');`; @@ -36,7 +36,7 @@ export class IOsDriverExtension extends WebDriverExtension { } // See https://github.com/WebKit/webkit/tree/master/Source/WebInspectorUI/Versions - readPerfLog() { + override readPerfLog() { // TODO(tbosch): Bug in IOsDriver: Need to execute at least one command // so that the browser logs can be read out! return this._driver.executeScript('1+1') @@ -91,11 +91,11 @@ export class IOsDriverExtension extends WebDriverExtension { return events; } - perfLogFeatures(): PerfLogFeatures { + override perfLogFeatures(): PerfLogFeatures { return new PerfLogFeatures({render: true}); } - supports(capabilities: {[key: string]: any}): boolean { + override supports(capabilities: {[key: string]: any}): boolean { return capabilities['browserName'].toLowerCase() === 'safari'; } } diff --git a/packages/benchpress/src/webdriver/selenium_webdriver_adapter.ts b/packages/benchpress/src/webdriver/selenium_webdriver_adapter.ts index 3719de05ed..8ed82832d5 100644 --- a/packages/benchpress/src/webdriver/selenium_webdriver_adapter.ts +++ b/packages/benchpress/src/webdriver/selenium_webdriver_adapter.ts @@ -25,19 +25,19 @@ export class SeleniumWebDriverAdapter extends WebDriverAdapter { super(); } - waitFor(callback: () => any): Promise { + override waitFor(callback: () => any): Promise { return this._driver.call(callback); } - executeScript(script: string): Promise { + override executeScript(script: string): Promise { return this._driver.executeScript(script); } - executeAsyncScript(script: string): Promise { + override executeAsyncScript(script: string): Promise { return this._driver.executeAsyncScript(script); } - capabilities(): Promise<{[key: string]: any}> { + override capabilities(): Promise<{[key: string]: any}> { return this._driver.getCapabilities().then((capsObject: any) => { const localData: {[key: string]: any} = {}; for (const key of Array.from((>capsObject).keys())) { @@ -47,7 +47,7 @@ export class SeleniumWebDriverAdapter extends WebDriverAdapter { }); } - logs(type: string): Promise { + override logs(type: string): Promise { // Needed as selenium-webdriver does not forward // performance logs in the correct way via manage().logs return this._driver.schedule( diff --git a/packages/benchpress/test/metric/multi_metric_spec.ts b/packages/benchpress/test/metric/multi_metric_spec.ts index 347152d4fc..98c28c6821 100644 --- a/packages/benchpress/test/metric/multi_metric_spec.ts +++ b/packages/benchpress/test/metric/multi_metric_spec.ts @@ -6,8 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -import {AsyncTestCompleter, describe, expect, inject, it} from '@angular/core/testing/src/testing_internal'; - import {Injector, Metric, MultiMetric} from '../../index'; (function() { @@ -22,29 +20,27 @@ function createMetric(ids: any[]) { } describe('multi metric', () => { - it('should merge descriptions', inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createMetric(['m1', 'm2']).then((m) => { - expect(m.describe()).toEqual({'m1': 'describe', 'm2': 'describe'}); - async.done(); - }); - })); + it('should merge descriptions', done => { + createMetric(['m1', 'm2']).then((m) => { + expect(m.describe()).toEqual({'m1': 'describe', 'm2': 'describe'}); + done(); + }); + }); - it('should merge all beginMeasure calls', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createMetric(['m1', 'm2']).then((m) => m.beginMeasure()).then((values) => { - expect(values).toEqual(['m1_beginMeasure', 'm2_beginMeasure']); - async.done(); - }); - })); + it('should merge all beginMeasure calls', done => { + createMetric(['m1', 'm2']).then((m) => m.beginMeasure()).then((values) => { + expect(values).toEqual(['m1_beginMeasure', 'm2_beginMeasure']); + done(); + }); + }); [false, true].forEach((restartFlag) => { - it(`should merge all endMeasure calls for restart=${restartFlag}`, - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createMetric(['m1', 'm2']).then((m) => m.endMeasure(restartFlag)).then((values) => { - expect(values).toEqual({'m1': {'restart': restartFlag}, 'm2': {'restart': restartFlag}}); - async.done(); - }); - })); + it(`should merge all endMeasure calls for restart=${restartFlag}`, done => { + createMetric(['m1', 'm2']).then((m) => m.endMeasure(restartFlag)).then((values) => { + expect(values).toEqual({'m1': {'restart': restartFlag}, 'm2': {'restart': restartFlag}}); + done(); + }); + }); }); }); })(); @@ -54,17 +50,17 @@ class MockMetric extends Metric { super(); } - beginMeasure(): Promise { + override beginMeasure(): Promise { return Promise.resolve(`${this._id}_beginMeasure`); } - endMeasure(restart: boolean): Promise<{[key: string]: any}> { + override endMeasure(restart: boolean): Promise<{[key: string]: any}> { const result: {[key: string]: any} = {}; result[this._id] = {'restart': restart}; return Promise.resolve(result); } - describe(): {[key: string]: string} { + override describe(): {[key: string]: string} { const result: {[key: string]: string} = {}; result[this._id] = 'describe'; return result; diff --git a/packages/benchpress/test/metric/perflog_metric_spec.ts b/packages/benchpress/test/metric/perflog_metric_spec.ts index 20e6469318..0fd70d3180 100644 --- a/packages/benchpress/test/metric/perflog_metric_spec.ts +++ b/packages/benchpress/test/metric/perflog_metric_spec.ts @@ -7,7 +7,6 @@ */ import {StaticProvider} from '@angular/core'; -import {AsyncTestCompleter, beforeEach, describe, expect, inject, it} from '@angular/core/testing/src/testing_internal'; import {Injector, Metric, Options, PerfLogEvent, PerfLogFeatures, PerflogMetric, WebDriverExtension} from '../../index'; import {TraceEventFactory} from '../trace_event_factory'; @@ -130,152 +129,145 @@ describe('perflog metric', () => { }); describe('beginMeasure', () => { - it('should not force gc and mark the timeline', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const metric = createMetric([[]], null!); - metric.beginMeasure().then((_) => { - expect(commandLog).toEqual([['timeBegin', 'benchpress0']]); + it('should not force gc and mark the timeline', done => { + const metric = createMetric([[]], null!); + metric.beginMeasure().then((_) => { + expect(commandLog).toEqual([['timeBegin', 'benchpress0']]); - async.done(); - }); - })); + done(); + }); + }); - it('should force gc and mark the timeline', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const metric = createMetric([[]], null!, {forceGc: true}); - metric.beginMeasure().then((_) => { - expect(commandLog).toEqual([['gc'], ['timeBegin', 'benchpress0']]); + it('should force gc and mark the timeline', done => { + const metric = createMetric([[]], null!, {forceGc: true}); + metric.beginMeasure().then((_) => { + expect(commandLog).toEqual([['gc'], ['timeBegin', 'benchpress0']]); - async.done(); - }); - })); + done(); + }); + }); }); describe('endMeasure', () => { - it('should mark and aggregate events in between the marks', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const events = [[ - eventFactory.markStart('benchpress0', 0), eventFactory.start('script', 4), - eventFactory.end('script', 6), eventFactory.markEnd('benchpress0', 10) - ]]; - const metric = createMetric(events, null!); - metric.beginMeasure().then((_) => metric.endMeasure(false)).then((data) => { - expect(commandLog).toEqual([ - ['timeBegin', 'benchpress0'], ['timeEnd', 'benchpress0', null], 'readPerfLog' - ]); - expect(data['scriptTime']).toBe(2); + it('should mark and aggregate events in between the marks', done => { + const events = [[ + eventFactory.markStart('benchpress0', 0), eventFactory.start('script', 4), + eventFactory.end('script', 6), eventFactory.markEnd('benchpress0', 10) + ]]; + const metric = createMetric(events, null!); + metric.beginMeasure().then((_) => metric.endMeasure(false)).then((data) => { + expect(commandLog).toEqual([ + ['timeBegin', 'benchpress0'], ['timeEnd', 'benchpress0', null], 'readPerfLog' + ]); + expect(data['scriptTime']).toBe(2); - async.done(); - }); - })); + done(); + }); + }); - it('should mark and aggregate events since navigationStart', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const events = [[ - eventFactory.markStart('benchpress0', 0), eventFactory.start('script', 4), - eventFactory.end('script', 6), eventFactory.instant('navigationStart', 7), - eventFactory.start('script', 8), eventFactory.end('script', 9), - eventFactory.markEnd('benchpress0', 10) - ]]; - const metric = createMetric(events, null!); - metric.beginMeasure().then((_) => metric.endMeasure(false)).then((data) => { - expect(data['scriptTime']).toBe(1); + it('should mark and aggregate events since navigationStart', done => { + const events = [[ + eventFactory.markStart('benchpress0', 0), eventFactory.start('script', 4), + eventFactory.end('script', 6), eventFactory.instant('navigationStart', 7), + eventFactory.start('script', 8), eventFactory.end('script', 9), + eventFactory.markEnd('benchpress0', 10) + ]]; + const metric = createMetric(events, null!); + metric.beginMeasure().then((_) => metric.endMeasure(false)).then((data) => { + expect(data['scriptTime']).toBe(1); - async.done(); - }); - })); + done(); + }); + }); - it('should ignore navigationStart if ignoreNavigation is set', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const events = [[ - eventFactory.markStart('benchpress0', 0), eventFactory.start('script', 4), - eventFactory.end('script', 6), eventFactory.instant('navigationStart', 7), - eventFactory.start('script', 8), eventFactory.end('script', 9), - eventFactory.markEnd('benchpress0', 10) - ]]; - const metric = createMetric(events, null!, {ignoreNavigation: true}); - metric.beginMeasure().then((_) => metric.endMeasure(false)).then((data) => { - expect(data['scriptTime']).toBe(3); + it('should ignore navigationStart if ignoreNavigation is set', done => { + const events = [[ + eventFactory.markStart('benchpress0', 0), eventFactory.start('script', 4), + eventFactory.end('script', 6), eventFactory.instant('navigationStart', 7), + eventFactory.start('script', 8), eventFactory.end('script', 9), + eventFactory.markEnd('benchpress0', 10) + ]]; + const metric = createMetric(events, null!, {ignoreNavigation: true}); + metric.beginMeasure().then((_) => metric.endMeasure(false)).then((data) => { + expect(data['scriptTime']).toBe(3); - async.done(); - }); - })); + done(); + }); + }); - it('should restart timing', inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const events = [ - [ - eventFactory.markStart('benchpress0', 0), - eventFactory.markEnd('benchpress0', 1), - eventFactory.markStart('benchpress1', 2), - ], - [eventFactory.markEnd('benchpress1', 3)] - ]; - const metric = createMetric(events, null!); - metric.beginMeasure() - .then((_) => metric.endMeasure(true)) - .then((_) => metric.endMeasure(true)) - .then((_) => { - expect(commandLog).toEqual([ - ['timeBegin', 'benchpress0'], ['timeEnd', 'benchpress0', 'benchpress1'], - 'readPerfLog', ['timeEnd', 'benchpress1', 'benchpress2'], 'readPerfLog' - ]); + it('should restart timing', done => { + const events = [ + [ + eventFactory.markStart('benchpress0', 0), + eventFactory.markEnd('benchpress0', 1), + eventFactory.markStart('benchpress1', 2), + ], + [eventFactory.markEnd('benchpress1', 3)] + ]; + const metric = createMetric(events, null!); + metric.beginMeasure() + .then((_) => metric.endMeasure(true)) + .then((_) => metric.endMeasure(true)) + .then((_) => { + expect(commandLog).toEqual([ + ['timeBegin', 'benchpress0'], ['timeEnd', 'benchpress0', 'benchpress1'], + 'readPerfLog', ['timeEnd', 'benchpress1', 'benchpress2'], 'readPerfLog' + ]); - async.done(); - }); - })); + done(); + }); + }); - it('should loop and aggregate until the end mark is present', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const events = [ - [eventFactory.markStart('benchpress0', 0), eventFactory.start('script', 1)], - [eventFactory.end('script', 2)], - [ - eventFactory.start('script', 3), eventFactory.end('script', 5), - eventFactory.markEnd('benchpress0', 10) - ] - ]; - const metric = createMetric(events, null!); - metric.beginMeasure().then((_) => metric.endMeasure(false)).then((data) => { - expect(commandLog).toEqual([ - ['timeBegin', 'benchpress0'], ['timeEnd', 'benchpress0', null], 'readPerfLog', - ['setTimeout', 100], 'readPerfLog', ['setTimeout', 100], 'readPerfLog' - ]); - expect(data['scriptTime']).toBe(3); + it('should loop and aggregate until the end mark is present', done => { + const events = [ + [eventFactory.markStart('benchpress0', 0), eventFactory.start('script', 1)], + [eventFactory.end('script', 2)], + [ + eventFactory.start('script', 3), eventFactory.end('script', 5), + eventFactory.markEnd('benchpress0', 10) + ] + ]; + const metric = createMetric(events, null!); + metric.beginMeasure().then((_) => metric.endMeasure(false)).then((data) => { + expect(commandLog).toEqual([ + ['timeBegin', 'benchpress0'], ['timeEnd', 'benchpress0', null], 'readPerfLog', + ['setTimeout', 100], 'readPerfLog', ['setTimeout', 100], 'readPerfLog' + ]); + expect(data['scriptTime']).toBe(3); - async.done(); - }); - })); + done(); + }); + }); - it('should store events after the end mark for the next call', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const events = [ - [ - eventFactory.markStart('benchpress0', 0), eventFactory.markEnd('benchpress0', 1), - eventFactory.markStart('benchpress1', 1), eventFactory.start('script', 1), - eventFactory.end('script', 2) - ], - [ - eventFactory.start('script', 3), eventFactory.end('script', 5), - eventFactory.markEnd('benchpress1', 6) - ] - ]; - const metric = createMetric(events, null!); - metric.beginMeasure() - .then((_) => metric.endMeasure(true)) - .then((data) => { - expect(data['scriptTime']).toBe(0); - return metric.endMeasure(true); - }) - .then((data) => { - expect(commandLog).toEqual([ - ['timeBegin', 'benchpress0'], ['timeEnd', 'benchpress0', 'benchpress1'], - 'readPerfLog', ['timeEnd', 'benchpress1', 'benchpress2'], 'readPerfLog' - ]); - expect(data['scriptTime']).toBe(3); + it('should store events after the end mark for the next call', done => { + const events = [ + [ + eventFactory.markStart('benchpress0', 0), eventFactory.markEnd('benchpress0', 1), + eventFactory.markStart('benchpress1', 1), eventFactory.start('script', 1), + eventFactory.end('script', 2) + ], + [ + eventFactory.start('script', 3), eventFactory.end('script', 5), + eventFactory.markEnd('benchpress1', 6) + ] + ]; + const metric = createMetric(events, null!); + metric.beginMeasure() + .then((_) => metric.endMeasure(true)) + .then((data) => { + expect(data['scriptTime']).toBe(0); + return metric.endMeasure(true); + }) + .then((data) => { + expect(commandLog).toEqual([ + ['timeBegin', 'benchpress0'], ['timeEnd', 'benchpress0', 'benchpress1'], + 'readPerfLog', ['timeEnd', 'benchpress1', 'benchpress2'], 'readPerfLog' + ]); + expect(data['scriptTime']).toBe(3); - async.done(); - }); - })); + done(); + }); + }); describe('with forced gc', () => { let events: PerfLogEvent[][]; @@ -290,29 +282,28 @@ describe('perflog metric', () => { ]]; }); - it('should measure forced gc', inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const metric = createMetric(events, null!, {forceGc: true}); - metric.beginMeasure().then((_) => metric.endMeasure(false)).then((data) => { - expect(commandLog).toEqual([ - ['gc'], ['timeBegin', 'benchpress0'], ['timeEnd', 'benchpress0', 'benchpress1'], - 'readPerfLog', ['gc'], ['timeEnd', 'benchpress1', null], 'readPerfLog' - ]); - expect(data['forcedGcTime']).toBe(3); - expect(data['forcedGcAmount']).toBe(1.5); + it('should measure forced gc', done => { + const metric = createMetric(events, null!, {forceGc: true}); + metric.beginMeasure().then((_) => metric.endMeasure(false)).then((data) => { + expect(commandLog).toEqual([ + ['gc'], ['timeBegin', 'benchpress0'], ['timeEnd', 'benchpress0', 'benchpress1'], + 'readPerfLog', ['gc'], ['timeEnd', 'benchpress1', null], 'readPerfLog' + ]); + expect(data['forcedGcTime']).toBe(3); + expect(data['forcedGcAmount']).toBe(1.5); - async.done(); - }); - })); + done(); + }); + }); - it('should restart after the forced gc if needed', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const metric = createMetric(events, null!, {forceGc: true}); - metric.beginMeasure().then((_) => metric.endMeasure(true)).then((data) => { - expect(commandLog[5]).toEqual(['timeEnd', 'benchpress1', 'benchpress2']); + it('should restart after the forced gc if needed', done => { + const metric = createMetric(events, null!, {forceGc: true}); + metric.beginMeasure().then((_) => metric.endMeasure(true)).then((data) => { + expect(commandLog[5]).toEqual(['timeEnd', 'benchpress1', 'benchpress2']); - async.done(); - }); - })); + done(); + }); + }); }); }); @@ -335,352 +326,314 @@ describe('perflog metric', () => { } describe('frame metrics', () => { - it('should calculate mean frame time', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate( - [ - eventFactory.markStart('frameCapture', 0), eventFactory.instant('frame', 1), - eventFactory.instant('frame', 3), eventFactory.instant('frame', 4), - eventFactory.markEnd('frameCapture', 5) - ], - {captureFrames: true}) - .then((data) => { - expect(data['frameTime.mean']).toBe(((3 - 1) + (4 - 3)) / 2); - async.done(); - }); - })); + it('should calculate mean frame time', done => { + aggregate( + [ + eventFactory.markStart('frameCapture', 0), eventFactory.instant('frame', 1), + eventFactory.instant('frame', 3), eventFactory.instant('frame', 4), + eventFactory.markEnd('frameCapture', 5) + ], + {captureFrames: true}) + .then((data) => { + expect(data['frameTime.mean']).toBe(((3 - 1) + (4 - 3)) / 2); + done(); + }); + }); - it('should throw if no start event', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate([eventFactory.instant('frame', 4), eventFactory.markEnd('frameCapture', 5)], { - captureFrames: true - }).catch((err): any => { - expect(() => { - throw err; - }).toThrowError('missing start event for frame capture'); - async.done(); - }); - })); + it('should throw if no start event', done => { + aggregate([eventFactory.instant('frame', 4), eventFactory.markEnd('frameCapture', 5)], { + captureFrames: true + }).catch((err): any => { + expect(() => { + throw err; + }).toThrowError('missing start event for frame capture'); + done(); + }); + }); - it('should throw if no end event', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate( - [eventFactory.markStart('frameCapture', 3), eventFactory.instant('frame', 4)], - {captureFrames: true}) - .catch((err): any => { - expect(() => { - throw err; - }).toThrowError('missing end event for frame capture'); - async.done(); - }); - })); + it('should throw if no end event', done => { + aggregate([eventFactory.markStart('frameCapture', 3), eventFactory.instant('frame', 4)], { + captureFrames: true + }).catch((err): any => { + expect(() => { + throw err; + }).toThrowError('missing end event for frame capture'); + done(); + }); + }); - it('should throw if trying to capture twice', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate( - [ - eventFactory.markStart('frameCapture', 3), - eventFactory.markStart('frameCapture', 4) - ], - {captureFrames: true}) - .catch((err): any => { - expect(() => { - throw err; - }).toThrowError('can capture frames only once per benchmark run'); - async.done(); - }); - })); + it('should throw if trying to capture twice', done => { + aggregate( + [eventFactory.markStart('frameCapture', 3), eventFactory.markStart('frameCapture', 4)], + {captureFrames: true}) + .catch((err): any => { + expect(() => { + throw err; + }).toThrowError('can capture frames only once per benchmark run'); + done(); + }); + }); - it('should throw if trying to capture when frame capture is disabled', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate([eventFactory.markStart('frameCapture', 3)]).catch((err) => { - expect(() => { - throw err; - }) - .toThrowError( - 'found start event for frame capture, but frame capture was not requested in benchpress'); - async.done(); - return null; - }); - })); + it('should throw if trying to capture when frame capture is disabled', done => { + aggregate([eventFactory.markStart('frameCapture', 3)]).catch((err) => { + expect(() => { + throw err; + }) + .toThrowError( + 'found start event for frame capture, but frame capture was not requested in benchpress'); + done(); + return null; + }); + }); - it('should throw if frame capture is enabled, but nothing is captured', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate([], {captureFrames: true}).catch((err): any => { - expect(() => { - throw err; - }).toThrowError('frame capture requested in benchpress, but no start event was found'); - async.done(); - }); - })); + it('should throw if frame capture is enabled, but nothing is captured', done => { + aggregate([], {captureFrames: true}).catch((err): any => { + expect(() => { + throw err; + }).toThrowError('frame capture requested in benchpress, but no start event was found'); + done(); + }); + }); - it('should calculate best and worst frame time', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate( - [ - eventFactory.markStart('frameCapture', 0), eventFactory.instant('frame', 1), - eventFactory.instant('frame', 9), eventFactory.instant('frame', 15), - eventFactory.instant('frame', 18), eventFactory.instant('frame', 28), - eventFactory.instant('frame', 32), eventFactory.markEnd('frameCapture', 10) - ], - {captureFrames: true}) - .then((data) => { - expect(data['frameTime.worst']).toBe(10); - expect(data['frameTime.best']).toBe(3); - async.done(); - }); - })); + it('should calculate best and worst frame time', done => { + aggregate( + [ + eventFactory.markStart('frameCapture', 0), eventFactory.instant('frame', 1), + eventFactory.instant('frame', 9), eventFactory.instant('frame', 15), + eventFactory.instant('frame', 18), eventFactory.instant('frame', 28), + eventFactory.instant('frame', 32), eventFactory.markEnd('frameCapture', 10) + ], + {captureFrames: true}) + .then((data) => { + expect(data['frameTime.worst']).toBe(10); + expect(data['frameTime.best']).toBe(3); + done(); + }); + }); - it('should calculate percentage of smoothness to be good', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate( - [ - eventFactory.markStart('frameCapture', 0), eventFactory.instant('frame', 1), - eventFactory.instant('frame', 2), eventFactory.instant('frame', 3), - eventFactory.markEnd('frameCapture', 4) - ], - {captureFrames: true}) - .then((data) => { - expect(data['frameTime.smooth']).toBe(1.0); - async.done(); - }); - })); + it('should calculate percentage of smoothness to be good', done => { + aggregate( + [ + eventFactory.markStart('frameCapture', 0), eventFactory.instant('frame', 1), + eventFactory.instant('frame', 2), eventFactory.instant('frame', 3), + eventFactory.markEnd('frameCapture', 4) + ], + {captureFrames: true}) + .then((data) => { + expect(data['frameTime.smooth']).toBe(1.0); + done(); + }); + }); - it('should calculate percentage of smoothness to be bad', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate( - [ - eventFactory.markStart('frameCapture', 0), eventFactory.instant('frame', 1), - eventFactory.instant('frame', 2), eventFactory.instant('frame', 22), - eventFactory.instant('frame', 23), eventFactory.instant('frame', 24), - eventFactory.markEnd('frameCapture', 4) - ], - {captureFrames: true}) - .then((data) => { - expect(data['frameTime.smooth']).toBe(0.75); - async.done(); - }); - })); + it('should calculate percentage of smoothness to be bad', done => { + aggregate( + [ + eventFactory.markStart('frameCapture', 0), eventFactory.instant('frame', 1), + eventFactory.instant('frame', 2), eventFactory.instant('frame', 22), + eventFactory.instant('frame', 23), eventFactory.instant('frame', 24), + eventFactory.markEnd('frameCapture', 4) + ], + {captureFrames: true}) + .then((data) => { + expect(data['frameTime.smooth']).toBe(0.75); + done(); + }); + }); }); - it('should report a single interval', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate([ - eventFactory.start('script', 0), eventFactory.end('script', 5) - ]).then((data) => { - expect(data['scriptTime']).toBe(5); - async.done(); - }); - })); + it('should report a single interval', done => { + aggregate([eventFactory.start('script', 0), eventFactory.end('script', 5)]).then((data) => { + expect(data['scriptTime']).toBe(5); + done(); + }); + }); - it('should sum up multiple intervals', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate([ - eventFactory.start('script', 0), eventFactory.end('script', 5), - eventFactory.start('script', 10), eventFactory.end('script', 17) - ]).then((data) => { - expect(data['scriptTime']).toBe(12); - async.done(); - }); - })); + it('should sum up multiple intervals', done => { + aggregate([ + eventFactory.start('script', 0), eventFactory.end('script', 5), + eventFactory.start('script', 10), eventFactory.end('script', 17) + ]).then((data) => { + expect(data['scriptTime']).toBe(12); + done(); + }); + }); - it('should ignore not started intervals', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate([eventFactory.end('script', 10)]).then((data) => { - expect(data['scriptTime']).toBe(0); - async.done(); - }); - })); + it('should ignore not started intervals', done => { + aggregate([eventFactory.end('script', 10)]).then((data) => { + expect(data['scriptTime']).toBe(0); + done(); + }); + }); - it('should ignore not ended intervals', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate([eventFactory.start('script', 10)]).then((data) => { - expect(data['scriptTime']).toBe(0); - async.done(); - }); - })); + it('should ignore not ended intervals', done => { + aggregate([eventFactory.start('script', 10)]).then((data) => { + expect(data['scriptTime']).toBe(0); + done(); + }); + }); - it('should ignore nested intervals', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate([ - eventFactory.start('script', 0), eventFactory.start('script', 5), - eventFactory.end('script', 10), eventFactory.end('script', 17) - ]).then((data) => { - expect(data['scriptTime']).toBe(17); - async.done(); - }); - })); + it('should ignore nested intervals', done => { + aggregate([ + eventFactory.start('script', 0), eventFactory.start('script', 5), + eventFactory.end('script', 10), eventFactory.end('script', 17) + ]).then((data) => { + expect(data['scriptTime']).toBe(17); + done(); + }); + }); - it('should ignore events from different processed as the start mark', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const otherProcessEventFactory = new TraceEventFactory('timeline', 'pid1'); - const metric = createMetric( - [[ - eventFactory.markStart('benchpress0', 0), eventFactory.start('script', 0, null), - eventFactory.end('script', 5, null), - otherProcessEventFactory.start('script', 10, null), - otherProcessEventFactory.end('script', 17, null), - eventFactory.markEnd('benchpress0', 20) - ]], - null!); - metric.beginMeasure().then((_) => metric.endMeasure(false)).then((data) => { - expect(data['scriptTime']).toBe(5); - async.done(); - }); - })); + it('should ignore events from different processed as the start mark', done => { + const otherProcessEventFactory = new TraceEventFactory('timeline', 'pid1'); + const metric = createMetric( + [[ + eventFactory.markStart('benchpress0', 0), eventFactory.start('script', 0, null), + eventFactory.end('script', 5, null), otherProcessEventFactory.start('script', 10, null), + otherProcessEventFactory.end('script', 17, null), + eventFactory.markEnd('benchpress0', 20) + ]], + null!); + metric.beginMeasure().then((_) => metric.endMeasure(false)).then((data) => { + expect(data['scriptTime']).toBe(5); + done(); + }); + }); - it('should mark a run as invalid if the start and end marks are different', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const otherProcessEventFactory = new TraceEventFactory('timeline', 'pid1'); - const metric = createMetric( - [[ - eventFactory.markStart('benchpress0', 0), eventFactory.start('script', 0, null), - eventFactory.end('script', 5, null), - otherProcessEventFactory.start('script', 10, null), - otherProcessEventFactory.end('script', 17, null), - otherProcessEventFactory.markEnd('benchpress0', 20) - ]], - null!); - metric.beginMeasure().then((_) => metric.endMeasure(false)).then((data) => { - expect(data['invalid']).toBe(1); - async.done(); - }); - })); + it('should mark a run as invalid if the start and end marks are different', done => { + const otherProcessEventFactory = new TraceEventFactory('timeline', 'pid1'); + const metric = createMetric( + [[ + eventFactory.markStart('benchpress0', 0), eventFactory.start('script', 0, null), + eventFactory.end('script', 5, null), otherProcessEventFactory.start('script', 10, null), + otherProcessEventFactory.end('script', 17, null), + otherProcessEventFactory.markEnd('benchpress0', 20) + ]], + null!); + metric.beginMeasure().then((_) => metric.endMeasure(false)).then((data) => { + expect(data['invalid']).toBe(1); + done(); + }); + }); - it('should support scriptTime metric', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate([ - eventFactory.start('script', 0), eventFactory.end('script', 5) - ]).then((data) => { - expect(data['scriptTime']).toBe(5); - async.done(); - }); - })); + it('should support scriptTime metric', done => { + aggregate([eventFactory.start('script', 0), eventFactory.end('script', 5)]).then((data) => { + expect(data['scriptTime']).toBe(5); + done(); + }); + }); - it('should support renderTime metric', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate([ - eventFactory.start('render', 0), eventFactory.end('render', 5) - ]).then((data) => { - expect(data['renderTime']).toBe(5); - async.done(); - }); - })); + it('should support renderTime metric', done => { + aggregate([eventFactory.start('render', 0), eventFactory.end('render', 5)]).then((data) => { + expect(data['renderTime']).toBe(5); + done(); + }); + }); - it('should support gcTime/gcAmount metric', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate([ - eventFactory.start('gc', 0, {'usedHeapSize': 2500}), - eventFactory.end('gc', 5, {'usedHeapSize': 1000}) - ]).then((data) => { - expect(data['gcTime']).toBe(5); - expect(data['gcAmount']).toBe(1.5); - expect(data['majorGcTime']).toBe(0); - async.done(); - }); - })); + it('should support gcTime/gcAmount metric', done => { + aggregate([ + eventFactory.start('gc', 0, {'usedHeapSize': 2500}), + eventFactory.end('gc', 5, {'usedHeapSize': 1000}) + ]).then((data) => { + expect(data['gcTime']).toBe(5); + expect(data['gcAmount']).toBe(1.5); + expect(data['majorGcTime']).toBe(0); + done(); + }); + }); - it('should support majorGcTime metric', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate([ - eventFactory.start('gc', 0, {'usedHeapSize': 2500}), - eventFactory.end('gc', 5, {'usedHeapSize': 1000, 'majorGc': true}) - ]).then((data) => { - expect(data['gcTime']).toBe(5); - expect(data['majorGcTime']).toBe(5); - async.done(); - }); - })); + it('should support majorGcTime metric', done => { + aggregate([ + eventFactory.start('gc', 0, {'usedHeapSize': 2500}), + eventFactory.end('gc', 5, {'usedHeapSize': 1000, 'majorGc': true}) + ]).then((data) => { + expect(data['gcTime']).toBe(5); + expect(data['majorGcTime']).toBe(5); + done(); + }); + }); - it('should support pureScriptTime = scriptTime-gcTime-renderTime', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate([ - eventFactory.start('script', 0), eventFactory.start('gc', 1, {'usedHeapSize': 1000}), - eventFactory.end('gc', 4, {'usedHeapSize': 0}), eventFactory.start('render', 4), - eventFactory.end('render', 5), eventFactory.end('script', 6) - ]).then((data) => { - expect(data['scriptTime']).toBe(6); - expect(data['pureScriptTime']).toBe(2); - async.done(); - }); - })); + it('should support pureScriptTime = scriptTime-gcTime-renderTime', done => { + aggregate([ + eventFactory.start('script', 0), eventFactory.start('gc', 1, {'usedHeapSize': 1000}), + eventFactory.end('gc', 4, {'usedHeapSize': 0}), eventFactory.start('render', 4), + eventFactory.end('render', 5), eventFactory.end('script', 6) + ]).then((data) => { + expect(data['scriptTime']).toBe(6); + expect(data['pureScriptTime']).toBe(2); + done(); + }); + }); describe('receivedData', () => { - it('should report received data since last navigationStart', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate( - [ - eventFactory.instant('receivedData', 0, {'encodedDataLength': 1}), - eventFactory.instant('navigationStart', 1), - eventFactory.instant('receivedData', 2, {'encodedDataLength': 2}), - eventFactory.instant('navigationStart', 3), - eventFactory.instant('receivedData', 4, {'encodedDataLength': 4}), - eventFactory.instant('receivedData', 5, {'encodedDataLength': 8}) - ], - {receivedData: true}) - .then((data) => { - expect(data['receivedData']).toBe(12); - async.done(); - }); - })); + it('should report received data since last navigationStart', done => { + aggregate( + [ + eventFactory.instant('receivedData', 0, {'encodedDataLength': 1}), + eventFactory.instant('navigationStart', 1), + eventFactory.instant('receivedData', 2, {'encodedDataLength': 2}), + eventFactory.instant('navigationStart', 3), + eventFactory.instant('receivedData', 4, {'encodedDataLength': 4}), + eventFactory.instant('receivedData', 5, {'encodedDataLength': 8}) + ], + {receivedData: true}) + .then((data) => { + expect(data['receivedData']).toBe(12); + done(); + }); + }); }); describe('requestCount', () => { - it('should report count of requests sent since last navigationStart', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate( - [ - eventFactory.instant('sendRequest', 0), eventFactory.instant('navigationStart', 1), - eventFactory.instant('sendRequest', 2), eventFactory.instant('navigationStart', 3), - eventFactory.instant('sendRequest', 4), eventFactory.instant('sendRequest', 5) - ], - {requestCount: true}) - .then((data) => { - expect(data['requestCount']).toBe(2); - async.done(); - }); - })); + it('should report count of requests sent since last navigationStart', done => { + aggregate( + [ + eventFactory.instant('sendRequest', 0), eventFactory.instant('navigationStart', 1), + eventFactory.instant('sendRequest', 2), eventFactory.instant('navigationStart', 3), + eventFactory.instant('sendRequest', 4), eventFactory.instant('sendRequest', 5) + ], + {requestCount: true}) + .then((data) => { + expect(data['requestCount']).toBe(2); + done(); + }); + }); }); describe('microMetrics', () => { - it('should report micro metrics', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate( - [ - eventFactory.markStart('mm1', 0), - eventFactory.markEnd('mm1', 5), - ], - {microMetrics: {'mm1': 'micro metric 1'}}) - .then((data) => { - expect(data['mm1']).toBe(5.0); - async.done(); - }); - })); + it('should report micro metrics', done => { + aggregate( + [ + eventFactory.markStart('mm1', 0), + eventFactory.markEnd('mm1', 5), + ], + {microMetrics: {'mm1': 'micro metric 1'}}) + .then((data) => { + expect(data['mm1']).toBe(5.0); + done(); + }); + }); - it('should ignore micro metrics that were not specified', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate([ - eventFactory.markStart('mm1', 0), - eventFactory.markEnd('mm1', 5), - ]).then((data) => { - expect(data['mm1']).toBeFalsy(); - async.done(); - }); - })); + it('should ignore micro metrics that were not specified', done => { + aggregate([ + eventFactory.markStart('mm1', 0), + eventFactory.markEnd('mm1', 5), + ]).then((data) => { + expect(data['mm1']).toBeFalsy(); + done(); + }); + }); - it('should report micro metric averages', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - aggregate( - [ - eventFactory.markStart('mm1*20', 0), - eventFactory.markEnd('mm1*20', 5), - ], - {microMetrics: {'mm1': 'micro metric 1'}}) - .then((data) => { - expect(data['mm1']).toBe(5 / 20); - async.done(); - }); - })); + it('should report micro metric averages', done => { + aggregate( + [ + eventFactory.markStart('mm1*20', 0), + eventFactory.markEnd('mm1*20', 5), + ], + {microMetrics: {'mm1': 'micro metric 1'}}) + .then((data) => { + expect(data['mm1']).toBe(5 / 20); + done(); + }); + }); }); }); }); @@ -693,21 +646,21 @@ class MockDriverExtension extends WebDriverExtension { super(); } - timeBegin(name: string): Promise { + override timeBegin(name: string): Promise { this._commandLog.push(['timeBegin', name]); return Promise.resolve(null); } - timeEnd(name: string, restartName: string|null): Promise { + override timeEnd(name: string, restartName: string|null): Promise { this._commandLog.push(['timeEnd', name, restartName]); return Promise.resolve(null); } - perfLogFeatures(): PerfLogFeatures { + override perfLogFeatures(): PerfLogFeatures { return this._perfLogFeatures; } - readPerfLog(): Promise { + override readPerfLog(): Promise { this._commandLog.push('readPerfLog'); if (this._perfLogs.length > 0) { const next = this._perfLogs[0]; @@ -718,7 +671,7 @@ class MockDriverExtension extends WebDriverExtension { } } - gc(): Promise { + override gc(): Promise { this._commandLog.push(['gc']); return Promise.resolve(null); } diff --git a/packages/benchpress/test/metric/user_metric_spec.ts b/packages/benchpress/test/metric/user_metric_spec.ts index cb4e17b81d..70e3242a31 100644 --- a/packages/benchpress/test/metric/user_metric_spec.ts +++ b/packages/benchpress/test/metric/user_metric_spec.ts @@ -7,7 +7,6 @@ */ import {Injector, StaticProvider} from '@angular/core'; -import {AsyncTestCompleter, describe, expect, inject, it} from '@angular/core/testing/src/testing_internal'; import {Options, PerfLogEvent, PerfLogFeatures, UserMetric, WebDriverAdapter} from '../../index'; @@ -42,23 +41,22 @@ describe('user metric', () => { }); describe('endMeasure', () => { - it('should stop measuring when all properties have numeric values', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const metric = createMetric( - [[]], new PerfLogFeatures(), - {userMetrics: {'loadTime': 'time to load', 'content': 'time to see content'}}); - metric.beginMeasure().then(() => metric.endMeasure(true)).then(values => { - expect(values['loadTime']).toBe(25); - expect(values['content']).toBe(250); - async.done(); - }); + it('should stop measuring when all properties have numeric values', done => { + const metric = createMetric( + [[]], new PerfLogFeatures(), + {userMetrics: {'loadTime': 'time to load', 'content': 'time to see content'}}); + metric.beginMeasure().then(() => metric.endMeasure(true)).then(values => { + expect(values['loadTime']).toBe(25); + expect(values['content']).toBe(250); + done(); + }); - wdAdapter.data['loadTime'] = 25; - // Wait before setting 2nd property. - setTimeout(() => { - wdAdapter.data['content'] = 250; - }, 50); - }), 600); + wdAdapter.data['loadTime'] = 25; + // Wait before setting 2nd property. + setTimeout(() => { + wdAdapter.data['content'] = 250; + }, 50); + }, 600); }); }); })(); @@ -66,7 +64,7 @@ describe('user metric', () => { class MockDriverAdapter extends WebDriverAdapter { data: any = {}; - executeScript(script: string): any { + override executeScript(script: string): any { // Just handles `return window.propName` ignores `delete window.propName`. if (script.indexOf('return window.') == 0) { const metricName = script.substring('return window.'.length); diff --git a/packages/benchpress/test/reporter/console_reporter_spec.ts b/packages/benchpress/test/reporter/console_reporter_spec.ts index d042a992ee..c5cb5c98a8 100644 --- a/packages/benchpress/test/reporter/console_reporter_spec.ts +++ b/packages/benchpress/test/reporter/console_reporter_spec.ts @@ -7,7 +7,6 @@ */ import {StaticProvider} from '@angular/core'; -import {describe, expect, it} from '@angular/core/testing/src/testing_internal'; import {ConsoleReporter, Injector, MeasureValues, SampleDescription} from '../../index'; diff --git a/packages/benchpress/test/reporter/json_file_reporter_spec.ts b/packages/benchpress/test/reporter/json_file_reporter_spec.ts index 6fc2657ba7..613991cc28 100644 --- a/packages/benchpress/test/reporter/json_file_reporter_spec.ts +++ b/packages/benchpress/test/reporter/json_file_reporter_spec.ts @@ -6,8 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -import {AsyncTestCompleter, describe, expect, inject, it} from '@angular/core/testing/src/testing_internal'; - import {Injector, JsonFileReporter, MeasureValues, Options, SampleDescription} from '../../index'; { @@ -37,37 +35,35 @@ import {Injector, JsonFileReporter, MeasureValues, Options, SampleDescription} f return Injector.create(providers).get(JsonFileReporter); } - it('should write all data into a file', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createReporter({ - sampleId: 'someId', - descriptions: [{'a': 2}], - path: 'somePath', - metrics: {'a': 'script time', 'b': 'render time'} - }) - .reportSample( - [mv(0, 0, {'a': 3, 'b': 6})], - [mv(0, 0, {'a': 3, 'b': 6}), mv(1, 1, {'a': 5, 'b': 9})]); - const regExp = /somePath\/someId_\d+\.json/; - expect(loggedFile['filename'].match(regExp) != null).toBe(true); - const parsedContent = JSON.parse(loggedFile['content']) as {[key: string]: any}; - expect(parsedContent).toEqual({ - 'description': { - 'id': 'someId', - 'description': {'a': 2}, - 'metrics': {'a': 'script time', 'b': 'render time'} - }, - 'stats': {'a': '4.00+-25%', 'b': '7.50+-20%'}, - 'completeSample': [ - {'timeStamp': '1970-01-01T00:00:00.000Z', 'runIndex': 0, 'values': {'a': 3, 'b': 6}} - ], - 'validSample': [ - {'timeStamp': '1970-01-01T00:00:00.000Z', 'runIndex': 0, 'values': {'a': 3, 'b': 6}}, - {'timeStamp': '1970-01-01T00:00:00.001Z', 'runIndex': 1, 'values': {'a': 5, 'b': 9}} - ] - }); - async.done(); - })); + it('should write all data into a file', done => { + createReporter({ + sampleId: 'someId', + descriptions: [{'a': 2}], + path: 'somePath', + metrics: {'a': 'script time', 'b': 'render time'} + }) + .reportSample( + [mv(0, 0, {'a': 3, 'b': 6})], + [mv(0, 0, {'a': 3, 'b': 6}), mv(1, 1, {'a': 5, 'b': 9})]); + const regExp = /somePath\/someId_\d+\.json/; + expect(loggedFile['filename'].match(regExp) != null).toBe(true); + const parsedContent = JSON.parse(loggedFile['content']) as {[key: string]: any}; + expect(parsedContent).toEqual({ + 'description': { + 'id': 'someId', + 'description': {'a': 2}, + 'metrics': {'a': 'script time', 'b': 'render time'} + }, + 'stats': {'a': '4.00+-25%', 'b': '7.50+-20%'}, + 'completeSample': + [{'timeStamp': '1970-01-01T00:00:00.000Z', 'runIndex': 0, 'values': {'a': 3, 'b': 6}}], + 'validSample': [ + {'timeStamp': '1970-01-01T00:00:00.000Z', 'runIndex': 0, 'values': {'a': 3, 'b': 6}}, + {'timeStamp': '1970-01-01T00:00:00.001Z', 'runIndex': 1, 'values': {'a': 5, 'b': 9}} + ] + }); + done(); + }); }); } diff --git a/packages/benchpress/test/reporter/multi_reporter_spec.ts b/packages/benchpress/test/reporter/multi_reporter_spec.ts index 3f10fbaa59..fc39c60f84 100644 --- a/packages/benchpress/test/reporter/multi_reporter_spec.ts +++ b/packages/benchpress/test/reporter/multi_reporter_spec.ts @@ -6,8 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -import {AsyncTestCompleter, describe, expect, inject, it} from '@angular/core/testing/src/testing_internal'; - import {Injector, MeasureValues, MultiReporter, Reporter} from '../../index'; (function() { @@ -22,30 +20,29 @@ function createReporters(ids: any[]) { } describe('multi reporter', () => { - it('should reportMeasureValues to all', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const mv = new MeasureValues(0, new Date(), {}); - createReporters(['m1', 'm2']).then((r) => r.reportMeasureValues(mv)).then((values) => { - expect(values).toEqual([{'id': 'm1', 'values': mv}, {'id': 'm2', 'values': mv}]); - async.done(); - }); - })); + it('should reportMeasureValues to all', done => { + const mv = new MeasureValues(0, new Date(), {}); + createReporters(['m1', 'm2']).then((r) => r.reportMeasureValues(mv)).then((values) => { + expect(values).toEqual([{'id': 'm1', 'values': mv}, {'id': 'm2', 'values': mv}]); + done(); + }); + }); - it('should reportSample to call', inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const completeSample = - [new MeasureValues(0, new Date(), {}), new MeasureValues(1, new Date(), {})]; - const validSample = [completeSample[1]]; + it('should reportSample to call', done => { + const completeSample = + [new MeasureValues(0, new Date(), {}), new MeasureValues(1, new Date(), {})]; + const validSample = [completeSample[1]]; - createReporters(['m1', 'm2']) - .then((r) => r.reportSample(completeSample, validSample)) - .then((values) => { - expect(values).toEqual([ - {'id': 'm1', 'completeSample': completeSample, 'validSample': validSample}, - {'id': 'm2', 'completeSample': completeSample, 'validSample': validSample} - ]); - async.done(); - }); - })); + createReporters(['m1', 'm2']) + .then((r) => r.reportSample(completeSample, validSample)) + .then((values) => { + expect(values).toEqual([ + {'id': 'm1', 'completeSample': completeSample, 'validSample': validSample}, + {'id': 'm2', 'completeSample': completeSample, 'validSample': validSample} + ]); + done(); + }); + }); }); })(); @@ -54,11 +51,11 @@ class MockReporter extends Reporter { super(); } - reportMeasureValues(values: MeasureValues): Promise<{[key: string]: any}> { + override reportMeasureValues(values: MeasureValues): Promise<{[key: string]: any}> { return Promise.resolve({'id': this._id, 'values': values}); } - reportSample(completeSample: MeasureValues[], validSample: MeasureValues[]): + override reportSample(completeSample: MeasureValues[], validSample: MeasureValues[]): Promise<{[key: string]: any}> { return Promise.resolve( {'id': this._id, 'completeSample': completeSample, 'validSample': validSample}); diff --git a/packages/benchpress/test/runner_spec.ts b/packages/benchpress/test/runner_spec.ts index 7cda672e33..6026956a3e 100644 --- a/packages/benchpress/test/runner_spec.ts +++ b/packages/benchpress/test/runner_spec.ts @@ -6,8 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -import {AsyncTestCompleter, describe, expect, inject, it} from '@angular/core/testing/src/testing_internal'; - import {Injector, Metric, Options, Runner, SampleDescription, Sampler, SampleState, Validator, WebDriverAdapter} from '../index'; { @@ -35,91 +33,83 @@ import {Injector, Metric, Options, Runner, SampleDescription, Sampler, SampleSta return runner; } - it('should set SampleDescription.id', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createRunner() - .sample({id: 'someId'}) - .then((_) => injector.get(SampleDescription)) - .then((desc) => { - expect(desc.id).toBe('someId'); - async.done(); - }); - })); + it('should set SampleDescription.id', done => { + createRunner() + .sample({id: 'someId'}) + .then((_) => injector.get(SampleDescription)) + .then((desc) => { + expect(desc.id).toBe('someId'); + done(); + }); + }); - it('should merge SampleDescription.description', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createRunner([{provide: Options.DEFAULT_DESCRIPTION, useValue: {'a': 1}}]) - .sample({ - id: 'someId', - providers: [{provide: Options.SAMPLE_DESCRIPTION, useValue: {'b': 2}}] - }) - .then((_) => injector.get(SampleDescription)) - .then((desc) => { - expect(desc.description) - .toEqual( - {'forceGc': false, 'userAgent': 'someUserAgent', 'a': 1, 'b': 2, 'v': 11}); - async.done(); - }); - })); + it('should merge SampleDescription.description', done => { + createRunner([{provide: Options.DEFAULT_DESCRIPTION, useValue: {'a': 1}}]) + .sample({ + id: 'someId', + providers: [{provide: Options.SAMPLE_DESCRIPTION, useValue: {'b': 2}}] + }) + .then((_) => injector.get(SampleDescription)) + .then((desc) => { + expect(desc.description) + .toEqual({'forceGc': false, 'userAgent': 'someUserAgent', 'a': 1, 'b': 2, 'v': 11}); + done(); + }); + }); - it('should fill SampleDescription.metrics from the Metric', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createRunner() - .sample({id: 'someId'}) - .then((_) => injector.get(SampleDescription)) - .then((desc) => { - expect(desc.metrics).toEqual({'m1': 'some metric'}); - async.done(); - }); - })); + it('should fill SampleDescription.metrics from the Metric', done => { + createRunner() + .sample({id: 'someId'}) + .then((_) => injector.get(SampleDescription)) + .then((desc) => { + expect(desc.metrics).toEqual({'m1': 'some metric'}); + done(); + }); + }); - it('should provide Options.EXECUTE', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const execute = () => {}; - createRunner().sample({id: 'someId', execute: execute}).then((_) => { - expect(injector.get(Options.EXECUTE)).toEqual(execute); - async.done(); - }); - })); + it('should provide Options.EXECUTE', done => { + const execute = () => {}; + createRunner().sample({id: 'someId', execute: execute}).then((_) => { + expect(injector.get(Options.EXECUTE)).toEqual(execute); + done(); + }); + }); - it('should provide Options.PREPARE', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const prepare = () => {}; - createRunner().sample({id: 'someId', prepare: prepare}).then((_) => { - expect(injector.get(Options.PREPARE)).toEqual(prepare); - async.done(); - }); - })); + it('should provide Options.PREPARE', done => { + const prepare = () => {}; + createRunner().sample({id: 'someId', prepare: prepare}).then((_) => { + expect(injector.get(Options.PREPARE)).toEqual(prepare); + done(); + }); + }); - it('should provide Options.MICRO_METRICS', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createRunner().sample({id: 'someId', microMetrics: {'a': 'b'}}).then((_) => { - expect(injector.get(Options.MICRO_METRICS)).toEqual({'a': 'b'}); - async.done(); - }); - })); + it('should provide Options.MICRO_METRICS', done => { + createRunner().sample({id: 'someId', microMetrics: {'a': 'b'}}).then((_) => { + expect(injector.get(Options.MICRO_METRICS)).toEqual({'a': 'b'}); + done(); + }); + }); - it('should overwrite providers per sample call', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createRunner([{provide: Options.DEFAULT_DESCRIPTION, useValue: {'a': 1}}]) - .sample({ - id: 'someId', - providers: [{provide: Options.DEFAULT_DESCRIPTION, useValue: {'a': 2}}] - }) - .then((_) => injector.get(SampleDescription)) - .then((desc) => { - expect(desc.description['a']).toBe(2); - async.done(); - }); - })); + it('should overwrite providers per sample call', done => { + createRunner([{provide: Options.DEFAULT_DESCRIPTION, useValue: {'a': 1}}]) + .sample({ + id: 'someId', + providers: [{provide: Options.DEFAULT_DESCRIPTION, useValue: {'a': 2}}] + }) + .then((_) => injector.get(SampleDescription)) + .then((desc) => { + expect(desc.description['a']).toBe(2); + done(); + }); + }); }); } class MockWebDriverAdapter extends WebDriverAdapter { - executeScript(script: string): Promise { + override executeScript(script: string): Promise { return Promise.resolve('someUserAgent'); } - capabilities(): Promise> { + override capabilities(): Promise> { return null!; } } @@ -128,7 +118,7 @@ class MockValidator extends Validator { constructor() { super(); } - describe() { + override describe() { return {'v': 11}; } } @@ -137,7 +127,7 @@ class MockMetric extends Metric { constructor() { super(); } - describe() { + override describe() { return {'m1': 'some metric'}; } } @@ -146,7 +136,7 @@ class MockSampler extends Sampler { constructor() { super(null!, null!, null!, null!, null!, null!, null!); } - sample(): Promise { + override sample(): Promise { return Promise.resolve(new SampleState([], [])); } } diff --git a/packages/benchpress/test/sampler_spec.ts b/packages/benchpress/test/sampler_spec.ts index feeea4253f..c06e3a639f 100644 --- a/packages/benchpress/test/sampler_spec.ts +++ b/packages/benchpress/test/sampler_spec.ts @@ -6,8 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -import {AsyncTestCompleter, describe, expect, inject, it} from '@angular/core/testing/src/testing_internal'; - import {Injector, MeasureValues, Metric, Options, Reporter, Sampler, Validator, WebDriverAdapter} from '../index'; { @@ -47,59 +45,57 @@ import {Injector, MeasureValues, Metric, Options, Reporter, Sampler, Validator, sampler = Injector.create(providers).get(Sampler); } - it('should call the prepare and execute callbacks using WebDriverAdapter.waitFor', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const log: any[] = []; - let count = 0; - const driver = new MockDriverAdapter([], (callback: Function) => { - const result = callback(); - log.push(result); - return Promise.resolve(result); - }); - createSampler({ - driver: driver, - validator: createCountingValidator(2), - prepare: () => count++, - execute: () => count++, - }); - sampler.sample().then((_) => { - expect(count).toBe(4); - expect(log).toEqual([0, 1, 2, 3]); - async.done(); - }); - })); + it('should call the prepare and execute callbacks using WebDriverAdapter.waitFor', done => { + const log: any[] = []; + let count = 0; + const driver = new MockDriverAdapter([], (callback: Function) => { + const result = callback(); + log.push(result); + return Promise.resolve(result); + }); + createSampler({ + driver: driver, + validator: createCountingValidator(2), + prepare: () => count++, + execute: () => count++, + }); + sampler.sample().then((_) => { + expect(count).toBe(4); + expect(log).toEqual([0, 1, 2, 3]); + done(); + }); + }); - it('should call prepare, beginMeasure, execute, endMeasure for every iteration', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - let workCount = 0; - const log: any[] = []; - createSampler({ - metric: createCountingMetric(log), - validator: createCountingValidator(2), - prepare: () => { - log.push(`p${workCount++}`); - }, - execute: () => { - log.push(`w${workCount++}`); - } - }); - sampler.sample().then((_) => { - expect(log).toEqual([ - 'p0', - ['beginMeasure'], - 'w1', - ['endMeasure', false, {'script': 0}], - 'p2', - ['beginMeasure'], - 'w3', - ['endMeasure', false, {'script': 1}], - ]); - async.done(); - }); - })); + it('should call prepare, beginMeasure, execute, endMeasure for every iteration', done => { + let workCount = 0; + const log: any[] = []; + createSampler({ + metric: createCountingMetric(log), + validator: createCountingValidator(2), + prepare: () => { + log.push(`p${workCount++}`); + }, + execute: () => { + log.push(`w${workCount++}`); + } + }); + sampler.sample().then((_) => { + expect(log).toEqual([ + 'p0', + ['beginMeasure'], + 'w1', + ['endMeasure', false, {'script': 0}], + 'p2', + ['beginMeasure'], + 'w3', + ['endMeasure', false, {'script': 1}], + ]); + done(); + }); + }); it('should call execute, endMeasure for every iteration if there is no prepare callback', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { + done => { const log: any[] = []; let workCount = 0; createSampler({ @@ -118,93 +114,90 @@ import {Injector, MeasureValues, Metric, Options, Reporter, Sampler, Validator, 'w1', ['endMeasure', true, {'script': 1}], ]); - async.done(); + done(); }); - })); + }); - it('should only collect metrics for execute and ignore metrics from prepare', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - let scriptTime = 0; - let iterationCount = 1; - createSampler({ - validator: createCountingValidator(2), - metric: new MockMetric( - [], - () => { - const result = Promise.resolve({'script': scriptTime}); - scriptTime = 0; - return result; - }), - prepare: () => { - scriptTime = 1 * iterationCount; - }, - execute: () => { - scriptTime = 10 * iterationCount; - iterationCount++; - } - }); - sampler.sample().then((state) => { - expect(state.completeSample.length).toBe(2); - expect(state.completeSample[0]).toEqual(mv(0, 1000, {'script': 10})); - expect(state.completeSample[1]).toEqual(mv(1, 1001, {'script': 20})); - async.done(); - }); - })); + it('should only collect metrics for execute and ignore metrics from prepare', done => { + let scriptTime = 0; + let iterationCount = 1; + createSampler({ + validator: createCountingValidator(2), + metric: new MockMetric( + [], + () => { + const result = Promise.resolve({'script': scriptTime}); + scriptTime = 0; + return result; + }), + prepare: () => { + scriptTime = 1 * iterationCount; + }, + execute: () => { + scriptTime = 10 * iterationCount; + iterationCount++; + } + }); + sampler.sample().then((state) => { + expect(state.completeSample.length).toBe(2); + expect(state.completeSample[0]).toEqual(mv(0, 1000, {'script': 10})); + expect(state.completeSample[1]).toEqual(mv(1, 1001, {'script': 20})); + done(); + }); + }); - it('should call the validator for every execution and store the valid sample', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const log: any[] = []; - const validSample = [mv(null!, null!, {})]; + it('should call the validator for every execution and store the valid sample', done => { + const log: any[] = []; + const validSample = [mv(null!, null!, {})]; - createSampler({ - metric: createCountingMetric(), - validator: createCountingValidator(2, validSample, log), - execute: EMPTY_EXECUTE - }); - sampler.sample().then((state) => { - expect(state.validSample).toBe(validSample); - // TODO(tbosch): Why does this fail?? - // expect(log).toEqual([ - // ['validate', [{'script': 0}], null], - // ['validate', [{'script': 0}, {'script': 1}], validSample] - // ]); + createSampler({ + metric: createCountingMetric(), + validator: createCountingValidator(2, validSample, log), + execute: EMPTY_EXECUTE + }); + sampler.sample().then((state) => { + expect(state.validSample).toBe(validSample); + // TODO(tbosch): Why does this fail?? + // expect(log).toEqual([ + // ['validate', [{'script': 0}], null], + // ['validate', [{'script': 0}, {'script': 1}], validSample] + // ]); - expect(log.length).toBe(2); - expect(log[0]).toEqual(['validate', [mv(0, 1000, {'script': 0})], null]); - expect(log[1]).toEqual( - ['validate', [mv(0, 1000, {'script': 0}), mv(1, 1001, {'script': 1})], validSample]); + expect(log.length).toBe(2); + expect(log[0]).toEqual(['validate', [mv(0, 1000, {'script': 0})], null]); + expect(log[1]).toEqual( + ['validate', [mv(0, 1000, {'script': 0}), mv(1, 1001, {'script': 1})], validSample]); - async.done(); - }); - })); + done(); + }); + }); - it('should report the metric values', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const log: any[] = []; - const validSample = [mv(null!, null!, {})]; - createSampler({ - validator: createCountingValidator(2, validSample), - metric: createCountingMetric(), - reporter: new MockReporter(log), - execute: EMPTY_EXECUTE - }); - sampler.sample().then((_) => { - // TODO(tbosch): Why does this fail?? - // expect(log).toEqual([ - // ['reportMeasureValues', 0, {'script': 0}], - // ['reportMeasureValues', 1, {'script': 1}], - // ['reportSample', [{'script': 0}, {'script': 1}], validSample] - // ]); - expect(log.length).toBe(3); - expect(log[0]).toEqual(['reportMeasureValues', mv(0, 1000, {'script': 0})]); - expect(log[1]).toEqual(['reportMeasureValues', mv(1, 1001, {'script': 1})]); - expect(log[2]).toEqual([ - 'reportSample', [mv(0, 1000, {'script': 0}), mv(1, 1001, {'script': 1})], validSample - ]); + it('should report the metric values', done => { + const log: any[] = []; + const validSample = [mv(null!, null!, {})]; + createSampler({ + validator: createCountingValidator(2, validSample), + metric: createCountingMetric(), + reporter: new MockReporter(log), + execute: EMPTY_EXECUTE + }); + sampler.sample().then((_) => { + // TODO(tbosch): Why does this fail?? + // expect(log).toEqual([ + // ['reportMeasureValues', 0, {'script': 0}], + // ['reportMeasureValues', 1, {'script': 1}], + // ['reportSample', [{'script': 0}, {'script': 1}], validSample] + // ]); + expect(log.length).toBe(3); + expect(log[0]).toEqual(['reportMeasureValues', mv(0, 1000, {'script': 0})]); + expect(log[1]).toEqual(['reportMeasureValues', mv(1, 1001, {'script': 1})]); + expect(log[2]).toEqual([ + 'reportSample', [mv(0, 1000, {'script': 0}), mv(1, 1001, {'script': 1})], validSample + ]); - async.done(); - }); - })); + done(); + }); + }); }); } @@ -232,7 +225,7 @@ class MockDriverAdapter extends WebDriverAdapter { constructor(private _log: any[] = [], private _waitFor: Function|null = null) { super(); } - waitFor(callback: Function): Promise { + override waitFor(callback: Function): Promise { if (this._waitFor != null) { return this._waitFor(callback); } else { @@ -246,7 +239,7 @@ class MockValidator extends Validator { constructor(private _log: any[] = [], private _validate: Function|null = null) { super(); } - validate(completeSample: MeasureValues[]): MeasureValues[] { + override validate(completeSample: MeasureValues[]): MeasureValues[] { const stableSample = this._validate != null ? this._validate(completeSample) : completeSample; this._log.push(['validate', completeSample, stableSample]); return stableSample; @@ -257,11 +250,11 @@ class MockMetric extends Metric { constructor(private _log: any[] = [], private _endMeasure: Function|null = null) { super(); } - beginMeasure() { + override beginMeasure() { this._log.push(['beginMeasure']); return Promise.resolve(null); } - endMeasure(restart: boolean) { + override endMeasure(restart: boolean) { const measureValues = this._endMeasure != null ? this._endMeasure() : {}; this._log.push(['endMeasure', restart, measureValues]); return Promise.resolve(measureValues); @@ -272,11 +265,12 @@ class MockReporter extends Reporter { constructor(private _log: any[] = []) { super(); } - reportMeasureValues(values: MeasureValues): Promise { + override reportMeasureValues(values: MeasureValues): Promise { this._log.push(['reportMeasureValues', values]); return Promise.resolve(null); } - reportSample(completeSample: MeasureValues[], validSample: MeasureValues[]): Promise { + override reportSample(completeSample: MeasureValues[], validSample: MeasureValues[]): + Promise { this._log.push(['reportSample', completeSample, validSample]); return Promise.resolve(null); } diff --git a/packages/benchpress/test/statistic_spec.ts b/packages/benchpress/test/statistic_spec.ts index 2255c5488d..b2f3fba7b5 100644 --- a/packages/benchpress/test/statistic_spec.ts +++ b/packages/benchpress/test/statistic_spec.ts @@ -6,7 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -import {describe, expect, it} from '@angular/core/testing/src/testing_internal'; import {Statistic} from '../src/statistic'; { diff --git a/packages/benchpress/test/validator/regression_slope_validator_spec.ts b/packages/benchpress/test/validator/regression_slope_validator_spec.ts index d6c20a3e99..7ea0969109 100644 --- a/packages/benchpress/test/validator/regression_slope_validator_spec.ts +++ b/packages/benchpress/test/validator/regression_slope_validator_spec.ts @@ -6,8 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -import {describe, expect, it} from '@angular/core/testing/src/testing_internal'; - import {Injector, MeasureValues, RegressionSlopeValidator} from '../../index'; { diff --git a/packages/benchpress/test/validator/size_validator_spec.ts b/packages/benchpress/test/validator/size_validator_spec.ts index 5e7c11c05a..852c7c57fc 100644 --- a/packages/benchpress/test/validator/size_validator_spec.ts +++ b/packages/benchpress/test/validator/size_validator_spec.ts @@ -6,8 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -import {describe, expect, it} from '@angular/core/testing/src/testing_internal'; - import {Injector, MeasureValues, SizeValidator} from '../../index'; { diff --git a/packages/benchpress/test/web_driver_extension_spec.ts b/packages/benchpress/test/web_driver_extension_spec.ts index f9c0b274d7..ccded7492a 100644 --- a/packages/benchpress/test/web_driver_extension_spec.ts +++ b/packages/benchpress/test/web_driver_extension_spec.ts @@ -6,8 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -import {AsyncTestCompleter, describe, expect, inject, it} from '@angular/core/testing/src/testing_internal'; - import {Injector, Options, WebDriverExtension} from '../index'; (function() { @@ -28,21 +26,19 @@ function createExtension(ids: any[], caps: any) { } describe('WebDriverExtension.provideFirstSupported', () => { - it('should provide the extension that matches the capabilities', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension(['m1', 'm2', 'm3'], {'browser': 'm2'}).then((m) => { - expect(m.id).toEqual('m2'); - async.done(); - }); - })); + it('should provide the extension that matches the capabilities', done => { + createExtension(['m1', 'm2', 'm3'], {'browser': 'm2'}).then((m) => { + expect(m.id).toEqual('m2'); + done(); + }); + }); - it('should throw if there is no match', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension(['m1'], {'browser': 'm2'}).catch((err) => { - expect(err != null).toBe(true); - async.done(); - }); - })); + it('should throw if there is no match', done => { + createExtension(['m1'], {'browser': 'm2'}).catch((err) => { + expect(err != null).toBe(true); + done(); + }); + }); }); })(); @@ -51,7 +47,7 @@ class MockExtension extends WebDriverExtension { super(); } - supports(capabilities: {[key: string]: any}): boolean { + override supports(capabilities: {[key: string]: any}): boolean { return capabilities['browser'] === this.id; } } diff --git a/packages/benchpress/test/webdriver/chrome_driver_extension_spec.ts b/packages/benchpress/test/webdriver/chrome_driver_extension_spec.ts index cce37e50e2..f40825fc13 100644 --- a/packages/benchpress/test/webdriver/chrome_driver_extension_spec.ts +++ b/packages/benchpress/test/webdriver/chrome_driver_extension_spec.ts @@ -6,8 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -import {AsyncTestCompleter, describe, expect, fit, inject, it} from '@angular/core/testing/src/testing_internal'; - import {ChromeDriverExtension, Injector, Options, WebDriverAdapter, WebDriverExtension} from '../../index'; import {TraceEventFactory} from '../trace_event_factory'; @@ -54,344 +52,323 @@ import {TraceEventFactory} from '../trace_event_factory'; return extension; } - it('should force gc via window.gc()', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension().gc().then((_) => { - expect(log).toEqual([['executeScript', 'window.gc()']]); - async.done(); - }); - })); + it('should force gc via window.gc()', done => { + createExtension().gc().then((_) => { + expect(log).toEqual([['executeScript', 'window.gc()']]); + done(); + }); + }); it('should clear the perf logs and mark the timeline via performance.mark() on the first call', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { + done => { createExtension().timeBegin('someName').then(() => { expect(log).toEqual([ ['logs', 'performance'], ['executeScript', `performance.mark('someName-bpstart');`] ]); - async.done(); + done(); }); - })); + }); - it('should mark the timeline via performance.mark() on the second call', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const ext = createExtension(); - ext.timeBegin('someName') - .then((_) => { - log.splice(0, log.length); - ext.timeBegin('someName'); - }) - .then(() => { - expect(log).toEqual([['executeScript', `performance.mark('someName-bpstart');`]]); - async.done(); - }); - })); - - it('should mark the timeline via performance.mark()', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension().timeEnd('someName', null).then((_) => { - expect(log).toEqual([['executeScript', `performance.mark('someName-bpend');`]]); - async.done(); - }); - })); - - it('should mark the timeline via performance.mark() with start and end of a test', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension().timeEnd('name1', 'name2').then((_) => { - expect(log).toEqual([ - ['executeScript', `performance.mark('name1-bpend');performance.mark('name2-bpstart');`] - ]); - async.done(); - }); - })); - - it('should normalize times to ms and forward ph and pid event properties', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension([chromeTimelineV8Events.complete('FunctionCall', 1100, 5500, null)]) - .readPerfLog() - .then((events) => { - expect(events).toEqual([ - normEvents.complete('script', 1.1, 5.5, null), - ]); - async.done(); - }); - })); - - it('should normalize "tdur" to "dur"', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const event: any = chromeTimelineV8Events.create('X', 'FunctionCall', 1100, null); - event['tdur'] = 5500; - createExtension([event]).readPerfLog().then((events) => { - expect(events).toEqual([ - normEvents.complete('script', 1.1, 5.5, null), - ]); - async.done(); - }); - })); - - it('should report FunctionCall events as "script"', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension([chromeTimelineV8Events.start('FunctionCall', 0)]) - .readPerfLog() - .then((events) => { - expect(events).toEqual([ - normEvents.start('script', 0), - ]); - async.done(); - }); - })); - - it('should report EvaluateScript events as "script"', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension([chromeTimelineV8Events.start('EvaluateScript', 0)]) - .readPerfLog() - .then((events) => { - expect(events).toEqual([ - normEvents.start('script', 0), - ]); - async.done(); - }); - })); - - it('should report minor gc', inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension([ - chromeTimelineV8Events.start('MinorGC', 1000, {'usedHeapSizeBefore': 1000}), - chromeTimelineV8Events.end('MinorGC', 2000, {'usedHeapSizeAfter': 0}), - ]) - .readPerfLog() - .then((events) => { - expect(events.length).toEqual(2); - expect(events[0]).toEqual( - normEvents.start('gc', 1.0, {'usedHeapSize': 1000, 'majorGc': false})); - expect(events[1]).toEqual( - normEvents.end('gc', 2.0, {'usedHeapSize': 0, 'majorGc': false})); - async.done(); - }); - })); - - it('should report major gc', inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension( - [ - chromeTimelineV8Events.start('MajorGC', 1000, {'usedHeapSizeBefore': 1000}), - chromeTimelineV8Events.end('MajorGC', 2000, {'usedHeapSizeAfter': 0}), - ], - ) - .readPerfLog() - .then((events) => { - expect(events.length).toEqual(2); - expect(events[0]).toEqual( - normEvents.start('gc', 1.0, {'usedHeapSize': 1000, 'majorGc': true})); - expect(events[1]).toEqual( - normEvents.end('gc', 2.0, {'usedHeapSize': 0, 'majorGc': true})); - async.done(); - }); - })); - - ['Layout', 'UpdateLayerTree', 'Paint'].forEach((recordType) => { - it(`should report ${recordType} as "render"`, - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension( - [ - chrome45TimelineEvents.start(recordType, 1234), - chrome45TimelineEvents.end(recordType, 2345) - ], - ) - .readPerfLog() - .then((events) => { - expect(events).toEqual([ - normEvents.start('render', 1.234), - normEvents.end('render', 2.345), - ]); - async.done(); - }); - })); + it('should mark the timeline via performance.mark() on the second call', done => { + const ext = createExtension(); + ext.timeBegin('someName') + .then((_) => { + log.splice(0, log.length); + ext.timeBegin('someName'); + }) + .then(() => { + expect(log).toEqual([['executeScript', `performance.mark('someName-bpstart');`]]); + done(); + }); }); - it(`should report UpdateLayoutTree as "render"`, - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension( - [ - chromeBlinkTimelineEvents.start('UpdateLayoutTree', 1234), - chromeBlinkTimelineEvents.end('UpdateLayoutTree', 2345) - ], - ) - .readPerfLog() - .then((events) => { - expect(events).toEqual([ - normEvents.start('render', 1.234), - normEvents.end('render', 2.345), - ]); - async.done(); - }); - })); + it('should mark the timeline via performance.mark()', done => { + createExtension().timeEnd('someName', null).then((_) => { + expect(log).toEqual([['executeScript', `performance.mark('someName-bpend');`]]); + done(); + }); + }); - it('should ignore FunctionCalls from webdriver', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension([chromeTimelineV8Events.start( - 'FunctionCall', 0, {'data': {'scriptName': 'InjectedScript'}})]) - .readPerfLog() - .then((events) => { - expect(events).toEqual([]); - async.done(); - }); - })); + it('should mark the timeline via performance.mark() with start and end of a test', done => { + createExtension().timeEnd('name1', 'name2').then((_) => { + expect(log).toEqual([ + ['executeScript', `performance.mark('name1-bpend');performance.mark('name2-bpstart');`] + ]); + done(); + }); + }); - it('should ignore FunctionCalls with empty scriptName', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension( - [chromeTimelineV8Events.start('FunctionCall', 0, {'data': {'scriptName': ''}})]) - .readPerfLog() - .then((events) => { - expect(events).toEqual([]); - async.done(); - }); - })); + it('should normalize times to ms and forward ph and pid event properties', done => { + createExtension([chromeTimelineV8Events.complete('FunctionCall', 1100, 5500, null)]) + .readPerfLog() + .then((events) => { + expect(events).toEqual([ + normEvents.complete('script', 1.1, 5.5, null), + ]); + done(); + }); + }); - it('should report navigationStart', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension([chromeBlinkUserTimingEvents.instant('navigationStart', 1234)]) - .readPerfLog() - .then((events) => { - expect(events).toEqual([normEvents.instant('navigationStart', 1.234)]); - async.done(); - }); - })); + it('should normalize "tdur" to "dur"', done => { + const event: any = chromeTimelineV8Events.create('X', 'FunctionCall', 1100, null); + event['tdur'] = 5500; + createExtension([event]).readPerfLog().then((events) => { + expect(events).toEqual([ + normEvents.complete('script', 1.1, 5.5, null), + ]); + done(); + }); + }); - it('should report receivedData', inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension( - [chrome45TimelineEvents.instant( - 'ResourceReceivedData', 1234, {'data': {'encodedDataLength': 987}})], - ) - .readPerfLog() - .then((events) => { - expect(events).toEqual( - [normEvents.instant('receivedData', 1.234, {'encodedDataLength': 987})]); - async.done(); - }); - })); + it('should report FunctionCall events as "script"', done => { + createExtension([chromeTimelineV8Events.start('FunctionCall', 0)]) + .readPerfLog() + .then((events) => { + expect(events).toEqual([ + normEvents.start('script', 0), + ]); + done(); + }); + }); - it('should report sendRequest', inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension( - [chrome45TimelineEvents.instant( - 'ResourceSendRequest', 1234, - {'data': {'url': 'http://here', 'requestMethod': 'GET'}})], - ) - .readPerfLog() - .then((events) => { - expect(events).toEqual([normEvents.instant( - 'sendRequest', 1.234, {'url': 'http://here', 'method': 'GET'})]); - async.done(); - }); - })); + it('should report EvaluateScript events as "script"', done => { + createExtension([chromeTimelineV8Events.start('EvaluateScript', 0)]) + .readPerfLog() + .then((events) => { + expect(events).toEqual([ + normEvents.start('script', 0), + ]); + done(); + }); + }); + + it('should report minor gc', done => { + createExtension([ + chromeTimelineV8Events.start('MinorGC', 1000, {'usedHeapSizeBefore': 1000}), + chromeTimelineV8Events.end('MinorGC', 2000, {'usedHeapSizeAfter': 0}), + ]) + .readPerfLog() + .then((events) => { + expect(events.length).toEqual(2); + expect(events[0]).toEqual( + normEvents.start('gc', 1.0, {'usedHeapSize': 1000, 'majorGc': false})); + expect(events[1]).toEqual( + normEvents.end('gc', 2.0, {'usedHeapSize': 0, 'majorGc': false})); + done(); + }); + }); + + it('should report major gc', done => { + createExtension( + [ + chromeTimelineV8Events.start('MajorGC', 1000, {'usedHeapSizeBefore': 1000}), + chromeTimelineV8Events.end('MajorGC', 2000, {'usedHeapSizeAfter': 0}), + ], + ) + .readPerfLog() + .then((events) => { + expect(events.length).toEqual(2); + expect(events[0]).toEqual( + normEvents.start('gc', 1.0, {'usedHeapSize': 1000, 'majorGc': true})); + expect(events[1]).toEqual( + normEvents.end('gc', 2.0, {'usedHeapSize': 0, 'majorGc': true})); + done(); + }); + }); + + ['Layout', 'UpdateLayerTree', 'Paint'].forEach((recordType) => { + it(`should report ${recordType} as "render"`, done => { + createExtension( + [ + chrome45TimelineEvents.start(recordType, 1234), + chrome45TimelineEvents.end(recordType, 2345) + ], + ) + .readPerfLog() + .then((events) => { + expect(events).toEqual([ + normEvents.start('render', 1.234), + normEvents.end('render', 2.345), + ]); + done(); + }); + }); + }); + + it(`should report UpdateLayoutTree as "render"`, done => { + createExtension( + [ + chromeBlinkTimelineEvents.start('UpdateLayoutTree', 1234), + chromeBlinkTimelineEvents.end('UpdateLayoutTree', 2345) + ], + ) + .readPerfLog() + .then((events) => { + expect(events).toEqual([ + normEvents.start('render', 1.234), + normEvents.end('render', 2.345), + ]); + done(); + }); + }); + + it('should ignore FunctionCalls from webdriver', done => { + createExtension([chromeTimelineV8Events.start( + 'FunctionCall', 0, {'data': {'scriptName': 'InjectedScript'}})]) + .readPerfLog() + .then((events) => { + expect(events).toEqual([]); + done(); + }); + }); + + it('should ignore FunctionCalls with empty scriptName', done => { + createExtension( + [chromeTimelineV8Events.start('FunctionCall', 0, {'data': {'scriptName': ''}})]) + .readPerfLog() + .then((events) => { + expect(events).toEqual([]); + done(); + }); + }); + + it('should report navigationStart', done => { + createExtension([chromeBlinkUserTimingEvents.instant('navigationStart', 1234)]) + .readPerfLog() + .then((events) => { + expect(events).toEqual([normEvents.instant('navigationStart', 1.234)]); + done(); + }); + }); + + it('should report receivedData', done => { + createExtension( + [chrome45TimelineEvents.instant( + 'ResourceReceivedData', 1234, {'data': {'encodedDataLength': 987}})], + ) + .readPerfLog() + .then((events) => { + expect(events).toEqual( + [normEvents.instant('receivedData', 1.234, {'encodedDataLength': 987})]); + done(); + }); + }); + + it('should report sendRequest', done => { + createExtension( + [chrome45TimelineEvents.instant( + 'ResourceSendRequest', 1234, + {'data': {'url': 'http://here', 'requestMethod': 'GET'}})], + ) + .readPerfLog() + .then((events) => { + expect(events).toEqual([normEvents.instant( + 'sendRequest', 1.234, {'url': 'http://here', 'method': 'GET'})]); + done(); + }); + }); describe('readPerfLog (common)', () => { - it('should execute a dummy script before reading them', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - // TODO(tbosch): This seems to be a bug in ChromeDriver: - // Sometimes it does not report the newest events of the performance log - // to the WebDriver client unless a script is executed... - createExtension([]).readPerfLog().then((_) => { - expect(log).toEqual([['executeScript', '1+1'], ['logs', 'performance']]); - async.done(); - }); - })); + it('should execute a dummy script before reading them', done => { + // TODO(tbosch): This seems to be a bug in ChromeDriver: + // Sometimes it does not report the newest events of the performance log + // to the WebDriver client unless a script is executed... + createExtension([]).readPerfLog().then((_) => { + expect(log).toEqual([['executeScript', '1+1'], ['logs', 'performance']]); + done(); + }); + }); ['Rasterize', 'CompositeLayers'].forEach((recordType) => { - it(`should report ${recordType} as "render"`, - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension( - [ - chromeTimelineEvents.start(recordType, 1234), - chromeTimelineEvents.end(recordType, 2345) - ], - ) - .readPerfLog() - .then((events) => { - expect(events).toEqual([ - normEvents.start('render', 1.234), - normEvents.end('render', 2.345), - ]); - async.done(); - }); - })); + it(`should report ${recordType} as "render"`, done => { + createExtension( + [ + chromeTimelineEvents.start(recordType, 1234), + chromeTimelineEvents.end(recordType, 2345) + ], + ) + .readPerfLog() + .then((events) => { + expect(events).toEqual([ + normEvents.start('render', 1.234), + normEvents.end('render', 2.345), + ]); + done(); + }); + }); }); describe('frame metrics', () => { - it('should report ImplThreadRenderingStats as frame event', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension([benchmarkEvents.instant( - 'BenchmarkInstrumentation::ImplThreadRenderingStats', 1100, - {'data': {'frame_count': 1}})]) - .readPerfLog() - .then((events) => { - expect(events).toEqual([ - normEvents.instant('frame', 1.1), - ]); - async.done(); - }); - })); + it('should report ImplThreadRenderingStats as frame event', done => { + createExtension([benchmarkEvents.instant( + 'BenchmarkInstrumentation::ImplThreadRenderingStats', 1100, + {'data': {'frame_count': 1}})]) + .readPerfLog() + .then((events) => { + expect(events).toEqual([ + normEvents.instant('frame', 1.1), + ]); + done(); + }); + }); - it('should not report ImplThreadRenderingStats with zero frames', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension([benchmarkEvents.instant( - 'BenchmarkInstrumentation::ImplThreadRenderingStats', 1100, - {'data': {'frame_count': 0}})]) - .readPerfLog() - .then((events) => { - expect(events).toEqual([]); - async.done(); - }); - })); + it('should not report ImplThreadRenderingStats with zero frames', done => { + createExtension([benchmarkEvents.instant( + 'BenchmarkInstrumentation::ImplThreadRenderingStats', 1100, + {'data': {'frame_count': 0}})]) + .readPerfLog() + .then((events) => { + expect(events).toEqual([]); + done(); + }); + }); - it('should throw when ImplThreadRenderingStats contains more than one frame', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension([benchmarkEvents.instant( - 'BenchmarkInstrumentation::ImplThreadRenderingStats', 1100, - {'data': {'frame_count': 2}})]) - .readPerfLog() - .catch((err): any => { - expect(() => { - throw err; - }).toThrowError('multi-frame render stats not supported'); - async.done(); - }); - })); + it('should throw when ImplThreadRenderingStats contains more than one frame', done => { + createExtension([benchmarkEvents.instant( + 'BenchmarkInstrumentation::ImplThreadRenderingStats', 1100, + {'data': {'frame_count': 2}})]) + .readPerfLog() + .catch((err): any => { + expect(() => { + throw err; + }).toThrowError('multi-frame render stats not supported'); + done(); + }); + }); }); - it('should report begin timestamps', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension([blinkEvents.create('S', 'someName', 1000)]) - .readPerfLog() - .then((events) => { - expect(events).toEqual([normEvents.markStart('someName', 1.0)]); - async.done(); - }); - })); + it('should report begin timestamps', done => { + createExtension([blinkEvents.create('S', 'someName', 1000)]) + .readPerfLog() + .then((events) => { + expect(events).toEqual([normEvents.markStart('someName', 1.0)]); + done(); + }); + }); - it('should report end timestamps', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension([blinkEvents.create('F', 'someName', 1000)]) - .readPerfLog() - .then((events) => { - expect(events).toEqual([normEvents.markEnd('someName', 1.0)]); - async.done(); - }); - })); + it('should report end timestamps', done => { + createExtension([blinkEvents.create('F', 'someName', 1000)]) + .readPerfLog() + .then((events) => { + expect(events).toEqual([normEvents.markEnd('someName', 1.0)]); + done(); + }); + }); - it('should throw an error on buffer overflow', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension( - [ - chromeTimelineEvents.start('FunctionCall', 1234), - ], - CHROME45_USER_AGENT, 'Tracing.bufferUsage') - .readPerfLog() - .catch((err): any => { - expect(() => { - throw err; - }).toThrowError('The DevTools trace buffer filled during the test!'); - async.done(); - }); - })); + it('should throw an error on buffer overflow', done => { + createExtension( + [ + chromeTimelineEvents.start('FunctionCall', 1234), + ], + CHROME45_USER_AGENT, 'Tracing.bufferUsage') + .readPerfLog() + .catch((err): any => { + expect(() => { + throw err; + }).toThrowError('The DevTools trace buffer filled during the test!'); + done(); + }); + }); it('should match chrome browsers', () => { expect(createExtension().supports({'browserName': 'chrome'})).toBe(true); @@ -407,12 +384,12 @@ class MockDriverAdapter extends WebDriverAdapter { super(); } - executeScript(script: string) { + override executeScript(script: string) { this._log.push(['executeScript', script]); return Promise.resolve(null); } - logs(type: string): Promise { + override logs(type: string): Promise { this._log.push(['logs', type]); if (type === 'performance') { return Promise.resolve(this._events.map( diff --git a/packages/benchpress/test/webdriver/ios_driver_extension_spec.ts b/packages/benchpress/test/webdriver/ios_driver_extension_spec.ts index 1c5006b46b..806526b981 100644 --- a/packages/benchpress/test/webdriver/ios_driver_extension_spec.ts +++ b/packages/benchpress/test/webdriver/ios_driver_extension_spec.ts @@ -6,8 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -import {AsyncTestCompleter, describe, expect, inject, it} from '@angular/core/testing/src/testing_internal'; - import {Injector, IOsDriverExtension, WebDriverAdapter, WebDriverExtension} from '../../index'; import {TraceEventFactory} from '../trace_event_factory'; @@ -37,102 +35,91 @@ import {TraceEventFactory} from '../trace_event_factory'; expect(() => createExtension().gc()).toThrowError('Force GC is not supported on iOS'); }); - it('should mark the timeline via console.time()', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension().timeBegin('someName').then((_) => { - expect(log).toEqual([['executeScript', `console.time('someName');`]]); - async.done(); - }); - })); + it('should mark the timeline via console.time()', done => { + createExtension().timeBegin('someName').then((_) => { + expect(log).toEqual([['executeScript', `console.time('someName');`]]); + done(); + }); + }); - it('should mark the timeline via console.timeEnd()', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension().timeEnd('someName', null).then((_) => { - expect(log).toEqual([['executeScript', `console.timeEnd('someName');`]]); - async.done(); - }); - })); + it('should mark the timeline via console.timeEnd()', done => { + createExtension().timeEnd('someName', null).then((_) => { + expect(log).toEqual([['executeScript', `console.timeEnd('someName');`]]); + done(); + }); + }); - it('should mark the timeline via console.time() and console.timeEnd()', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension().timeEnd('name1', 'name2').then((_) => { - expect(log).toEqual( - [['executeScript', `console.timeEnd('name1');console.time('name2');`]]); - async.done(); - }); - })); + it('should mark the timeline via console.time() and console.timeEnd()', done => { + createExtension().timeEnd('name1', 'name2').then((_) => { + expect(log).toEqual([['executeScript', `console.timeEnd('name1');console.time('name2');`]]); + done(); + }); + }); describe('readPerfLog', () => { - it('should execute a dummy script before reading them', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - // TODO(tbosch): This seems to be a bug in ChromeDriver: - // Sometimes it does not report the newest events of the performance log - // to the WebDriver client unless a script is executed... - createExtension([]).readPerfLog().then((_) => { - expect(log).toEqual([['executeScript', '1+1'], ['logs', 'performance']]); - async.done(); - }); - })); + it('should execute a dummy script before reading them', done => { + // TODO(tbosch): This seems to be a bug in ChromeDriver: + // Sometimes it does not report the newest events of the performance log + // to the WebDriver client unless a script is executed... + createExtension([]).readPerfLog().then((_) => { + expect(log).toEqual([['executeScript', '1+1'], ['logs', 'performance']]); + done(); + }); + }); - it('should report FunctionCall records as "script"', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension([durationRecord('FunctionCall', 1, 5)]).readPerfLog().then((events) => { - expect(events).toEqual([normEvents.start('script', 1), normEvents.end('script', 5)]); - async.done(); - }); - })); + it('should report FunctionCall records as "script"', done => { + createExtension([durationRecord('FunctionCall', 1, 5)]).readPerfLog().then((events) => { + expect(events).toEqual([normEvents.start('script', 1), normEvents.end('script', 5)]); + done(); + }); + }); - it('should ignore FunctionCalls from webdriver', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension([internalScriptRecord(1, 5)]).readPerfLog().then((events) => { - expect(events).toEqual([]); - async.done(); - }); - })); + it('should ignore FunctionCalls from webdriver', done => { + createExtension([internalScriptRecord(1, 5)]).readPerfLog().then((events) => { + expect(events).toEqual([]); + done(); + }); + }); - it('should report begin time', inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension([timeBeginRecord('someName', 12)]).readPerfLog().then((events) => { - expect(events).toEqual([normEvents.markStart('someName', 12)]); - async.done(); - }); - })); + it('should report begin time', done => { + createExtension([timeBeginRecord('someName', 12)]).readPerfLog().then((events) => { + expect(events).toEqual([normEvents.markStart('someName', 12)]); + done(); + }); + }); - it('should report end timestamps', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension([timeEndRecord('someName', 12)]).readPerfLog().then((events) => { - expect(events).toEqual([normEvents.markEnd('someName', 12)]); - async.done(); - }); - })); + it('should report end timestamps', done => { + createExtension([timeEndRecord('someName', 12)]).readPerfLog().then((events) => { + expect(events).toEqual([normEvents.markEnd('someName', 12)]); + done(); + }); + }); ['RecalculateStyles', 'Layout', 'UpdateLayerTree', 'Paint', 'Rasterize', 'CompositeLayers'] .forEach((recordType) => { - it(`should report ${recordType}`, - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension([durationRecord(recordType, 0, 1)]) - .readPerfLog() - .then((events) => { - expect(events).toEqual([ - normEvents.start('render', 0), - normEvents.end('render', 1), - ]); - async.done(); - }); - })); + it(`should report ${recordType}`, done => { + createExtension([durationRecord(recordType, 0, 1)]).readPerfLog().then((events) => { + expect(events).toEqual([ + normEvents.start('render', 0), + normEvents.end('render', 1), + ]); + done(); + }); + }); }); - it('should walk children', inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - createExtension([durationRecord('FunctionCall', 1, 5, [timeBeginRecord('someName', 2)])]) - .readPerfLog() - .then((events) => { - expect(events).toEqual([ - normEvents.start('script', 1), normEvents.markStart('someName', 2), - normEvents.end('script', 5) - ]); - async.done(); - }); - })); + it('should walk children', done => { + createExtension([durationRecord('FunctionCall', 1, 5, [timeBeginRecord('someName', 2)])]) + .readPerfLog() + .then((events) => { + expect(events).toEqual([ + normEvents.start('script', 1), normEvents.markStart('someName', 2), + normEvents.end('script', 5) + ]); + done(); + }); + }); it('should match safari browsers', () => { expect(createExtension().supports({'browserName': 'safari'})).toBe(true); @@ -173,12 +160,12 @@ class MockDriverAdapter extends WebDriverAdapter { super(); } - executeScript(script: string) { + override executeScript(script: string) { this._log.push(['executeScript', script]); return Promise.resolve(null); } - logs(type: string): Promise { + override logs(type: string): Promise { this._log.push(['logs', type]); if (type === 'performance') { return Promise.resolve(this._perfRecords.map(function(record) { diff --git a/packages/common/BUILD.bazel b/packages/common/BUILD.bazel index f37222c517..d6d9fa8be8 100644 --- a/packages/common/BUILD.bazel +++ b/packages/common/BUILD.bazel @@ -1,7 +1,24 @@ -load("//tools:defaults.bzl", "ng_module", "ng_package", "ts_api_guardian_test_npm_package") +load("@build_bazel_rules_nodejs//:index.bzl", "generated_file_test") +load("//packages/common/locales:index.bzl", "generate_base_currencies_file") +load("//tools:defaults.bzl", "api_golden_test_npm_package", "ng_module", "ng_package") package(default_visibility = ["//visibility:public"]) +# This generates the `src/i18n/currencies.ts` file through the `generate-locales` tool. Since +# the base currencies file is checked-in for Google3, we add a `generated_file_test` to ensure +# the checked-in file is up-to-date. To disambiguate from the test, we use a more precise target +# name here. +generate_base_currencies_file( + name = "base_currencies_file_generated", + output_file = "base_currencies_generated.ts", +) + +generated_file_test( + name = "base_currencies_file", + src = "src/i18n/currencies.ts", + generated = ":base_currencies_file_generated", +) + ng_module( name = "common", srcs = glob( @@ -52,12 +69,12 @@ ng_package( ], ) -ts_api_guardian_test_npm_package( +api_golden_test_npm_package( name = "common_api", - actualDir = "angular/packages/common/npm_package", data = [ ":npm_package", "//goldens:public-api", ], - goldenDir = "angular/goldens/public-api/common", + golden_dir = "angular/goldens/public-api/common", + npm_package = "angular/packages/common/npm_package", ) diff --git a/packages/common/http/src/client.ts b/packages/common/http/src/client.ts index 627610a272..b8041c0eca 100644 --- a/packages/common/http/src/client.ts +++ b/packages/common/http/src/client.ts @@ -619,6 +619,7 @@ export class HttpClient { {[param: string]: string | number | boolean | ReadonlyArray}, reportProgress?: boolean, responseType: 'arraybuffer', withCredentials?: boolean, + body?: any|null, }): Observable; @@ -639,6 +640,7 @@ export class HttpClient { {[param: string]: string | number | boolean | ReadonlyArray}, reportProgress?: boolean, responseType: 'blob', withCredentials?: boolean, + body?: any|null, }): Observable; /** @@ -658,6 +660,7 @@ export class HttpClient { {[param: string]: string | number | boolean | ReadonlyArray}, reportProgress?: boolean, responseType: 'text', withCredentials?: boolean, + body?: any|null, }): Observable; /** @@ -677,6 +680,7 @@ export class HttpClient { {[param: string]: string | number | boolean | ReadonlyArray}, reportProgress?: boolean, responseType: 'arraybuffer', withCredentials?: boolean, + body?: any|null }): Observable>; /** @@ -696,6 +700,7 @@ export class HttpClient { {[param: string]: string | number | boolean | ReadonlyArray}, reportProgress?: boolean, responseType: 'blob', withCredentials?: boolean, + body?: any|null, }): Observable>; /** @@ -715,6 +720,7 @@ export class HttpClient { {[param: string]: string | number | boolean | ReadonlyArray}, reportProgress?: boolean, responseType: 'text', withCredentials?: boolean, + body?: any|null, }): Observable>; /** @@ -735,6 +741,7 @@ export class HttpClient { reportProgress?: boolean, responseType?: 'json', withCredentials?: boolean, + body?: any|null, }): Observable>; /** @@ -755,6 +762,7 @@ export class HttpClient { reportProgress?: boolean, responseType?: 'json', withCredentials?: boolean, + body?: any|null, }): Observable>; /** @@ -773,6 +781,7 @@ export class HttpClient { {[param: string]: string | number | boolean | ReadonlyArray}, reportProgress?: boolean, responseType: 'arraybuffer', withCredentials?: boolean, + body?: any|null, }): Observable>; /** @@ -791,6 +800,7 @@ export class HttpClient { {[param: string]: string | number | boolean | ReadonlyArray}, reportProgress?: boolean, responseType: 'blob', withCredentials?: boolean, + body?: any|null, }): Observable>; /** @@ -809,6 +819,7 @@ export class HttpClient { {[param: string]: string | number | boolean | ReadonlyArray}, reportProgress?: boolean, responseType: 'text', withCredentials?: boolean, + body?: any|null, }): Observable>; /** @@ -829,6 +840,7 @@ export class HttpClient { reportProgress?: boolean, responseType?: 'json', withCredentials?: boolean, + body?: any|null, }): Observable>; /** @@ -848,6 +860,7 @@ export class HttpClient { reportProgress?: boolean, responseType?: 'json', withCredentials?: boolean, + body?: any|null, }): Observable>; /** @@ -868,6 +881,7 @@ export class HttpClient { reportProgress?: boolean, responseType?: 'json', withCredentials?: boolean, + body?: any|null, }): Observable; /** @@ -888,6 +902,7 @@ export class HttpClient { reportProgress?: boolean, responseType?: 'json', withCredentials?: boolean, + body?: any|null, }): Observable; /** @@ -908,6 +923,7 @@ export class HttpClient { reportProgress?: boolean, responseType?: 'arraybuffer'|'blob'|'json'|'text', withCredentials?: boolean, + body?: any|null, } = {}): Observable { return this.request('DELETE', url, options as any); } diff --git a/packages/common/http/src/context.ts b/packages/common/http/src/context.ts index 50a9858330..6f1c208abd 100644 --- a/packages/common/http/src/context.ts +++ b/packages/common/http/src/context.ts @@ -96,4 +96,4 @@ export class HttpContext { keys(): IterableIterator> { return this.map.keys(); } -} \ No newline at end of file +} diff --git a/packages/common/http/src/params.ts b/packages/common/http/src/params.ts old mode 100755 new mode 100644 diff --git a/packages/common/http/src/request.ts b/packages/common/http/src/request.ts index bb49113b0a..0bce610115 100644 --- a/packages/common/http/src/request.ts +++ b/packages/common/http/src/request.ts @@ -68,6 +68,15 @@ function isFormData(value: any): value is FormData { return typeof FormData !== 'undefined' && value instanceof FormData; } +/** + * Safely assert whether the given value is a URLSearchParams instance. + * + * In some execution environments URLSearchParams is not defined. + */ +function isUrlSearchParams(value: any): value is URLSearchParams { + return typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams; +} + /** * An outgoing HTTP request with an optional typed body. * @@ -273,7 +282,7 @@ export class HttpRequest { // Check whether the body is already in a serialized form. If so, // it can just be returned directly. if (isArrayBuffer(this.body) || isBlob(this.body) || isFormData(this.body) || - typeof this.body === 'string') { + isUrlSearchParams(this.body) || typeof this.body === 'string') { return this.body; } // Check whether the body is an instance of HttpUrlEncodedParams. @@ -322,9 +331,9 @@ export class HttpRequest { if (this.body instanceof HttpParams) { return 'application/x-www-form-urlencoded;charset=UTF-8'; } - // Arrays, objects, and numbers will be encoded as JSON. + // Arrays, objects, boolean and numbers will be encoded as JSON. if (typeof this.body === 'object' || typeof this.body === 'number' || - Array.isArray(this.body)) { + typeof this.body === 'boolean') { return 'application/json'; } // No type could be inferred. diff --git a/packages/common/http/src/response.ts b/packages/common/http/src/response.ts index 8ce1a92f3a..b0693f6a6c 100644 --- a/packages/common/http/src/response.ts +++ b/packages/common/http/src/response.ts @@ -226,7 +226,7 @@ export class HttpHeaderResponse extends HttpResponseBase { super(init); } - readonly type: HttpEventType.ResponseHeader = HttpEventType.ResponseHeader; + override readonly type: HttpEventType.ResponseHeader = HttpEventType.ResponseHeader; /** * Copy this `HttpHeaderResponse`, overriding its contents with the @@ -274,7 +274,7 @@ export class HttpResponse extends HttpResponseBase { this.body = init.body !== undefined ? init.body : null; } - readonly type: HttpEventType.Response = HttpEventType.Response; + override readonly type: HttpEventType.Response = HttpEventType.Response; clone(): HttpResponse; clone(update: {headers?: HttpHeaders; status?: number; statusText?: string; url?: string;}): @@ -324,7 +324,7 @@ export class HttpErrorResponse extends HttpResponseBase implements Error { /** * Errors are never okay, even when the status code is in the 2xx success range. */ - readonly ok = false; + override readonly ok = false; constructor(init: { error?: any; diff --git a/packages/common/http/test/client_spec.ts b/packages/common/http/test/client_spec.ts index a974b76b45..fb0e3e7c13 100644 --- a/packages/common/http/test/client_spec.ts +++ b/packages/common/http/test/client_spec.ts @@ -9,7 +9,6 @@ import {HttpClient} from '@angular/common/http/src/client'; import {HttpErrorResponse, HttpEventType, HttpResponse, HttpStatusCode} from '@angular/common/http/src/response'; import {HttpClientTestingBackend} from '@angular/common/http/testing/src/backend'; -import {ddescribe, describe, fit, it} from '@angular/core/testing/src/testing_internal'; import {toArray} from 'rxjs/operators'; { @@ -177,6 +176,30 @@ import {toArray} from 'rxjs/operators'; testReq.flush('hello world'); }); }); + describe('makes a DELETE request', () => { + it('with body', done => { + const body = {data: 'json body'}; + client.delete('/test', {observe: 'response', responseType: 'text', body: body}) + .subscribe(res => { + expect(res.ok).toBeTruthy(); + expect(res.status).toBe(200); + done(); + }); + const testReq = backend.expectOne('/test'); + expect(testReq.request.body).toBe(body); + testReq.flush('hello world'); + }); + it('without body', done => { + client.delete('/test', {observe: 'response', responseType: 'text'}).subscribe(res => { + expect(res.ok).toBeTruthy(); + expect(res.status).toBe(200); + done(); + }); + const testReq = backend.expectOne('/test'); + expect(testReq.request.body).toBe(null); + testReq.flush('hello world'); + }); + }); describe('makes a JSONP request', () => { it('with properly set method and callback', done => { client.jsonp('/test', 'myCallback').subscribe(() => done()); diff --git a/packages/common/http/test/jsonp_spec.ts b/packages/common/http/test/jsonp_spec.ts index 10b0e6574d..0abcf88e22 100644 --- a/packages/common/http/test/jsonp_spec.ts +++ b/packages/common/http/test/jsonp_spec.ts @@ -9,7 +9,6 @@ import {JSONP_ERR_NO_CALLBACK, JSONP_ERR_WRONG_METHOD, JSONP_ERR_WRONG_RESPONSE_TYPE, JsonpClientBackend} from '@angular/common/http/src/jsonp'; import {HttpRequest} from '@angular/common/http/src/request'; import {HttpErrorResponse, HttpEventType} from '@angular/common/http/src/response'; -import {ddescribe, describe, it} from '@angular/core/testing/src/testing_internal'; import {toArray} from 'rxjs/operators'; import {MockDocument} from './jsonp_mock'; diff --git a/packages/common/http/test/module_spec.ts b/packages/common/http/test/module_spec.ts index ef8a866be9..84411dba02 100644 --- a/packages/common/http/test/module_spec.ts +++ b/packages/common/http/test/module_spec.ts @@ -57,7 +57,7 @@ class InterceptorC extends TestInterceptor { super('C'); } - intercept(req: HttpRequest, delegate: HttpHandler): Observable> { + override intercept(req: HttpRequest, delegate: HttpHandler): Observable> { if (req.context.get(IS_INTERCEPTOR_C_ENABLED) === true) { return super.intercept(req, delegate); } diff --git a/packages/common/http/test/request_spec.ts b/packages/common/http/test/request_spec.ts index 7519b47e00..7fa9577f8e 100644 --- a/packages/common/http/test/request_spec.ts +++ b/packages/common/http/test/request_spec.ts @@ -10,7 +10,6 @@ import {HttpContext} from '@angular/common/http/src/context'; import {HttpHeaders} from '@angular/common/http/src/headers'; import {HttpParams} from '@angular/common/http/src/params'; import {HttpRequest} from '@angular/common/http/src/request'; -import {ddescribe, describe, it} from '@angular/core/testing/src/testing_internal'; const TEST_URL = 'https://angular.io/'; const TEST_STRING = `I'm a body!`; @@ -129,6 +128,10 @@ const TEST_STRING = `I'm a body!`; const req = baseReq.clone({body: {data: 'test data'}}); expect(req.detectContentTypeHeader()).toBe('application/json'); }); + it('handles boolean as json', () => { + const req = baseReq.clone({body: true}); + expect(req.detectContentTypeHeader()).toBe('application/json'); + }); }); describe('body serialization', () => { const baseReq = new HttpRequest('POST', '/test', null); @@ -139,6 +142,10 @@ const TEST_STRING = `I'm a body!`; const body = new ArrayBuffer(4); expect(baseReq.clone({body}).serializeBody()).toBe(body); }); + it('passes URLSearchParams through', () => { + const body = new URLSearchParams('foo=1&bar=2'); + expect(baseReq.clone({body}).serializeBody()).toBe(body); + }); it('passes strings through', () => { const body = 'hello world'; expect(baseReq.clone({body}).serializeBody()).toBe(body); diff --git a/packages/common/http/test/response_spec.ts b/packages/common/http/test/response_spec.ts index c9d31174d5..0b1bb17482 100644 --- a/packages/common/http/test/response_spec.ts +++ b/packages/common/http/test/response_spec.ts @@ -8,7 +8,6 @@ import {HttpHeaders} from '@angular/common/http/src/headers'; import {HttpResponse, HttpStatusCode} from '@angular/common/http/src/response'; -import {describe, it} from '@angular/core/testing/src/testing_internal'; { describe('HttpResponse', () => { diff --git a/packages/common/http/test/xhr_spec.ts b/packages/common/http/test/xhr_spec.ts index e8a462a0b1..9c513f3f1b 100644 --- a/packages/common/http/test/xhr_spec.ts +++ b/packages/common/http/test/xhr_spec.ts @@ -9,7 +9,6 @@ import {HttpRequest} from '@angular/common/http/src/request'; import {HttpDownloadProgressEvent, HttpErrorResponse, HttpEvent, HttpEventType, HttpHeaderResponse, HttpResponse, HttpResponseBase, HttpStatusCode, HttpUploadProgressEvent} from '@angular/common/http/src/response'; import {HttpXhrBackend} from '@angular/common/http/src/xhr'; -import {describe, expect, it} from '@angular/core/testing/src/testing_internal'; import {Observable} from 'rxjs'; import {toArray} from 'rxjs/operators'; diff --git a/packages/common/http/test/xsrf_spec.ts b/packages/common/http/test/xsrf_spec.ts index 6a176e6025..d9ff4f0021 100644 --- a/packages/common/http/test/xsrf_spec.ts +++ b/packages/common/http/test/xsrf_spec.ts @@ -17,7 +17,7 @@ class SampleTokenExtractor extends HttpXsrfTokenExtractor { super(); } - getToken(): string|null { + override getToken(): string|null { return this.token; } } diff --git a/packages/common/locales/BUILD.bazel b/packages/common/locales/BUILD.bazel index 20c6fa9511..41e691b878 100644 --- a/packages/common/locales/BUILD.bazel +++ b/packages/common/locales/BUILD.bazel @@ -1,18 +1,47 @@ +load("@build_bazel_rules_nodejs//:index.bzl", "generated_file_test") +load("//packages/common/locales:index.bzl", "LOCALES", "generate_all_locale_files", "generate_closure_locales_file") load("//tools:defaults.bzl", "pkg_npm", "ts_library") package(default_visibility = ["//visibility:public"]) +# This generates the `closure-locale.ts` file through the `generate-locales` tool. Since +# the `closure-locale.ts` file is checked-in for Google3, we add a `generated_file_test` to +# ensure the checked-in file is up-to-date. To disambiguate from the test, we use a more +# precise target name here. +generate_closure_locales_file( + name = "closure_locales_file_generated", + output_file = "closure_locales_generated.ts", +) + +generated_file_test( + name = "closure_locale_file", + src = "closure-locale.ts", + generated = ":closure_locales_file_generated", +) + +generate_all_locale_files( + name = "locale_files", +) + ts_library( name = "locales", - srcs = glob( - ["**/*.ts"], + # TODO(devversion): Remove glob for checked-in legacy locale files that haven't been + # removed in the past (when CLDR has been updated). These can be removed in a major. + srcs = [file for l in LOCALES for file in [ + "%s.ts" % l, + "extra/%s.ts" % l, + ]] + glob( + [ + "*.ts", + "extra/*.ts", + ], exclude = ["closure-locale.ts"], ), ) pkg_npm( name = "package", - srcs = glob(["global/*.js"]) + ["package.json"], + srcs = ["package.json"], substitutions = { # Workaround for `.d.ts`` containing `/// ` # which are generated in TypeScript v2.9, but not before. @@ -25,5 +54,7 @@ pkg_npm( # null out the require reference passed into the module. "factory\\(require, exports\\)": "factory(null, exports)", }, - deps = [":locales"], + # TODO(devversion): Remove glob for checked-in legacy locale files that haven't been + # removed in the past (when CLDR has been updated). These can be removed in a major. + deps = ["global/%s.js" % l for l in LOCALES] + [":locales"] + glob(["global/*.js"]), ) diff --git a/packages/common/locales/af-NA.ts b/packages/common/locales/af-NA.ts deleted file mode 100644 index 4ac5165866..0000000000 --- a/packages/common/locales/af-NA.ts +++ /dev/null @@ -1,62 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'af-NA', - [['v', 'n'], ['vm.', 'nm.'], u], - u, - [ - ['S', 'M', 'D', 'W', 'D', 'V', 'S'], ['So.', 'Ma.', 'Di.', 'Wo.', 'Do.', 'Vr.', 'Sa.'], - ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'], - ['So.', 'Ma.', 'Di.', 'Wo.', 'Do.', 'Vr.', 'Sa.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan.', 'Feb.', 'Mrt.', 'Apr.', 'Mei', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Des.'], - [ - 'Januarie', 'Februarie', 'Maart', 'April', 'Mei', 'Junie', 'Julie', 'Augustus', 'September', - 'Oktober', 'November', 'Desember' - ] - ], - u, - [['v.C.', 'n.C.'], u, ['voor Christus', 'na Christus']], - 1, - [6, 0], - ['y-MM-dd', 'dd MMM y', 'dd MMMM y', 'EEEE dd MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZAR', - 'R', - 'Suid-Afrikaanse rand', - { - 'CAD': [u, '$'], - 'JPY': ['JP¥', '¥'], - 'MXN': [u, '$'], - 'NAD': ['$'], - 'RON': [u, 'leu'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': [u, '$'], - 'ZAR': ['R'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/af.ts b/packages/common/locales/af.ts deleted file mode 100644 index a766c2ccb4..0000000000 --- a/packages/common/locales/af.ts +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'af', - [['v', 'n'], ['vm.', 'nm.'], u], - u, - [ - ['S', 'M', 'D', 'W', 'D', 'V', 'S'], ['So.', 'Ma.', 'Di.', 'Wo.', 'Do.', 'Vr.', 'Sa.'], - ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'], - ['So.', 'Ma.', 'Di.', 'Wo.', 'Do.', 'Vr.', 'Sa.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan.', 'Feb.', 'Mrt.', 'Apr.', 'Mei', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Des.'], - [ - 'Januarie', 'Februarie', 'Maart', 'April', 'Mei', 'Junie', 'Julie', 'Augustus', 'September', - 'Oktober', 'November', 'Desember' - ] - ], - u, - [['v.C.', 'n.C.'], u, ['voor Christus', 'na Christus']], - 0, - [6, 0], - ['y-MM-dd', 'dd MMM y', 'dd MMMM y', 'EEEE dd MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZAR', - 'R', - 'Suid-Afrikaanse rand', - { - 'CAD': [u, '$'], - 'JPY': ['JP¥', '¥'], - 'MXN': [u, '$'], - 'RON': [u, 'leu'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': [u, '$'], - 'ZAR': ['R'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/agq.ts b/packages/common/locales/agq.ts deleted file mode 100644 index 17b44bcfa9..0000000000 --- a/packages/common/locales/agq.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'agq', - [['a.g', 'a.k'], u, u], - u, - [ - ['n', 'k', 'g', 't', 'u', 'g', 'd'], ['nts', 'kpa', 'ghɔ', 'tɔm', 'ume', 'ghɨ', 'dzk'], - ['tsuʔntsɨ', 'tsuʔukpà', 'tsuʔughɔe', 'tsuʔutɔ̀mlò', 'tsuʔumè', 'tsuʔughɨ̂m', 'tsuʔndzɨkɔʔɔ'], - ['nts', 'kpa', 'ghɔ', 'tɔm', 'ume', 'ghɨ', 'dzk'] - ], - u, - [ - ['n', 'k', 't', 't', 's', 'z', 'k', 'f', 'd', 'l', 'c', 'f'], - ['nùm', 'kɨz', 'tɨd', 'taa', 'see', 'nzu', 'dum', 'fɔe', 'dzu', 'lɔm', 'kaa', 'fwo'], - [ - 'ndzɔ̀ŋɔ̀nùm', 'ndzɔ̀ŋɔ̀kƗ̀zùʔ', 'ndzɔ̀ŋɔ̀tƗ̀dʉ̀ghà', 'ndzɔ̀ŋɔ̀tǎafʉ̄ghā', 'ndzɔ̀ŋèsèe', 'ndzɔ̀ŋɔ̀nzùghò', - 'ndzɔ̀ŋɔ̀dùmlo', 'ndzɔ̀ŋɔ̀kwîfɔ̀e', 'ndzɔ̀ŋɔ̀tƗ̀fʉ̀ghàdzughù', 'ndzɔ̀ŋɔ̀ghǔuwelɔ̀m', 'ndzɔ̀ŋɔ̀chwaʔàkaa wo', - 'ndzɔ̀ŋèfwòo' - ] - ], - u, - [['SK', 'BK'], u, ['Sěe Kɨ̀lesto', 'Bǎa Kɨ̀lesto']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'XAF', - 'FCFA', - 'CFA Fàlâŋ BEAC', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ak.ts b/packages/common/locales/ak.ts deleted file mode 100644 index 2daa60b21f..0000000000 --- a/packages/common/locales/ak.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === Math.floor(n) && n >= 0 && n <= 1) return 1; - return 5; -} - -export default [ - 'ak', - [['AN', 'EW'], u, u], - u, - [ - ['K', 'D', 'B', 'W', 'Y', 'F', 'M'], ['Kwe', 'Dwo', 'Ben', 'Wuk', 'Yaw', 'Fia', 'Mem'], - ['Kwesida', 'Dwowda', 'Benada', 'Wukuda', 'Yawda', 'Fida', 'Memeneda'], - ['Kwe', 'Dwo', 'Ben', 'Wuk', 'Yaw', 'Fia', 'Mem'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['S-Ɔ', 'K-Ɔ', 'E-Ɔ', 'E-O', 'E-K', 'O-A', 'A-K', 'D-Ɔ', 'F-Ɛ', 'Ɔ-A', 'Ɔ-O', 'M-Ɔ'], - [ - 'Sanda-Ɔpɛpɔn', 'Kwakwar-Ɔgyefuo', 'Ebɔw-Ɔbenem', 'Ebɔbira-Oforisuo', - 'Esusow Aketseaba-Kɔtɔnimba', 'Obirade-Ayɛwohomumu', 'Ayɛwoho-Kitawonsa', 'Difuu-Ɔsandaa', - 'Fankwa-Ɛbɔ', 'Ɔbɛsɛ-Ahinime', 'Ɔberɛfɛw-Obubuo', 'Mumu-Ɔpɛnimba' - ] - ], - u, - [['AK', 'KE'], u, ['Ansa Kristo', 'Kristo Ekyiri']], - 1, - [6, 0], - ['yy/MM/dd', 'y MMM d', 'y MMMM d', 'EEEE, y MMMM dd'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GHS', - 'GH₵', - 'Ghana Sidi', - {'GHS': ['GH₵'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/am.ts b/packages/common/locales/am.ts deleted file mode 100644 index 966af9b0fb..0000000000 --- a/packages/common/locales/am.ts +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} - -export default [ - 'am', - [['ጠ', 'ከ'], ['ጥዋት', 'ከሰዓት'], u], - u, - [ - ['እ', 'ሰ', 'ማ', 'ረ', 'ሐ', 'ዓ', 'ቅ'], ['እሑድ', 'ሰኞ', 'ማክሰ', 'ረቡዕ', 'ሐሙስ', 'ዓርብ', 'ቅዳሜ'], - ['እሑድ', 'ሰኞ', 'ማክሰኞ', 'ረቡዕ', 'ሐሙስ', 'ዓርብ', 'ቅዳሜ'], ['እ', 'ሰ', 'ማ', 'ረ', 'ሐ', 'ዓ', 'ቅ'] - ], - u, - [ - ['ጃ', 'ፌ', 'ማ', 'ኤ', 'ሜ', 'ጁ', 'ጁ', 'ኦ', 'ሴ', 'ኦ', 'ኖ', 'ዲ'], - ['ጃንዩ', 'ፌብሩ', 'ማርች', 'ኤፕሪ', 'ሜይ', 'ጁን', 'ጁላይ', 'ኦገስ', 'ሴፕቴ', 'ኦክቶ', 'ኖቬም', 'ዲሴም'], - [ - 'ጃንዩወሪ', 'ፌብሩወሪ', 'ማርች', 'ኤፕሪል', 'ሜይ', 'ጁን', 'ጁላይ', 'ኦገስት', 'ሴፕቴምበር', 'ኦክቶበር', 'ኖቬምበር', - 'ዲሴምበር' - ] - ], - u, - [['ዓ/ዓ', 'ዓ/ም'], u, ['ዓመተ ዓለም', 'ዓመተ ምሕረት']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'y MMMM d, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ETB', - 'ብር', - 'የኢትዮጵያ ብር', - { - 'AUD': ['AU$', '$'], - 'CNH': ['የቻይና ዩዋን'], - 'ETB': ['ብር'], - 'JPY': ['JP¥', '¥'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ar-AE.ts b/packages/common/locales/ar-AE.ts deleted file mode 100644 index 185a830aca..0000000000 --- a/packages/common/locales/ar-AE.ts +++ /dev/null @@ -1,107 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-AE', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'AED', - 'د.إ.\u200f', - 'درهم إماراتي', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-BH.ts b/packages/common/locales/ar-BH.ts deleted file mode 100644 index 9d8bc5e819..0000000000 --- a/packages/common/locales/ar-BH.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-BH', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'BHD', - 'د.ب.\u200f', - 'دينار بحريني', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-DJ.ts b/packages/common/locales/ar-DJ.ts deleted file mode 100644 index 3fabafe7a0..0000000000 --- a/packages/common/locales/ar-DJ.ts +++ /dev/null @@ -1,109 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-DJ', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'DJF', - 'Fdj', - 'فرنك جيبوتي', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DJF': ['Fdj'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-DZ.ts b/packages/common/locales/ar-DZ.ts deleted file mode 100644 index 68003a0c17..0000000000 --- a/packages/common/locales/ar-DZ.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-DZ', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ج', 'ف', 'م', 'أ', 'م', 'ج', 'ج', 'أ', 'س', 'أ', 'ن', 'د'], - [ - 'جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان', 'جويلية', 'أوت', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'DZD', - 'د.ج.\u200f', - 'دينار جزائري', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-EG.ts b/packages/common/locales/ar-EG.ts deleted file mode 100644 index 04abbc6160..0000000000 --- a/packages/common/locales/ar-EG.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-EG', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'EGP', - 'ج.م.\u200f', - 'جنيه مصري', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-EH.ts b/packages/common/locales/ar-EH.ts deleted file mode 100644 index 7a5dc0fb61..0000000000 --- a/packages/common/locales/ar-EH.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-EH', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 1, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'MAD', - 'د.م.\u200f', - 'درهم مغربي', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-ER.ts b/packages/common/locales/ar-ER.ts deleted file mode 100644 index 7bebce887a..0000000000 --- a/packages/common/locales/ar-ER.ts +++ /dev/null @@ -1,109 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-ER', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 1, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'ERN', - 'Nfk', - 'ناكفا أريتري', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'ERN': ['Nfk'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-IL.ts b/packages/common/locales/ar-IL.ts deleted file mode 100644 index 34ca3a6029..0000000000 --- a/packages/common/locales/ar-IL.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-IL', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 0, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'ILS', - '₪', - 'شيكل إسرائيلي جديد', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-IQ.ts b/packages/common/locales/ar-IQ.ts deleted file mode 100644 index bb5d8f50a6..0000000000 --- a/packages/common/locales/ar-IQ.ts +++ /dev/null @@ -1,118 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-IQ', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ك', 'ش', 'آ', 'ن', 'أ', 'ح', 'ت', 'آ', 'أ', 'ت', 'ت', 'ك'], - [ - 'كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', - 'تشرين الأول', 'تشرين الثاني', 'كانون الأول' - ], - [ - 'كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', - 'تشرين الأول', 'تشرين الثاني', 'كانون الأول' - ] - ], - [ - ['ك', 'ش', 'آ', 'ن', 'أ', 'ح', 'ت', 'آ', 'أ', 'ت', 'ت', 'ك'], - [ - 'كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', - 'تشرين الأول', 'تشرين الثاني', 'كانون الأول' - ], - u - ], - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'IQD', - 'د.ع.\u200f', - 'دينار عراقي', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-JO.ts b/packages/common/locales/ar-JO.ts deleted file mode 100644 index 5357406f9c..0000000000 --- a/packages/common/locales/ar-JO.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-JO', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ك', 'ش', 'آ', 'ن', 'أ', 'ح', 'ت', 'آ', 'أ', 'ت', 'ت', 'ك'], - [ - 'كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', - 'تشرين الأول', 'تشرين الثاني', 'كانون الأول' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'JOD', - 'د.أ.\u200f', - 'دينار أردني', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-KM.ts b/packages/common/locales/ar-KM.ts deleted file mode 100644 index 5ca77f4ef1..0000000000 --- a/packages/common/locales/ar-KM.ts +++ /dev/null @@ -1,109 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-KM', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 1, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'KMF', - 'CF', - 'فرنك جزر القمر', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KMF': ['CF'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-KW.ts b/packages/common/locales/ar-KW.ts deleted file mode 100644 index 40949f3667..0000000000 --- a/packages/common/locales/ar-KW.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-KW', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'KWD', - 'د.ك.\u200f', - 'دينار كويتي', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-LB.ts b/packages/common/locales/ar-LB.ts deleted file mode 100644 index 9736303cd7..0000000000 --- a/packages/common/locales/ar-LB.ts +++ /dev/null @@ -1,107 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-LB', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ك', 'ش', 'آ', 'ن', 'أ', 'ح', 'ت', 'آ', 'أ', 'ت', 'ت', 'ك'], - [ - 'كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', - 'تشرين الأول', 'تشرين الثاني', 'كانون الأول' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 1, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'LBP', - 'ل.ل.\u200f', - 'جنيه لبناني', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-LY.ts b/packages/common/locales/ar-LY.ts deleted file mode 100644 index 0be902fc76..0000000000 --- a/packages/common/locales/ar-LY.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-LY', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'LYD', - 'د.ل.\u200f', - 'دينار ليبي', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-MA.ts b/packages/common/locales/ar-MA.ts deleted file mode 100644 index bc27573154..0000000000 --- a/packages/common/locales/ar-MA.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-MA', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'م', 'ن', 'ل', 'غ', 'ش', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'ماي', 'يونيو', 'يوليوز', 'غشت', 'شتنبر', 'أكتوبر', - 'نونبر', 'دجنبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 1, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'MAD', - 'د.م.\u200f', - 'درهم مغربي', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-MR.ts b/packages/common/locales/ar-MR.ts deleted file mode 100644 index 9e9033d417..0000000000 --- a/packages/common/locales/ar-MR.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-MR', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'إ', 'و', 'ن', 'ل', 'غ', 'ش', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'إبريل', 'مايو', 'يونيو', 'يوليو', 'أغشت', 'شتمبر', 'أكتوبر', - 'نوفمبر', 'دجمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 1, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'MRU', - 'أ.م.', - 'أوقية موريتانية', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-OM.ts b/packages/common/locales/ar-OM.ts deleted file mode 100644 index a2b704a145..0000000000 --- a/packages/common/locales/ar-OM.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-OM', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'OMR', - 'ر.ع.\u200f', - 'ريال عماني', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-PS.ts b/packages/common/locales/ar-PS.ts deleted file mode 100644 index 3b5449c574..0000000000 --- a/packages/common/locales/ar-PS.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-PS', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ك', 'ش', 'آ', 'ن', 'أ', 'ح', 'ت', 'آ', 'أ', 'ت', 'ت', 'ك'], - [ - 'كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', - 'تشرين الأول', 'تشرين الثاني', 'كانون الأول' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 1, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'ILS', - '₪', - 'شيكل إسرائيلي جديد', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-QA.ts b/packages/common/locales/ar-QA.ts deleted file mode 100644 index 274a75f0d6..0000000000 --- a/packages/common/locales/ar-QA.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-QA', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'QAR', - 'ر.ق.\u200f', - 'ريال قطري', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-SA.ts b/packages/common/locales/ar-SA.ts deleted file mode 100644 index bc9e0e405b..0000000000 --- a/packages/common/locales/ar-SA.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-SA', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 0, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '٪', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'SAR', - 'ر.س.\u200f', - 'ريال سعودي', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-SD.ts b/packages/common/locales/ar-SD.ts deleted file mode 100644 index ee06a88b2f..0000000000 --- a/packages/common/locales/ar-SD.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-SD', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'SDG', - 'ج.س.', - 'جنيه سوداني', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-SO.ts b/packages/common/locales/ar-SO.ts deleted file mode 100644 index d690d573bf..0000000000 --- a/packages/common/locales/ar-SO.ts +++ /dev/null @@ -1,109 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-SO', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 1, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '٪', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'SOS', - 'S', - 'شلن صومالي', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SOS': ['S'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-SS.ts b/packages/common/locales/ar-SS.ts deleted file mode 100644 index b90ea74a42..0000000000 --- a/packages/common/locales/ar-SS.ts +++ /dev/null @@ -1,109 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-SS', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 1, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'SSP', - '£', - 'جنيه جنوب السودان', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['GB£', 'UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SSP': ['£'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-SY.ts b/packages/common/locales/ar-SY.ts deleted file mode 100644 index 405bb496ab..0000000000 --- a/packages/common/locales/ar-SY.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-SY', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ك', 'ش', 'آ', 'ن', 'أ', 'ح', 'ت', 'آ', 'أ', 'ت', 'ت', 'ك'], - [ - 'كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', - 'تشرين الأول', 'تشرين الثاني', 'كانون الأول' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'SYP', - 'ل.س.\u200f', - 'ليرة سورية', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-TD.ts b/packages/common/locales/ar-TD.ts deleted file mode 100644 index 020f532a93..0000000000 --- a/packages/common/locales/ar-TD.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-TD', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 1, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'XAF', - 'FCFA', - 'فرنك وسط أفريقي', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-TN.ts b/packages/common/locales/ar-TN.ts deleted file mode 100644 index 27a11bf80b..0000000000 --- a/packages/common/locales/ar-TN.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-TN', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ج', 'ف', 'م', 'أ', 'م', 'ج', 'ج', 'أ', 'س', 'أ', 'ن', 'د'], - [ - 'جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان', 'جويلية', 'أوت', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 1, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'TND', - 'د.ت.\u200f', - 'دينار تونسي', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar-YE.ts b/packages/common/locales/ar-YE.ts deleted file mode 100644 index 049e006e6a..0000000000 --- a/packages/common/locales/ar-YE.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar-YE', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 0, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'YER', - 'ر.ي.\u200f', - 'ريال يمني', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ar.ts b/packages/common/locales/ar.ts deleted file mode 100644 index f10e64acdc..0000000000 --- a/packages/common/locales/ar.ts +++ /dev/null @@ -1,108 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} - -export default [ - 'ar', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'EGP', - 'ج.م.\u200f', - 'جنيه مصري', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/as.ts b/packages/common/locales/as.ts deleted file mode 100644 index b5cac388bf..0000000000 --- a/packages/common/locales/as.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} - -export default [ - 'as', - [['পূৰ্বাহ্ন', 'অপৰাহ্ন'], u, u], - u, - [ - ['দ', 'স', 'ম', 'ব', 'ব', 'শ', 'শ'], ['দেও', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহ', 'শুক্ৰ', 'শনি'], - ['দেওবাৰ', 'সোমবাৰ', 'মঙ্গলবাৰ', 'বুধবাৰ', 'বৃহস্পতিবাৰ', 'শুক্ৰবাৰ', 'শনিবাৰ'], - ['দেও', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহ', 'শুক্ৰ', 'শনি'] - ], - u, - [ - ['জ', 'ফ', 'ম', 'এ', 'ম', 'জ', 'জ', 'আ', 'ছ', 'অ', 'ন', 'ড'], - ['জানু', 'ফেব্ৰু', 'মাৰ্চ', 'এপ্ৰিল', 'মে’', 'জুন', 'জুলাই', 'আগ', 'ছেপ্তে', 'অক্টো', 'নৱে', 'ডিচে'], - [ - 'জানুৱাৰী', 'ফেব্ৰুৱাৰী', 'মাৰ্চ', 'এপ্ৰিল', 'মে’', 'জুন', 'জুলাই', 'আগষ্ট', 'ছেপ্তেম্বৰ', 'অক্টোবৰ', - 'নৱেম্বৰ', 'ডিচেম্বৰ' - ] - ], - u, - [['খ্ৰীঃ পূঃ', 'খ্ৰীঃ'], u, ['খ্ৰীষ্টপূৰ্ব', 'খ্ৰীষ্টাব্দ']], - 0, - [0, 0], - ['d-M-y', 'dd-MM-y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['a h.mm', 'a h.mm.ss', 'a h.mm.ss z', 'a h.mm.ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤ #,##,##0.00', '#E0'], - 'INR', - '₹', - 'ভাৰতীয় ৰুপী', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/asa.ts b/packages/common/locales/asa.ts deleted file mode 100644 index fbfa493b59..0000000000 --- a/packages/common/locales/asa.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'asa', - [['icheheavo', 'ichamthi'], u, u], - u, - [ - ['J', 'J', 'J', 'J', 'A', 'I', 'J'], ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Ijm', 'Jmo'], - ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'], - ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Ijm', 'Jmo'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Dec'], - [ - 'Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', - 'Oktoba', 'Novemba', 'Desemba' - ] - ], - u, - [['KM', 'BM'], u, ['Kabla yakwe Yethu', 'Baada yakwe Yethu']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'TZS', - 'TSh', - 'shilingi ya Tandhania', - {'JPY': ['JP¥', '¥'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ast.ts b/packages/common/locales/ast.ts deleted file mode 100644 index 273d57b714..0000000000 --- a/packages/common/locales/ast.ts +++ /dev/null @@ -1,72 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'ast', - [['a', 'p'], ['AM', 'PM'], ['de la mañana', 'de la tarde']], - [['a', 'p'], ['AM', 'PM'], ['mañana', 'tarde']], - [ - ['D', 'L', 'M', 'M', 'X', 'V', 'S'], ['dom', 'llu', 'mar', 'mié', 'xue', 'vie', 'sáb'], - ['domingu', 'llunes', 'martes', 'miércoles', 'xueves', 'vienres', 'sábadu'], - ['do', 'll', 'ma', 'mi', 'xu', 'vi', 'sá'] - ], - u, - [ - ['X', 'F', 'M', 'A', 'M', 'X', 'X', 'A', 'S', 'O', 'P', 'A'], - ['xin', 'feb', 'mar', 'abr', 'may', 'xun', 'xnt', 'ago', 'set', 'och', 'pay', 'avi'], - [ - 'de xineru', 'de febreru', 'de marzu', 'd’abril', 'de mayu', 'de xunu', 'de xunetu', - 'd’agostu', 'de setiembre', 'd’ochobre', 'de payares', 'd’avientu' - ] - ], - [ - ['X', 'F', 'M', 'A', 'M', 'X', 'X', 'A', 'S', 'O', 'P', 'A'], - ['Xin', 'Feb', 'Mar', 'Abr', 'May', 'Xun', 'Xnt', 'Ago', 'Set', 'Och', 'Pay', 'Avi'], - [ - 'xineru', 'febreru', 'marzu', 'abril', 'mayu', 'xunu', 'xunetu', 'agostu', 'setiembre', - 'ochobre', 'payares', 'avientu' - ] - ], - [['e.C.', 'd.C.'], u, ['enantes de Cristu', 'después de Cristu']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM \'de\' y', 'EEEE, d MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1}, {0}', '{1} \'a\' \'les\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'ND', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'BYN': [], - 'DKK': [], - 'HRK': [], - 'ISK': [], - 'NOK': [], - 'PLN': [], - 'RUR': [], - 'SEK': [], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/az-Cyrl.ts b/packages/common/locales/az-Cyrl.ts deleted file mode 100644 index 292ed9db5c..0000000000 --- a/packages/common/locales/az-Cyrl.ts +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'az-Cyrl', - [['а', 'п'], ['АМ', 'ПМ'], u], - [['АМ', 'ПМ'], u, u], - [ - ['7', '1', '2', '3', '4', '5', '6'], ['Б.', 'Б.Е.', 'Ч.А.', 'Ч.', 'Ҹ.А.', 'Ҹ.', 'Ш.'], - ['базар', 'базар ертәси', 'чәршәнбә ахшамы', 'чәршәнбә', 'ҹүмә ахшамы', 'ҹүмә', 'шәнбә'], - ['Б.', 'Б.Е.', 'Ч.А.', 'Ч.', 'Ҹ.А.', 'Ҹ.', 'Ш.'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['јан', 'фев', 'мар', 'апр', 'май', 'ијн', 'ијл', 'авг', 'сен', 'окт', 'ној', 'дек'], - [ - 'јанвар', 'феврал', 'март', 'апрел', 'май', 'ијун', 'ијул', 'август', 'сентјабр', 'октјабр', - 'нојабр', 'декабр' - ] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['јан', 'фев', 'мар', 'апр', 'май', 'ијн', 'ијл', 'авг', 'сен', 'окт', 'ној', 'дек'], - [ - 'Јанвар', 'Феврал', 'Март', 'Апрел', 'Май', 'Ијун', 'Ијул', 'Август', 'Сентјабр', 'Октјабр', - 'Нојабр', 'Декабр' - ] - ], - [['е.ә.', 'ј.е.'], u, ['ерамыздан әввәл', 'јени ера']], - 1, - [6, 0], - ['dd.MM.yy', 'd MMM y', 'd MMMM y', 'd MMMM y, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'AZN', - '₼', - 'AZN', - {'AZN': ['₼'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/az-Latn.ts b/packages/common/locales/az-Latn.ts deleted file mode 100644 index ac1b3c4fa6..0000000000 --- a/packages/common/locales/az-Latn.ts +++ /dev/null @@ -1,71 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'az-Latn', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['7', '1', '2', '3', '4', '5', '6'], ['B.', 'B.e.', 'Ç.a.', 'Ç.', 'C.a.', 'C.', 'Ş.'], - ['bazar', 'bazar ertəsi', 'çərşənbə axşamı', 'çərşənbə', 'cümə axşamı', 'cümə', 'şənbə'], - ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C.', 'Ş.'] - ], - [ - ['7', '1', '2', '3', '4', '5', '6'], ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C.', 'Ş.'], - ['bazar', 'bazar ertəsi', 'çərşənbə axşamı', 'çərşənbə', 'cümə axşamı', 'cümə', 'şənbə'], - ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C.', 'Ş.'] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avq', 'sen', 'okt', 'noy', 'dek'], - [ - 'yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avqust', 'sentyabr', 'oktyabr', - 'noyabr', 'dekabr' - ] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avq', 'sen', 'okt', 'noy', 'dek'], - [ - 'yanvar', 'Fevral', 'mart', 'Aprel', 'May', 'İyun', 'İyul', 'Avqust', 'Sentyabr', 'Oktyabr', - 'Noyabr', 'dekabr' - ] - ], - [['e.ə.', 'y.e.'], u, ['eramızdan əvvəl', 'yeni era']], - 1, - [6, 0], - ['dd.MM.yy', 'd MMM y', 'd MMMM y', 'd MMMM y, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'AZN', - '₼', - 'Azərbaycan Manatı', - { - 'AZN': ['₼'], - 'JPY': ['JP¥', '¥'], - 'RON': [u, 'ley'], - 'SYP': [u, 'S£'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/az.ts b/packages/common/locales/az.ts deleted file mode 100644 index b8468af073..0000000000 --- a/packages/common/locales/az.ts +++ /dev/null @@ -1,71 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'az', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['7', '1', '2', '3', '4', '5', '6'], ['B.', 'B.e.', 'Ç.a.', 'Ç.', 'C.a.', 'C.', 'Ş.'], - ['bazar', 'bazar ertəsi', 'çərşənbə axşamı', 'çərşənbə', 'cümə axşamı', 'cümə', 'şənbə'], - ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C.', 'Ş.'] - ], - [ - ['7', '1', '2', '3', '4', '5', '6'], ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C.', 'Ş.'], - ['bazar', 'bazar ertəsi', 'çərşənbə axşamı', 'çərşənbə', 'cümə axşamı', 'cümə', 'şənbə'], - ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C.', 'Ş.'] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avq', 'sen', 'okt', 'noy', 'dek'], - [ - 'yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avqust', 'sentyabr', 'oktyabr', - 'noyabr', 'dekabr' - ] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avq', 'sen', 'okt', 'noy', 'dek'], - [ - 'yanvar', 'Fevral', 'mart', 'Aprel', 'May', 'İyun', 'İyul', 'Avqust', 'Sentyabr', 'Oktyabr', - 'Noyabr', 'dekabr' - ] - ], - [['e.ə.', 'y.e.'], u, ['eramızdan əvvəl', 'yeni era']], - 1, - [6, 0], - ['dd.MM.yy', 'd MMM y', 'd MMMM y', 'd MMMM y, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'AZN', - '₼', - 'Azərbaycan Manatı', - { - 'AZN': ['₼'], - 'JPY': ['JP¥', '¥'], - 'RON': [u, 'ley'], - 'SYP': [u, 'S£'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/bas.ts b/packages/common/locales/bas.ts deleted file mode 100644 index 3b72c9aeed..0000000000 --- a/packages/common/locales/bas.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'bas', - [['I bikɛ̂glà', 'I ɓugajɔp'], u, u], - u, - [ - ['n', 'n', 'u', 'ŋ', 'm', 'k', 'j'], ['nɔy', 'nja', 'uum', 'ŋge', 'mbɔ', 'kɔɔ', 'jon'], - ['ŋgwà nɔ̂y', 'ŋgwà njaŋgumba', 'ŋgwà ûm', 'ŋgwà ŋgê', 'ŋgwà mbɔk', 'ŋgwà kɔɔ', 'ŋgwà jôn'], - ['nɔy', 'nja', 'uum', 'ŋge', 'mbɔ', 'kɔɔ', 'jon'] - ], - u, - [ - ['k', 'm', 'm', 'm', 'm', 'h', 'n', 'h', 'd', 'b', 'm', 'l'], - ['kɔn', 'mac', 'mat', 'mto', 'mpu', 'hil', 'nje', 'hik', 'dip', 'bio', 'may', 'liɓ'], - [ - 'Kɔndɔŋ', 'Màcɛ̂l', 'Màtùmb', 'Màtop', 'M̀puyɛ', 'Hìlòndɛ̀', 'Njèbà', 'Hìkaŋ', 'Dìpɔ̀s', 'Bìòôm', - 'Màyɛsèp', 'Lìbuy li ńyèe' - ] - ], - u, - [['b.Y.K', 'm.Y.K'], u, ['bisū bi Yesù Krǐstò', 'i mbūs Yesù Krǐstò']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'Frǎŋ CFA (BEAC)', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/be.ts b/packages/common/locales/be.ts deleted file mode 100644 index d1e324dcdb..0000000000 --- a/packages/common/locales/be.ts +++ /dev/null @@ -1,93 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n % 10 === 1 && !(n % 100 === 11)) return 1; - if (n % 10 === Math.floor(n % 10) && n % 10 >= 2 && n % 10 <= 4 && - !(n % 100 >= 12 && n % 100 <= 14)) - return 3; - if (n % 10 === 0 || n % 10 === Math.floor(n % 10) && n % 10 >= 5 && n % 10 <= 9 || - n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 14) - return 4; - return 5; -} - -export default [ - 'be', - [['am', 'pm'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['н', 'п', 'а', 'с', 'ч', 'п', 'с'], ['нд', 'пн', 'аў', 'ср', 'чц', 'пт', 'сб'], - ['нядзеля', 'панядзелак', 'аўторак', 'серада', 'чацвер', 'пятніца', 'субота'], - ['нд', 'пн', 'аў', 'ср', 'чц', 'пт', 'сб'] - ], - u, - [ - ['с', 'л', 'с', 'к', 'м', 'ч', 'л', 'ж', 'в', 'к', 'л', 'с'], - ['сту', 'лют', 'сак', 'кра', 'мая', 'чэр', 'ліп', 'жні', 'вер', 'кас', 'ліс', 'сне'], - [ - 'студзеня', 'лютага', 'сакавіка', 'красавіка', 'мая', 'чэрвеня', 'ліпеня', 'жніўня', - 'верасня', 'кастрычніка', 'лістапада', 'снежня' - ] - ], - [ - ['с', 'л', 'с', 'к', 'м', 'ч', 'л', 'ж', 'в', 'к', 'л', 'с'], - ['сту', 'лют', 'сак', 'кра', 'май', 'чэр', 'ліп', 'жні', 'вер', 'кас', 'ліс', 'сне'], - [ - 'студзень', 'люты', 'сакавік', 'красавік', 'май', 'чэрвень', 'ліпень', 'жнівень', 'верасень', - 'кастрычнік', 'лістапад', 'снежань' - ] - ], - [['да н.э.', 'н.э.'], u, ['да нараджэння Хрыстова', 'ад нараджэння Хрыстова']], - 1, - [6, 0], - ['d.MM.yy', 'd.MM.y', 'd MMMM y \'г\'.', 'EEEE, d MMMM y \'г\'.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss, zzzz'], - ['{1}, {0}', u, '{1} \'у\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'BYN', - 'Br', - 'беларускі рубель', - { - 'AUD': ['A$'], - 'BBD': [u, 'Bds$'], - 'BMD': [u, 'BD$'], - 'BRL': [u, 'R$'], - 'BSD': [u, 'B$'], - 'BYN': ['Br'], - 'BZD': [u, 'BZ$'], - 'CAD': [u, 'CA$'], - 'CUC': [u, 'CUC$'], - 'CUP': [u, '$MN'], - 'DOP': [u, 'RD$'], - 'FJD': [u, 'FJ$'], - 'FKP': [u, 'FK£'], - 'GYD': [u, 'G$'], - 'ISK': [u, 'Íkr'], - 'JMD': [u, 'J$'], - 'KYD': [u, 'CI$'], - 'LRD': [u, 'L$'], - 'MXN': ['MX$'], - 'NAD': [u, 'N$'], - 'NZD': [u, 'NZ$'], - 'RUB': ['₽', 'руб.'], - 'SBD': [u, 'SI$'], - 'SGD': [u, 'S$'], - 'TTD': [u, 'TT$'], - 'UYU': [u, '$U'], - 'XCD': ['EC$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/bem.ts b/packages/common/locales/bem.ts deleted file mode 100644 index c7ea54a636..0000000000 --- a/packages/common/locales/bem.ts +++ /dev/null @@ -1,55 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'bem', - [['uluchelo', 'akasuba'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - [ - 'Pa Mulungu', 'Palichimo', 'Palichibuli', 'Palichitatu', 'Palichine', 'Palichisano', - 'Pachibelushi' - ], - u, u - ], - u, - [ - ['J', 'F', 'M', 'E', 'M', 'J', 'J', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Epr', 'Mei', 'Jun', 'Jul', 'Oga', 'Sep', 'Okt', 'Nov', 'Dis'], - [ - 'Januari', 'Februari', 'Machi', 'Epreo', 'Mei', 'Juni', 'Julai', 'Ogasti', 'Septemba', - 'Oktoba', 'Novemba', 'Disemba' - ] - ], - u, - [['BC', 'AD'], u, ['Before Yesu', 'After Yesu']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZMW', - 'K', - 'ZMW', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'ZMW': ['K', 'ZK']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/bez.ts b/packages/common/locales/bez.ts deleted file mode 100644 index 814f31cafa..0000000000 --- a/packages/common/locales/bez.ts +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'bez', - [['pamilau', 'pamunyi'], u, u], - u, - [ - ['M', 'J', 'H', 'H', 'H', 'W', 'J'], ['Mul', 'Vil', 'Hiv', 'Hid', 'Hit', 'Hih', 'Lem'], - [ - 'pa mulungu', 'pa shahuviluha', 'pa hivili', 'pa hidatu', 'pa hitayi', 'pa hihanu', - 'pa shahulembela' - ], - ['Mul', 'Vil', 'Hiv', 'Hid', 'Hit', 'Hih', 'Lem'] - ], - u, - [ - ['H', 'V', 'D', 'T', 'H', 'S', 'S', 'N', 'T', 'K', 'K', 'K'], - ['Hut', 'Vil', 'Dat', 'Tai', 'Han', 'Sit', 'Sab', 'Nan', 'Tis', 'Kum', 'Kmj', 'Kmb'], - [ - 'pa mwedzi gwa hutala', 'pa mwedzi gwa wuvili', 'pa mwedzi gwa wudatu', 'pa mwedzi gwa wutai', - 'pa mwedzi gwa wuhanu', 'pa mwedzi gwa sita', 'pa mwedzi gwa saba', 'pa mwedzi gwa nane', - 'pa mwedzi gwa tisa', 'pa mwedzi gwa kumi', 'pa mwedzi gwa kumi na moja', - 'pa mwedzi gwa kumi na mbili' - ] - ], - u, - [['KM', 'BM'], u, ['Kabla ya Mtwaa', 'Baada ya Mtwaa']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'TZS', - 'TSh', - 'Shilingi ya Hutanzania', - {'JPY': ['JP¥', '¥'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/bg.ts b/packages/common/locales/bg.ts deleted file mode 100644 index dd97228896..0000000000 --- a/packages/common/locales/bg.ts +++ /dev/null @@ -1,107 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'bg', - [['am', 'pm'], u, ['пр.об.', 'сл.об.']], - [['am', 'pm'], u, u], - [ - ['н', 'п', 'в', 'с', 'ч', 'п', 'с'], ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - ['неделя', 'понеделник', 'вторник', 'сряда', 'четвъртък', 'петък', 'събота'], - ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - u, - [ - ['я', 'ф', 'м', 'а', 'м', 'ю', 'ю', 'а', 'с', 'о', 'н', 'д'], - ['яну', 'фев', 'март', 'апр', 'май', 'юни', 'юли', 'авг', 'сеп', 'окт', 'ное', 'дек'], - [ - 'януари', 'февруари', 'март', 'април', 'май', 'юни', 'юли', 'август', 'септември', 'октомври', - 'ноември', 'декември' - ] - ], - u, - [['пр.Хр.', 'сл.Хр.'], u, ['преди Христа', 'след Христа']], - 1, - [6, 0], - ['d.MM.yy \'г\'.', 'd.MM.y \'г\'.', 'd MMMM y \'г\'.', 'EEEE, d MMMM y \'г\'.'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '0.00 ¤', '#E0'], - 'BGN', - 'лв.', - 'Български лев', - { - 'ARS': [], - 'AUD': [], - 'BBD': [], - 'BDT': [], - 'BGN': ['лв.'], - 'BMD': [], - 'BND': [], - 'BRL': [], - 'BSD': [], - 'BYN': [], - 'BZD': [], - 'CAD': [], - 'CLP': [], - 'CNY': [], - 'COP': [], - 'CRC': [], - 'CUP': [], - 'DOP': [], - 'FJD': [], - 'FKP': [], - 'GBP': [u, '£'], - 'GIP': [], - 'GYD': [], - 'HKD': [], - 'ILS': [], - 'INR': [], - 'JMD': [], - 'JPY': [u, '¥'], - 'KHR': [], - 'KRW': [], - 'KYD': [], - 'KZT': [], - 'LAK': [], - 'LRD': [], - 'MNT': [], - 'MXN': [], - 'NAD': [], - 'NGN': [], - 'NZD': [], - 'PHP': [], - 'PYG': [], - 'RON': [], - 'SBD': [], - 'SGD': [], - 'SRD': [], - 'SSP': [], - 'TRY': [], - 'TTD': [], - 'TWD': [], - 'UAH': [], - 'USD': ['щ.д.', '$'], - 'UYU': [], - 'VND': [], - 'XCD': [u, '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/bm.ts b/packages/common/locales/bm.ts deleted file mode 100644 index 110ff0913d..0000000000 --- a/packages/common/locales/bm.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'bm', - [['AM', 'PM'], u, u], - u, - [ - ['K', 'N', 'T', 'A', 'A', 'J', 'S'], ['kar', 'ntɛ', 'tar', 'ara', 'ala', 'jum', 'sib'], - ['kari', 'ntɛnɛ', 'tarata', 'araba', 'alamisa', 'juma', 'sibiri'], - ['kar', 'ntɛ', 'tar', 'ara', 'ala', 'jum', 'sib'] - ], - u, - [ - ['Z', 'F', 'M', 'A', 'M', 'Z', 'Z', 'U', 'S', 'Ɔ', 'N', 'D'], - ['zan', 'feb', 'mar', 'awi', 'mɛ', 'zuw', 'zul', 'uti', 'sɛt', 'ɔku', 'now', 'des'], - [ - 'zanwuye', 'feburuye', 'marisi', 'awirili', 'mɛ', 'zuwɛn', 'zuluye', 'uti', 'sɛtanburu', - 'ɔkutɔburu', 'nowanburu', 'desanburu' - ] - ], - u, - [['J.-C. ɲɛ', 'ni J.-C.'], u, ['jezu krisiti ɲɛ', 'jezu krisiti minkɛ']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XOF', - 'CFA', - 'sefa Fraŋ (BCEAO)', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/bn-IN.ts b/packages/common/locales/bn-IN.ts deleted file mode 100644 index 8297d077fe..0000000000 --- a/packages/common/locales/bn-IN.ts +++ /dev/null @@ -1,63 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} - -export default [ - 'bn-IN', - [['AM', 'PM'], u, u], - u, - [ - ['র', 'সো', 'ম', 'বু', 'বৃ', 'শু', 'শ'], ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহস্পতি', 'শুক্র', 'শনি'], - ['রবিবার', 'সোমবার', 'মঙ্গলবার', 'বুধবার', 'বৃহস্পতিবার', 'শুক্রবার', 'শনিবার'], - ['রঃ', 'সোঃ', 'মঃ', 'বুঃ', 'বৃঃ', 'শুঃ', 'শনি'] - ], - u, - [ - ['জা', 'ফে', 'মা', 'এ', 'মে', 'জুন', 'জু', 'আ', 'সে', 'অ', 'ন', 'ডি'], - [ - 'জানু', 'ফেব', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', - 'ডিসেম্বর' - ], - [ - 'জানুয়ারী', 'ফেব্রুয়ারী', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', - 'নভেম্বর', 'ডিসেম্বর' - ] - ], - [ - ['জা', 'ফে', 'মা', 'এ', 'মে', 'জুন', 'জু', 'আ', 'সে', 'অ', 'ন', 'ডি'], - [ - 'জানুয়ারী', 'ফেব্রুয়ারী', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', - 'নভেম্বর', 'ডিসেম্বর' - ], - u - ], - [['খ্রিস্টপূর্ব', 'খৃষ্টাব্দ'], u, ['খ্রিস্টপূর্ব', 'খ্রীষ্টাব্দ']], - 0, - [0, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '#,##,##0.00¤', '#E0'], - 'INR', - '₹', - 'ভারতীয় রুপি', - {'BDT': ['৳'], 'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/bn.ts b/packages/common/locales/bn.ts deleted file mode 100644 index 92181b1809..0000000000 --- a/packages/common/locales/bn.ts +++ /dev/null @@ -1,63 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} - -export default [ - 'bn', - [['AM', 'PM'], u, u], - u, - [ - ['র', 'সো', 'ম', 'বু', 'বৃ', 'শু', 'শ'], ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহস্পতি', 'শুক্র', 'শনি'], - ['রবিবার', 'সোমবার', 'মঙ্গলবার', 'বুধবার', 'বৃহস্পতিবার', 'শুক্রবার', 'শনিবার'], - ['রঃ', 'সোঃ', 'মঃ', 'বুঃ', 'বৃঃ', 'শুঃ', 'শনি'] - ], - u, - [ - ['জা', 'ফে', 'মা', 'এ', 'মে', 'জুন', 'জু', 'আ', 'সে', 'অ', 'ন', 'ডি'], - [ - 'জানু', 'ফেব', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', - 'ডিসেম্বর' - ], - [ - 'জানুয়ারী', 'ফেব্রুয়ারী', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', - 'নভেম্বর', 'ডিসেম্বর' - ] - ], - [ - ['জা', 'ফে', 'মা', 'এ', 'মে', 'জুন', 'জু', 'আ', 'সে', 'অ', 'ন', 'ডি'], - [ - 'জানুয়ারী', 'ফেব্রুয়ারী', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', - 'নভেম্বর', 'ডিসেম্বর' - ], - u - ], - [['খ্রিস্টপূর্ব', 'খৃষ্টাব্দ'], u, ['খ্রিস্টপূর্ব', 'খ্রীষ্টাব্দ']], - 0, - [6, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '#,##,##0.00¤', '#E0'], - 'BDT', - '৳', - 'বাংলাদেশী টাকা', - {'BDT': ['৳'], 'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/bo-IN.ts b/packages/common/locales/bo-IN.ts deleted file mode 100644 index ac552e8ef6..0000000000 --- a/packages/common/locales/bo-IN.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'bo-IN', - [['སྔ་དྲོ་', 'ཕྱི་དྲོ་'], u, u], - u, - [ - ['ཉི', 'ཟླ', 'མིག', 'ལྷག', 'ཕུར', 'སངས', 'སྤེན'], - ['ཉི་མ་', 'ཟླ་བ་', 'མིག་དམར་', 'ལྷག་པ་', 'ཕུར་བུ་', 'པ་སངས་', 'སྤེན་པ་'], - ['གཟའ་ཉི་མ་', 'གཟའ་ཟླ་བ་', 'གཟའ་མིག་དམར་', 'གཟའ་ལྷག་པ་', 'གཟའ་ཕུར་བུ་', 'གཟའ་པ་སངས་', 'གཟའ་སྤེན་པ་'], - ['ཉི་མ་', 'ཟླ་བ་', 'མིག་དམར་', 'ལྷག་པ་', 'ཕུར་བུ་', 'པ་སངས་', 'སྤེན་པ་'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['ཟླ་༡', 'ཟླ་༢', 'ཟླ་༣', 'ཟླ་༤', 'ཟླ་༥', 'ཟླ་༦', 'ཟླ་༧', 'ཟླ་༨', 'ཟླ་༩', 'ཟླ་༡༠', 'ཟླ་༡༡', 'ཟླ་༡༢'], - [ - 'ཟླ་བ་དང་པོ', 'ཟླ་བ་གཉིས་པ', 'ཟླ་བ་གསུམ་པ', 'ཟླ་བ་བཞི་པ', 'ཟླ་བ་ལྔ་པ', 'ཟླ་བ་དྲུག་པ', 'ཟླ་བ་བདུན་པ', - 'ཟླ་བ་བརྒྱད་པ', 'ཟླ་བ་དགུ་པ', 'ཟླ་བ་བཅུ་པ', 'ཟླ་བ་བཅུ་གཅིག་པ', 'ཟླ་བ་བཅུ་གཉིས་པ' - ] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['ཟླ་༡', 'ཟླ་༢', 'ཟླ་༣', 'ཟླ་༤', 'ཟླ་༥', 'ཟླ་༦', 'ཟླ་༧', 'ཟླ་༨', 'ཟླ་༩', 'ཟླ་༡༠', 'ཟླ་༡༡', 'ཟླ་༡༢'], - [ - 'ཟླ་བ་དང་པོ་', 'ཟླ་བ་གཉིས་པ་', 'ཟླ་བ་གསུམ་པ་', 'ཟླ་བ་བཞི་པ་', 'ཟླ་བ་ལྔ་པ་', 'ཟླ་བ་དྲུག་པ་', 'ཟླ་བ་བདུན་པ་', - 'ཟླ་བ་བརྒྱད་པ་', 'ཟླ་བ་དགུ་པ་', 'ཟླ་བ་བཅུ་པ་', 'ཟླ་བ་བཅུ་གཅིག་པ་', 'ཟླ་བ་བཅུ་གཉིས་པ་' - ] - ], - [['སྤྱི་ལོ་སྔོན་', 'སྤྱི་ལོ་'], u, u], - 0, - [0, 0], - ['y-MM-dd', 'y ལོའི་MMMཚེས་d', 'སྤྱི་ལོ་y MMMMའི་ཚེས་d', 'y MMMMའི་ཚེས་d, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'INR', - '₹', - 'རྒྱ་གར་སྒོར་', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/bo.ts b/packages/common/locales/bo.ts deleted file mode 100644 index 2fecbe88cf..0000000000 --- a/packages/common/locales/bo.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'bo', - [['སྔ་དྲོ་', 'ཕྱི་དྲོ་'], u, u], - u, - [ - ['ཉི', 'ཟླ', 'མིག', 'ལྷག', 'ཕུར', 'སངས', 'སྤེན'], - ['ཉི་མ་', 'ཟླ་བ་', 'མིག་དམར་', 'ལྷག་པ་', 'ཕུར་བུ་', 'པ་སངས་', 'སྤེན་པ་'], - ['གཟའ་ཉི་མ་', 'གཟའ་ཟླ་བ་', 'གཟའ་མིག་དམར་', 'གཟའ་ལྷག་པ་', 'གཟའ་ཕུར་བུ་', 'གཟའ་པ་སངས་', 'གཟའ་སྤེན་པ་'], - ['ཉི་མ་', 'ཟླ་བ་', 'མིག་དམར་', 'ལྷག་པ་', 'ཕུར་བུ་', 'པ་སངས་', 'སྤེན་པ་'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['ཟླ་༡', 'ཟླ་༢', 'ཟླ་༣', 'ཟླ་༤', 'ཟླ་༥', 'ཟླ་༦', 'ཟླ་༧', 'ཟླ་༨', 'ཟླ་༩', 'ཟླ་༡༠', 'ཟླ་༡༡', 'ཟླ་༡༢'], - [ - 'ཟླ་བ་དང་པོ', 'ཟླ་བ་གཉིས་པ', 'ཟླ་བ་གསུམ་པ', 'ཟླ་བ་བཞི་པ', 'ཟླ་བ་ལྔ་པ', 'ཟླ་བ་དྲུག་པ', 'ཟླ་བ་བདུན་པ', - 'ཟླ་བ་བརྒྱད་པ', 'ཟླ་བ་དགུ་པ', 'ཟླ་བ་བཅུ་པ', 'ཟླ་བ་བཅུ་གཅིག་པ', 'ཟླ་བ་བཅུ་གཉིས་པ' - ] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['ཟླ་༡', 'ཟླ་༢', 'ཟླ་༣', 'ཟླ་༤', 'ཟླ་༥', 'ཟླ་༦', 'ཟླ་༧', 'ཟླ་༨', 'ཟླ་༩', 'ཟླ་༡༠', 'ཟླ་༡༡', 'ཟླ་༡༢'], - [ - 'ཟླ་བ་དང་པོ་', 'ཟླ་བ་གཉིས་པ་', 'ཟླ་བ་གསུམ་པ་', 'ཟླ་བ་བཞི་པ་', 'ཟླ་བ་ལྔ་པ་', 'ཟླ་བ་དྲུག་པ་', 'ཟླ་བ་བདུན་པ་', - 'ཟླ་བ་བརྒྱད་པ་', 'ཟླ་བ་དགུ་པ་', 'ཟླ་བ་བཅུ་པ་', 'ཟླ་བ་བཅུ་གཅིག་པ་', 'ཟླ་བ་བཅུ་གཉིས་པ་' - ] - ], - [['སྤྱི་ལོ་སྔོན་', 'སྤྱི་ལོ་'], u, u], - 0, - [6, 0], - ['y-MM-dd', 'y ལོའི་MMMཚེས་d', 'སྤྱི་ལོ་y MMMMའི་ཚེས་d', 'y MMMMའི་ཚེས་d, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'CNY', - '¥', - 'ཡུ་ཨན་', - {'CNY': ['¥'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/br.ts b/packages/common/locales/br.ts deleted file mode 100644 index 3fe456a55d..0000000000 --- a/packages/common/locales/br.ts +++ /dev/null @@ -1,80 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n % 10 === 1 && !(n % 100 === 11 || n % 100 === 71 || n % 100 === 91)) return 1; - if (n % 10 === 2 && !(n % 100 === 12 || n % 100 === 72 || n % 100 === 92)) return 2; - if (n % 10 === Math.floor(n % 10) && (n % 10 >= 3 && n % 10 <= 4 || n % 10 === 9) && - !(n % 100 >= 10 && n % 100 <= 19 || n % 100 >= 70 && n % 100 <= 79 || - n % 100 >= 90 && n % 100 <= 99)) - return 3; - if (!(n === 0) && n % 1e6 === 0) return 4; - return 5; -} - -export default [ - 'br', - [['am', 'gm'], ['A.M.', 'G.M.'], u], - [['A.M.', 'G.M.'], u, u], - [ - ['Su', 'L', 'Mz', 'Mc', 'Y', 'G', 'Sa'], ['Sul', 'Lun', 'Meu.', 'Mer.', 'Yaou', 'Gwe.', 'Sad.'], - ['Sul', 'Lun', 'Meurzh', 'Mercʼher', 'Yaou', 'Gwener', 'Sadorn'], - ['Sul', 'Lun', 'Meu.', 'Mer.', 'Yaou', 'Gwe.', 'Sad.'] - ], - u, - [ - ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'], - [ - 'Gen.', 'Cʼhwe.', 'Meur.', 'Ebr.', 'Mae', 'Mezh.', 'Goue.', 'Eost', 'Gwen.', 'Here', 'Du', - 'Kzu.' - ], - [ - 'Genver', 'Cʼhwevrer', 'Meurzh', 'Ebrel', 'Mae', 'Mezheven', 'Gouere', 'Eost', 'Gwengolo', - 'Here', 'Du', 'Kerzu' - ] - ], - u, - [['a-raok J.K.', 'goude J.K.'], u, ['a-raok Jezuz-Krist', 'goude Jezuz-Krist']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1}, {0}', '{1} \'da\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': ['$A', '$'], - 'BRL': [u, 'R$'], - 'CAD': ['$CA', '$'], - 'CNY': [u, '¥'], - 'EGP': [u, '£ E'], - 'GBP': ['£ RU', '£'], - 'HKD': ['$ HK', '$'], - 'ILS': [u, '₪'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'LBP': [u, '£L'], - 'NZD': ['$ ZN', '$'], - 'TOP': [u, '$ T'], - 'TWD': [u, '$'], - 'USD': ['$ SU', '$'], - 'VND': [u, '₫'], - 'XCD': [u, '$'], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/brx.ts b/packages/common/locales/brx.ts deleted file mode 100644 index 4c216740a7..0000000000 --- a/packages/common/locales/brx.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'brx', - [['फुं', 'बेलासे'], u, u], - u, - [ - ['र', 'स', 'मं', 'बु', 'बि', 'सु', 'सु'], ['रबि', 'सम', 'मंगल', 'बुद', 'बिसथि', 'सुखुर', 'सुनि'], - ['रबिबार', 'समबार', 'मंगलबार', 'बुदबार', 'बिसथिबार', 'सुखुरबार', 'सुनिबार'], - ['रबि', 'सम', 'मंगल', 'बुद', 'बिसथि', 'सुखुर', 'सुनि'] - ], - u, - [ - ['ज', 'फे', 'मा', 'ए', 'मे', 'जु', 'जु', 'आ', 'से', 'अ', 'न', 'दि'], - [ - 'जानुवारी', 'फेब्रुवारी', 'मार्स', 'एफ्रिल', 'मे', 'जुन', 'जुलाइ', 'आगस्थ', 'सेबथेज्ब़र', 'अखथबर', 'नबेज्ब़र', - 'दिसेज्ब़र' - ], - u - ], - u, - [['ईसा.पूर्व', 'सन'], u, u], - 0, - [0, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤ #,##,##0.00', '#E0'], - 'INR', - '₹', - 'रां', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/bs-Cyrl.ts b/packages/common/locales/bs-Cyrl.ts deleted file mode 100644 index 5ce0cdd810..0000000000 --- a/packages/common/locales/bs-Cyrl.ts +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'bs-Cyrl', - [['пре подне', 'поподне'], u, ['прије подне', 'послије подне']], - u, - [ - ['н', 'п', 'у', 'с', 'ч', 'п', 'с'], ['нед', 'пон', 'уто', 'сри', 'чет', 'пет', 'суб'], - ['недјеља', 'понедјељак', 'уторак', 'сриједа', 'четвртак', 'петак', 'субота'], - ['нед', 'пон', 'уто', 'сри', 'чет', 'пет', 'суб'] - ], - u, - [ - ['ј', 'ф', 'м', 'а', 'м', 'ј', 'ј', 'а', 'с', 'о', 'н', 'д'], - ['јан', 'феб', 'мар', 'апр', 'мај', 'јун', 'јул', 'ауг', 'сеп', 'окт', 'нов', 'дец'], - [ - 'јануар', 'фебруар', 'март', 'април', 'мај', 'јуни', 'јули', 'аугуст', 'септембар', 'октобар', - 'новембар', 'децембар' - ] - ], - u, - [['п.н.е.', 'н.е.'], ['п. н. е.', 'н. е.'], ['прије нове ере', 'нове ере']], - 1, - [6, 0], - ['d.M.yy.', 'dd.MM.y.', 'dd. MMMM y.', 'EEEE, dd. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'BAM', - 'КМ', - 'Конвертибилна марка', - { - 'BAM': ['КМ', 'KM'], - 'CZK': ['Кч', 'Kč'], - 'PLN': ['зл', 'zł'], - 'RSD': ['дин.'], - 'TRY': ['Тл', '₺'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/bs-Latn.ts b/packages/common/locales/bs-Latn.ts deleted file mode 100644 index ec6e43f8f8..0000000000 --- a/packages/common/locales/bs-Latn.ts +++ /dev/null @@ -1,81 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14) || - f % 10 === Math.floor(f % 10) && f % 10 >= 2 && f % 10 <= 4 && - !(f % 100 >= 12 && f % 100 <= 14)) - return 3; - return 5; -} - -export default [ - 'bs-Latn', - [['prijepodne', 'popodne'], ['AM', 'PM'], ['prijepodne', 'popodne']], - u, - [ - ['N', 'P', 'U', 'S', 'Č', 'P', 'S'], ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'], - ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'] - ], - [ - ['n', 'p', 'u', 's', 'č', 'p', 's'], ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'], - ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'] - ], - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], - [ - 'januar', 'februar', 'mart', 'april', 'maj', 'juni', 'juli', 'august', 'septembar', 'oktobar', - 'novembar', 'decembar' - ] - ], - u, - [['p.n.e.', 'n.e.'], ['p. n. e.', 'n. e.'], ['prije nove ere', 'nove ere']], - 1, - [6, 0], - ['d. M. y.', 'd. MMM y.', 'd. MMMM y.', 'EEEE, d. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'u\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'BAM', - 'KM', - 'Bosanskohercegovačka konvertibilna marka', - { - 'AUD': [u, '$'], - 'BAM': ['KM'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'HRK': ['kn'], - 'ILS': [u, '₪'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RSD': ['din.'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': [u, '$'], - 'XCD': [u, '$'], - 'XPF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/bs.ts b/packages/common/locales/bs.ts deleted file mode 100644 index 04fb5ac4cd..0000000000 --- a/packages/common/locales/bs.ts +++ /dev/null @@ -1,81 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14) || - f % 10 === Math.floor(f % 10) && f % 10 >= 2 && f % 10 <= 4 && - !(f % 100 >= 12 && f % 100 <= 14)) - return 3; - return 5; -} - -export default [ - 'bs', - [['prijepodne', 'popodne'], ['AM', 'PM'], ['prijepodne', 'popodne']], - u, - [ - ['N', 'P', 'U', 'S', 'Č', 'P', 'S'], ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'], - ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'] - ], - [ - ['n', 'p', 'u', 's', 'č', 'p', 's'], ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'], - ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'] - ], - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], - [ - 'januar', 'februar', 'mart', 'april', 'maj', 'juni', 'juli', 'august', 'septembar', 'oktobar', - 'novembar', 'decembar' - ] - ], - u, - [['p.n.e.', 'n.e.'], ['p. n. e.', 'n. e.'], ['prije nove ere', 'nove ere']], - 1, - [6, 0], - ['d. M. y.', 'd. MMM y.', 'd. MMMM y.', 'EEEE, d. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'u\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'BAM', - 'KM', - 'Bosanskohercegovačka konvertibilna marka', - { - 'AUD': [u, '$'], - 'BAM': ['KM'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'HRK': ['kn'], - 'ILS': [u, '₪'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RSD': ['din.'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': [u, '$'], - 'XCD': [u, '$'], - 'XPF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ca-AD.ts b/packages/common/locales/ca-AD.ts deleted file mode 100644 index cec725f6f6..0000000000 --- a/packages/common/locales/ca-AD.ts +++ /dev/null @@ -1,77 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'ca-AD', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['dg', 'dl', 'dt', 'dc', 'dj', 'dv', 'ds'], ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'], - ['diumenge', 'dilluns', 'dimarts', 'dimecres', 'dijous', 'divendres', 'dissabte'], - ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'] - ], - u, - [ - ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'], - [ - 'de gen.', 'de febr.', 'de març', 'd’abr.', 'de maig', 'de juny', 'de jul.', 'd’ag.', - 'de set.', 'd’oct.', 'de nov.', 'de des.' - ], - [ - 'de gener', 'de febrer', 'de març', 'd’abril', 'de maig', 'de juny', 'de juliol', 'd’agost', - 'de setembre', 'd’octubre', 'de novembre', 'de desembre' - ] - ], - [ - ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'], - [ - 'gen.', 'febr.', 'març', 'abr.', 'maig', 'juny', 'jul.', 'ag.', 'set.', 'oct.', 'nov.', 'des.' - ], - [ - 'gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'agost', 'setembre', 'octubre', - 'novembre', 'desembre' - ] - ], - [['aC', 'dC'], u, ['abans de Crist', 'després de Crist']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM \'de\' y', 'EEEE, d MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', '{1}, {0}', '{1} \'a\' \'les\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': ['AU$', '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'MXN': [u, '$'], - 'THB': ['฿'], - 'USD': [u, '$'], - 'VEF': [u, 'Bs F'], - 'XCD': [u, '$'], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ca-ES-VALENCIA.ts b/packages/common/locales/ca-ES-VALENCIA.ts deleted file mode 100644 index 7c7c315ac1..0000000000 --- a/packages/common/locales/ca-ES-VALENCIA.ts +++ /dev/null @@ -1,77 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'ca-ES-VALENCIA', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['dg', 'dl', 'dt', 'dc', 'dj', 'dv', 'ds'], ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'], - ['diumenge', 'dilluns', 'dimarts', 'dimecres', 'dijous', 'divendres', 'dissabte'], - ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'] - ], - u, - [ - ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'], - [ - 'de gen.', 'de febr.', 'de març', 'd’abr.', 'de maig', 'de juny', 'de jul.', 'd’ag.', - 'de set.', 'd’oct.', 'de nov.', 'de des.' - ], - [ - 'de gener', 'de febrer', 'de març', 'd’abril', 'de maig', 'de juny', 'de juliol', 'd’agost', - 'de setembre', 'd’octubre', 'de novembre', 'de desembre' - ] - ], - [ - ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'], - [ - 'gen.', 'febr.', 'març', 'abr.', 'maig', 'juny', 'jul.', 'ag.', 'set.', 'oct.', 'nov.', 'des.' - ], - [ - 'gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'agost', 'setembre', 'octubre', - 'novembre', 'desembre' - ] - ], - [['aC', 'dC'], u, ['abans de Crist', 'després de Crist']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM \'de\' y', 'EEEE, d MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', '{1}, {0}', '{1} \'a\' \'les\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': ['AU$', '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'MXN': [u, '$'], - 'THB': ['฿'], - 'USD': [u, '$'], - 'VEF': [u, 'Bs F'], - 'XCD': [u, '$'], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ca-FR.ts b/packages/common/locales/ca-FR.ts deleted file mode 100644 index 5f8858f73c..0000000000 --- a/packages/common/locales/ca-FR.ts +++ /dev/null @@ -1,78 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'ca-FR', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['dg', 'dl', 'dt', 'dc', 'dj', 'dv', 'ds'], ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'], - ['diumenge', 'dilluns', 'dimarts', 'dimecres', 'dijous', 'divendres', 'dissabte'], - ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'] - ], - u, - [ - ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'], - [ - 'de gen.', 'de febr.', 'de març', 'd’abr.', 'de maig', 'de juny', 'de jul.', 'd’ag.', - 'de set.', 'd’oct.', 'de nov.', 'de des.' - ], - [ - 'de gener', 'de febrer', 'de març', 'd’abril', 'de maig', 'de juny', 'de juliol', 'd’agost', - 'de setembre', 'd’octubre', 'de novembre', 'de desembre' - ] - ], - [ - ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'], - [ - 'gen.', 'febr.', 'març', 'abr.', 'maig', 'juny', 'jul.', 'ag.', 'set.', 'oct.', 'nov.', 'des.' - ], - [ - 'gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'agost', 'setembre', 'octubre', - 'novembre', 'desembre' - ] - ], - [['aC', 'dC'], u, ['abans de Crist', 'després de Crist']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM \'de\' y', 'EEEE, d MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', '{1}, {0}', '{1} \'a\' \'les\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': ['AU$', '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'FRF': ['F'], - 'MXN': [u, '$'], - 'THB': ['฿'], - 'USD': [u, '$'], - 'VEF': [u, 'Bs F'], - 'XCD': [u, '$'], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ca-IT.ts b/packages/common/locales/ca-IT.ts deleted file mode 100644 index 3e9739f0d8..0000000000 --- a/packages/common/locales/ca-IT.ts +++ /dev/null @@ -1,77 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'ca-IT', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['dg', 'dl', 'dt', 'dc', 'dj', 'dv', 'ds'], ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'], - ['diumenge', 'dilluns', 'dimarts', 'dimecres', 'dijous', 'divendres', 'dissabte'], - ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'] - ], - u, - [ - ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'], - [ - 'de gen.', 'de febr.', 'de març', 'd’abr.', 'de maig', 'de juny', 'de jul.', 'd’ag.', - 'de set.', 'd’oct.', 'de nov.', 'de des.' - ], - [ - 'de gener', 'de febrer', 'de març', 'd’abril', 'de maig', 'de juny', 'de juliol', 'd’agost', - 'de setembre', 'd’octubre', 'de novembre', 'de desembre' - ] - ], - [ - ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'], - [ - 'gen.', 'febr.', 'març', 'abr.', 'maig', 'juny', 'jul.', 'ag.', 'set.', 'oct.', 'nov.', 'des.' - ], - [ - 'gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'agost', 'setembre', 'octubre', - 'novembre', 'desembre' - ] - ], - [['aC', 'dC'], u, ['abans de Crist', 'després de Crist']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM \'de\' y', 'EEEE, d MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', '{1}, {0}', '{1} \'a\' \'les\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': ['AU$', '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'MXN': [u, '$'], - 'THB': ['฿'], - 'USD': [u, '$'], - 'VEF': [u, 'Bs F'], - 'XCD': [u, '$'], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ca.ts b/packages/common/locales/ca.ts deleted file mode 100644 index a464ac41a5..0000000000 --- a/packages/common/locales/ca.ts +++ /dev/null @@ -1,77 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'ca', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['dg', 'dl', 'dt', 'dc', 'dj', 'dv', 'ds'], ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'], - ['diumenge', 'dilluns', 'dimarts', 'dimecres', 'dijous', 'divendres', 'dissabte'], - ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'] - ], - u, - [ - ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'], - [ - 'de gen.', 'de febr.', 'de març', 'd’abr.', 'de maig', 'de juny', 'de jul.', 'd’ag.', - 'de set.', 'd’oct.', 'de nov.', 'de des.' - ], - [ - 'de gener', 'de febrer', 'de març', 'd’abril', 'de maig', 'de juny', 'de juliol', 'd’agost', - 'de setembre', 'd’octubre', 'de novembre', 'de desembre' - ] - ], - [ - ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'], - [ - 'gen.', 'febr.', 'març', 'abr.', 'maig', 'juny', 'jul.', 'ag.', 'set.', 'oct.', 'nov.', 'des.' - ], - [ - 'gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'agost', 'setembre', 'octubre', - 'novembre', 'desembre' - ] - ], - [['aC', 'dC'], u, ['abans de Crist', 'després de Crist']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM \'de\' y', 'EEEE, d MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', '{1}, {0}', '{1} \'a\' \'les\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': ['AU$', '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'MXN': [u, '$'], - 'THB': ['฿'], - 'USD': [u, '$'], - 'VEF': [u, 'Bs F'], - 'XCD': [u, '$'], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ccp-IN.ts b/packages/common/locales/ccp-IN.ts deleted file mode 100644 index e153e6cf75..0000000000 --- a/packages/common/locales/ccp-IN.ts +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'ccp-IN', - [['AM', 'PM'], u, u], - u, - [ - ['𑄢𑄧', '𑄥𑄧', '𑄟𑄧', '𑄝𑄪', '𑄝𑄳𑄢𑄨', '𑄥𑄪', '𑄥𑄧'], ['𑄢𑄧𑄝𑄨', '𑄥𑄧𑄟𑄴', '𑄟𑄧𑄁𑄉𑄧𑄣𑄴', '𑄝𑄪𑄖𑄴', '𑄝𑄳𑄢𑄨𑄥𑄪𑄛𑄴', '𑄥𑄪𑄇𑄴𑄇𑄮𑄢𑄴', '𑄥𑄧𑄚𑄨'], - ['𑄢𑄧𑄝𑄨𑄝𑄢𑄴', '𑄥𑄧𑄟𑄴𑄝𑄢𑄴', '𑄟𑄧𑄁𑄉𑄧𑄣𑄴𑄝𑄢𑄴', '𑄝𑄪𑄖𑄴𑄝𑄢𑄴', '𑄝𑄳𑄢𑄨𑄥𑄪𑄛𑄴𑄝𑄢𑄴', '𑄥𑄪𑄇𑄴𑄇𑄮𑄢𑄴𑄝𑄢𑄴', '𑄥𑄧𑄚𑄨𑄝𑄢𑄴'], - ['𑄢𑄧𑄝𑄨', '𑄥𑄧𑄟𑄴', '𑄟𑄧𑄁𑄉𑄧𑄣𑄴', '𑄝𑄪𑄖𑄴', '𑄝𑄳𑄢𑄨𑄥𑄪𑄛𑄴', '𑄥𑄪𑄇𑄴𑄇𑄮𑄢𑄴', '𑄥𑄧𑄚𑄨'] - ], - u, - [ - ['𑄎', '𑄜𑄬', '𑄟', '𑄃𑄬', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪', '𑄃', '𑄥𑄬', '𑄃𑄧', '𑄚𑄧', '𑄓𑄨'], - [ - '𑄎𑄚𑄪', '𑄜𑄬𑄛𑄴', '𑄟𑄢𑄴𑄌𑄧', '𑄃𑄬𑄛𑄳𑄢𑄨𑄣𑄴', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪𑄣𑄭', '𑄃𑄉𑄧𑄌𑄴𑄑𑄴', '𑄥𑄬𑄛𑄴𑄑𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄃𑄧𑄇𑄴𑄑𑄮𑄝𑄧𑄢𑄴', '𑄚𑄧𑄞𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄓𑄨𑄥𑄬𑄟𑄴𑄝𑄢𑄴' - ], - [ - '𑄎𑄚𑄪𑄠𑄢𑄨', '𑄜𑄬𑄛𑄴𑄝𑄳𑄢𑄪𑄠𑄢𑄨', '𑄟𑄢𑄴𑄌𑄧', '𑄃𑄬𑄛𑄳𑄢𑄨𑄣𑄴', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪𑄣𑄭', '𑄃𑄉𑄧𑄌𑄴𑄑𑄴', '𑄥𑄬𑄛𑄴𑄑𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄃𑄧𑄇𑄴𑄑𑄬𑄝𑄧𑄢𑄴', '𑄚𑄧𑄞𑄬𑄟𑄴𑄝𑄧𑄢𑄴', - '𑄓𑄨𑄥𑄬𑄟𑄴𑄝𑄧𑄢𑄴' - ] - ], - [ - ['𑄎', '𑄜𑄬', '𑄟', '𑄃𑄬', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪', '𑄃', '𑄥𑄬', '𑄃𑄧', '𑄚𑄧', '𑄓𑄨'], - [ - '𑄎𑄚𑄪𑄠𑄢𑄨', '𑄜𑄬𑄛𑄴𑄝𑄳𑄢𑄪𑄠𑄢𑄨', '𑄟𑄢𑄴𑄌𑄧', '𑄃𑄬𑄛𑄳𑄢𑄨𑄣𑄴', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪𑄣𑄭', '𑄃𑄉𑄧𑄌𑄴𑄑𑄴', '𑄥𑄬𑄛𑄴𑄑𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄃𑄧𑄇𑄴𑄑𑄮𑄝𑄧𑄢𑄴', '𑄚𑄧𑄞𑄬𑄟𑄴𑄝𑄧𑄢𑄴', - '𑄓𑄨𑄥𑄬𑄟𑄴𑄝𑄧𑄢𑄴' - ], - u - ], - [['𑄈𑄳𑄢𑄨𑄌𑄴𑄑𑄴𑄛𑄫𑄢𑄴𑄝𑄧', '𑄈𑄳𑄢𑄨𑄌𑄴𑄑𑄛𑄴𑄘𑄧'], u, u], - 0, - [0, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '#,##,##0.00¤', '#E0'], - 'INR', - '₹', - '𑄃𑄨𑄚𑄴𑄘𑄨𑄠𑄚𑄴 𑄢𑄪𑄛𑄨', - { - 'BDT': ['৳'], - 'JPY': ['JP¥', '¥'], - 'STD': [u, 'Db'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ccp.ts b/packages/common/locales/ccp.ts deleted file mode 100644 index faf735bbd9..0000000000 --- a/packages/common/locales/ccp.ts +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'ccp', - [['AM', 'PM'], u, u], - u, - [ - ['𑄢𑄧', '𑄥𑄧', '𑄟𑄧', '𑄝𑄪', '𑄝𑄳𑄢𑄨', '𑄥𑄪', '𑄥𑄧'], ['𑄢𑄧𑄝𑄨', '𑄥𑄧𑄟𑄴', '𑄟𑄧𑄁𑄉𑄧𑄣𑄴', '𑄝𑄪𑄖𑄴', '𑄝𑄳𑄢𑄨𑄥𑄪𑄛𑄴', '𑄥𑄪𑄇𑄴𑄇𑄮𑄢𑄴', '𑄥𑄧𑄚𑄨'], - ['𑄢𑄧𑄝𑄨𑄝𑄢𑄴', '𑄥𑄧𑄟𑄴𑄝𑄢𑄴', '𑄟𑄧𑄁𑄉𑄧𑄣𑄴𑄝𑄢𑄴', '𑄝𑄪𑄖𑄴𑄝𑄢𑄴', '𑄝𑄳𑄢𑄨𑄥𑄪𑄛𑄴𑄝𑄢𑄴', '𑄥𑄪𑄇𑄴𑄇𑄮𑄢𑄴𑄝𑄢𑄴', '𑄥𑄧𑄚𑄨𑄝𑄢𑄴'], - ['𑄢𑄧𑄝𑄨', '𑄥𑄧𑄟𑄴', '𑄟𑄧𑄁𑄉𑄧𑄣𑄴', '𑄝𑄪𑄖𑄴', '𑄝𑄳𑄢𑄨𑄥𑄪𑄛𑄴', '𑄥𑄪𑄇𑄴𑄇𑄮𑄢𑄴', '𑄥𑄧𑄚𑄨'] - ], - u, - [ - ['𑄎', '𑄜𑄬', '𑄟', '𑄃𑄬', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪', '𑄃', '𑄥𑄬', '𑄃𑄧', '𑄚𑄧', '𑄓𑄨'], - [ - '𑄎𑄚𑄪', '𑄜𑄬𑄛𑄴', '𑄟𑄢𑄴𑄌𑄧', '𑄃𑄬𑄛𑄳𑄢𑄨𑄣𑄴', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪𑄣𑄭', '𑄃𑄉𑄧𑄌𑄴𑄑𑄴', '𑄥𑄬𑄛𑄴𑄑𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄃𑄧𑄇𑄴𑄑𑄮𑄝𑄧𑄢𑄴', '𑄚𑄧𑄞𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄓𑄨𑄥𑄬𑄟𑄴𑄝𑄢𑄴' - ], - [ - '𑄎𑄚𑄪𑄠𑄢𑄨', '𑄜𑄬𑄛𑄴𑄝𑄳𑄢𑄪𑄠𑄢𑄨', '𑄟𑄢𑄴𑄌𑄧', '𑄃𑄬𑄛𑄳𑄢𑄨𑄣𑄴', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪𑄣𑄭', '𑄃𑄉𑄧𑄌𑄴𑄑𑄴', '𑄥𑄬𑄛𑄴𑄑𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄃𑄧𑄇𑄴𑄑𑄬𑄝𑄧𑄢𑄴', '𑄚𑄧𑄞𑄬𑄟𑄴𑄝𑄧𑄢𑄴', - '𑄓𑄨𑄥𑄬𑄟𑄴𑄝𑄧𑄢𑄴' - ] - ], - [ - ['𑄎', '𑄜𑄬', '𑄟', '𑄃𑄬', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪', '𑄃', '𑄥𑄬', '𑄃𑄧', '𑄚𑄧', '𑄓𑄨'], - [ - '𑄎𑄚𑄪𑄠𑄢𑄨', '𑄜𑄬𑄛𑄴𑄝𑄳𑄢𑄪𑄠𑄢𑄨', '𑄟𑄢𑄴𑄌𑄧', '𑄃𑄬𑄛𑄳𑄢𑄨𑄣𑄴', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪𑄣𑄭', '𑄃𑄉𑄧𑄌𑄴𑄑𑄴', '𑄥𑄬𑄛𑄴𑄑𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄃𑄧𑄇𑄴𑄑𑄮𑄝𑄧𑄢𑄴', '𑄚𑄧𑄞𑄬𑄟𑄴𑄝𑄧𑄢𑄴', - '𑄓𑄨𑄥𑄬𑄟𑄴𑄝𑄧𑄢𑄴' - ], - u - ], - [['𑄈𑄳𑄢𑄨𑄌𑄴𑄑𑄴𑄛𑄫𑄢𑄴𑄝𑄧', '𑄈𑄳𑄢𑄨𑄌𑄴𑄑𑄛𑄴𑄘𑄧'], u, u], - 0, - [6, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '#,##,##0.00¤', '#E0'], - 'BDT', - '৳', - '𑄝𑄁𑄣𑄘𑄬𑄥𑄨 𑄑𑄬𑄋', - { - 'BDT': ['৳'], - 'JPY': ['JP¥', '¥'], - 'STD': [u, 'Db'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ce.ts b/packages/common/locales/ce.ts deleted file mode 100644 index 2f70713905..0000000000 --- a/packages/common/locales/ce.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ce', - [['AM', 'PM'], u, u], - u, - [ - ['кӀи', 'ор', 'ши', 'кха', 'еа', 'пӀе', 'шуо'], u, - ['кӀира', 'оршот', 'шинара', 'кхаара', 'еара', 'пӀераска', 'шуот'], - ['кӀи', 'ор', 'ши', 'кха', 'еа', 'пӀе', 'шуо'] - ], - [ - ['кӀ', 'о', 'ш', 'кх', 'е', 'пӀ', 'ш'], ['кӀи', 'ор', 'ши', 'кха', 'еа', 'пӀе', 'шуо'], - ['кӀира', 'оршот', 'шинара', 'кхаара', 'еара', 'пӀераска', 'шуот'], - ['кӀи', 'ор', 'ши', 'кха', 'еа', 'пӀе', 'шуо'] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'], - [ - 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', - 'ноябрь', 'декабрь' - ] - ], - u, - [ - ['в. э. тӀ. я', 'в. э'], u, - ['Ӏийса пайхамар вина де кхачале', 'Ӏийса пайхамар вина дийнахь дуьйна'] - ], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'Терхьаш дац', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'RUB', - '₽', - 'Российн сом', - {'JPY': ['JP¥', '¥'], 'RON': [u, 'лей'], 'RUB': ['₽'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ceb.ts b/packages/common/locales/ceb.ts deleted file mode 100644 index 34dca81650..0000000000 --- a/packages/common/locales/ceb.ts +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'ceb', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['D', 'L', 'M', 'M', 'H', 'B', 'S'], ['Dom', 'Lun', 'Mar', 'Miy', 'Huw', 'Biy', 'Sab'], - ['Domingo', 'Lunes', 'Martes', 'Miyerkules', 'Huwebes', 'Biyernes', 'Sabado'], - ['Dom', 'Lun', 'Mar', 'Miy', 'Huw', 'Biy', 'Sab'] - ], - u, - [ - ['E', 'P', 'M', 'A', 'M', 'H', 'H', 'A', 'S', 'O', 'N', 'D'], - ['En', 'Peb', 'Mar', 'Apr', 'May', 'Hun', 'Hul', 'Ag', 'Set', 'Okt', 'Nob', 'Dis'], - [ - 'Enero', 'Pebrero', 'Marso', 'Abril', 'Mayo', 'Hunyo', 'Hulyo', 'Agosto', 'Setyembre', - 'Oktubre', 'Nobyembre', 'Disyembre' - ] - ], - [ - ['E', 'P', 'M', 'A', 'M', 'H', 'H', 'A', 'S', 'O', 'N', 'D'], - ['Ene', 'Peb', 'Mar', 'Abr', 'May', 'Hun', 'Hul', 'Ago', 'Set', 'Okt', 'Nob', 'Dis'], - [ - 'Enero', 'Pebrero', 'Marso', 'Abril', 'Mayo', 'Hunyo', 'Hulyo', 'Agosto', 'Setyembre', - 'Oktubre', 'Nobyembre', 'Disyembre' - ] - ], - [['BC', 'KP'], u, ['Sa Wala Pa Si Kristo', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'sa\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,#0%', '¤#,##0.00', '#E0'], - 'PHP', - '₱', - 'Philippine Piso', - {'JPY': ['JP¥', '¥'], 'PHP': ['₱'], 'USD': ['US $', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/cgg.ts b/packages/common/locales/cgg.ts deleted file mode 100644 index 4e45956fd4..0000000000 --- a/packages/common/locales/cgg.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'cgg', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'K', 'R', 'S', 'N', 'T', 'M'], ['SAN', 'ORK', 'OKB', 'OKS', 'OKN', 'OKT', 'OMK'], - ['Sande', 'Orwokubanza', 'Orwakabiri', 'Orwakashatu', 'Orwakana', 'Orwakataano', 'Orwamukaaga'], - ['SAN', 'ORK', 'OKB', 'OKS', 'OKN', 'OKT', 'OMK'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['KBZ', 'KBR', 'KST', 'KKN', 'KTN', 'KMK', 'KMS', 'KMN', 'KMW', 'KKM', 'KNK', 'KNB'], - [ - 'Okwokubanza', 'Okwakabiri', 'Okwakashatu', 'Okwakana', 'Okwakataana', 'Okwamukaaga', - 'Okwamushanju', 'Okwamunaana', 'Okwamwenda', 'Okwaikumi', 'Okwaikumi na kumwe', - 'Okwaikumi na ibiri' - ] - ], - u, - [['BC', 'AD'], u, ['Kurisito Atakaijire', 'Kurisito Yaijire']], - 1, - [0, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'UGX', - 'USh', - 'Eshiringi ya Uganda', - {'JPY': ['JP¥', '¥'], 'UGX': ['USh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/chr.ts b/packages/common/locales/chr.ts deleted file mode 100644 index 1aebf44566..0000000000 --- a/packages/common/locales/chr.ts +++ /dev/null @@ -1,49 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'chr', - [['Ꮜ', 'Ꮢ'], ['ᏌᎾᎴ', 'ᏒᎯᏱᎢ'], ['ᏌᎾᎴ', 'ᏒᎯᏱᎢᏗᏢ']], - [['ᏌᎾᎴ', 'ᏒᎯᏱᎢ'], u, ['ᏌᎾᎴ', 'ᏒᎯᏱᎢᏗᏢ']], - [ - ['Ꮖ', 'Ꮙ', 'Ꮤ', 'Ꮶ', 'Ꮕ', 'Ꮷ', 'Ꭴ'], ['ᏆᏍᎬ', 'ᏉᏅᎯ', 'ᏔᎵᏁ', 'ᏦᎢᏁ', 'ᏅᎩᏁ', 'ᏧᎾᎩ', 'ᏈᏕᎾ'], - ['ᎤᎾᏙᏓᏆᏍᎬ', 'ᎤᎾᏙᏓᏉᏅᎯ', 'ᏔᎵᏁᎢᎦ', 'ᏦᎢᏁᎢᎦ', 'ᏅᎩᏁᎢᎦ', 'ᏧᎾᎩᎶᏍᏗ', 'ᎤᎾᏙᏓᏈᏕᎾ'], - ['ᏍᎬ', 'ᏅᎯ', 'ᏔᎵ', 'ᏦᎢ', 'ᏅᎩ', 'ᏧᎾ', 'ᏕᎾ'] - ], - u, - [ - ['Ꭴ', 'Ꭷ', 'Ꭰ', 'Ꭷ', 'Ꭰ', 'Ꮥ', 'Ꭻ', 'Ꭶ', 'Ꮪ', 'Ꮪ', 'Ꮕ', 'Ꭵ'], - ['ᎤᏃ', 'ᎧᎦ', 'ᎠᏅ', 'ᎧᏬ', 'ᎠᏂ', 'ᏕᎭ', 'ᎫᏰ', 'ᎦᎶ', 'ᏚᎵ', 'ᏚᏂ', 'ᏅᏓ', 'ᎥᏍ'], - ['ᎤᏃᎸᏔᏅ', 'ᎧᎦᎵ', 'ᎠᏅᏱ', 'ᎧᏬᏂ', 'ᎠᏂᏍᎬᏘ', 'ᏕᎭᎷᏱ', 'ᎫᏰᏉᏂ', 'ᎦᎶᏂ', 'ᏚᎵᏍᏗ', 'ᏚᏂᏅᏗ', 'ᏅᏓᏕᏆ', 'ᎥᏍᎩᏱ'] - ], - u, - [['BC', 'AD'], u, ['ᏧᏓᎷᎸ ᎤᎷᎯᏍᏗ ᎦᎶᏁᏛ', 'ᎠᏃ ᏙᎻᏂ']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} ᎤᎾᎢ {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'US ᎠᏕᎳ', - {'JPY': ['JP¥', '¥']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ckb-IR.ts b/packages/common/locales/ckb-IR.ts deleted file mode 100644 index 6a4bd9c708..0000000000 --- a/packages/common/locales/ckb-IR.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ckb-IR', - [['ب.ن', 'د.ن'], u, u], - u, - [ - ['ی', 'د', 'س', 'چ', 'پ', 'ھ', 'ش'], - ['یەکشەممە', 'دووشەممە', 'سێشەممە', 'چوارشەممە', 'پێنجشەممە', 'ھەینی', 'شەممە'], u, - ['١ش', '٢ش', '٣ش', '٤ش', '٥ش', 'ھ', 'ش'] - ], - u, - [ - ['ک', 'ش', 'ئ', 'ن', 'ئ', 'ح', 'ت', 'ئ', 'ئ', 'ت', 'ت', 'ک'], - [ - 'کانوونی دووەم', 'شوبات', 'ئازار', 'نیسان', 'ئایار', 'حوزەیران', 'تەمووز', 'ئاب', 'ئەیلوول', - 'تشرینی یەکەم', 'تشرینی دووەم', 'کانونی یەکەم' - ], - u - ], - u, - [['پێش زایین', 'زایینی'], u, u], - 6, - [5, 5], - ['y-MM-dd', 'y MMM d', 'dی MMMMی y', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '\u200e+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'IRR', - 'IRR', - 'IRR', - {'IQD': ['د.ع.\u200f'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'rtl', - plural -]; diff --git a/packages/common/locales/ckb.ts b/packages/common/locales/ckb.ts deleted file mode 100644 index ff5bae8f53..0000000000 --- a/packages/common/locales/ckb.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ckb', - [['ب.ن', 'د.ن'], u, u], - u, - [ - ['ی', 'د', 'س', 'چ', 'پ', 'ھ', 'ش'], - ['یەکشەممە', 'دووشەممە', 'سێشەممە', 'چوارشەممە', 'پێنجشەممە', 'ھەینی', 'شەممە'], u, - ['١ش', '٢ش', '٣ش', '٤ش', '٥ش', 'ھ', 'ش'] - ], - u, - [ - ['ک', 'ش', 'ئ', 'ن', 'ئ', 'ح', 'ت', 'ئ', 'ئ', 'ت', 'ت', 'ک'], - [ - 'کانوونی دووەم', 'شوبات', 'ئازار', 'نیسان', 'ئایار', 'حوزەیران', 'تەمووز', 'ئاب', 'ئەیلوول', - 'تشرینی یەکەم', 'تشرینی دووەم', 'کانونی یەکەم' - ], - u - ], - u, - [['پێش زایین', 'زایینی'], u, u], - 6, - [5, 6], - ['y-MM-dd', 'y MMM d', 'dی MMMMی y', 'y MMMM d, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '\u200e+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'IQD', - 'د.ع.\u200f', - 'IQD', - {'IQD': ['د.ع.\u200f'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'rtl', - plural -]; diff --git a/packages/common/locales/closure-locale.ts b/packages/common/locales/closure-locale.ts index cb764264d2..75c08d63a2 100644 --- a/packages/common/locales/closure-locale.ts +++ b/packages/common/locales/closure-locale.ts @@ -6,6227 +6,1657 @@ * found in the LICENSE file at https://angular.io/license */ -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js +// THIS CODE IS GENERATED - DO NOT MODIFY. import {registerLocaleData} from '../src/i18n/locale_data'; const u = undefined; -function plural_af(n: number): number { - if (n === 1) return 1; - return 5; + +function plural_locale_af(n: number): number { + +if (n === 1) + return 1; +return 5; } -export const locale_af = [ - 'af', - [['v', 'n'], ['vm.', 'nm.'], u], - u, - [ - ['S', 'M', 'D', 'W', 'D', 'V', 'S'], ['So.', 'Ma.', 'Di.', 'Wo.', 'Do.', 'Vr.', 'Sa.'], - ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'], - ['So.', 'Ma.', 'Di.', 'Wo.', 'Do.', 'Vr.', 'Sa.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan.', 'Feb.', 'Mrt.', 'Apr.', 'Mei', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Des.'], - [ - 'Januarie', 'Februarie', 'Maart', 'April', 'Mei', 'Junie', 'Julie', 'Augustus', 'September', - 'Oktober', 'November', 'Desember' - ] - ], - u, - [['v.C.', 'n.C.'], u, ['voor Christus', 'na Christus']], - 0, - [6, 0], - ['y-MM-dd', 'dd MMM y', 'dd MMMM y', 'EEEE dd MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZAR', - 'R', - 'Suid-Afrikaanse rand', - { - 'CAD': [u, '$'], - 'JPY': ['JP¥', '¥'], - 'MXN': [u, '$'], - 'RON': [u, 'leu'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': [u, '$'], - 'ZAR': ['R'] - }, - 'ltr', - plural_af -]; +export const locale_af = ["af",[["v","n"],["vm.","nm."],u],u,[["S","M","D","W","D","V","S"],["So.","Ma.","Di.","Wo.","Do.","Vr.","Sa."],["Sondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrydag","Saterdag"],["So.","Ma.","Di.","Wo.","Do.","Vr.","Sa."]],u,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan.","Feb.","Mrt.","Apr.","Mei","Jun.","Jul.","Aug.","Sep.","Okt.","Nov.","Des."],["Januarie","Februarie","Maart","April","Mei","Junie","Julie","Augustus","September","Oktober","November","Desember"]],u,[["v.C.","n.C."],u,["voor Christus","na Christus"]],0,[6,0],["y-MM-dd","dd MMM y","dd MMMM y","EEEE dd MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",u,u,u],[","," ",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"ZAR","R","Suid-Afrikaanse rand",{"CAD":[u,"$"],"JPY":["JP¥","¥"],"MXN":[u,"$"],"RON":[u,"leu"],"THB":["฿"],"TWD":["NT$"],"USD":[u,"$"],"ZAR":["R"]},"ltr", plural_locale_af]; -function plural_am(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; + + +function plural_locale_am(n: number): number { +const i = Math.floor(Math.abs(n)); + +if (i === 0 || n === 1) + return 1; +return 5; } -export const locale_am = [ - 'am', - [['ጠ', 'ከ'], ['ጥዋት', 'ከሰዓት'], u], - u, - [ - ['እ', 'ሰ', 'ማ', 'ረ', 'ሐ', 'ዓ', 'ቅ'], ['እሑድ', 'ሰኞ', 'ማክሰ', 'ረቡዕ', 'ሐሙስ', 'ዓርብ', 'ቅዳሜ'], - ['እሑድ', 'ሰኞ', 'ማክሰኞ', 'ረቡዕ', 'ሐሙስ', 'ዓርብ', 'ቅዳሜ'], ['እ', 'ሰ', 'ማ', 'ረ', 'ሐ', 'ዓ', 'ቅ'] - ], - u, - [ - ['ጃ', 'ፌ', 'ማ', 'ኤ', 'ሜ', 'ጁ', 'ጁ', 'ኦ', 'ሴ', 'ኦ', 'ኖ', 'ዲ'], - ['ጃንዩ', 'ፌብሩ', 'ማርች', 'ኤፕሪ', 'ሜይ', 'ጁን', 'ጁላይ', 'ኦገስ', 'ሴፕቴ', 'ኦክቶ', 'ኖቬም', 'ዲሴም'], - [ - 'ጃንዩወሪ', 'ፌብሩወሪ', 'ማርች', 'ኤፕሪል', 'ሜይ', 'ጁን', 'ጁላይ', 'ኦገስት', 'ሴፕቴምበር', 'ኦክቶበር', 'ኖቬምበር', - 'ዲሴምበር' - ] - ], - u, - [['ዓ/ዓ', 'ዓ/ም'], u, ['ዓመተ ዓለም', 'ዓመተ ምሕረት']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'y MMMM d, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ETB', - 'ብር', - 'የኢትዮጵያ ብር', - { - 'AUD': ['AU$', '$'], - 'CNH': ['የቻይና ዩዋን'], - 'ETB': ['ብር'], - 'JPY': ['JP¥', '¥'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural_am -]; +export const locale_am = ["am",[["ጠ","ከ"],["ጥዋት","ከሰዓት"],u],u,[["እ","ሰ","ማ","ረ","ሐ","ዓ","ቅ"],["እሑድ","ሰኞ","ማክሰ","ረቡዕ","ሐሙስ","ዓርብ","ቅዳሜ"],["እሑድ","ሰኞ","ማክሰኞ","ረቡዕ","ሐሙስ","ዓርብ","ቅዳሜ"],["እ","ሰ","ማ","ረ","ሐ","ዓ","ቅ"]],u,[["ጃ","ፌ","ማ","ኤ","ሜ","ጁ","ጁ","ኦ","ሴ","ኦ","ኖ","ዲ"],["ጃንዩ","ፌብሩ","ማርች","ኤፕሪ","ሜይ","ጁን","ጁላይ","ኦገስ","ሴፕቴ","ኦክቶ","ኖቬም","ዲሴም"],["ጃንዩወሪ","ፌብሩወሪ","ማርች","ኤፕሪል","ሜይ","ጁን","ጁላይ","ኦገስት","ሴፕቴምበር","ኦክቶበር","ኖቬምበር","ዲሴምበር"]],u,[["ዓ/ዓ","ዓ/ም"],u,["ዓመተ ዓለም","ዓመተ ምሕረት"]],0,[6,0],["dd/MM/y","d MMM y","d MMMM y","y MMMM d, EEEE"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1} {0}",u,u,u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"ETB","ብር","የኢትዮጵያ ብር",{"AUD":["AU$","$"],"CNH":["የቻይና ዩዋን"],"ETB":["ብር"],"JPY":["JP¥","¥"],"THB":["฿"],"TWD":["NT$"],"USD":["US$","$"]},"ltr", plural_locale_am]; -function plural_ar(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -export const locale_ar = [ - 'ar', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'EGP', - 'ج.م.\u200f', - 'جنيه مصري', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural_ar -]; -function plural_ar_DZ(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} +function plural_locale_ar(n: number): number { -export const locale_ar_DZ = [ - 'ar-DZ', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ج', 'ف', 'م', 'أ', 'م', 'ج', 'ج', 'أ', 'س', 'أ', 'ن', 'د'], - [ - 'جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان', 'جويلية', 'أوت', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'DZD', - 'د.ج.\u200f', - 'دينار جزائري', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural_ar_DZ -]; - -function plural_az(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_az = [ - 'az', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['7', '1', '2', '3', '4', '5', '6'], ['B.', 'B.e.', 'Ç.a.', 'Ç.', 'C.a.', 'C.', 'Ş.'], - ['bazar', 'bazar ertəsi', 'çərşənbə axşamı', 'çərşənbə', 'cümə axşamı', 'cümə', 'şənbə'], - ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C.', 'Ş.'] - ], - [ - ['7', '1', '2', '3', '4', '5', '6'], ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C.', 'Ş.'], - ['bazar', 'bazar ertəsi', 'çərşənbə axşamı', 'çərşənbə', 'cümə axşamı', 'cümə', 'şənbə'], - ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C.', 'Ş.'] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avq', 'sen', 'okt', 'noy', 'dek'], - [ - 'yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avqust', 'sentyabr', 'oktyabr', - 'noyabr', 'dekabr' - ] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avq', 'sen', 'okt', 'noy', 'dek'], - [ - 'yanvar', 'Fevral', 'mart', 'Aprel', 'May', 'İyun', 'İyul', 'Avqust', 'Sentyabr', 'Oktyabr', - 'Noyabr', 'dekabr' - ] - ], - [['e.ə.', 'y.e.'], u, ['eramızdan əvvəl', 'yeni era']], - 1, - [6, 0], - ['dd.MM.yy', 'd MMM y', 'd MMMM y', 'd MMMM y, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'AZN', - '₼', - 'Azərbaycan Manatı', - { - 'AZN': ['₼'], - 'JPY': ['JP¥', '¥'], - 'RON': [u, 'ley'], - 'SYP': [u, 'S£'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural_az -]; - -function plural_be(n: number): number { - if (n % 10 === 1 && !(n % 100 === 11)) return 1; - if (n % 10 === Math.floor(n % 10) && n % 10 >= 2 && n % 10 <= 4 && - !(n % 100 >= 12 && n % 100 <= 14)) - return 3; - if (n % 10 === 0 || n % 10 === Math.floor(n % 10) && n % 10 >= 5 && n % 10 <= 9 || - n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 14) - return 4; - return 5; -} - -export const locale_be = [ - 'be', - [['am', 'pm'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['н', 'п', 'а', 'с', 'ч', 'п', 'с'], ['нд', 'пн', 'аў', 'ср', 'чц', 'пт', 'сб'], - ['нядзеля', 'панядзелак', 'аўторак', 'серада', 'чацвер', 'пятніца', 'субота'], - ['нд', 'пн', 'аў', 'ср', 'чц', 'пт', 'сб'] - ], - u, - [ - ['с', 'л', 'с', 'к', 'м', 'ч', 'л', 'ж', 'в', 'к', 'л', 'с'], - ['сту', 'лют', 'сак', 'кра', 'мая', 'чэр', 'ліп', 'жні', 'вер', 'кас', 'ліс', 'сне'], - [ - 'студзеня', 'лютага', 'сакавіка', 'красавіка', 'мая', 'чэрвеня', 'ліпеня', 'жніўня', - 'верасня', 'кастрычніка', 'лістапада', 'снежня' - ] - ], - [ - ['с', 'л', 'с', 'к', 'м', 'ч', 'л', 'ж', 'в', 'к', 'л', 'с'], - ['сту', 'лют', 'сак', 'кра', 'май', 'чэр', 'ліп', 'жні', 'вер', 'кас', 'ліс', 'сне'], - [ - 'студзень', 'люты', 'сакавік', 'красавік', 'май', 'чэрвень', 'ліпень', 'жнівень', 'верасень', - 'кастрычнік', 'лістапад', 'снежань' - ] - ], - [['да н.э.', 'н.э.'], u, ['да нараджэння Хрыстова', 'ад нараджэння Хрыстова']], - 1, - [6, 0], - ['d.MM.yy', 'd.MM.y', 'd MMMM y \'г\'.', 'EEEE, d MMMM y \'г\'.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss, zzzz'], - ['{1}, {0}', u, '{1} \'у\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'BYN', - 'Br', - 'беларускі рубель', - { - 'AUD': ['A$'], - 'BBD': [u, 'Bds$'], - 'BMD': [u, 'BD$'], - 'BRL': [u, 'R$'], - 'BSD': [u, 'B$'], - 'BYN': ['Br'], - 'BZD': [u, 'BZ$'], - 'CAD': [u, 'CA$'], - 'CUC': [u, 'CUC$'], - 'CUP': [u, '$MN'], - 'DOP': [u, 'RD$'], - 'FJD': [u, 'FJ$'], - 'FKP': [u, 'FK£'], - 'GYD': [u, 'G$'], - 'ISK': [u, 'Íkr'], - 'JMD': [u, 'J$'], - 'KYD': [u, 'CI$'], - 'LRD': [u, 'L$'], - 'MXN': ['MX$'], - 'NAD': [u, 'N$'], - 'NZD': [u, 'NZ$'], - 'RUB': ['₽', 'руб.'], - 'SBD': [u, 'SI$'], - 'SGD': [u, 'S$'], - 'TTD': [u, 'TT$'], - 'UYU': [u, '$U'], - 'XCD': ['EC$'] - }, - 'ltr', - plural_be -]; - -function plural_bg(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_bg = [ - 'bg', - [['am', 'pm'], u, ['пр.об.', 'сл.об.']], - [['am', 'pm'], u, u], - [ - ['н', 'п', 'в', 'с', 'ч', 'п', 'с'], ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - ['неделя', 'понеделник', 'вторник', 'сряда', 'четвъртък', 'петък', 'събота'], - ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - u, - [ - ['я', 'ф', 'м', 'а', 'м', 'ю', 'ю', 'а', 'с', 'о', 'н', 'д'], - ['яну', 'фев', 'март', 'апр', 'май', 'юни', 'юли', 'авг', 'сеп', 'окт', 'ное', 'дек'], - [ - 'януари', 'февруари', 'март', 'април', 'май', 'юни', 'юли', 'август', 'септември', 'октомври', - 'ноември', 'декември' - ] - ], - u, - [['пр.Хр.', 'сл.Хр.'], u, ['преди Христа', 'след Христа']], - 1, - [6, 0], - ['d.MM.yy \'г\'.', 'd.MM.y \'г\'.', 'd MMMM y \'г\'.', 'EEEE, d MMMM y \'г\'.'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '0.00 ¤', '#E0'], - 'BGN', - 'лв.', - 'Български лев', - { - 'ARS': [], - 'AUD': [], - 'BBD': [], - 'BDT': [], - 'BGN': ['лв.'], - 'BMD': [], - 'BND': [], - 'BRL': [], - 'BSD': [], - 'BYN': [], - 'BZD': [], - 'CAD': [], - 'CLP': [], - 'CNY': [], - 'COP': [], - 'CRC': [], - 'CUP': [], - 'DOP': [], - 'FJD': [], - 'FKP': [], - 'GBP': [u, '£'], - 'GIP': [], - 'GYD': [], - 'HKD': [], - 'ILS': [], - 'INR': [], - 'JMD': [], - 'JPY': [u, '¥'], - 'KHR': [], - 'KRW': [], - 'KYD': [], - 'KZT': [], - 'LAK': [], - 'LRD': [], - 'MNT': [], - 'MXN': [], - 'NAD': [], - 'NGN': [], - 'NZD': [], - 'PHP': [], - 'PYG': [], - 'RON': [], - 'SBD': [], - 'SGD': [], - 'SRD': [], - 'SSP': [], - 'TRY': [], - 'TTD': [], - 'TWD': [], - 'UAH': [], - 'USD': ['щ.д.', '$'], - 'UYU': [], - 'VND': [], - 'XCD': [u, '$'] - }, - 'ltr', - plural_bg -]; - -function plural_bn(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} - -export const locale_bn = [ - 'bn', - [['AM', 'PM'], u, u], - u, - [ - ['র', 'সো', 'ম', 'বু', 'বৃ', 'শু', 'শ'], ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহস্পতি', 'শুক্র', 'শনি'], - ['রবিবার', 'সোমবার', 'মঙ্গলবার', 'বুধবার', 'বৃহস্পতিবার', 'শুক্রবার', 'শনিবার'], - ['রঃ', 'সোঃ', 'মঃ', 'বুঃ', 'বৃঃ', 'শুঃ', 'শনি'] - ], - u, - [ - ['জা', 'ফে', 'মা', 'এ', 'মে', 'জুন', 'জু', 'আ', 'সে', 'অ', 'ন', 'ডি'], - [ - 'জানু', 'ফেব', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', - 'ডিসেম্বর' - ], - [ - 'জানুয়ারী', 'ফেব্রুয়ারী', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', - 'নভেম্বর', 'ডিসেম্বর' - ] - ], - [ - ['জা', 'ফে', 'মা', 'এ', 'মে', 'জুন', 'জু', 'আ', 'সে', 'অ', 'ন', 'ডি'], - [ - 'জানুয়ারী', 'ফেব্রুয়ারী', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', - 'নভেম্বর', 'ডিসেম্বর' - ], - u - ], - [['খ্রিস্টপূর্ব', 'খৃষ্টাব্দ'], u, ['খ্রিস্টপূর্ব', 'খ্রীষ্টাব্দ']], - 0, - [6, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '#,##,##0.00¤', '#E0'], - 'BDT', - '৳', - 'বাংলাদেশী টাকা', - {'BDT': ['৳'], 'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$']}, - 'ltr', - plural_bn -]; - -function plural_br(n: number): number { - if (n % 10 === 1 && !(n % 100 === 11 || n % 100 === 71 || n % 100 === 91)) return 1; - if (n % 10 === 2 && !(n % 100 === 12 || n % 100 === 72 || n % 100 === 92)) return 2; - if (n % 10 === Math.floor(n % 10) && (n % 10 >= 3 && n % 10 <= 4 || n % 10 === 9) && - !(n % 100 >= 10 && n % 100 <= 19 || n % 100 >= 70 && n % 100 <= 79 || - n % 100 >= 90 && n % 100 <= 99)) - return 3; - if (!(n === 0) && n % 1e6 === 0) return 4; - return 5; -} - -export const locale_br = [ - 'br', - [['am', 'gm'], ['A.M.', 'G.M.'], u], - [['A.M.', 'G.M.'], u, u], - [ - ['Su', 'L', 'Mz', 'Mc', 'Y', 'G', 'Sa'], ['Sul', 'Lun', 'Meu.', 'Mer.', 'Yaou', 'Gwe.', 'Sad.'], - ['Sul', 'Lun', 'Meurzh', 'Mercʼher', 'Yaou', 'Gwener', 'Sadorn'], - ['Sul', 'Lun', 'Meu.', 'Mer.', 'Yaou', 'Gwe.', 'Sad.'] - ], - u, - [ - ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'], - [ - 'Gen.', 'Cʼhwe.', 'Meur.', 'Ebr.', 'Mae', 'Mezh.', 'Goue.', 'Eost', 'Gwen.', 'Here', 'Du', - 'Kzu.' - ], - [ - 'Genver', 'Cʼhwevrer', 'Meurzh', 'Ebrel', 'Mae', 'Mezheven', 'Gouere', 'Eost', 'Gwengolo', - 'Here', 'Du', 'Kerzu' - ] - ], - u, - [['a-raok J.K.', 'goude J.K.'], u, ['a-raok Jezuz-Krist', 'goude Jezuz-Krist']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1}, {0}', '{1} \'da\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': ['$A', '$'], - 'BRL': [u, 'R$'], - 'CAD': ['$CA', '$'], - 'CNY': [u, '¥'], - 'EGP': [u, '£ E'], - 'GBP': ['£ RU', '£'], - 'HKD': ['$ HK', '$'], - 'ILS': [u, '₪'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'LBP': [u, '£L'], - 'NZD': ['$ ZN', '$'], - 'TOP': [u, '$ T'], - 'TWD': [u, '$'], - 'USD': ['$ SU', '$'], - 'VND': [u, '₫'], - 'XCD': [u, '$'], - 'XXX': [] - }, - 'ltr', - plural_br -]; - -function plural_bs(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14) || - f % 10 === Math.floor(f % 10) && f % 10 >= 2 && f % 10 <= 4 && - !(f % 100 >= 12 && f % 100 <= 14)) - return 3; - return 5; -} - -export const locale_bs = [ - 'bs', - [['prijepodne', 'popodne'], ['AM', 'PM'], ['prijepodne', 'popodne']], - u, - [ - ['N', 'P', 'U', 'S', 'Č', 'P', 'S'], ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'], - ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'] - ], - [ - ['n', 'p', 'u', 's', 'č', 'p', 's'], ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'], - ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'] - ], - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], - [ - 'januar', 'februar', 'mart', 'april', 'maj', 'juni', 'juli', 'august', 'septembar', 'oktobar', - 'novembar', 'decembar' - ] - ], - u, - [['p.n.e.', 'n.e.'], ['p. n. e.', 'n. e.'], ['prije nove ere', 'nove ere']], - 1, - [6, 0], - ['d. M. y.', 'd. MMM y.', 'd. MMMM y.', 'EEEE, d. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'u\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'BAM', - 'KM', - 'Bosanskohercegovačka konvertibilna marka', - { - 'AUD': [u, '$'], - 'BAM': ['KM'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'HRK': ['kn'], - 'ILS': [u, '₪'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RSD': ['din.'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': [u, '$'], - 'XCD': [u, '$'], - 'XPF': [] - }, - 'ltr', - plural_bs -]; - -function plural_ca(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export const locale_ca = [ - 'ca', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['dg', 'dl', 'dt', 'dc', 'dj', 'dv', 'ds'], ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'], - ['diumenge', 'dilluns', 'dimarts', 'dimecres', 'dijous', 'divendres', 'dissabte'], - ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'] - ], - u, - [ - ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'], - [ - 'de gen.', 'de febr.', 'de març', 'd’abr.', 'de maig', 'de juny', 'de jul.', 'd’ag.', - 'de set.', 'd’oct.', 'de nov.', 'de des.' - ], - [ - 'de gener', 'de febrer', 'de març', 'd’abril', 'de maig', 'de juny', 'de juliol', 'd’agost', - 'de setembre', 'd’octubre', 'de novembre', 'de desembre' - ] - ], - [ - ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'], - [ - 'gen.', 'febr.', 'març', 'abr.', 'maig', 'juny', 'jul.', 'ag.', 'set.', 'oct.', 'nov.', 'des.' - ], - [ - 'gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'agost', 'setembre', 'octubre', - 'novembre', 'desembre' - ] - ], - [['aC', 'dC'], u, ['abans de Crist', 'després de Crist']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM \'de\' y', 'EEEE, d MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', '{1}, {0}', '{1} \'a\' \'les\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': ['AU$', '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'MXN': [u, '$'], - 'THB': ['฿'], - 'USD': [u, '$'], - 'VEF': [u, 'Bs F'], - 'XCD': [u, '$'], - 'XXX': [] - }, - 'ltr', - plural_ca -]; - -function plural_chr(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_chr = [ - 'chr', - [['Ꮜ', 'Ꮢ'], ['ᏌᎾᎴ', 'ᏒᎯᏱᎢ'], ['ᏌᎾᎴ', 'ᏒᎯᏱᎢᏗᏢ']], - [['ᏌᎾᎴ', 'ᏒᎯᏱᎢ'], u, ['ᏌᎾᎴ', 'ᏒᎯᏱᎢᏗᏢ']], - [ - ['Ꮖ', 'Ꮙ', 'Ꮤ', 'Ꮶ', 'Ꮕ', 'Ꮷ', 'Ꭴ'], ['ᏆᏍᎬ', 'ᏉᏅᎯ', 'ᏔᎵᏁ', 'ᏦᎢᏁ', 'ᏅᎩᏁ', 'ᏧᎾᎩ', 'ᏈᏕᎾ'], - ['ᎤᎾᏙᏓᏆᏍᎬ', 'ᎤᎾᏙᏓᏉᏅᎯ', 'ᏔᎵᏁᎢᎦ', 'ᏦᎢᏁᎢᎦ', 'ᏅᎩᏁᎢᎦ', 'ᏧᎾᎩᎶᏍᏗ', 'ᎤᎾᏙᏓᏈᏕᎾ'], - ['ᏍᎬ', 'ᏅᎯ', 'ᏔᎵ', 'ᏦᎢ', 'ᏅᎩ', 'ᏧᎾ', 'ᏕᎾ'] - ], - u, - [ - ['Ꭴ', 'Ꭷ', 'Ꭰ', 'Ꭷ', 'Ꭰ', 'Ꮥ', 'Ꭻ', 'Ꭶ', 'Ꮪ', 'Ꮪ', 'Ꮕ', 'Ꭵ'], - ['ᎤᏃ', 'ᎧᎦ', 'ᎠᏅ', 'ᎧᏬ', 'ᎠᏂ', 'ᏕᎭ', 'ᎫᏰ', 'ᎦᎶ', 'ᏚᎵ', 'ᏚᏂ', 'ᏅᏓ', 'ᎥᏍ'], - ['ᎤᏃᎸᏔᏅ', 'ᎧᎦᎵ', 'ᎠᏅᏱ', 'ᎧᏬᏂ', 'ᎠᏂᏍᎬᏘ', 'ᏕᎭᎷᏱ', 'ᎫᏰᏉᏂ', 'ᎦᎶᏂ', 'ᏚᎵᏍᏗ', 'ᏚᏂᏅᏗ', 'ᏅᏓᏕᏆ', 'ᎥᏍᎩᏱ'] - ], - u, - [['BC', 'AD'], u, ['ᏧᏓᎷᎸ ᎤᎷᎯᏍᏗ ᎦᎶᏁᏛ', 'ᎠᏃ ᏙᎻᏂ']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} ᎤᎾᎢ {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'US ᎠᏕᎳ', - {'JPY': ['JP¥', '¥']}, - 'ltr', - plural_chr -]; - -function plural_cs(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - if (i === Math.floor(i) && i >= 2 && i <= 4 && v === 0) return 3; - if (!(v === 0)) return 4; - return 5; -} - -export const locale_cs = [ - 'cs', - [['dop.', 'odp.'], u, u], - u, - [ - ['N', 'P', 'Ú', 'S', 'Č', 'P', 'S'], ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'], - ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'], - ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['led', 'úno', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro'], - [ - 'ledna', 'února', 'března', 'dubna', 'května', 'června', 'července', 'srpna', 'září', 'října', - 'listopadu', 'prosince' - ] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['led', 'úno', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro'], - [ - 'leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen', 'září', 'říjen', - 'listopad', 'prosinec' - ] - ], - [['př.n.l.', 'n.l.'], ['př. n. l.', 'n. l.'], ['před naším letopočtem', 'našeho letopočtu']], - 1, - [6, 0], - ['dd.MM.yy', 'd. M. y', 'd. MMMM y', 'EEEE d. MMMM y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'CZK', - 'Kč', - 'česká koruna', - { - 'AUD': ['AU$', '$'], - 'CSK': ['Kčs'], - 'CZK': ['Kč'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': ['JP¥', '¥'], - 'RON': [u, 'L'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'], - 'XEU': ['ECU'], - 'XXX': [] - }, - 'ltr', - plural_cs -]; - -function plural_cy(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n === 3) return 3; - if (n === 6) return 4; - return 5; -} - -export const locale_cy = [ - 'cy', - [['b', 'h'], ['AM', 'PM'], ['yb', 'yh']], - [['AM', 'PM'], u, u], - [ - ['S', 'Ll', 'M', 'M', 'I', 'G', 'S'], ['Sul', 'Llun', 'Maw', 'Mer', 'Iau', 'Gwen', 'Sad'], - [ - 'Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', - 'Dydd Sadwrn' - ], - ['Su', 'Ll', 'Ma', 'Me', 'Ia', 'Gw', 'Sa'] - ], - [ - ['S', 'Ll', 'M', 'M', 'I', 'G', 'S'], ['Sul', 'Llun', 'Maw', 'Mer', 'Iau', 'Gwe', 'Sad'], - [ - 'Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', - 'Dydd Sadwrn' - ], - ['Su', 'Ll', 'Ma', 'Me', 'Ia', 'Gw', 'Sa'] - ], - [ - ['I', 'Ch', 'M', 'E', 'M', 'M', 'G', 'A', 'M', 'H', 'T', 'Rh'], - ['Ion', 'Chwef', 'Maw', 'Ebr', 'Mai', 'Meh', 'Gorff', 'Awst', 'Medi', 'Hyd', 'Tach', 'Rhag'], - [ - 'Ionawr', 'Chwefror', 'Mawrth', 'Ebrill', 'Mai', 'Mehefin', 'Gorffennaf', 'Awst', 'Medi', - 'Hydref', 'Tachwedd', 'Rhagfyr' - ] - ], - [ - ['I', 'Ch', 'M', 'E', 'M', 'M', 'G', 'A', 'M', 'H', 'T', 'Rh'], - ['Ion', 'Chw', 'Maw', 'Ebr', 'Mai', 'Meh', 'Gor', 'Awst', 'Medi', 'Hyd', 'Tach', 'Rhag'], - [ - 'Ionawr', 'Chwefror', 'Mawrth', 'Ebrill', 'Mai', 'Mehefin', 'Gorffennaf', 'Awst', 'Medi', - 'Hydref', 'Tachwedd', 'Rhagfyr' - ] - ], - [['C', 'O'], ['CC', 'OC'], ['Cyn Crist', 'Oed Crist']], - 1, - [6, 0], - ['dd/MM/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'am\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GBP', - '£', - 'Punt Prydain', - { - 'BDT': [u, 'TK'], - 'BWP': [], - 'HKD': ['HK$'], - 'JPY': ['JP¥', '¥'], - 'KRW': [u, '₩'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XXX': [], - 'ZAR': [], - 'ZMW': [] - }, - 'ltr', - plural_cy -]; - -function plural_da(n: number): number { - let i = Math.floor(Math.abs(n)), - t = parseInt(n.toString().replace(/^[^.]*\.?|0+$/g, ''), 10) || 0; - if (n === 1 || !(t === 0) && (i === 0 || i === 1)) return 1; - return 5; -} - -export const locale_da = [ - 'da', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['søn.', 'man.', 'tir.', 'ons.', 'tor.', 'fre.', 'lør.'], - ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'], - ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'] - ], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['søn', 'man', 'tir', 'ons', 'tor', 'fre', 'lør'], - ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'], - ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januar', 'februar', 'marts', 'april', 'maj', 'juni', 'juli', 'august', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['fKr', 'eKr'], ['f.Kr.', 'e.Kr.'], u], - 1, - [6, 0], - ['dd.MM.y', 'd. MMM y', 'd. MMMM y', 'EEEE \'den\' d. MMMM y'], - ['HH.mm', 'HH.mm.ss', 'HH.mm.ss z', 'HH.mm.ss zzzz'], - ['{1} {0}', u, '{1} \'kl\'. {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', '.'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'DKK', - 'kr.', - 'dansk krone', - { - 'AUD': ['AU$', '$'], - 'DKK': ['kr.'], - 'ISK': [u, 'kr.'], - 'JPY': ['JP¥', '¥'], - 'NOK': [u, 'kr.'], - 'RON': [u, 'L'], - 'SEK': [u, 'kr.'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural_da -]; - -function plural_de(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export const locale_de = [ - 'de', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sept.', 'Okt.', 'Nov.', 'Dez.' - ], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'um\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - { - 'ATS': ['öS'], - 'AUD': ['AU$', '$'], - 'BGM': ['BGK'], - 'BGO': ['BGJ'], - 'CUC': [u, 'Cub$'], - 'DEM': ['DM'], - 'FKP': [u, 'Fl£'], - 'GNF': [u, 'F.G.'], - 'KMF': [u, 'FC'], - 'RON': [u, 'L'], - 'RWF': [u, 'F.Rw'], - 'SYP': [], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XXX': [], - 'ZMW': [u, 'K'] - }, - 'ltr', - plural_de -]; - -function plural_de_AT(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export const locale_de_AT = [ - 'de-AT', - [['AM', 'PM'], u, u], - [['vm.', 'nm.'], ['AM', 'PM'], u], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jän.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Dez.'], - [ - 'Jänner', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jän', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Jänner', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'um\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':', u, '.'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - { - 'ATS': ['öS'], - 'AUD': ['AU$', '$'], - 'BGM': ['BGK'], - 'BGO': ['BGJ'], - 'CUC': [u, 'Cub$'], - 'DEM': ['DM'], - 'FKP': [u, 'Fl£'], - 'GNF': [u, 'F.G.'], - 'KMF': [u, 'FC'], - 'RON': [u, 'L'], - 'RWF': [u, 'F.Rw'], - 'SYP': [], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XXX': [], - 'ZMW': [u, 'K'] - }, - 'ltr', - plural_de_AT -]; - -function plural_de_CH(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export const locale_de_CH = [ - 'de-CH', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'] - ], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sept.', 'Okt.', 'Nov.', 'Dez.' - ], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'um\' {0}', u], - ['.', '’', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤-#,##0.00', '#E0'], - 'CHF', - 'CHF', - 'Schweizer Franken', - { - 'ATS': ['öS'], - 'AUD': ['AU$', '$'], - 'BGM': ['BGK'], - 'BGO': ['BGJ'], - 'CUC': [u, 'Cub$'], - 'DEM': ['DM'], - 'EUR': [], - 'FKP': [u, 'Fl£'], - 'GNF': [u, 'F.G.'], - 'KMF': [u, 'FC'], - 'RON': [u, 'L'], - 'RWF': [u, 'F.Rw'], - 'SYP': [], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XXX': [], - 'ZMW': [u, 'K'] - }, - 'ltr', - plural_de_CH -]; - -function plural_el(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_el = [ - 'el', - [['πμ', 'μμ'], ['π.μ.', 'μ.μ.'], u], - u, - [ - ['Κ', 'Δ', 'Τ', 'Τ', 'Π', 'Π', 'Σ'], ['Κυρ', 'Δευ', 'Τρί', 'Τετ', 'Πέμ', 'Παρ', 'Σάβ'], - ['Κυριακή', 'Δευτέρα', 'Τρίτη', 'Τετάρτη', 'Πέμπτη', 'Παρασκευή', 'Σάββατο'], - ['Κυ', 'Δε', 'Τρ', 'Τε', 'Πέ', 'Πα', 'Σά'] - ], - u, - [ - ['Ι', 'Φ', 'Μ', 'Α', 'Μ', 'Ι', 'Ι', 'Α', 'Σ', 'Ο', 'Ν', 'Δ'], - ['Ιαν', 'Φεβ', 'Μαρ', 'Απρ', 'Μαΐ', 'Ιουν', 'Ιουλ', 'Αυγ', 'Σεπ', 'Οκτ', 'Νοε', 'Δεκ'], - [ - 'Ιανουαρίου', 'Φεβρουαρίου', 'Μαρτίου', 'Απριλίου', 'Μαΐου', 'Ιουνίου', 'Ιουλίου', - 'Αυγούστου', 'Σεπτεμβρίου', 'Οκτωβρίου', 'Νοεμβρίου', 'Δεκεμβρίου' - ] - ], - [ - ['Ι', 'Φ', 'Μ', 'Α', 'Μ', 'Ι', 'Ι', 'Α', 'Σ', 'Ο', 'Ν', 'Δ'], - ['Ιαν', 'Φεβ', 'Μάρ', 'Απρ', 'Μάι', 'Ιούν', 'Ιούλ', 'Αύγ', 'Σεπ', 'Οκτ', 'Νοέ', 'Δεκ'], - [ - 'Ιανουάριος', 'Φεβρουάριος', 'Μάρτιος', 'Απρίλιος', 'Μάιος', 'Ιούνιος', 'Ιούλιος', - 'Αύγουστος', 'Σεπτέμβριος', 'Οκτώβριος', 'Νοέμβριος', 'Δεκέμβριος' - ] - ], - [['π.Χ.', 'μ.Χ.'], u, ['προ Χριστού', 'μετά Χριστόν']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} - {0}', u], - [',', '.', ';', '%', '+', '-', 'e', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Ευρώ', - {'GRD': ['Δρχ'], 'JPY': ['JP¥', '¥'], 'THB': ['฿']}, - 'ltr', - plural_el -]; - -function plural_en_AU(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export const locale_en_AU = [ - 'en-AU', - [['am', 'pm'], u, u], - u, - [ - ['Su.', 'M.', 'Tu.', 'W.', 'Th.', 'F.', 'Sa.'], - ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mon', 'Tu', 'Wed', 'Th', 'Fri', 'Sat'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'e', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'AUD', - '$', - 'Australian Dollar', - { - 'AUD': ['$'], - 'BDT': [u, 'Tk'], - 'BOB': [u, '$b'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'CUP': [u, '₱'], - 'EGP': [u, '£'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'ISK': [u, 'Kr'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'PYG': [u, 'Gs'], - 'SCR': ['Rs'], - 'SEK': [u, 'Kr'], - 'TWD': [u, '$'], - 'USD': [u, '$'], - 'UYU': [u, '$U'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [], - 'XPF': ['CFP'] - }, - 'ltr', - plural_en_AU -]; - -function plural_en_CA(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export const locale_en_CA = [ - 'en-CA', - [['am', 'pm'], ['a.m.', 'p.m.'], u], - [['a.m.', 'pm'], ['a.m.', 'p.m.'], u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['y-MM-dd', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'e', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'CAD', - '$', - 'Canadian Dollar', - {'CAD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural_en_CA -]; - -function plural_en_GB(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export const locale_en_GB = [ - 'en-GB', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GBP', - '£', - 'British Pound', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural_en_GB -]; - -function plural_en_IE(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export const locale_en_IE = [ - 'en-IE', - [['a', 'p'], ['am', 'pm'], ['a.m.', 'p.m.']], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural_en_IE -]; - -function plural_en_IN(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export const locale_en_IN = [ - 'en-IN', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [0, 0], - ['dd/MM/yy', 'dd-MMM-y', 'd MMMM y', 'EEEE, d MMMM, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤#,##,##0.00', '#E0'], - 'INR', - '₹', - 'Indian Rupee', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural_en_IN -]; - -function plural_en_SG(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export const locale_en_SG = [ - 'en-SG', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SGD', - '$', - 'Singapore Dollar', - {'JPY': ['JP¥', '¥'], 'SGD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural_en_SG -]; - -function plural_en_ZA(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export const locale_en_ZA = [ - 'en-ZA', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['y/MM/dd', 'dd MMM y', 'dd MMMM y', 'EEEE, dd MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZAR', - 'R', - 'South African Rand', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'ZAR': ['R']}, - 'ltr', - plural_en_ZA -]; - -function plural_es(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_es = [ - 'es', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'X', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sept.', 'oct.', 'nov.', - 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss (zzzz)'], - ['{1} {0}', u, '{1}, {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CNY': [u, '¥'], - 'EGP': [], - 'ESP': ['₧'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural_es -]; - -function plural_es_419(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_es_419 = [ - 'es-419', - [['a. m.', 'p. m.'], ['a.m.', 'p.m.'], u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'EUR', - 'EUR', - 'euro', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural_es_419 -]; - -function plural_es_MX(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_es_MX = [ - 'es-MX', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['dd/MM/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'MXN', - '$', - 'peso mexicano', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'BYN': [u, 'p.'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MRO': ['MRU'], - 'MRU': ['UM'], - 'MXN': ['$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural_es_MX -]; - -function plural_es_US(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_es_US = [ - 'es-US', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/M/y', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'dólar estadounidense', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'BYN': [u, 'p.'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural_es_US -]; - -function plural_et(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export const locale_et = [ - 'et', - [['AM', 'PM'], u, u], - u, - [ - ['P', 'E', 'T', 'K', 'N', 'R', 'L'], u, - ['pühapäev', 'esmaspäev', 'teisipäev', 'kolmapäev', 'neljapäev', 'reede', 'laupäev'], - ['P', 'E', 'T', 'K', 'N', 'R', 'L'] - ], - u, - [ - ['J', 'V', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jaan', 'veebr', 'märts', 'apr', 'mai', 'juuni', 'juuli', 'aug', 'sept', 'okt', 'nov', 'dets'], - [ - 'jaanuar', 'veebruar', 'märts', 'aprill', 'mai', 'juuni', 'juuli', 'august', 'september', - 'oktoober', 'november', 'detsember' - ] - ], - u, - [['eKr', 'pKr'], u, ['enne Kristust', 'pärast Kristust']], - 1, - [6, 0], - ['dd.MM.yy', 'd. MMM y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '−', '×10^', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - {'AUD': ['AU$', '$'], 'EEK': ['kr'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural_et -]; - -function plural_eu(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_eu = [ - 'eu', - [['g', 'a'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['I', 'A', 'A', 'A', 'O', 'O', 'L'], ['ig.', 'al.', 'ar.', 'az.', 'og.', 'or.', 'lr.'], - ['igandea', 'astelehena', 'asteartea', 'asteazkena', 'osteguna', 'ostirala', 'larunbata'], - ['ig.', 'al.', 'ar.', 'az.', 'og.', 'or.', 'lr.'] - ], - u, - [ - ['U', 'O', 'M', 'A', 'M', 'E', 'U', 'A', 'I', 'U', 'A', 'A'], - [ - 'urt.', 'ots.', 'mar.', 'api.', 'mai.', 'eka.', 'uzt.', 'abu.', 'ira.', 'urr.', 'aza.', 'abe.' - ], - [ - 'urtarrilak', 'otsailak', 'martxoak', 'apirilak', 'maiatzak', 'ekainak', 'uztailak', - 'abuztuak', 'irailak', 'urriak', 'azaroak', 'abenduak' - ] - ], - [ - ['U', 'O', 'M', 'A', 'M', 'E', 'U', 'A', 'I', 'U', 'A', 'A'], - [ - 'urt.', 'ots.', 'mar.', 'api.', 'mai.', 'eka.', 'uzt.', 'abu.', 'ira.', 'urr.', 'aza.', 'abe.' - ], - [ - 'urtarrila', 'otsaila', 'martxoa', 'apirila', 'maiatza', 'ekaina', 'uztaila', 'abuztua', - 'iraila', 'urria', 'azaroa', 'abendua' - ] - ], - [['K.a.', 'K.o.'], u, ['K.a.', 'Kristo ondoren']], - 1, - [6, 0], - [ - 'yy/M/d', 'y(\'e\')\'ko\' MMM d(\'a\')', 'y(\'e\')\'ko\' MMMM\'ren\' d(\'a\')', - 'y(\'e\')\'ko\' MMMM\'ren\' d(\'a\'), EEEE' - ], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss (z)', 'HH:mm:ss (zzzz)'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '% #,##0', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euroa', - {'ESP': ['₧'], 'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$']}, - 'ltr', - plural_eu -]; - -function plural_fa(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} - -export const locale_fa = [ - 'fa', - [['ق', 'ب'], ['ق.ظ.', 'ب.ظ.'], ['قبل\u200cازظهر', 'بعدازظهر']], - u, - [ - ['ی', 'د', 'س', 'چ', 'پ', 'ج', 'ش'], - ['یکشنبه', 'دوشنبه', 'سه\u200cشنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'], u, - ['۱ش', '۲ش', '۳ش', '۴ش', '۵ش', 'ج', 'ش'] - ], - u, - [ - ['ژ', 'ف', 'م', 'آ', 'م', 'ژ', 'ژ', 'ا', 'س', 'ا', 'ن', 'د'], - [ - 'ژانویهٔ', 'فوریهٔ', 'مارس', 'آوریل', 'مهٔ', 'ژوئن', 'ژوئیهٔ', 'اوت', 'سپتامبر', 'اکتبر', - 'نوامبر', 'دسامبر' - ], - u - ], - [ - ['ژ', 'ف', 'م', 'آ', 'م', 'ژ', 'ژ', 'ا', 'س', 'ا', 'ن', 'د'], - [ - 'ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن', 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', - 'نوامبر', 'دسامبر' - ], - u - ], - [['ق', 'م'], ['ق.م.', 'م.'], ['قبل از میلاد', 'میلادی']], - 6, - [5, 5], - ['y/M/d', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss (z)', 'H:mm:ss (zzzz)'], - ['{1}،\u200f {0}', u, '{1}، ساعت {0}', u], - ['.', ',', ';', '%', '\u200e+', '\u200e−', 'E', '×', '‰', '∞', 'ناعدد', ':'], - ['#,##0.###', '#,##0%', '\u200e¤ #,##0.00', '#E0'], - 'IRR', - 'ریال', - 'ریال ایران', - { - 'AFN': ['؋'], - 'CAD': ['$CA', '$'], - 'CNY': ['¥CN', '¥'], - 'HKD': ['$HK', '$'], - 'IRR': ['ریال'], - 'MXN': ['$MX', '$'], - 'NZD': ['$NZ', '$'], - 'THB': ['฿'], - 'XCD': ['$EC', '$'] - }, - 'rtl', - plural_fa -]; - -function plural_fi(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export const locale_fi = [ - 'fi', - [['ap.', 'ip.'], u, u], - u, - [ - ['S', 'M', 'T', 'K', 'T', 'P', 'L'], ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'], - [ - 'sunnuntaina', 'maanantaina', 'tiistaina', 'keskiviikkona', 'torstaina', 'perjantaina', - 'lauantaina' - ], - ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'] - ], - [ - ['S', 'M', 'T', 'K', 'T', 'P', 'L'], ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'], - ['sunnuntai', 'maanantai', 'tiistai', 'keskiviikko', 'torstai', 'perjantai', 'lauantai'], - ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'] - ], - [ - ['T', 'H', 'M', 'H', 'T', 'K', 'H', 'E', 'S', 'L', 'M', 'J'], - [ - 'tammik.', 'helmik.', 'maalisk.', 'huhtik.', 'toukok.', 'kesäk.', 'heinäk.', 'elok.', - 'syysk.', 'lokak.', 'marrask.', 'jouluk.' - ], - [ - 'tammikuuta', 'helmikuuta', 'maaliskuuta', 'huhtikuuta', 'toukokuuta', 'kesäkuuta', - 'heinäkuuta', 'elokuuta', 'syyskuuta', 'lokakuuta', 'marraskuuta', 'joulukuuta' - ] - ], - [ - ['T', 'H', 'M', 'H', 'T', 'K', 'H', 'E', 'S', 'L', 'M', 'J'], - [ - 'tammi', 'helmi', 'maalis', 'huhti', 'touko', 'kesä', 'heinä', 'elo', 'syys', 'loka', - 'marras', 'joulu' - ], - [ - 'tammikuu', 'helmikuu', 'maaliskuu', 'huhtikuu', 'toukokuu', 'kesäkuu', 'heinäkuu', 'elokuu', - 'syyskuu', 'lokakuu', 'marraskuu', 'joulukuu' - ] - ], - [['eKr', 'jKr'], ['eKr.', 'jKr.'], ['ennen Kristuksen syntymää', 'jälkeen Kristuksen syntymän']], - 1, - [6, 0], - ['d.M.y', u, 'd. MMMM y', 'cccc d. MMMM y'], - ['H.mm', 'H.mm.ss', 'H.mm.ss z', 'H.mm.ss zzzz'], - ['{1} {0}', '{1} \'klo\' {0}', u, u], - [',', ' ', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'epäluku', '.'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AOA': [], - 'ARS': [], - 'AUD': [], - 'BAM': [], - 'BBD': [], - 'BDT': [], - 'BMD': [], - 'BND': [], - 'BOB': [], - 'BRL': [], - 'BSD': [], - 'BWP': [], - 'BYN': [], - 'BZD': [], - 'CAD': [], - 'CLP': [], - 'CNY': [], - 'COP': [], - 'CRC': [], - 'CUC': [], - 'CUP': [], - 'CZK': [], - 'DKK': [], - 'DOP': [], - 'EGP': [], - 'ESP': [], - 'FIM': ['mk'], - 'FJD': [], - 'FKP': [], - 'GEL': [], - 'GIP': [], - 'GNF': [], - 'GTQ': [], - 'GYD': [], - 'HKD': [], - 'HNL': [], - 'HRK': [], - 'HUF': [], - 'IDR': [], - 'ILS': [], - 'INR': [], - 'ISK': [], - 'JMD': [], - 'KHR': [], - 'KMF': [], - 'KPW': [], - 'KRW': [], - 'KYD': [], - 'KZT': [], - 'LAK': [], - 'LBP': [], - 'LKR': [], - 'LRD': [], - 'LTL': [], - 'LVL': [], - 'MGA': [], - 'MMK': [], - 'MNT': [], - 'MUR': [], - 'MXN': [], - 'MYR': [], - 'NAD': [], - 'NGN': [], - 'NIO': [], - 'NOK': [], - 'NPR': [], - 'NZD': [], - 'PHP': [], - 'PKR': [], - 'PLN': [], - 'PYG': [], - 'RON': [], - 'RUR': [], - 'RWF': [], - 'SBD': [], - 'SEK': [], - 'SGD': [], - 'SHP': [], - 'SRD': [], - 'SSP': [], - 'STN': [u, 'STD'], - 'SYP': [], - 'THB': [], - 'TOP': [], - 'TRY': [], - 'TTD': [], - 'TWD': [], - 'UAH': [], - 'UYU': [], - 'VEF': [], - 'VND': [], - 'XCD': [], - 'XPF': [], - 'XXX': [], - 'ZAR': [], - 'ZMW': [] - }, - 'ltr', - plural_fi -]; - -function plural_fr(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export const locale_fr = [ - 'fr', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural_fr -]; - -function plural_fr_CA(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export const locale_fr_CA = [ - 'fr-CA', - [['a', 'p'], ['a.m.', 'p.m.'], u], - [['a.m.', 'p.m.'], u, u], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juill.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 0, - [6, 0], - ['y-MM-dd', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - [ - 'HH \'h\' mm', 'HH \'h\' mm \'min\' ss \'s\'', 'HH \'h\' mm \'min\' ss \'s\' z', - 'HH \'h\' mm \'min\' ss \'s\' zzzz' - ], - ['{1} {0}', u, '{1} \'à\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'CAD', - '$', - 'dollar canadien', - { - 'AUD': ['$ AU', '$'], - 'BEF': ['FB'], - 'BYN': [u, 'Br'], - 'CAD': ['$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FRF': ['F'], - 'GEL': [], - 'HKD': ['$ HK', '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'ITL': ['₤IT'], - 'KRW': [u, '₩'], - 'LBP': [u, '£L'], - 'MTP': ['£MT'], - 'MXN': [u, '$'], - 'NZD': ['$ NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SGD': ['$ SG', '$'], - 'TOP': [u, '$T'], - 'TWD': [u, 'NT$'], - 'USD': ['$ US', '$'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [], - 'XPF': [] - }, - 'ltr', - plural_fr_CA -]; - -function plural_ga(n: number): number { - if (n === 1) return 1; - if (n === 2) return 2; - if (n === Math.floor(n) && n >= 3 && n <= 6) return 3; - if (n === Math.floor(n) && n >= 7 && n <= 10) return 4; - return 5; -} - -export const locale_ga = [ - 'ga', - [['r.n.', 'i.n.'], u, u], - u, - [ - ['D', 'L', 'M', 'C', 'D', 'A', 'S'], ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'], - [ - 'Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Sathairn' - ], - ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'Ao', 'Sa'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'B', 'M', 'I', 'L', 'M', 'D', 'S', 'N'], - [ - 'Ean', 'Feabh', 'Márta', 'Aib', 'Beal', 'Meith', 'Iúil', 'Lún', 'MFómh', 'DFómh', 'Samh', - 'Noll' - ], - [ - 'Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Meitheamh', 'Iúil', 'Lúnasa', - 'Meán Fómhair', 'Deireadh Fómhair', 'Samhain', 'Nollaig' - ] - ], - u, - [['RC', 'AD'], u, ['Roimh Chríost', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - {'THB': ['฿'], 'TWD': ['NT$'], 'XXX': []}, - 'ltr', - plural_ga -]; - -function plural_gl(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export const locale_gl = [ - 'gl', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['d.', 'l.', 'm.', 'm.', 'x.', 'v.', 's.'], - ['dom.', 'luns', 'mar.', 'mér.', 'xov.', 'ven.', 'sáb.'], - ['domingo', 'luns', 'martes', 'mércores', 'xoves', 'venres', 'sábado'], - ['do.', 'lu.', 'ma.', 'mé.', 'xo.', 've.', 'sá.'] - ], - [ - ['D', 'L', 'M', 'M', 'X', 'V', 'S'], ['Dom.', 'Luns', 'Mar.', 'Mér.', 'Xov.', 'Ven.', 'Sáb.'], - ['Domingo', 'Luns', 'Martes', 'Mércores', 'Xoves', 'Venres', 'Sábado'], - ['Do', 'Lu', 'Ma', 'Mé', 'Xo', 'Ve', 'Sá'] - ], - [ - ['x.', 'f.', 'm.', 'a.', 'm.', 'x.', 'x.', 'a.', 's.', 'o.', 'n.', 'd.'], - [ - 'xan.', 'feb.', 'mar.', 'abr.', 'maio', 'xuño', 'xul.', 'ago.', 'set.', 'out.', 'nov.', 'dec.' - ], - [ - 'xaneiro', 'febreiro', 'marzo', 'abril', 'maio', 'xuño', 'xullo', 'agosto', 'setembro', - 'outubro', 'novembro', 'decembro' - ] - ], - [ - ['X', 'F', 'M', 'A', 'M', 'X', 'X', 'A', 'S', 'O', 'N', 'D'], - [ - 'Xan.', 'Feb.', 'Mar.', 'Abr.', 'Maio', 'Xuño', 'Xul.', 'Ago.', 'Set.', 'Out.', 'Nov.', 'Dec.' - ], - [ - 'Xaneiro', 'Febreiro', 'Marzo', 'Abril', 'Maio', 'Xuño', 'Xullo', 'Agosto', 'Setembro', - 'Outubro', 'Novembro', 'Decembro' - ] - ], - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'despois de Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'd \'de\' MMM \'de\' y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{0}, {1}', u, '{0} \'do\' {1}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'BYN': [u, 'Br'], - 'ESP': ['₧'], - 'JPY': ['JP¥', '¥'], - 'KMF': [u, 'FC'], - 'MXN': ['$MX', '$'], - 'RUB': [u, 'руб'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XCD': [u, '$'] - }, - 'ltr', - plural_gl -]; - -function plural_gsw(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_gsw = [ - 'gsw', - [['vorm.', 'nam.'], u, ['am Vormittag', 'am Namittag']], - [['vorm.', 'nam.'], u, ['Vormittag', 'Namittag']], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['Su.', 'Mä.', 'Zi.', 'Mi.', 'Du.', 'Fr.', 'Sa.'], - ['Sunntig', 'Määntig', 'Ziischtig', 'Mittwuch', 'Dunschtig', 'Friitig', 'Samschtig'], - ['Su.', 'Mä.', 'Zi.', 'Mi.', 'Du.', 'Fr.', 'Sa.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'Auguscht', 'Septämber', - 'Oktoober', 'Novämber', 'Dezämber' - ] - ], - u, - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', '’', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'CHF', - 'CHF', - 'Schwiizer Franke', - {'ATS': ['öS']}, - 'ltr', - plural_gsw -]; - -function plural_gu(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} - -export const locale_gu = [ - 'gu', - [['AM', 'PM'], u, u], - u, - [ - ['ર', 'સો', 'મં', 'બુ', 'ગુ', 'શુ', 'શ'], ['રવિ', 'સોમ', 'મંગળ', 'બુધ', 'ગુરુ', 'શુક્ર', 'શનિ'], - ['રવિવાર', 'સોમવાર', 'મંગળવાર', 'બુધવાર', 'ગુરુવાર', 'શુક્રવાર', 'શનિવાર'], - ['ર', 'સો', 'મં', 'બુ', 'ગુ', 'શુ', 'શ'] - ], - u, - [ - ['જા', 'ફે', 'મા', 'એ', 'મે', 'જૂ', 'જુ', 'ઑ', 'સ', 'ઑ', 'ન', 'ડિ'], - ['જાન્યુ', 'ફેબ્રુ', 'માર્ચ', 'એપ્રિલ', 'મે', 'જૂન', 'જુલાઈ', 'ઑગસ્ટ', 'સપ્ટે', 'ઑક્ટો', 'નવે', 'ડિસે'], - [ - 'જાન્યુઆરી', 'ફેબ્રુઆરી', 'માર્ચ', 'એપ્રિલ', 'મે', 'જૂન', 'જુલાઈ', 'ઑગસ્ટ', 'સપ્ટેમ્બર', 'ઑક્ટોબર', 'નવેમ્બર', - 'ડિસેમ્બર' - ] - ], - u, - [['ઇ સ પુ', 'ઇસ'], ['ઈ.સ.પૂર્વે', 'ઈ.સ.'], ['ઈસવીસન પૂર્વે', 'ઇસવીસન']], - 0, - [0, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['hh:mm a', 'hh:mm:ss a', 'hh:mm:ss a z', 'hh:mm:ss a zzzz'], - ['{1} {0}', u, '{1} એ {0} વાગ્યે', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤#,##,##0.00', '[#E0]'], - 'INR', - '₹', - 'ભારતીય રૂપિયા', - {'JPY': ['JP¥', '¥'], 'MUR': [u, 'રૂ.'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$']}, - 'ltr', - plural_gu -]; - -function plural_haw(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_haw = [ - 'haw', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['LP', 'P1', 'P2', 'P3', 'P4', 'P5', 'P6'], - ['Lāpule', 'Poʻakahi', 'Poʻalua', 'Poʻakolu', 'Poʻahā', 'Poʻalima', 'Poʻaono'], - ['LP', 'P1', 'P2', 'P3', 'P4', 'P5', 'P6'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['Ian.', 'Pep.', 'Mal.', 'ʻAp.', 'Mei', 'Iun.', 'Iul.', 'ʻAu.', 'Kep.', 'ʻOk.', 'Now.', 'Kek.'], - [ - 'Ianuali', 'Pepeluali', 'Malaki', 'ʻApelila', 'Mei', 'Iune', 'Iulai', 'ʻAukake', 'Kepakemapa', - 'ʻOkakopa', 'Nowemapa', 'Kekemapa' - ] - ], - u, - [['BCE', 'CE'], u, u], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'USD', - {'JPY': ['JP¥', '¥']}, - 'ltr', - plural_haw -]; - -function plural_hi(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} - -export const locale_hi = [ - 'hi', - [['am', 'pm'], u, u], - u, - [ - ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'], ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'], - ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरुवार', 'शुक्रवार', 'शनिवार'], - ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'] - ], - u, - [ - ['ज', 'फ़', 'मा', 'अ', 'म', 'जू', 'जु', 'अ', 'सि', 'अ', 'न', 'दि'], - ['जन॰', 'फ़र॰', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुल॰', 'अग॰', 'सित॰', 'अक्तू॰', 'नव॰', 'दिस॰'], - [ - 'जनवरी', 'फ़रवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितंबर', 'अक्तूबर', 'नवंबर', - 'दिसंबर' - ] - ], - u, - [['ईसा-पूर्व', 'ईस्वी'], u, ['ईसा-पूर्व', 'ईसवी सन']], - 0, - [0, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} को {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤#,##,##0.00', '[#E0]'], - 'INR', - '₹', - 'भारतीय रुपया', - {'JPY': ['JP¥', '¥'], 'RON': [u, 'लेई'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural_hi -]; - -function plural_hr(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14) || - f % 10 === Math.floor(f % 10) && f % 10 >= 2 && f % 10 <= 4 && - !(f % 100 >= 12 && f % 100 <= 14)) - return 3; - return 5; -} - -export const locale_hr = [ - 'hr', - [['AM', 'PM'], u, u], - u, - [ - ['N', 'P', 'U', 'S', 'Č', 'P', 'S'], ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'], - ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'] - ], - [ - ['n', 'p', 'u', 's', 'č', 'p', 's'], ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'], - ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'] - ], - [ - ['1.', '2.', '3.', '4.', '5.', '6.', '7.', '8.', '9.', '10.', '11.', '12.'], - ['sij', 'velj', 'ožu', 'tra', 'svi', 'lip', 'srp', 'kol', 'ruj', 'lis', 'stu', 'pro'], - [ - 'siječnja', 'veljače', 'ožujka', 'travnja', 'svibnja', 'lipnja', 'srpnja', 'kolovoza', - 'rujna', 'listopada', 'studenoga', 'prosinca' - ] - ], - [ - ['1.', '2.', '3.', '4.', '5.', '6.', '7.', '8.', '9.', '10.', '11.', '12.'], - ['sij', 'velj', 'ožu', 'tra', 'svi', 'lip', 'srp', 'kol', 'ruj', 'lis', 'stu', 'pro'], - [ - 'siječanj', 'veljača', 'ožujak', 'travanj', 'svibanj', 'lipanj', 'srpanj', 'kolovoz', 'rujan', - 'listopad', 'studeni', 'prosinac' - ] - ], - [['pr.n.e.', 'AD'], ['pr. Kr.', 'po. Kr.'], ['prije Krista', 'poslije Krista']], - 1, - [6, 0], - ['dd. MM. y.', 'd. MMM y.', 'd. MMMM y.', 'EEEE, d. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss (zzzz)'], - ['{1} {0}', u, '{1} \'u\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'HRK', - 'HRK', - 'hrvatska kuna', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XCD': [u, '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural_hr -]; - -function plural_hu(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_hu = [ - 'hu', - [['de.', 'du.'], u, u], - u, - [ - ['V', 'H', 'K', 'Sz', 'Cs', 'P', 'Sz'], ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'], - ['vasárnap', 'hétfő', 'kedd', 'szerda', 'csütörtök', 'péntek', 'szombat'], - ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'] - ], - u, - [ - ['J', 'F', 'M', 'Á', 'M', 'J', 'J', 'A', 'Sz', 'O', 'N', 'D'], - [ - 'jan.', 'febr.', 'márc.', 'ápr.', 'máj.', 'jún.', 'júl.', 'aug.', 'szept.', 'okt.', 'nov.', - 'dec.' - ], - [ - 'január', 'február', 'március', 'április', 'május', 'június', 'július', 'augusztus', - 'szeptember', 'október', 'november', 'december' - ] - ], - u, - [['ie.', 'isz.'], ['i. e.', 'i. sz.'], ['Krisztus előtt', 'időszámításunk szerint']], - 1, - [6, 0], - ['y. MM. dd.', 'y. MMM d.', 'y. MMMM d.', 'y. MMMM d., EEEE'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'HUF', - 'Ft', - 'magyar forint', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'HUF': ['Ft'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XCD': [u, '$'] - }, - 'ltr', - plural_hu -]; - -function plural_hy(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export const locale_hy = [ - 'hy', - [['ա', 'հ'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['Կ', 'Ե', 'Ե', 'Չ', 'Հ', 'Ո', 'Շ'], ['կիր', 'երկ', 'երք', 'չրք', 'հնգ', 'ուր', 'շբթ'], - ['կիրակի', 'երկուշաբթի', 'երեքշաբթի', 'չորեքշաբթի', 'հինգշաբթի', 'ուրբաթ', 'շաբաթ'], - ['կր', 'եկ', 'եք', 'չք', 'հգ', 'ու', 'շբ'] - ], - u, - [ - ['Հ', 'Փ', 'Մ', 'Ա', 'Մ', 'Հ', 'Հ', 'Օ', 'Ս', 'Հ', 'Ն', 'Դ'], - ['հնվ', 'փտվ', 'մրտ', 'ապր', 'մյս', 'հնս', 'հլս', 'օգս', 'սեպ', 'հոկ', 'նոյ', 'դեկ'], - [ - 'հունվարի', 'փետրվարի', 'մարտի', 'ապրիլի', 'մայիսի', 'հունիսի', 'հուլիսի', 'օգոստոսի', - 'սեպտեմբերի', 'հոկտեմբերի', 'նոյեմբերի', 'դեկտեմբերի' - ] - ], - [ - ['Հ', 'Փ', 'Մ', 'Ա', 'Մ', 'Հ', 'Հ', 'Օ', 'Ս', 'Հ', 'Ն', 'Դ'], - ['հնվ', 'փտվ', 'մրտ', 'ապր', 'մյս', 'հնս', 'հլս', 'օգս', 'սեպ', 'հոկ', 'նոյ', 'դեկ'], - [ - 'հունվար', 'փետրվար', 'մարտ', 'ապրիլ', 'մայիս', 'հունիս', 'հուլիս', 'օգոստոս', 'սեպտեմբեր', - 'հոկտեմբեր', 'նոյեմբեր', 'դեկտեմբեր' - ] - ], - [['մ.թ.ա.', 'մ.թ.'], u, ['Քրիստոսից առաջ', 'Քրիստոսից հետո']], - 1, - [6, 0], - ['dd.MM.yy', 'dd MMM, y թ.', 'dd MMMM, y թ.', 'y թ. MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'ՈչԹ', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'AMD', - '֏', - 'հայկական դրամ', - {'AMD': ['֏'], 'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural_hy -]; - -function plural_in(n: number): number { - return 5; -} - -export const locale_in = [ - 'id', - [['AM', 'PM'], u, u], - u, - [ - ['M', 'S', 'S', 'R', 'K', 'J', 'S'], ['Min', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab'], - ['Minggu', 'Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu'], - ['Min', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Agu', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', - 'Oktober', 'November', 'Desember' - ] - ], - u, - [['SM', 'M'], u, ['Sebelum Masehi', 'Masehi']], - 0, - [6, 0], - ['dd/MM/yy', 'd MMM y', 'd MMMM y', 'EEEE, dd MMMM y'], - ['HH.mm', 'HH.mm.ss', 'HH.mm.ss z', 'HH.mm.ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', '.'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'IDR', - 'Rp', - 'Rupiah Indonesia', - { - 'AUD': ['AU$', '$'], - 'IDR': ['Rp'], - 'INR': ['Rs', '₹'], - 'JPY': ['JP¥', '¥'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural_in -]; - -function plural_is(n: number): number { - let i = Math.floor(Math.abs(n)), - t = parseInt(n.toString().replace(/^[^.]*\.?|0+$/g, ''), 10) || 0; - if (t === 0 && i % 10 === 1 && !(i % 100 === 11) || !(t === 0)) return 1; - return 5; -} - -export const locale_is = [ - 'is', - [['f.', 'e.'], ['f.h.', 'e.h.'], u], - [['f.h.', 'e.h.'], u, u], - [ - ['S', 'M', 'Þ', 'M', 'F', 'F', 'L'], ['sun.', 'mán.', 'þri.', 'mið.', 'fim.', 'fös.', 'lau.'], - [ - 'sunnudagur', 'mánudagur', 'þriðjudagur', 'miðvikudagur', 'fimmtudagur', 'föstudagur', - 'laugardagur' - ], - ['su.', 'má.', 'þr.', 'mi.', 'fi.', 'fö.', 'la.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'Á', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mar.', 'apr.', 'maí', 'jún.', 'júl.', 'ágú.', 'sep.', 'okt.', 'nóv.', 'des.'], - [ - 'janúar', 'febrúar', 'mars', 'apríl', 'maí', 'júní', 'júlí', 'ágúst', 'september', 'október', - 'nóvember', 'desember' - ] - ], - u, - [['f.k.', 'e.k.'], ['f.Kr.', 'e.Kr.'], ['fyrir Krist', 'eftir Krist']], - 1, - [6, 0], - ['d.M.y', 'd. MMM y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'kl\'. {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'ISK', - 'ISK', - 'íslensk króna', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'INR': [u, '₹'], - 'JPY': ['JP¥', '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural_is -]; - -function plural_it(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export const locale_it = [ - 'it', - [['m.', 'p.'], ['AM', 'PM'], u], - u, - [ - ['D', 'L', 'M', 'M', 'G', 'V', 'S'], ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'], - ['domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato'], - ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'] - ], - u, - [ - ['G', 'F', 'M', 'A', 'M', 'G', 'L', 'A', 'S', 'O', 'N', 'D'], - ['gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago', 'set', 'ott', 'nov', 'dic'], - [ - 'gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', - 'ottobre', 'novembre', 'dicembre' - ] - ], - u, - [['aC', 'dC'], ['a.C.', 'd.C.'], ['avanti Cristo', 'dopo Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'BRL': [u, 'R$'], - 'BYN': [u, 'Br'], - 'EGP': [u, '£E'], - 'HKD': [u, '$'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NOK': [u, 'NKr'], - 'THB': ['฿'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'] - }, - 'ltr', - plural_it -]; - -function plural_iw(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - if (i === 2 && v === 0) return 2; - if (v === 0 && !(n >= 0 && n <= 10) && n % 10 === 0) return 4; - return 5; -} - -export const locale_iw = [ - 'he', - [['לפנה״צ', 'אחה״צ'], u, u], - [['לפנה״צ', 'אחה״צ'], ['AM', 'PM'], u], - [ - ['א׳', 'ב׳', 'ג׳', 'ד׳', 'ה׳', 'ו׳', 'ש׳'], - ['יום א׳', 'יום ב׳', 'יום ג׳', 'יום ד׳', 'יום ה׳', 'יום ו׳', 'שבת'], - ['יום ראשון', 'יום שני', 'יום שלישי', 'יום רביעי', 'יום חמישי', 'יום שישי', 'יום שבת'], - ['א׳', 'ב׳', 'ג׳', 'ד׳', 'ה׳', 'ו׳', 'ש׳'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['ינו׳', 'פבר׳', 'מרץ', 'אפר׳', 'מאי', 'יוני', 'יולי', 'אוג׳', 'ספט׳', 'אוק׳', 'נוב׳', 'דצמ׳'], - [ - 'ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', - 'נובמבר', 'דצמבר' - ] - ], - u, - [['לפנה״ס', 'לספירה'], u, ['לפני הספירה', 'לספירה']], - 0, - [5, 6], - ['d.M.y', 'd בMMM y', 'd בMMMM y', 'EEEE, d בMMMM y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1}, {0}', u, '{1} בשעה {0}', u], - ['.', ',', ';', '%', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '\u200f#,##0.00 ¤;\u200f-#,##0.00 ¤', '#E0'], - 'ILS', - '₪', - 'שקל חדש', - {'BYN': [u, 'р'], 'CNY': ['\u200eCN¥\u200e', '¥'], 'ILP': ['ל״י'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'rtl', - plural_iw -]; - -function plural_ja(n: number): number { - return 5; -} - -export const locale_ja = [ - 'ja', - [['午前', '午後'], u, u], - u, - [ - ['日', '月', '火', '水', '木', '金', '土'], u, - ['日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日'], - ['日', '月', '火', '水', '木', '金', '土'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], u - ], - u, - [['BC', 'AD'], ['紀元前', '西暦'], u], - 0, - [6, 0], - ['y/MM/dd', u, 'y年M月d日', 'y年M月d日EEEE'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H時mm分ss秒 zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'JPY', - '¥', - '日本円', - {'CNY': ['元', '¥'], 'JPY': ['¥'], 'RON': [u, 'レイ'], 'XXX': []}, - 'ltr', - plural_ja -]; - -function plural_ka(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_ka = [ - 'ka', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['კ', 'ო', 'ს', 'ო', 'ხ', 'პ', 'შ'], ['კვი', 'ორშ', 'სამ', 'ოთხ', 'ხუთ', 'პარ', 'შაბ'], - ['კვირა', 'ორშაბათი', 'სამშაბათი', 'ოთხშაბათი', 'ხუთშაბათი', 'პარასკევი', 'შაბათი'], - ['კვ', 'ორ', 'სმ', 'ოთ', 'ხთ', 'პრ', 'შბ'] - ], - u, - [ - ['ი', 'თ', 'მ', 'ა', 'მ', 'ი', 'ი', 'ა', 'ს', 'ო', 'ნ', 'დ'], - ['იან', 'თებ', 'მარ', 'აპრ', 'მაი', 'ივნ', 'ივლ', 'აგვ', 'სექ', 'ოქტ', 'ნოე', 'დეკ'], - [ - 'იანვარი', 'თებერვალი', 'მარტი', 'აპრილი', 'მაისი', 'ივნისი', 'ივლისი', 'აგვისტო', - 'სექტემბერი', 'ოქტომბერი', 'ნოემბერი', 'დეკემბერი' - ] - ], - u, - [['ძვ. წ.', 'ახ. წ.'], u, ['ძველი წელთაღრიცხვით', 'ახალი წელთაღრიცხვით']], - 1, - [6, 0], - ['dd.MM.yy', 'd MMM. y', 'd MMMM, y', 'EEEE, dd MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'არ არის რიცხვი', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'GEL', - '₾', - 'ქართული ლარი', - { - 'AUD': [u, '$'], - 'CNY': [u, '¥'], - 'GEL': ['₾'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural_ka -]; - -function plural_kk(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_kk = [ - 'kk', - [['AM', 'PM'], u, u], - u, - [ - ['Ж', 'Д', 'С', 'С', 'Б', 'Ж', 'С'], ['жс', 'дс', 'сс', 'ср', 'бс', 'жм', 'сб'], - ['жексенбі', 'дүйсенбі', 'сейсенбі', 'сәрсенбі', 'бейсенбі', 'жұма', 'сенбі'], - ['жс', 'дс', 'сс', 'ср', 'бс', 'жм', 'сб'] - ], - u, - [ - ['Қ', 'А', 'Н', 'С', 'М', 'М', 'Ш', 'Т', 'Қ', 'Қ', 'Қ', 'Ж'], - [ - 'қаң.', 'ақп.', 'нау.', 'сәу.', 'мам.', 'мау.', 'шіл.', 'там.', 'қыр.', 'қаз.', 'қар.', 'жел.' - ], - [ - 'қаңтар', 'ақпан', 'наурыз', 'сәуір', 'мамыр', 'маусым', 'шілде', 'тамыз', 'қыркүйек', - 'қазан', 'қараша', 'желтоқсан' - ] - ], - [ - ['Қ', 'А', 'Н', 'С', 'М', 'М', 'Ш', 'Т', 'Қ', 'Қ', 'Қ', 'Ж'], - [ - 'қаң.', 'ақп.', 'нау.', 'сәу.', 'мам.', 'мау.', 'шіл.', 'там.', 'қыр.', 'қаз.', 'қар.', 'жел.' - ], - [ - 'Қаңтар', 'Ақпан', 'Наурыз', 'Сәуір', 'Мамыр', 'Маусым', 'Шілде', 'Тамыз', 'Қыркүйек', - 'Қазан', 'Қараша', 'Желтоқсан' - ] - ], - [['б.з.д.', 'б.з.'], u, ['Біздің заманымызға дейін', 'біздің заманымыз']], - 1, - [6, 0], - ['dd.MM.yy', 'y \'ж\'. dd MMM', 'y \'ж\'. d MMMM', 'y \'ж\'. d MMMM, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'сан емес', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'KZT', - '₸', - 'Қазақстан теңгесі', - {'JPY': ['JP¥', '¥'], 'KZT': ['₸'], 'RUB': ['₽'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural_kk -]; - -function plural_km(n: number): number { - return 5; -} - -export const locale_km = [ - 'km', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['អ', 'ច', 'អ', 'ព', 'ព', 'ស', 'ស'], ['អាទិត្យ', 'ចន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហ', 'សុក្រ', 'សៅរ៍'], - ['អាទិត្យ', 'ច័ន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហស្បតិ៍', 'សុក្រ', 'សៅរ៍'], ['អា', 'ច', 'អ', 'ពុ', 'ព្រ', 'សុ', 'ស'] - ], - [ - ['អ', 'ច', 'អ', 'ព', 'ព', 'ស', 'ស'], ['អាទិត្យ', 'ចន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហ', 'សុក្រ', 'សៅរ៍'], - ['អាទិត្យ', 'ចន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហស្បតិ៍', 'សុក្រ', 'សៅរ៍'], ['អា', 'ច', 'អ', 'ពុ', 'ព្រ', 'សុ', 'ស'] - ], - [ - ['ម', 'ក', 'ម', 'ម', 'ឧ', 'ម', 'ក', 'ស', 'ក', 'ត', 'វ', 'ធ'], - ['មករា', 'កុម្ភៈ', 'មីនា', 'មេសា', 'ឧសភា', 'មិថុនា', 'កក្កដា', 'សីហា', 'កញ្ញា', 'តុលា', 'វិច្ឆិកា', 'ធ្នូ'], u - ], - u, - [['មុន គ.ស.', 'គ.ស.'], u, ['មុន​គ្រិស្តសករាជ', 'គ្រិស្តសករាជ']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} នៅ​ម៉ោង {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'KHR', - '៛', - 'រៀល​កម្ពុជា', - {'JPY': ['JP¥', '¥'], 'KHR': ['៛'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural_km -]; - -function plural_kn(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} - -export const locale_kn = [ - 'kn', - [['ಪೂ', 'ಅ'], ['ಪೂರ್ವಾಹ್ನ', 'ಅಪರಾಹ್ನ'], u], - [['ಪೂರ್ವಾಹ್ನ', 'ಅಪರಾಹ್ನ'], u, u], - [ - ['ಭಾ', 'ಸೋ', 'ಮಂ', 'ಬು', 'ಗು', 'ಶು', 'ಶ'], ['ಭಾನು', 'ಸೋಮ', 'ಮಂಗಳ', 'ಬುಧ', 'ಗುರು', 'ಶುಕ್ರ', 'ಶನಿ'], - ['ಭಾನುವಾರ', 'ಸೋಮವಾರ', 'ಮಂಗಳವಾರ', 'ಬುಧವಾರ', 'ಗುರುವಾರ', 'ಶುಕ್ರವಾರ', 'ಶನಿವಾರ'], - ['ಭಾನು', 'ಸೋಮ', 'ಮಂಗಳ', 'ಬುಧ', 'ಗುರು', 'ಶುಕ್ರ', 'ಶನಿ'] - ], - u, - [ - ['ಜ', 'ಫೆ', 'ಮಾ', 'ಏ', 'ಮೇ', 'ಜೂ', 'ಜು', 'ಆ', 'ಸೆ', 'ಅ', 'ನ', 'ಡಿ'], - ['ಜನವರಿ', 'ಫೆಬ್ರವರಿ', 'ಮಾರ್ಚ್', 'ಏಪ್ರಿ', 'ಮೇ', 'ಜೂನ್', 'ಜುಲೈ', 'ಆಗ', 'ಸೆಪ್ಟೆಂ', 'ಅಕ್ಟೋ', 'ನವೆಂ', 'ಡಿಸೆಂ'], - [ - 'ಜನವರಿ', 'ಫೆಬ್ರವರಿ', 'ಮಾರ್ಚ್', 'ಏಪ್ರಿಲ್', 'ಮೇ', 'ಜೂನ್', 'ಜುಲೈ', 'ಆಗಸ್ಟ್', 'ಸೆಪ್ಟೆಂಬರ್', 'ಅಕ್ಟೋಬರ್', 'ನವೆಂಬರ್', - 'ಡಿಸೆಂಬರ್' - ] - ], - [ - ['ಜ', 'ಫೆ', 'ಮಾ', 'ಏ', 'ಮೇ', 'ಜೂ', 'ಜು', 'ಆ', 'ಸೆ', 'ಅ', 'ನ', 'ಡಿ'], - ['ಜನ', 'ಫೆಬ್ರ', 'ಮಾರ್ಚ್', 'ಏಪ್ರಿ', 'ಮೇ', 'ಜೂನ್', 'ಜುಲೈ', 'ಆಗ', 'ಸೆಪ್ಟೆಂ', 'ಅಕ್ಟೋ', 'ನವೆಂ', 'ಡಿಸೆಂ'], - [ - 'ಜನವರಿ', 'ಫೆಬ್ರವರಿ', 'ಮಾರ್ಚ್', 'ಏಪ್ರಿಲ್', 'ಮೇ', 'ಜೂನ್', 'ಜುಲೈ', 'ಆಗಸ್ಟ್', 'ಸೆಪ್ಟೆಂಬರ್', 'ಅಕ್ಟೋಬರ್', 'ನವೆಂಬರ್', - 'ಡಿಸೆಂಬರ್' - ] - ], - [['ಕ್ರಿ.ಪೂ', 'ಕ್ರಿ.ಶ'], u, ['ಕ್ರಿಸ್ತ ಪೂರ್ವ', 'ಕ್ರಿಸ್ತ ಶಕ']], - 0, - [0, 0], - ['d/M/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['hh:mm a', 'hh:mm:ss a', 'hh:mm:ss a z', 'hh:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'INR', - '₹', - 'ಭಾರತೀಯ ರೂಪಾಯಿ', - {'JPY': ['JP¥', '¥'], 'RON': [u, 'ಲೀ'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural_kn -]; - -function plural_ko(n: number): number { - return 5; -} - -export const locale_ko = [ - 'ko', - [['AM', 'PM'], u, ['오전', '오후']], - u, - [ - ['일', '월', '화', '수', '목', '금', '토'], u, - ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'], - ['일', '월', '화', '수', '목', '금', '토'] - ], - u, - [['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'], u, u], - u, - [['BC', 'AD'], u, ['기원전', '서기']], - 0, - [6, 0], - ['yy. M. d.', 'y. M. d.', 'y년 M월 d일', 'y년 M월 d일 EEEE'], - ['a h:mm', 'a h:mm:ss', 'a h시 m분 s초 z', 'a h시 m분 s초 zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KRW', - '₩', - '대한민국 원', - {'AUD': ['AU$', '$'], 'JPY': ['JP¥', '¥'], 'RON': [u, 'L'], 'TWD': ['NT$'], 'USD': ['US$', '$']}, - 'ltr', - plural_ko -]; - -function plural_ky(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_ky = [ - 'ky', - [['тң', 'тк'], u, ['таңкы', 'түштөн кийинки']], - u, - [ - ['Ж', 'Д', 'Ш', 'Ш', 'Б', 'Ж', 'И'], - ['жек.', 'дүй.', 'шейш.', 'шарш.', 'бейш.', 'жума', 'ишм.'], - ['жекшемби', 'дүйшөмбү', 'шейшемби', 'шаршемби', 'бейшемби', 'жума', 'ишемби'], - ['жш.', 'дш.', 'шш.', 'шр.', 'бш.', 'жм.', 'иш.'] - ], - u, - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - ['янв.', 'фев.', 'мар.', 'апр.', 'май', 'июн.', 'июл.', 'авг.', 'сен.', 'окт.', 'ноя.', 'дек.'], - [ - 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', - 'ноябрь', 'декабрь' - ] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'], - [ - 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', - 'Ноябрь', 'Декабрь' - ] - ], - [['б.з.ч.', 'б.з.'], u, ['биздин заманга чейин', 'биздин заман']], - 1, - [6, 0], - ['d/M/yy', 'y-\'ж\'., d-MMM', 'y-\'ж\'., d-MMMM', 'y-\'ж\'., d-MMMM, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'сан эмес', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'KGS', - 'сом', - 'Кыргызстан сому', - { - 'AUD': [u, '$'], - 'BMD': [u, 'BD$'], - 'BRL': [u, 'R$'], - 'BSD': [u, 'B$'], - 'BZD': [u, 'BZ$'], - 'CAD': [u, 'C$'], - 'DOP': [u, 'RD$'], - 'EGP': [u, 'LE'], - 'GBP': [u, '£'], - 'HKD': [u, 'HK$'], - 'HRK': [u, 'Kn'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JMD': [u, 'J$'], - 'JPY': ['JP¥', '¥'], - 'KGS': ['сом'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'THB': ['฿'], - 'TTD': [u, 'TT$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'XCD': [u, '$'] - }, - 'ltr', - plural_ky -]; - -function plural_ln(n: number): number { - if (n === Math.floor(n) && n >= 0 && n <= 1) return 1; - return 5; -} - -export const locale_ln = [ - 'ln', - [['ntɔ́ngɔ́', 'mpókwa'], u, u], - u, - [ - ['e', 'y', 'm', 'm', 'm', 'm', 'p'], ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'], - [ - 'eyenga', 'mokɔlɔ mwa yambo', 'mokɔlɔ mwa míbalé', 'mokɔlɔ mwa mísáto', 'mokɔlɔ ya mínéi', - 'mokɔlɔ ya mítáno', 'mpɔ́sɔ' - ], - ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'] - ], - u, - [ - ['y', 'f', 'm', 'a', 'm', 'y', 'y', 'a', 's', 'ɔ', 'n', 'd'], - ['yan', 'fbl', 'msi', 'apl', 'mai', 'yun', 'yul', 'agt', 'stb', 'ɔtb', 'nvb', 'dsb'], - [ - 'sánzá ya yambo', 'sánzá ya míbalé', 'sánzá ya mísáto', 'sánzá ya mínei', 'sánzá ya mítáno', - 'sánzá ya motóbá', 'sánzá ya nsambo', 'sánzá ya mwambe', 'sánzá ya libwa', 'sánzá ya zómi', - 'sánzá ya zómi na mɔ̌kɔ́', 'sánzá ya zómi na míbalé' - ] - ], - u, - [['libóso ya', 'nsima ya Y'], u, ['Yambo ya Yézu Krís', 'Nsima ya Yézu Krís']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'CDF', - 'FC', - 'Falánga ya Kongó', - {'CDF': ['FC'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural_ln -]; - -function plural_lo(n: number): number { - return 5; -} - -export const locale_lo = [ - 'lo', - [['ກ່ອນທ່ຽງ', 'ຫຼັງທ່ຽງ'], u, u], - u, - [ - ['ອາ', 'ຈ', 'ອ', 'ພ', 'ພຫ', 'ສຸ', 'ສ'], ['ອາທິດ', 'ຈັນ', 'ອັງຄານ', 'ພຸດ', 'ພະຫັດ', 'ສຸກ', 'ເສົາ'], - ['ວັນອາທິດ', 'ວັນຈັນ', 'ວັນອັງຄານ', 'ວັນພຸດ', 'ວັນພະຫັດ', 'ວັນສຸກ', 'ວັນເສົາ'], - ['ອາ.', 'ຈ.', 'ອ.', 'ພ.', 'ພຫ.', 'ສຸ.', 'ສ.'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'ມ.ກ.', 'ກ.ພ.', 'ມ.ນ.', 'ມ.ສ.', 'ພ.ພ.', 'ມິ.ຖ.', 'ກ.ລ.', 'ສ.ຫ.', 'ກ.ຍ.', 'ຕ.ລ.', 'ພ.ຈ.', 'ທ.ວ.' - ], - [ - 'ມັງກອນ', 'ກຸມພາ', 'ມີນາ', 'ເມສາ', 'ພຶດສະພາ', 'ມິຖຸນາ', 'ກໍລະກົດ', 'ສິງຫາ', 'ກັນຍາ', 'ຕຸລາ', 'ພະຈິກ', - 'ທັນວາ' - ] - ], - u, - [['ກ່ອນ ຄ.ສ.', 'ຄ.ສ.'], u, ['ກ່ອນຄຣິດສັກກະລາດ', 'ຄຣິດສັກກະລາດ']], - 0, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE ທີ d MMMM G y'], - ['H:mm', 'H:mm:ss', 'H ໂມງ m ນາທີ ss ວິນາທີ z', 'H ໂມງ m ນາທີ ss ວິນາທີ zzzz'], - ['{1}, {0}', u, u, u], - [ - ',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', - 'ບໍ່​ແມ່ນ​ໂຕ​ເລກ', ':' - ], - ['#,##0.###', '#,##0%', '¤#,##0.00;¤-#,##0.00', '#'], - 'LAK', - '₭', - 'ລາວ ກີບ', - {'JPY': ['JP¥', '¥'], 'LAK': ['₭'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$']}, - 'ltr', - plural_lo -]; - -function plural_lt(n: number): number { - let f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (n % 10 === 1 && !(n % 100 >= 11 && n % 100 <= 19)) return 1; - if (n % 10 === Math.floor(n % 10) && n % 10 >= 2 && n % 10 <= 9 && - !(n % 100 >= 11 && n % 100 <= 19)) - return 3; - if (!(f === 0)) return 4; - return 5; -} - -export const locale_lt = [ - 'lt', - [['pr. p.', 'pop.'], ['priešpiet', 'popiet'], u], - u, - [ - ['S', 'P', 'A', 'T', 'K', 'P', 'Š'], ['sk', 'pr', 'an', 'tr', 'kt', 'pn', 'št'], - [ - 'sekmadienis', 'pirmadienis', 'antradienis', 'trečiadienis', 'ketvirtadienis', 'penktadienis', - 'šeštadienis' - ], - ['Sk', 'Pr', 'An', 'Tr', 'Kt', 'Pn', 'Št'] - ], - u, - [ - ['S', 'V', 'K', 'B', 'G', 'B', 'L', 'R', 'R', 'S', 'L', 'G'], - [ - 'saus.', 'vas.', 'kov.', 'bal.', 'geg.', 'birž.', 'liep.', 'rugp.', 'rugs.', 'spal.', - 'lapkr.', 'gruod.' - ], - [ - 'sausio', 'vasario', 'kovo', 'balandžio', 'gegužės', 'birželio', 'liepos', 'rugpjūčio', - 'rugsėjo', 'spalio', 'lapkričio', 'gruodžio' - ] - ], - [ - ['S', 'V', 'K', 'B', 'G', 'B', 'L', 'R', 'R', 'S', 'L', 'G'], - [ - 'saus.', 'vas.', 'kov.', 'bal.', 'geg.', 'birž.', 'liep.', 'rugp.', 'rugs.', 'spal.', - 'lapkr.', 'gruod.' - ], - [ - 'sausis', 'vasaris', 'kovas', 'balandis', 'gegužė', 'birželis', 'liepa', 'rugpjūtis', - 'rugsėjis', 'spalis', 'lapkritis', 'gruodis' - ] - ], - [['pr. Kr.', 'po Kr.'], u, ['prieš Kristų', 'po Kristaus']], - 1, - [6, 0], - ['y-MM-dd', u, 'y \'m\'. MMMM d \'d\'.', 'y \'m\'. MMMM d \'d\'., EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '−', '×10^', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euras', - { - 'AUD': [u, '$'], - 'BDT': [], - 'BRL': [u, 'R$'], - 'BYN': [u, 'Br'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [], - 'INR': [], - 'JPY': [u, '¥'], - 'KHR': [], - 'KRW': [u, '₩'], - 'LAK': [], - 'MNT': [], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'PLN': [u, 'zl'], - 'PYG': [u, 'Gs'], - 'RUB': [u, 'rb'], - 'TWD': [u, '$'], - 'USD': [u, '$'], - 'VND': [], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [], - 'XPF': [] - }, - 'ltr', - plural_lt -]; - -function plural_lv(n: number): number { - let v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (n % 10 === 0 || n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 19 || - v === 2 && f % 100 === Math.floor(f % 100) && f % 100 >= 11 && f % 100 <= 19) +if (n === 0) return 0; - if (n % 10 === 1 && !(n % 100 === 11) || v === 2 && f % 10 === 1 && !(f % 100 === 11) || - !(v === 2) && f % 10 === 1) +if (n === 1) return 1; - return 5; -} - -export const locale_lv = [ - 'lv', - [['priekšp.', 'pēcp.'], u, ['priekšpusdienā', 'pēcpusdienā']], - [['priekšp.', 'pēcpusd.'], u, ['priekšpusdiena', 'pēcpusdiena']], - [ - ['S', 'P', 'O', 'T', 'C', 'P', 'S'], - ['svētd.', 'pirmd.', 'otrd.', 'trešd.', 'ceturtd.', 'piektd.', 'sestd.'], - ['svētdiena', 'pirmdiena', 'otrdiena', 'trešdiena', 'ceturtdiena', 'piektdiena', 'sestdiena'], - ['Sv', 'Pr', 'Ot', 'Tr', 'Ce', 'Pk', 'Se'] - ], - [ - ['S', 'P', 'O', 'T', 'C', 'P', 'S'], - ['Svētd.', 'Pirmd.', 'Otrd.', 'Trešd.', 'Ceturtd.', 'Piektd.', 'Sestd.'], - ['Svētdiena', 'Pirmdiena', 'Otrdiena', 'Trešdiena', 'Ceturtdiena', 'Piektdiena', 'Sestdiena'], - ['Sv', 'Pr', 'Ot', 'Tr', 'Ce', 'Pk', 'Se'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'febr.', 'marts', 'apr.', 'maijs', 'jūn.', 'jūl.', 'aug.', 'sept.', 'okt.', 'nov.', - 'dec.' - ], - [ - 'janvāris', 'februāris', 'marts', 'aprīlis', 'maijs', 'jūnijs', 'jūlijs', 'augusts', - 'septembris', 'oktobris', 'novembris', 'decembris' - ] - ], - u, - [['p.m.ē.', 'm.ē.'], u, ['pirms mūsu ēras', 'mūsu ērā']], - 1, - [6, 0], - ['dd.MM.yy', 'y. \'gada\' d. MMM', 'y. \'gada\' d. MMMM', 'EEEE, y. \'gada\' d. MMMM'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NS', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'eiro', - {'AUD': ['AU$', '$'], 'LVL': ['Ls'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural_lv -]; - -function plural_mk(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - return 5; -} - -export const locale_mk = [ - 'mk', - [['претпл.', 'попл.'], u, ['претпладне', 'попладне']], - u, - [ - ['н', 'п', 'в', 'с', 'ч', 'п', 'с'], ['нед.', 'пон.', 'вт.', 'сре.', 'чет.', 'пет.', 'саб.'], - ['недела', 'понеделник', 'вторник', 'среда', 'четврток', 'петок', 'сабота'], - ['нед.', 'пон.', 'вто.', 'сре.', 'чет.', 'пет.', 'саб.'] - ], - [ - ['н', 'п', 'в', 'с', 'ч', 'п', 'с'], ['нед.', 'пон.', 'вто.', 'сре.', 'чет.', 'пет.', 'саб.'], - ['недела', 'понеделник', 'вторник', 'среда', 'четврток', 'петок', 'сабота'], - ['нед.', 'пон.', 'вто.', 'сре.', 'чет.', 'пет.', 'саб.'] - ], - [ - ['ј', 'ф', 'м', 'а', 'м', 'ј', 'ј', 'а', 'с', 'о', 'н', 'д'], - [ - 'јан.', 'фев.', 'мар.', 'апр.', 'мај', 'јун.', 'јул.', 'авг.', 'септ.', 'окт.', 'ноем.', - 'дек.' - ], - [ - 'јануари', 'февруари', 'март', 'април', 'мај', 'јуни', 'јули', 'август', 'септември', - 'октомври', 'ноември', 'декември' - ] - ], - u, - [['пр.н.е.', 'н.е.'], u, ['пред нашата ера', 'од нашата ера']], - 1, - [6, 0], - ['d.M.yy', 'd.M.y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'MKD', - 'ден.', - 'Македонски денар', - { - 'AUD': [u, '$'], - 'CNY': [u, '¥'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MKD': ['ден.'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural_mk -]; - -function plural_ml(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_ml = [ - 'ml', - [['AM', 'PM'], u, u], - u, - [ - ['ഞ', 'തി', 'ചൊ', 'ബു', 'വ്യാ', 'വെ', 'ശ'], - ['ഞായർ', 'തിങ്കൾ', 'ചൊവ്വ', 'ബുധൻ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'], - [ - 'ഞായറാഴ്\u200cച', 'തിങ്കളാഴ്\u200cച', 'ചൊവ്വാഴ്ച', 'ബുധനാഴ്\u200cച', 'വ്യാഴാഴ്\u200cച', - 'വെള്ളിയാഴ്\u200cച', 'ശനിയാഴ്\u200cച' - ], - ['ഞാ', 'തി', 'ചൊ', 'ബു', 'വ്യാ', 'വെ', 'ശ'] - ], - [ - ['ഞാ', 'തി', 'ചൊ', 'ബു', 'വ്യാ', 'വെ', 'ശ'], - ['ഞായർ', 'തിങ്കൾ', 'ചൊവ്വ', 'ബുധൻ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'], - [ - 'ഞായറാഴ്\u200cച', 'തിങ്കളാഴ്\u200cച', 'ചൊവ്വാഴ്\u200cച', 'ബുധനാഴ്\u200cച', 'വ്യാഴാഴ്\u200cച', - 'വെള്ളിയാഴ്\u200cച', 'ശനിയാഴ്\u200cച' - ], - ['ഞാ', 'തി', 'ചൊ', 'ബു', 'വ്യാ', 'വെ', 'ശ'] - ], - [ - ['ജ', 'ഫെ', 'മാ', 'ഏ', 'മെ', 'ജൂൺ', 'ജൂ', 'ഓ', 'സെ', 'ഒ', 'ന', 'ഡി'], - ['ജനു', 'ഫെബ്രു', 'മാർ', 'ഏപ്രി', 'മേയ്', 'ജൂൺ', 'ജൂലൈ', 'ഓഗ', 'സെപ്റ്റം', 'ഒക്ടോ', 'നവം', 'ഡിസം'], - [ - 'ജനുവരി', 'ഫെബ്രുവരി', 'മാർച്ച്', 'ഏപ്രിൽ', 'മേയ്', 'ജൂൺ', 'ജൂലൈ', 'ഓഗസ്റ്റ്', 'സെപ്റ്റംബർ', 'ഒക്\u200cടോബർ', - 'നവംബർ', 'ഡിസംബർ' - ] - ], - u, - [['ക്രി.മു.', 'എഡി'], u, ['ക്രിസ്\u200cതുവിന് മുമ്പ്', 'ആന്നോ ഡൊമിനി']], - 0, - [0, 0], - ['d/M/yy', 'y, MMM d', 'y, MMMM d', 'y, MMMM d, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'INR', - '₹', - 'ഇന്ത്യൻ രൂപ', - {'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural_ml -]; - -function plural_mn(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_mn = [ - 'mn', - [['ү.ө.', 'ү.х.'], u, u], - u, - [ - ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'], u, - ['ням', 'даваа', 'мягмар', 'лхагва', 'пүрэв', 'баасан', 'бямба'], - ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'] - ], - [ - ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'], u, - ['Ням', 'Даваа', 'Мягмар', 'Лхагва', 'Пүрэв', 'Баасан', 'Бямба'], - ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'] - ], - [ - ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII'], - [ - '1-р сар', '2-р сар', '3-р сар', '4-р сар', '5-р сар', '6-р сар', '7-р сар', '8-р сар', - '9-р сар', '10-р сар', '11-р сар', '12-р сар' - ], - [ - 'нэгдүгээр сар', 'хоёрдугаар сар', 'гуравдугаар сар', 'дөрөвдүгээр сар', 'тавдугаар сар', - 'зургаадугаар сар', 'долоодугаар сар', 'наймдугаар сар', 'есдүгээр сар', 'аравдугаар сар', - 'арван нэгдүгээр сар', 'арван хоёрдугаар сар' - ] - ], - [ - ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII'], - [ - '1-р сар', '2-р сар', '3-р сар', '4-р сар', '5-р сар', '6-р сар', '7-р сар', '8-р сар', - '9-р сар', '10-р сар', '11-р сар', '12-р сар' - ], - [ - 'Нэгдүгээр сар', 'Хоёрдугаар сар', 'Гуравдугаар сар', 'Дөрөвдүгээр сар', 'Тавдугаар сар', - 'Зургаадугаар сар', 'Долоодугаар сар', 'Наймдугаар сар', 'Есдүгээр сар', 'Аравдугаар сар', - 'Арван нэгдүгээр сар', 'Арван хоёрдугаар сар' - ] - ], - [['МЭӨ', 'МЭ'], u, ['манай эриний өмнөх', 'манай эриний']], - 1, - [6, 0], - [ - 'y.MM.dd', 'y \'оны\' MMM\'ын\' d', 'y \'оны\' MMMM\'ын\' d', - 'y \'оны\' MMMM\'ын\' d, EEEE \'гараг\'' - ], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss (z)', 'HH:mm:ss (zzzz)'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'MNT', - '₮', - 'Монгол төгрөг', - {'JPY': ['JP¥', '¥'], 'MNT': ['₮'], 'SEK': [u, 'кр'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural_mn -]; - -function plural_mo(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - if (!(v === 0) || n === 0 || - !(n === 1) && n % 100 === Math.floor(n % 100) && n % 100 >= 1 && n % 100 <= 19) +if (n === 2) + return 2; +if (n % 100 === Math.floor(n % 100) && (n % 100 >= 3 && n % 100 <= 10)) return 3; - return 5; -} - -export const locale_mo = [ - 'ro-MD', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['D', 'L', 'Ma', 'Mi', 'J', 'V', 'S'], ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'], - ['duminică', 'luni', 'marți', 'miercuri', 'joi', 'vineri', 'sâmbătă'], - ['Du', 'Lu', 'Ma', 'Mi', 'Jo', 'Vi', 'Sâ'] - ], - u, - [ - ['I', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'], - [ - 'ian.', 'feb.', 'mar.', 'apr.', 'mai', 'iun.', 'iul.', 'aug.', 'sept.', 'oct.', 'nov.', 'dec.' - ], - [ - 'ianuarie', 'februarie', 'martie', 'aprilie', 'mai', 'iunie', 'iulie', 'august', 'septembrie', - 'octombrie', 'noiembrie', 'decembrie' - ] - ], - u, - [['î.Hr.', 'd.Hr.'], u, ['înainte de Hristos', 'după Hristos']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'MDL', - 'L', - 'leu moldovenesc', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MDL': ['L'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XCD': [u, '$'] - }, - 'ltr', - plural_mo -]; - -function plural_mr(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} - -export const locale_mr = [ - 'mr', - [['स', 'सं'], ['म.पू.', 'म.उ.'], u], - [['म.पू.', 'म.उ.'], u, u], - [ - ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'], ['रवि', 'सोम', 'मंगळ', 'बुध', 'गुरु', 'शुक्र', 'शनि'], - ['रविवार', 'सोमवार', 'मंगळवार', 'बुधवार', 'गुरुवार', 'शुक्रवार', 'शनिवार'], - ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'] - ], - u, - [ - ['जा', 'फे', 'मा', 'ए', 'मे', 'जू', 'जु', 'ऑ', 'स', 'ऑ', 'नो', 'डि'], - ['जाने', 'फेब्रु', 'मार्च', 'एप्रि', 'मे', 'जून', 'जुलै', 'ऑग', 'सप्टें', 'ऑक्टो', 'नोव्हें', 'डिसें'], - [ - 'जानेवारी', 'फेब्रुवारी', 'मार्च', 'एप्रिल', 'मे', 'जून', 'जुलै', 'ऑगस्ट', 'सप्टेंबर', 'ऑक्टोबर', 'नोव्हेंबर', - 'डिसेंबर' - ] - ], - u, - [['इ. स. पू.', 'इ. स.'], u, ['ईसवीसनपूर्व', 'ईसवीसन']], - 0, - [0, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} रोजी {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##0%', '¤#,##0.00', '[#E0]'], - 'INR', - '₹', - 'भारतीय रुपया', - {'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural_mr -]; - -function plural_ms(n: number): number { - return 5; -} - -export const locale_ms = [ - 'ms', - [['a', 'p'], ['PG', 'PTG'], u], - u, - [ - ['A', 'I', 'S', 'R', 'K', 'J', 'S'], ['Ahd', 'Isn', 'Sel', 'Rab', 'Kha', 'Jum', 'Sab'], - ['Ahad', 'Isnin', 'Selasa', 'Rabu', 'Khamis', 'Jumaat', 'Sabtu'], - ['Ah', 'Is', 'Se', 'Ra', 'Kh', 'Ju', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ogo', 'Sep', 'Okt', 'Nov', 'Dis'], - [ - 'Januari', 'Februari', 'Mac', 'April', 'Mei', 'Jun', 'Julai', 'Ogos', 'September', 'Oktober', - 'November', 'Disember' - ] - ], - u, - [['S.M.', 'TM'], u, u], - 1, - [6, 0], - ['d/MM/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'MYR', - 'RM', - 'Ringgit Malaysia', - { - 'CAD': [u, '$'], - 'JPY': ['JP¥', '¥'], - 'MXN': [u, '$'], - 'MYR': ['RM'], - 'TWD': ['NT$'], - 'USD': [u, '$'] - }, - 'ltr', - plural_ms -]; - -function plural_mt(n: number): number { - if (n === 1) return 1; - if (n === 0 || n % 100 === Math.floor(n % 100) && n % 100 >= 2 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 19) return 4; - return 5; -} - -export const locale_mt = [ - 'mt', - [['am', 'pm'], ['AM', 'PM'], u], - u, - [ - ['Ħd', 'T', 'Tl', 'Er', 'Ħm', 'Ġm', 'Sb'], ['Ħad', 'Tne', 'Tli', 'Erb', 'Ħam', 'Ġim', 'Sib'], - ['Il-Ħadd', 'It-Tnejn', 'It-Tlieta', 'L-Erbgħa', 'Il-Ħamis', 'Il-Ġimgħa', 'Is-Sibt'], - ['Ħad', 'Tne', 'Tli', 'Erb', 'Ħam', 'Ġim', 'Sib'] - ], - [ - ['Ħd', 'Tn', 'Tl', 'Er', 'Ħm', 'Ġm', 'Sb'], ['Ħad', 'Tne', 'Tli', 'Erb', 'Ħam', 'Ġim', 'Sib'], - ['Il-Ħadd', 'It-Tnejn', 'It-Tlieta', 'L-Erbgħa', 'Il-Ħamis', 'Il-Ġimgħa', 'Is-Sibt'], - ['Ħad', 'Tne', 'Tli', 'Erb', 'Ħam', 'Ġim', 'Sib'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'Ġ', 'L', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Fra', 'Mar', 'Apr', 'Mej', 'Ġun', 'Lul', 'Aww', 'Set', 'Ott', 'Nov', 'Diċ'], - [ - 'Jannar', 'Frar', 'Marzu', 'April', 'Mejju', 'Ġunju', 'Lulju', 'Awwissu', 'Settembru', - 'Ottubru', 'Novembru', 'Diċembru' - ] - ], - [ - ['Jn', 'Fr', 'Mz', 'Ap', 'Mj', 'Ġn', 'Lj', 'Aw', 'St', 'Ob', 'Nv', 'Dċ'], - ['Jan', 'Fra', 'Mar', 'Apr', 'Mej', 'Ġun', 'Lul', 'Aww', 'Set', 'Ott', 'Nov', 'Diċ'], - [ - 'Jannar', 'Frar', 'Marzu', 'April', 'Mejju', 'Ġunju', 'Lulju', 'Awwissu', 'Settembru', - 'Ottubru', 'Novembru', 'Diċembru' - ] - ], - [['QK', 'WK'], u, ['Qabel Kristu', 'Wara Kristu']], - 0, - [6, 0], - ['dd/MM/y', 'dd MMM y', 'd \'ta\'’ MMMM y', 'EEEE, d \'ta\'’ MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'EUR', - '€', - 'ewro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural_mt -]; - -function plural_my(n: number): number { - return 5; -} - -export const locale_my = [ - 'my', - [['နံနက်', 'ညနေ'], u, u], - u, - [ - ['တ', 'တ', 'အ', 'ဗ', 'က', 'သ', 'စ'], - ['တနင်္ဂနွေ', 'တနင်္လာ', 'အင်္ဂါ', 'ဗုဒ္ဓဟူး', 'ကြာသပတေး', 'သောကြာ', 'စနေ'], u, u - ], - u, - [ - ['ဇ', 'ဖ', 'မ', 'ဧ', 'မ', 'ဇ', 'ဇ', 'ဩ', 'စ', 'အ', 'န', 'ဒ'], - ['ဇန်', 'ဖေ', 'မတ်', 'ဧ', 'မေ', 'ဇွန်', 'ဇူ', 'ဩ', 'စက်', 'အောက်', 'နို', 'ဒီ'], - [ - 'ဇန်နဝါရီ', 'ဖေဖော်ဝါရီ', 'မတ်', 'ဧပြီ', 'မေ', 'ဇွန်', 'ဇူလိုင်', 'ဩဂုတ်', 'စက်တင်ဘာ', 'အောက်တိုဘာ', 'နိုဝင်ဘာ', - 'ဒီဇင်ဘာ' - ] - ], - u, - [['ဘီစီ', 'အဒေီ'], u, ['ခရစ်တော် မပေါ်မီနှစ်', 'ခရစ်နှစ်']], - 0, - [6, 0], - ['dd-MM-yy', 'y၊ MMM d', 'y၊ d MMMM', 'y၊ MMMM d၊ EEEE'], - ['B H:mm', 'B HH:mm:ss', 'z HH:mm:ss', 'zzzz HH:mm:ss'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'ဂဏန်းမဟုတ်သော', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'MMK', - 'K', - 'မြန်မာ ကျပ်', - { - 'ANG': ['NAf'], - 'AWG': ['Afl'], - 'BBD': [u, 'Bds$'], - 'BSD': [u, 'B$'], - 'HTG': ['G'], - 'JPY': ['JP¥', '¥'], - 'MMK': ['K'], - 'PAB': ['B/.'], - 'THB': ['฿'], - 'TTD': ['TT$', '$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural_my -]; - -function plural_ne(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_ne = [ - 'ne', - [['पूर्वाह्न', 'अपराह्न'], u, u], - u, - [ - ['आ', 'सो', 'म', 'बु', 'बि', 'शु', 'श'], ['आइत', 'सोम', 'मङ्गल', 'बुध', 'बिहि', 'शुक्र', 'शनि'], - ['आइतबार', 'सोमबार', 'मङ्गलबार', 'बुधबार', 'बिहिबार', 'शुक्रबार', 'शनिबार'], - ['आइत', 'सोम', 'मङ्गल', 'बुध', 'बिहि', 'शुक्र', 'शनि'] - ], - u, - [ - ['जन', 'फेब', 'मार्च', 'अप्र', 'मे', 'जुन', 'जुल', 'अग', 'सेप', 'अक्टो', 'नोभे', 'डिसे'], - [ - 'जनवरी', 'फेब्रुअरी', 'मार्च', 'अप्रिल', 'मे', 'जुन', 'जुलाई', 'अगस्ट', 'सेप्टेम्बर', 'अक्टोबर', 'नोभेम्बर', - 'डिसेम्बर' - ], - u - ], - [ - ['जन', 'फेेब', 'मार्च', 'अप्र', 'मे', 'जुन', 'जुल', 'अग', 'सेप', 'अक्टो', 'नोभे', 'डिसे'], - [ - 'जनवरी', 'फेब्रुअरी', 'मार्च', 'अप्रिल', 'मे', 'जुन', 'जुलाई', 'अगस्ट', 'सेप्टेम्बर', 'अक्टोबर', 'नोभेम्बर', - 'डिसेम्बर' - ], - u - ], - [['ईसा पूर्व', 'सन्'], u, u], - 0, - [6, 0], - ['yy/M/d', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤ #,##,##0.00', '#E0'], - 'NPR', - 'नेरू', - 'नेपाली रूपैयाँ', - {'JPY': ['JP¥', '¥'], 'NPR': ['नेरू', 'रू'], 'THB': ['฿'], 'USD': ['US$', '$']}, - 'ltr', - plural_ne -]; - -function plural_nl(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export const locale_nl = [ - 'nl', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['Z', 'M', 'D', 'W', 'D', 'V', 'Z'], ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], - ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], - ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['v.C.', 'n.C.'], ['v.Chr.', 'n.Chr.'], ['voor Christus', 'na Christus']], - 1, - [6, 0], - ['dd-MM-y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'om\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤ -#,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - { - 'AUD': ['AU$', '$'], - 'CAD': ['C$', '$'], - 'FJD': ['FJ$', '$'], - 'JPY': ['JP¥', '¥'], - 'SBD': ['SI$', '$'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural_nl -]; - -function plural_no(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_no = [ - 'nb', - [['a', 'p'], ['a.m.', 'p.m.'], u], - [['a.m.', 'p.m.'], u, u], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['søn.', 'man.', 'tir.', 'ons.', 'tor.', 'fre.', 'lør.'], - ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'], - ['sø.', 'ma.', 'ti.', 'on.', 'to.', 'fr.', 'lø.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mar.', 'apr.', 'mai', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'des.'], - [ - 'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', - 'november', 'desember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'], - [ - 'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', - 'november', 'desember' - ] - ], - [['f.Kr.', 'e.Kr.'], u, ['før Kristus', 'etter Kristus']], - 1, - [6, 0], - ['dd.MM.y', 'd. MMM y', 'd. MMMM y', 'EEEE d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'kl\'. {0}', '{1} {0}'], - [',', ' ', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'NOK', - 'kr', - 'norske kroner', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NOK': ['kr'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural_no -]; - -function plural_or(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_or = [ - 'or', - [['ପୂ', 'ଅ'], ['AM', 'PM'], u], - [['AM', 'ଅପରାହ୍ନ'], ['ପୂର୍ବାହ୍ନ', 'ଅପରାହ୍ନ'], u], - [ - ['ର', 'ସୋ', 'ମ', 'ବୁ', 'ଗୁ', 'ଶୁ', 'ଶ'], ['ରବି', 'ସୋମ', 'ମଙ୍ଗଳ', 'ବୁଧ', 'ଗୁରୁ', 'ଶୁକ୍ର', 'ଶନି'], - ['ରବିବାର', 'ସୋମବାର', 'ମଙ୍ଗଳବାର', 'ବୁଧବାର', 'ଗୁରୁବାର', 'ଶୁକ୍ରବାର', 'ଶନିବାର'], - ['ରବି', 'ସୋମ', 'ମଙ୍ଗଳ', 'ବୁଧ', 'ଗୁରୁ', 'ଶୁକ୍ର', 'ଶନି'] - ], - u, - [ - ['ଜା', 'ଫେ', 'ମା', 'ଅ', 'ମଇ', 'ଜୁ', 'ଜୁ', 'ଅ', 'ସେ', 'ଅ', 'ନ', 'ଡି'], - [ - 'ଜାନୁଆରୀ', 'ଫେବୃଆରୀ', 'ମାର୍ଚ୍ଚ', 'ଅପ୍ରେଲ', 'ମଇ', 'ଜୁନ', 'ଜୁଲାଇ', 'ଅଗଷ୍ଟ', 'ସେପ୍ଟେମ୍ବର', 'ଅକ୍ଟୋବର', - 'ନଭେମ୍ବର', 'ଡିସେମ୍ବର' - ], - u - ], - u, - [['BC', 'AD'], u, ['ଖ୍ରୀଷ୍ଟପୂର୍ବ', 'ଖ୍ରୀଷ୍ଟାବ୍ଦ']], - 0, - [0, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{0} ଠାରେ {1}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'INR', - '₹', - 'ଭାରତୀୟ ଟଙ୍କା', - {}, - 'ltr', - plural_or -]; - -function plural_pa(n: number): number { - if (n === Math.floor(n) && n >= 0 && n <= 1) return 1; - return 5; -} - -export const locale_pa = [ - 'pa', - [['ਸ.', 'ਸ਼.'], ['ਪੂ.ਦੁ.', 'ਬਾ.ਦੁ.'], u], - [['ਪੂ.ਦੁ.', 'ਬਾ.ਦੁ.'], u, u], - [ - ['ਐ', 'ਸੋ', 'ਮੰ', 'ਬੁੱ', 'ਵੀ', 'ਸ਼ੁੱ', 'ਸ਼'], ['ਐਤ', 'ਸੋਮ', 'ਮੰਗਲ', 'ਬੁੱਧ', 'ਵੀਰ', 'ਸ਼ੁੱਕਰ', 'ਸ਼ਨਿੱਚਰ'], - ['ਐਤਵਾਰ', 'ਸੋਮਵਾਰ', 'ਮੰਗਲਵਾਰ', 'ਬੁੱਧਵਾਰ', 'ਵੀਰਵਾਰ', 'ਸ਼ੁੱਕਰਵਾਰ', 'ਸ਼ਨਿੱਚਰਵਾਰ'], - ['ਐਤ', 'ਸੋਮ', 'ਮੰਗ', 'ਬੁੱਧ', 'ਵੀਰ', 'ਸ਼ੁੱਕ', 'ਸ਼ਨਿੱ'] - ], - u, - [ - ['ਜ', 'ਫ਼', 'ਮਾ', 'ਅ', 'ਮ', 'ਜੂ', 'ਜੁ', 'ਅ', 'ਸ', 'ਅ', 'ਨ', 'ਦ'], - ['ਜਨ', 'ਫ਼ਰ', 'ਮਾਰਚ', 'ਅਪ੍ਰੈ', 'ਮਈ', 'ਜੂਨ', 'ਜੁਲਾ', 'ਅਗ', 'ਸਤੰ', 'ਅਕਤੂ', 'ਨਵੰ', 'ਦਸੰ'], - ['ਜਨਵਰੀ', 'ਫ਼ਰਵਰੀ', 'ਮਾਰਚ', 'ਅਪ੍ਰੈਲ', 'ਮਈ', 'ਜੂਨ', 'ਜੁਲਾਈ', 'ਅਗਸਤ', 'ਸਤੰਬਰ', 'ਅਕਤੂਬਰ', 'ਨਵੰਬਰ', 'ਦਸੰਬਰ'] - ], - u, - [['ਈ.ਪੂ.', 'ਸੰਨ'], ['ਈ. ਪੂ.', 'ਸੰਨ'], ['ਈਸਵੀ ਪੂਰਵ', 'ਈਸਵੀ ਸੰਨ']], - 0, - [0, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤ #,##,##0.00', '[#E0]'], - 'INR', - '₹', - 'ਭਾਰਤੀ ਰੁਪਇਆ', - {'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$'], 'XXX': []}, - 'ltr', - plural_pa -]; - -function plural_pl(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14)) - return 3; - if (v === 0 && !(i === 1) && i % 10 === Math.floor(i % 10) && i % 10 >= 0 && i % 10 <= 1 || - v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 5 && i % 10 <= 9 || - v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 12 && i % 100 <= 14) +if (n % 100 === Math.floor(n % 100) && (n % 100 >= 11 && n % 100 <= 99)) return 4; - return 5; +return 5; } -export const locale_pl = [ - 'pl', - [['a', 'p'], ['AM', 'PM'], u], - u, - [ - ['n', 'p', 'w', 'ś', 'c', 'p', 's'], ['niedz.', 'pon.', 'wt.', 'śr.', 'czw.', 'pt.', 'sob.'], - ['niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota'], - ['nie', 'pon', 'wto', 'śro', 'czw', 'pią', 'sob'] - ], - [ - ['N', 'P', 'W', 'Ś', 'C', 'P', 'S'], ['niedz.', 'pon.', 'wt.', 'śr.', 'czw.', 'pt.', 'sob.'], - ['niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota'], - ['nie', 'pon', 'wto', 'śro', 'czw', 'pią', 'sob'] - ], - [ - ['s', 'l', 'm', 'k', 'm', 'c', 'l', 's', 'w', 'p', 'l', 'g'], - ['sty', 'lut', 'mar', 'kwi', 'maj', 'cze', 'lip', 'sie', 'wrz', 'paź', 'lis', 'gru'], - [ - 'stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'września', - 'października', 'listopada', 'grudnia' - ] - ], - [ - ['S', 'L', 'M', 'K', 'M', 'C', 'L', 'S', 'W', 'P', 'L', 'G'], - ['sty', 'lut', 'mar', 'kwi', 'maj', 'cze', 'lip', 'sie', 'wrz', 'paź', 'lis', 'gru'], - [ - 'styczeń', 'luty', 'marzec', 'kwiecień', 'maj', 'czerwiec', 'lipiec', 'sierpień', 'wrzesień', - 'październik', 'listopad', 'grudzień' - ] - ], - [['p.n.e.', 'n.e.'], u, ['przed naszą erą', 'naszej ery']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'PLN', - 'zł', - 'złoty polski', - { - 'AUD': [u, '$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'PLN': ['zł'], - 'RON': [u, 'lej'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural_pl -]; +export const locale_ar = ["ar",[["ص","م"],u,u],[["ص","م"],u,["صباحًا","مساءً"]],[["ح","ن","ث","ر","خ","ج","س"],["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],u,["أحد","إثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"]],u,[["ي","ف","م","أ","و","ن","ل","غ","س","ك","ب","د"],["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],u],u,[["ق.م","م"],u,["قبل الميلاد","ميلادي"]],6,[5,6],["d‏/M‏/y","dd‏/MM‏/y","d MMMM y","EEEE، d MMMM y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1} {0}",u,u,u],[".",",",";","‎%‎","‎+","‎-","E","×","‰","∞","ليس رقمًا",":"],["#,##0.###","#,##0%","¤ #,##0.00","#E0"],"EGP","ج.م.‏","جنيه مصري",{"AED":["د.إ.‏"],"ARS":[u,"AR$"],"AUD":["AU$"],"BBD":[u,"BB$"],"BHD":["د.ب.‏"],"BMD":[u,"BM$"],"BND":[u,"BN$"],"BSD":[u,"BS$"],"BZD":[u,"BZ$"],"CAD":["CA$"],"CLP":[u,"CL$"],"CNY":["CN¥"],"COP":[u,"CO$"],"CUP":[u,"CU$"],"DOP":[u,"DO$"],"DZD":["د.ج.‏"],"EGP":["ج.م.‏","E£"],"FJD":[u,"FJ$"],"GBP":["UK£"],"GYD":[u,"GY$"],"HKD":["HK$"],"IQD":["د.ع.‏"],"IRR":["ر.إ."],"JMD":[u,"JM$"],"JOD":["د.أ.‏"],"JPY":["JP¥"],"KWD":["د.ك.‏"],"KYD":[u,"KY$"],"LBP":["ل.ل.‏","L£"],"LRD":[u,"$LR"],"LYD":["د.ل.‏"],"MAD":["د.م.‏"],"MRU":["أ.م."],"MXN":["MX$"],"NZD":["NZ$"],"OMR":["ر.ع.‏"],"QAR":["ر.ق.‏"],"SAR":["ر.س.‏"],"SBD":[u,"SB$"],"SDD":["د.س.‏"],"SDG":["ج.س."],"SRD":[u,"SR$"],"SYP":["ل.س.‏","£"],"THB":["฿"],"TND":["د.ت.‏"],"TTD":[u,"TT$"],"TWD":["NT$"],"USD":["US$"],"UYU":[u,"UY$"],"XXX":["***"],"YER":["ر.ي.‏"]},"rtl", plural_locale_ar]; -function plural_pt(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} -export const locale_pt = [ - 'pt', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], ['dom.', 'seg.', 'ter.', 'qua.', 'qui.', 'sex.', 'sáb.'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['dom.', 'seg.', 'ter.', 'qua.', 'qui.', 'sex.', 'sáb.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 0, - [6, 0], - ['dd/MM/y', 'd \'de\' MMM \'de\' y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'BRL', - 'R$', - 'Real brasileiro', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'PTE': ['Esc.'], - 'RON': [u, 'L'], - 'SYP': [u, 'S£'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural_pt -]; -function plural_pt_PT(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} +function plural_locale_ar_DZ(n: number): number { -export const locale_pt_PT = [ - 'pt-PT', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 0, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'PTE': ['​'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural_pt_PT -]; - -function plural_ro(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - if (!(v === 0) || n === 0 || - !(n === 1) && n % 100 === Math.floor(n % 100) && n % 100 >= 1 && n % 100 <= 19) - return 3; - return 5; -} - -export const locale_ro = [ - 'ro', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dum.', 'lun.', 'mar.', 'mie.', 'joi', 'vin.', 'sâm.'], - ['duminică', 'luni', 'marți', 'miercuri', 'joi', 'vineri', 'sâmbătă'], - ['du.', 'lu.', 'ma.', 'mi.', 'joi', 'vi.', 'sâ.'] - ], - u, - [ - ['I', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'], - [ - 'ian.', 'feb.', 'mar.', 'apr.', 'mai', 'iun.', 'iul.', 'aug.', 'sept.', 'oct.', 'nov.', 'dec.' - ], - [ - 'ianuarie', 'februarie', 'martie', 'aprilie', 'mai', 'iunie', 'iulie', 'august', 'septembrie', - 'octombrie', 'noiembrie', 'decembrie' - ] - ], - u, - [['î.Hr.', 'd.Hr.'], u, ['înainte de Hristos', 'după Hristos']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'RON', - 'RON', - 'leu românesc', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XCD': [u, '$'] - }, - 'ltr', - plural_ro -]; - -function plural_ru(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14)) - return 3; - if (v === 0 && i % 10 === 0 || - v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 5 && i % 10 <= 9 || - v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 11 && i % 100 <= 14) - return 4; - return 5; -} - -export const locale_ru = [ - 'ru', - [['AM', 'PM'], u, u], - u, - [ - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], u, - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['В', 'П', 'В', 'С', 'Ч', 'П', 'С'], ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'мар.', 'апр.', 'мая', 'июн.', 'июл.', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', - 'октября', 'ноября', 'декабря' - ] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'март', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', - 'ноябрь', 'декабрь' - ] - ], - [['до н.э.', 'н.э.'], ['до н. э.', 'н. э.'], ['до Рождества Христова', 'от Рождества Христова']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y \'г\'.', 'd MMMM y \'г\'.', 'EEEE, d MMMM y \'г\'.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'не число', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'RUB', - '₽', - 'российский рубль', - { - 'GEL': [u, 'ლ'], - 'RON': [u, 'L'], - 'RUB': ['₽'], - 'RUR': ['р.'], - 'THB': ['฿'], - 'TMT': ['ТМТ'], - 'TWD': ['NT$'], - 'UAH': ['₴'], - 'XXX': ['XXXX'] - }, - 'ltr', - plural_ru -]; - -function plural_sh(n: number): number { - return 5; -} - -export const locale_sh = [ - 'sr-Latn', - [['a', 'p'], ['pre podne', 'po podne'], u], - [['pre podne', 'po podne'], u, u], - [ - ['n', 'p', 'u', 's', 'č', 'p', 's'], ['ned', 'pon', 'uto', 'sre', 'čet', 'pet', 'sub'], - ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'], - ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'] - ], - u, - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'avg', 'sep', 'okt', 'nov', 'dec'], - [ - 'januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', - 'novembar', 'decembar' - ] - ], - u, - [['p.n.e.', 'n.e.'], ['p. n. e.', 'n. e.'], ['pre nove ere', 'nove ere']], - 1, - [6, 0], - ['d.M.yy.', 'dd.MM.y.', 'dd. MMMM y.', 'EEEE, dd. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'RSD', - 'RSD', - 'Srpski dinar', - { - 'AUD': [u, '$'], - 'BAM': ['KM'], - 'BYN': [u, 'r.'], - 'GEL': [u, 'ლ'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural_sh -]; - -function plural_si(n: number): number { - let i = Math.floor(Math.abs(n)), f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (n === 0 || n === 1 || i === 0 && f === 1) return 1; - return 5; -} - -export const locale_si = [ - 'si', - [['පෙ', 'ප'], ['පෙ.ව.', 'ප.ව.'], u], - [['පෙ.ව.', 'ප.ව.'], u, u], - [ - ['ඉ', 'ස', 'අ', 'බ', 'බ්\u200dර', 'සි', 'සෙ'], - ['ඉරිදා', 'සඳුදා', 'අඟහ', 'බදාදා', 'බ්\u200dරහස්', 'සිකු', 'සෙන'], - ['ඉරිදා', 'සඳුදා', 'අඟහරුවාදා', 'බදාදා', 'බ්\u200dරහස්පතින්දා', 'සිකුරාදා', 'සෙනසුරාදා'], - ['ඉරි', 'සඳු', 'අඟ', 'බදා', 'බ්\u200dරහ', 'සිකු', 'සෙන'] - ], - u, - [ - ['ජ', 'පෙ', 'මා', 'අ', 'මැ', 'ජූ', 'ජූ', 'අ', 'සැ', 'ඔ', 'නෙ', 'දෙ'], - ['ජන', 'පෙබ', 'මාර්තු', 'අප්\u200dරේල්', 'මැයි', 'ජූනි', 'ජූලි', 'අගෝ', 'සැප්', 'ඔක්', 'නොවැ', 'දෙසැ'], - [ - 'ජනවාරි', 'පෙබරවාරි', 'මාර්තු', 'අප්\u200dරේල්', 'මැයි', 'ජූනි', 'ජූලි', 'අගෝස්තු', 'සැප්තැම්බර්', 'ඔක්තෝබර්', - 'නොවැම්බර්', 'දෙසැම්බර්' - ] - ], - [ - ['ජ', 'පෙ', 'මා', 'අ', 'මැ', 'ජූ', 'ජූ', 'අ', 'සැ', 'ඔ', 'නෙ', 'දෙ'], - ['ජන', 'පෙබ', 'මාර්', 'අප්\u200dරේල්', 'මැයි', 'ජූනි', 'ජූලි', 'අගෝ', 'සැප්', 'ඔක්', 'නොවැ', 'දෙසැ'], - [ - 'ජනවාරි', 'පෙබරවාරි', 'මාර්තු', 'අප්\u200dරේල්', 'මැයි', 'ජූනි', 'ජූලි', 'අගෝස්තු', 'සැප්තැම්බර්', 'ඔක්තෝබර්', - 'නොවැම්බර්', 'දෙසැම්බර්' - ] - ], - [['ක්\u200dරි.පූ.', 'ක්\u200dරි.ව.'], u, ['ක්\u200dරිස්තු පූර්ව', 'ක්\u200dරිස්තු වර්ෂ']], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH.mm', 'HH.mm.ss', 'HH.mm.ss z', 'HH.mm.ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', '.'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#'], - 'LKR', - 'රු.', - 'ශ්\u200dරී ලංකා රුපියල', - { - 'JPY': ['JP¥', '¥'], - 'LKR': ['රු.'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XOF': ['සිෆ්එ'] - }, - 'ltr', - plural_si -]; - -function plural_sk(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - if (i === Math.floor(i) && i >= 2 && i <= 4 && v === 0) return 3; - if (!(v === 0)) return 4; - return 5; -} - -export const locale_sk = [ - 'sk', - [['AM', 'PM'], u, u], - u, - [ - ['n', 'p', 'u', 's', 'š', 'p', 's'], ['ne', 'po', 'ut', 'st', 'št', 'pi', 'so'], - ['nedeľa', 'pondelok', 'utorok', 'streda', 'štvrtok', 'piatok', 'sobota'], - ['ne', 'po', 'ut', 'st', 'št', 'pi', 'so'] - ], - u, - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'mar', 'apr', 'máj', 'jún', 'júl', 'aug', 'sep', 'okt', 'nov', 'dec'], - [ - 'januára', 'februára', 'marca', 'apríla', 'mája', 'júna', 'júla', 'augusta', 'septembra', - 'októbra', 'novembra', 'decembra' - ] - ], - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'mar', 'apr', 'máj', 'jún', 'júl', 'aug', 'sep', 'okt', 'nov', 'dec'], - [ - 'január', 'február', 'marec', 'apríl', 'máj', 'jún', 'júl', 'august', 'september', 'október', - 'november', 'december' - ] - ], - [['pred Kr.', 'po Kr.'], u, ['pred Kristom', 'po Kristovi']], - 1, - [6, 0], - ['d. M. y', u, 'd. MMMM y', 'EEEE d. MMMM y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', '{1}, {0}', u, u], - [',', ' ', ';', '%', '+', '-', 'e', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': ['NIS', '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XXX': [] - }, - 'ltr', - plural_sk -]; - -function plural_sl(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (v === 0 && i % 100 === 1) return 1; - if (v === 0 && i % 100 === 2) return 2; - if (v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 3 && i % 100 <= 4 || !(v === 0)) - return 3; - return 5; -} - -export const locale_sl = [ - 'sl', - [['d', 'p'], ['dop.', 'pop.'], u], - [['d', 'p'], ['dop.', 'pop.'], ['dopoldne', 'popoldne']], - [ - ['n', 'p', 't', 's', 'č', 'p', 's'], ['ned.', 'pon.', 'tor.', 'sre.', 'čet.', 'pet.', 'sob.'], - ['nedelja', 'ponedeljek', 'torek', 'sreda', 'četrtek', 'petek', 'sobota'], - ['ned.', 'pon.', 'tor.', 'sre.', 'čet.', 'pet.', 'sob.'] - ], - u, - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun.', 'jul.', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januar', 'februar', 'marec', 'april', 'maj', 'junij', 'julij', 'avgust', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['pr. Kr.', 'po Kr.'], u, ['pred Kristusom', 'po Kristusu']], - 1, - [6, 0], - ['d. MM. yy', 'd. MMM y', 'dd. MMMM y', 'EEEE, dd. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '−', 'e', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'evro', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'GBP': [u, '£'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'XCD': [u, '$'] - }, - 'ltr', - plural_sl -]; - -function plural_sq(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_sq = [ - 'sq', - [['p.d.', 'm.d.'], u, ['e paradites', 'e pasdites']], - [['p.d.', 'm.d.'], u, ['paradite', 'pasdite']], - [ - ['d', 'h', 'm', 'm', 'e', 'p', 'sh'], ['Die', 'Hën', 'Mar', 'Mër', 'Enj', 'Pre', 'Sht'], - ['e diel', 'e hënë', 'e martë', 'e mërkurë', 'e enjte', 'e premte', 'e shtunë'], - ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'] - ], - [ - ['d', 'h', 'm', 'm', 'e', 'p', 'sh'], ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'], - ['e diel', 'e hënë', 'e martë', 'e mërkurë', 'e enjte', 'e premte', 'e shtunë'], - ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'] - ], - [ - ['j', 'sh', 'm', 'p', 'm', 'q', 'k', 'g', 'sh', 't', 'n', 'dh'], - ['jan', 'shk', 'mar', 'pri', 'maj', 'qer', 'korr', 'gush', 'sht', 'tet', 'nën', 'dhj'], - [ - 'janar', 'shkurt', 'mars', 'prill', 'maj', 'qershor', 'korrik', 'gusht', 'shtator', 'tetor', - 'nëntor', 'dhjetor' - ] - ], - u, - [['p.K.', 'mb.K.'], u, ['para Krishtit', 'mbas Krishtit']], - 1, - [6, 0], - ['d.M.yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a, z', 'h:mm:ss a, zzzz'], - ['{1}, {0}', u, '{1} \'në\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'ALL', - 'Lekë', - 'Leku shqiptar', - { - 'ALL': ['Lekë'], - 'AOA': [], - 'ARS': [], - 'AUD': ['A$', 'AUD'], - 'BAM': [], - 'BBD': [], - 'BDT': [], - 'BMD': [], - 'BND': [], - 'BOB': [], - 'BRL': [], - 'BSD': [], - 'BWP': [], - 'BYN': [], - 'BZD': [], - 'CAD': ['CA$', 'CAD'], - 'CLP': [], - 'CNY': ['CN¥', 'CNY'], - 'COP': [], - 'CRC': [], - 'CUC': [], - 'CUP': [], - 'CZK': [], - 'DKK': [], - 'DOP': [], - 'EGP': [], - 'EUR': ['€', 'EUR'], - 'FJD': [], - 'FKP': [], - 'GBP': ['£', 'GBP'], - 'GEL': [], - 'GIP': [], - 'GNF': [], - 'GTQ': [], - 'GYD': [], - 'HKD': ['HK$', 'HKS'], - 'HNL': [], - 'HRK': [], - 'HUF': [], - 'IDR': [], - 'ILS': ['₪', 'ILS'], - 'INR': ['₹', 'INR'], - 'ISK': [], - 'JMD': [], - 'JPY': ['JP¥', 'JPY'], - 'KHR': [], - 'KMF': [], - 'KPW': [], - 'KRW': ['₩', 'KRW'], - 'KYD': [], - 'KZT': [], - 'LAK': [], - 'LBP': [], - 'LKR': [], - 'LRD': [], - 'MGA': [], - 'MMK': [], - 'MNT': [], - 'MUR': [], - 'MXN': ['MX$', 'MXN'], - 'MYR': [], - 'NAD': [], - 'NGN': [], - 'NIO': [], - 'NOK': [], - 'NPR': [], - 'NZD': ['NZ$', 'NZD'], - 'PHP': [], - 'PKR': [], - 'PLN': [], - 'PYG': [], - 'RON': [], - 'RUB': [], - 'RWF': [], - 'SBD': [], - 'SEK': [], - 'SGD': [], - 'SHP': [], - 'SRD': [], - 'SSP': [], - 'STN': [], - 'SYP': [], - 'THB': ['฿', 'THB'], - 'TOP': [], - 'TRY': [], - 'TTD': [], - 'TWD': ['NT$', 'TWD'], - 'UAH': [], - 'USD': ['US$', 'USD'], - 'UYU': [], - 'VND': ['₫', 'VND'], - 'XCD': ['EC$', 'XCD'], - 'ZAR': [], - 'ZMW': [] - }, - 'ltr', - plural_sq -]; - -function plural_sr(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14) || - f % 10 === Math.floor(f % 10) && f % 10 >= 2 && f % 10 <= 4 && - !(f % 100 >= 12 && f % 100 <= 14)) - return 3; - return 5; -} - -export const locale_sr = [ - 'sr', - [['a', 'p'], ['пре подне', 'по подне'], u], - [['пре подне', 'по подне'], u, u], - [ - ['н', 'п', 'у', 'с', 'ч', 'п', 'с'], ['нед', 'пон', 'уто', 'сре', 'чет', 'пет', 'суб'], - ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'], - ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'] - ], - u, - [ - ['ј', 'ф', 'м', 'а', 'м', 'ј', 'ј', 'а', 'с', 'о', 'н', 'д'], - ['јан', 'феб', 'мар', 'апр', 'мај', 'јун', 'јул', 'авг', 'сеп', 'окт', 'нов', 'дец'], - [ - 'јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', - 'новембар', 'децембар' - ] - ], - u, - [['п.н.е.', 'н.е.'], ['п. н. е.', 'н. е.'], ['пре нове ере', 'нове ере']], - 1, - [6, 0], - ['d.M.yy.', 'dd.MM.y.', 'dd. MMMM y.', 'EEEE, dd. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'RSD', - 'RSD', - 'Српски динар', - { - 'AUD': [u, '$'], - 'BAM': ['КМ', 'KM'], - 'GEL': [u, 'ლ'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural_sr -]; - -function plural_sv(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export const locale_sv = [ - 'sv', - [['fm', 'em'], u, u], - [['fm', 'em'], ['f.m.', 'e.m.'], ['förmiddag', 'eftermiddag']], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['sön', 'mån', 'tis', 'ons', 'tors', 'fre', 'lör'], - ['söndag', 'måndag', 'tisdag', 'onsdag', 'torsdag', 'fredag', 'lördag'], - ['sö', 'må', 'ti', 'on', 'to', 'fr', 'lö'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mars', 'apr.', 'maj', 'juni', 'juli', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januari', 'februari', 'mars', 'april', 'maj', 'juni', 'juli', 'augusti', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['f.Kr.', 'e.Kr.'], u, ['före Kristus', 'efter Kristus']], - 1, - [6, 0], - ['y-MM-dd', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', '\'kl\'. HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '−', '×10^', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'SEK', - 'kr', - 'svensk krona', - { - 'AUD': [u, '$'], - 'BBD': ['Bds$', '$'], - 'BMD': ['BM$', '$'], - 'BRL': ['BR$', 'R$'], - 'BSD': ['BS$', '$'], - 'BZD': ['BZ$', '$'], - 'CNY': [u, '¥'], - 'DKK': ['Dkr', 'kr'], - 'DOP': ['RD$', '$'], - 'EEK': ['Ekr'], - 'EGP': ['EG£', 'E£'], - 'ESP': [], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'IEP': ['IE£'], - 'INR': [u, '₹'], - 'ISK': ['Ikr', 'kr'], - 'JMD': ['JM$', '$'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'NOK': ['Nkr', 'kr'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SEK': ['kr'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural_sv -]; - -function plural_sw(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export const locale_sw = [ - 'sw', - [['am', 'pm'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'], u, u - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', - 'Oktoba', 'Novemba', 'Desemba' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Kristo', 'Baada ya Kristo']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'TZS', - 'TSh', - 'Shilingi ya Tanzania', - { - 'JPY': ['JP¥', '¥'], - 'KES': ['Ksh'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'TZS': ['TSh'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural_sw -]; - -function plural_ta(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_ta = [ - 'ta', - [['மு.ப', 'பி.ப'], ['முற்பகல்', 'பிற்பகல்'], u], - u, - [ - ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'], - ['ஞாயி.', 'திங்.', 'செவ்.', 'புத.', 'வியா.', 'வெள்.', 'சனி'], - ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'], - ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'] - ], - u, - [ - ['ஜ', 'பி', 'மா', 'ஏ', 'மே', 'ஜூ', 'ஜூ', 'ஆ', 'செ', 'அ', 'ந', 'டி'], - ['ஜன.', 'பிப்.', 'மார்.', 'ஏப்.', 'மே', 'ஜூன்', 'ஜூலை', 'ஆக.', 'செப்.', 'அக்.', 'நவ.', 'டிச.'], - [ - 'ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டம்பர்', 'அக்டோபர்', 'நவம்பர்', - 'டிசம்பர்' - ] - ], - u, - [['கி.மு.', 'கி.பி.'], u, ['கிறிஸ்துவுக்கு முன்', 'அன்னோ டோமினி']], - 0, - [0, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['a h:mm', 'a h:mm:ss', 'a h:mm:ss z', 'a h:mm:ss zzzz'], - ['{1}, {0}', u, '{1} ’அன்று’ {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤ #,##,##0.00', '#E0'], - 'INR', - '₹', - 'இந்திய ரூபாய்', - {'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural_ta -]; - -function plural_te(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_te = [ - 'te', - [['ఉ', 'సా'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['ఆ', 'సో', 'మ', 'బు', 'గు', 'శు', 'శ'], ['ఆది', 'సోమ', 'మంగళ', 'బుధ', 'గురు', 'శుక్ర', 'శని'], - ['ఆదివారం', 'సోమవారం', 'మంగళవారం', 'బుధవారం', 'గురువారం', 'శుక్రవారం', 'శనివారం'], - ['ఆది', 'సోమ', 'మం', 'బుధ', 'గురు', 'శుక్ర', 'శని'] - ], - u, - [ - ['జ', 'ఫి', 'మా', 'ఏ', 'మే', 'జూ', 'జు', 'ఆ', 'సె', 'అ', 'న', 'డి'], - ['జన', 'ఫిబ్ర', 'మార్చి', 'ఏప్రి', 'మే', 'జూన్', 'జులై', 'ఆగ', 'సెప్టెం', 'అక్టో', 'నవం', 'డిసెం'], - [ - 'జనవరి', 'ఫిబ్రవరి', 'మార్చి', 'ఏప్రిల్', 'మే', 'జూన్', 'జులై', 'ఆగస్టు', 'సెప్టెంబర్', 'అక్టోబర్', 'నవంబర్', - 'డిసెంబర్' - ] - ], - u, - [['క్రీపూ', 'క్రీశ'], u, ['క్రీస్తు పూర్వం', 'క్రీస్తు శకం']], - 0, - [0, 0], - ['dd-MM-yy', 'd MMM, y', 'd MMMM, y', 'd, MMMM y, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, '{1} {0}కి', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##0%', '¤#,##,##0.00', '#E0'], - 'INR', - '₹', - 'రూపాయి', - {'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural_te -]; - -function plural_th(n: number): number { - return 5; -} - -export const locale_th = [ - 'th', - [['a', 'p'], ['ก่อนเที่ยง', 'หลังเที่ยง'], u], - [['ก่อนเที่ยง', 'หลังเที่ยง'], u, u], - [ - ['อา', 'จ', 'อ', 'พ', 'พฤ', 'ศ', 'ส'], ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'], - ['วันอาทิตย์', 'วันจันทร์', 'วันอังคาร', 'วันพุธ', 'วันพฤหัสบดี', 'วันศุกร์', 'วันเสาร์'], - ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'] - ], - u, - [ - [ - 'ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', - 'ธ.ค.' - ], - u, - [ - 'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', - 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม' - ] - ], - u, - [['ก่อน ค.ศ.', 'ค.ศ.'], u, ['ปีก่อนคริสตกาล', 'คริสต์ศักราช']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM G y', 'EEEEที่ d MMMM G y'], - ['HH:mm', 'HH:mm:ss', 'H นาฬิกา mm นาที ss วินาที z', 'H นาฬิกา mm นาที ss วินาที zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'THB', - '฿', - 'บาท', - {'AUD': ['AU$', '$'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$'], 'XXX': []}, - 'ltr', - plural_th -]; - -function plural_tl(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && (i === 1 || i === 2 || i === 3) || - v === 0 && !(i % 10 === 4 || i % 10 === 6 || i % 10 === 9) || - !(v === 0) && !(f % 10 === 4 || f % 10 === 6 || f % 10 === 9)) +if (n === 0) + return 0; +if (n === 1) return 1; - return 5; -} - -export const locale_tl = [ - 'fil', - [['am', 'pm'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['Lin', 'Lun', 'Mar', 'Miy', 'Huw', 'Biy', 'Sab'], u, - ['Linggo', 'Lunes', 'Martes', 'Miyerkules', 'Huwebes', 'Biyernes', 'Sabado'], - ['Li', 'Lu', 'Ma', 'Mi', 'Hu', 'Bi', 'Sa'] - ], - u, - [ - ['Ene', 'Peb', 'Mar', 'Abr', 'May', 'Hun', 'Hul', 'Ago', 'Set', 'Okt', 'Nob', 'Dis'], u, - [ - 'Enero', 'Pebrero', 'Marso', 'Abril', 'Mayo', 'Hunyo', 'Hulyo', 'Agosto', 'Setyembre', - 'Oktubre', 'Nobyembre', 'Disyembre' - ] - ], - [ - ['E', 'P', 'M', 'A', 'M', 'Hun', 'Hul', 'Ago', 'Set', 'Okt', 'Nob', 'Dis'], - ['Ene', 'Peb', 'Mar', 'Abr', 'May', 'Hun', 'Hul', 'Ago', 'Set', 'Okt', 'Nob', 'Dis'], - [ - 'Enero', 'Pebrero', 'Marso', 'Abril', 'Mayo', 'Hunyo', 'Hulyo', 'Agosto', 'Setyembre', - 'Oktubre', 'Nobyembre', 'Disyembre' - ] - ], - [['BC', 'AD'], u, ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'nang\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'PHP', - '₱', - 'Piso ng Pilipinas', - {'PHP': ['₱'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural_tl -]; - -function plural_tr(n: number): number { - if (n === 1) return 1; - return 5; -} - -export const locale_tr = [ - 'tr', - [['öö', 'ös'], ['ÖÖ', 'ÖS'], u], - [['ÖÖ', 'ÖS'], u, u], - [ - ['P', 'P', 'S', 'Ç', 'P', 'C', 'C'], ['Paz', 'Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cmt'], - ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'], - ['Pa', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'] - ], - u, - [ - ['O', 'Ş', 'M', 'N', 'M', 'H', 'T', 'A', 'E', 'E', 'K', 'A'], - ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara'], - [ - 'Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', - 'Kasım', 'Aralık' - ] - ], - u, - [['MÖ', 'MS'], u, ['Milattan Önce', 'Milattan Sonra']], - 1, - [6, 0], - ['d.MM.y', 'd MMM y', 'd MMMM y', 'd MMMM y EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '%#,##0', '¤#,##0.00', '#E0'], - 'TRY', - '₺', - 'Türk Lirası', - {'AUD': ['AU$', '$'], 'RON': [u, 'L'], 'THB': ['฿'], 'TRY': ['₺'], 'TWD': ['NT$']}, - 'ltr', - plural_tr -]; - -function plural_uk(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14)) +if (n === 2) + return 2; +if (n % 100 === Math.floor(n % 100) && (n % 100 >= 3 && n % 100 <= 10)) return 3; - if (v === 0 && i % 10 === 0 || - v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 5 && i % 10 <= 9 || - v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 11 && i % 100 <= 14) +if (n % 100 === Math.floor(n % 100) && (n % 100 >= 11 && n % 100 <= 99)) return 4; - return 5; +return 5; } -export const locale_uk = [ - 'uk', - [['дп', 'пп'], u, u], - u, - [ - ['Н', 'П', 'В', 'С', 'Ч', 'П', 'С'], ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - ['неділя', 'понеділок', 'вівторок', 'середа', 'четвер', 'пʼятниця', 'субота'], - ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - u, - [ - ['с', 'л', 'б', 'к', 'т', 'ч', 'л', 'с', 'в', 'ж', 'л', 'г'], - [ - 'січ.', 'лют.', 'бер.', 'квіт.', 'трав.', 'черв.', 'лип.', 'серп.', 'вер.', 'жовт.', 'лист.', - 'груд.' - ], - [ - 'січня', 'лютого', 'березня', 'квітня', 'травня', 'червня', 'липня', 'серпня', 'вересня', - 'жовтня', 'листопада', 'грудня' - ] - ], - [ - ['С', 'Л', 'Б', 'К', 'Т', 'Ч', 'Л', 'С', 'В', 'Ж', 'Л', 'Г'], - ['січ', 'лют', 'бер', 'кві', 'тра', 'чер', 'лип', 'сер', 'вер', 'жов', 'лис', 'гру'], - [ - 'січень', 'лютий', 'березень', 'квітень', 'травень', 'червень', 'липень', 'серпень', - 'вересень', 'жовтень', 'листопад', 'грудень' - ] - ], - [['до н.е.', 'н.е.'], ['до н. е.', 'н. е.'], ['до нашої ери', 'нашої ери']], - 1, - [6, 0], - ['dd.MM.yy', 'd MMM y \'р\'.', 'd MMMM y \'р\'.', 'EEEE, d MMMM y \'р\'.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'о\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'Е', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'UAH', - '₴', - 'українська гривня', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, '$'], - 'UAH': ['₴'], - 'UAK': ['крб.'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XCD': [u, '$'] - }, - 'ltr', - plural_uk -]; +export const locale_ar_DZ = ["ar-DZ",[["ص","م"],u,u],[["ص","م"],u,["صباحًا","مساءً"]],[["ح","ن","ث","ر","خ","ج","س"],["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],u,["أحد","إثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"]],u,[["ج","ف","م","أ","م","ج","ج","أ","س","أ","ن","د"],["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],u],u,[["ق.م","م"],u,["قبل الميلاد","ميلادي"]],6,[5,6],["d‏/M‏/y","dd‏/MM‏/y","d MMMM y","EEEE، d MMMM y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1} {0}",u,u,u],[",",".",";","‎%‎","‎+","‎-","E","×","‰","∞","ليس رقمًا",":"],["#,##0.###","#,##0%","¤ #,##0.00","#E0"],"DZD","د.ج.‏","دينار جزائري",{"AED":["د.إ.‏"],"ARS":[u,"AR$"],"AUD":["AU$"],"BBD":[u,"BB$"],"BHD":["د.ب.‏"],"BMD":[u,"BM$"],"BND":[u,"BN$"],"BSD":[u,"BS$"],"BZD":[u,"BZ$"],"CAD":["CA$"],"CLP":[u,"CL$"],"CNY":["CN¥"],"COP":[u,"CO$"],"CUP":[u,"CU$"],"DOP":[u,"DO$"],"DZD":["د.ج.‏"],"EGP":["ج.م.‏","E£"],"FJD":[u,"FJ$"],"GBP":["UK£"],"GYD":[u,"GY$"],"HKD":["HK$"],"IQD":["د.ع.‏"],"IRR":["ر.إ."],"JMD":[u,"JM$"],"JOD":["د.أ.‏"],"JPY":["JP¥"],"KWD":["د.ك.‏"],"KYD":[u,"KY$"],"LBP":["ل.ل.‏","L£"],"LRD":[u,"$LR"],"LYD":["د.ل.‏"],"MAD":["د.م.‏"],"MRU":["أ.م."],"MXN":["MX$"],"NZD":["NZ$"],"OMR":["ر.ع.‏"],"QAR":["ر.ق.‏"],"SAR":["ر.س.‏"],"SBD":[u,"SB$"],"SDD":["د.س.‏"],"SDG":["ج.س."],"SRD":[u,"SR$"],"SYP":["ل.س.‏","£"],"THB":["฿"],"TND":["د.ت.‏"],"TTD":[u,"TT$"],"TWD":["NT$"],"USD":["US$"],"UYU":[u,"UY$"],"XXX":["***"],"YER":["ر.ي.‏"]},"rtl", plural_locale_ar_DZ]; -function plural_ur(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; + + +function plural_locale_az(n: number): number { + +if (n === 1) + return 1; +return 5; } -export const locale_ur = [ - 'ur', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'], - u, u - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', - 'دسمبر' - ], - u - ], - u, - [['قبل مسیح', 'عیسوی'], u, u], - 0, - [6, 0], - ['d/M/yy', 'd MMM، y', 'd MMMM، y', 'EEEE، d MMMM، y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'PKR', - 'Rs', - 'پاکستانی روپیہ', - {'JPY': ['JP¥', '¥'], 'PKR': ['Rs'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'rtl', - plural_ur -]; +export const locale_az = ["az",[["a","p"],["AM","PM"],u],[["AM","PM"],u,u],[["7","1","2","3","4","5","6"],["B.","B.e.","Ç.a.","Ç.","C.a.","C.","Ş."],["bazar","bazar ertəsi","çərşənbə axşamı","çərşənbə","cümə axşamı","cümə","şənbə"],["B.","B.E.","Ç.A.","Ç.","C.A.","C.","Ş."]],[["7","1","2","3","4","5","6"],["B.","B.E.","Ç.A.","Ç.","C.A.","C.","Ş."],["bazar","bazar ertəsi","çərşənbə axşamı","çərşənbə","cümə axşamı","cümə","şənbə"],["B.","B.E.","Ç.A.","Ç.","C.A.","C.","Ş."]],[["1","2","3","4","5","6","7","8","9","10","11","12"],["yan","fev","mar","apr","may","iyn","iyl","avq","sen","okt","noy","dek"],["yanvar","fevral","mart","aprel","may","iyun","iyul","avqust","sentyabr","oktyabr","noyabr","dekabr"]],[["1","2","3","4","5","6","7","8","9","10","11","12"],["yan","fev","mar","apr","may","iyn","iyl","avq","sen","okt","noy","dek"],["yanvar","Fevral","mart","Aprel","May","İyun","İyul","Avqust","Sentyabr","Oktyabr","Noyabr","dekabr"]],[["e.ə.","y.e."],u,["eramızdan əvvəl","yeni era"]],1,[6,0],["dd.MM.yy","d MMM y","d MMMM y","d MMMM y, EEEE"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",u,u,u],[",",".",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","#,##0.00 ¤","#E0"],"AZN","₼","Azərbaycan Manatı",{"AZN":["₼"],"JPY":["JP¥","¥"],"RON":[u,"ley"],"SYP":[u,"S£"],"THB":["฿"],"TWD":["NT$"],"USD":["US$","$"]},"ltr", plural_locale_az]; -function plural_uz(n: number): number { - if (n === 1) return 1; - return 5; + + +function plural_locale_be(n: number): number { + +if (n % 10 === 1 && !(n % 100 === 11)) + return 1; +if (n % 10 === Math.floor(n % 10) && (n % 10 >= 2 && n % 10 <= 4) && !(n % 100 >= 12 && n % 100 <= 14)) + return 3; +if (n % 10 === 0 || (n % 10 === Math.floor(n % 10) && (n % 10 >= 5 && n % 10 <= 9) || n % 100 === Math.floor(n % 100) && (n % 100 >= 11 && n % 100 <= 14))) + return 4; +return 5; } -export const locale_uz = [ - 'uz', - [['TO', 'TK'], u, u], - u, - [ - ['Y', 'D', 'S', 'C', 'P', 'J', 'S'], ['Yak', 'Dush', 'Sesh', 'Chor', 'Pay', 'Jum', 'Shan'], - ['yakshanba', 'dushanba', 'seshanba', 'chorshanba', 'payshanba', 'juma', 'shanba'], - ['Ya', 'Du', 'Se', 'Ch', 'Pa', 'Ju', 'Sh'] - ], - u, - [ - ['Y', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'], - ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avg', 'sen', 'okt', 'noy', 'dek'], - [ - 'yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avgust', 'sentabr', 'oktabr', - 'noyabr', 'dekabr' - ] - ], - [ - ['Y', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'], - ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'Iyn', 'Iyl', 'Avg', 'Sen', 'Okt', 'Noy', 'Dek'], - [ - 'Yanvar', 'Fevral', 'Mart', 'Aprel', 'May', 'Iyun', 'Iyul', 'Avgust', 'Sentabr', 'Oktabr', - 'Noyabr', 'Dekabr' - ] - ], - [['m.a.', 'milodiy'], u, ['miloddan avvalgi', 'milodiy']], - 1, - [6, 0], - ['dd/MM/yy', 'd-MMM, y', 'd-MMMM, y', 'EEEE, d-MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'H:mm:ss (z)', 'H:mm:ss (zzzz)'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'son emas', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'UZS', - 'soʻm', - 'O‘zbekiston so‘mi', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'UZS': ['soʻm']}, - 'ltr', - plural_uz -]; +export const locale_be = ["be",[["am","pm"],["AM","PM"],u],[["AM","PM"],u,u],[["н","п","а","с","ч","п","с"],["нд","пн","аў","ср","чц","пт","сб"],["нядзеля","панядзелак","аўторак","серада","чацвер","пятніца","субота"],["нд","пн","аў","ср","чц","пт","сб"]],u,[["с","л","с","к","м","ч","л","ж","в","к","л","с"],["сту","лют","сак","кра","мая","чэр","ліп","жні","вер","кас","ліс","сне"],["студзеня","лютага","сакавіка","красавіка","мая","чэрвеня","ліпеня","жніўня","верасня","кастрычніка","лістапада","снежня"]],[["с","л","с","к","м","ч","л","ж","в","к","л","с"],["сту","лют","сак","кра","май","чэр","ліп","жні","вер","кас","ліс","сне"],["студзень","люты","сакавік","красавік","май","чэрвень","ліпень","жнівень","верасень","кастрычнік","лістапад","снежань"]],[["да н.э.","н.э."],u,["да нараджэння Хрыстова","ад нараджэння Хрыстова"]],1,[6,0],["d.MM.yy","d.MM.y","d MMMM y 'г'.","EEEE, d MMMM y 'г'."],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss, zzzz"],["{1}, {0}",u,"{1} 'у' {0}",u],[","," ",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0 %","#,##0.00 ¤","#E0"],"BYN","Br","беларускі рубель",{"AUD":["A$"],"BBD":[u,"Bds$"],"BMD":[u,"BD$"],"BRL":[u,"R$"],"BSD":[u,"B$"],"BYN":["Br"],"BZD":[u,"BZ$"],"CAD":[u,"CA$"],"CUC":[u,"CUC$"],"CUP":[u,"$MN"],"DOP":[u,"RD$"],"FJD":[u,"FJ$"],"FKP":[u,"FK£"],"GYD":[u,"G$"],"ISK":[u,"Íkr"],"JMD":[u,"J$"],"KYD":[u,"CI$"],"LRD":[u,"L$"],"MXN":["MX$"],"NAD":[u,"N$"],"NZD":[u,"NZ$"],"RUB":["₽","руб."],"SBD":[u,"SI$"],"SGD":[u,"S$"],"TTD":[u,"TT$"],"UYU":[u,"$U"],"XCD":["EC$"]},"ltr", plural_locale_be]; -function plural_vi(n: number): number { - return 5; + + +function plural_locale_bg(n: number): number { + +if (n === 1) + return 1; +return 5; } -export const locale_vi = [ - 'vi', - [['s', 'c'], ['SA', 'CH'], u], - [['SA', 'CH'], u, u], - [ - ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], - ['CN', 'Th 2', 'Th 3', 'Th 4', 'Th 5', 'Th 6', 'Th 7'], - ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'], - ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'thg 1', 'thg 2', 'thg 3', 'thg 4', 'thg 5', 'thg 6', 'thg 7', 'thg 8', 'thg 9', 'thg 10', - 'thg 11', 'thg 12' - ], - [ - 'tháng 1', 'tháng 2', 'tháng 3', 'tháng 4', 'tháng 5', 'tháng 6', 'tháng 7', 'tháng 8', - 'tháng 9', 'tháng 10', 'tháng 11', 'tháng 12' - ] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'Thg 1', 'Thg 2', 'Thg 3', 'Thg 4', 'Thg 5', 'Thg 6', 'Thg 7', 'Thg 8', 'Thg 9', 'Thg 10', - 'Thg 11', 'Thg 12' - ], - [ - 'Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6', 'Tháng 7', 'Tháng 8', - 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12' - ] - ], - [['tr. CN', 'sau CN'], ['Trước CN', 'sau CN'], u], - 1, - [6, 0], - ['dd/MM/y', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{0}, {1}', u, '{0} {1}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'VND', - '₫', - 'Đồng Việt Nam', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural_vi -]; +export const locale_bg = ["bg",[["am","pm"],u,["пр.об.","сл.об."]],[["am","pm"],u,u],[["н","п","в","с","ч","п","с"],["нд","пн","вт","ср","чт","пт","сб"],["неделя","понеделник","вторник","сряда","четвъртък","петък","събота"],["нд","пн","вт","ср","чт","пт","сб"]],u,[["я","ф","м","а","м","ю","ю","а","с","о","н","д"],["яну","фев","март","апр","май","юни","юли","авг","сеп","окт","ное","дек"],["януари","февруари","март","април","май","юни","юли","август","септември","октомври","ноември","декември"]],u,[["пр.Хр.","сл.Хр."],u,["преди Христа","след Христа"]],1,[6,0],["d.MM.yy 'г'.","d.MM.y 'г'.","d MMMM y 'г'.","EEEE, d MMMM y 'г'."],["H:mm","H:mm:ss","H:mm:ss z","H:mm:ss zzzz"],["{1}, {0}",u,u,u],[","," ",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","0.00 ¤","#E0"],"BGN","лв.","Български лев",{"ARS":[],"AUD":[],"BBD":[],"BDT":[],"BGN":["лв."],"BMD":[],"BND":[],"BRL":[],"BSD":[],"BYN":[],"BZD":[],"CAD":[],"CLP":[],"CNY":[],"COP":[],"CRC":[],"CUP":[],"DOP":[],"FJD":[],"FKP":[],"GBP":[u,"£"],"GIP":[],"GYD":[],"HKD":[],"ILS":[],"INR":[],"JMD":[],"JPY":[u,"¥"],"KHR":[],"KRW":[],"KYD":[],"KZT":[],"LAK":[],"LRD":[],"MNT":[],"MXN":[],"NAD":[],"NGN":[],"NZD":[],"PHP":[],"PYG":[],"RON":[],"SBD":[],"SGD":[],"SRD":[],"SSP":[],"TRY":[],"TTD":[],"TWD":[],"UAH":[],"USD":["щ.д.","$"],"UYU":[],"VND":[],"XCD":[u,"$"]},"ltr", plural_locale_bg]; -function plural_zh(n: number): number { - return 5; + + +function plural_locale_bn(n: number): number { +const i = Math.floor(Math.abs(n)); + +if (i === 0 || n === 1) + return 1; +return 5; } -export const locale_zh = [ - 'zh', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], - [ - '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', - '十二月' - ] - ], - u, - [['公元前', '公元'], u, u], - 0, - [6, 0], - ['y/M/d', 'y年M月d日', u, 'y年M月d日EEEE'], - ['ah:mm', 'ah:mm:ss', 'z ah:mm:ss', 'zzzz ah:mm:ss'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'CNY', - '¥', - '人民币', - { - 'AUD': ['AU$', '$'], - 'CNY': ['¥'], - 'ILR': ['ILS'], - 'JPY': ['JP¥', '¥'], - 'KRW': ['₩', '₩'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural_zh -]; +export const locale_bn = ["bn",[["AM","PM"],u,u],u,[["র","সো","ম","বু","বৃ","শু","শ"],["রবি","সোম","মঙ্গল","বুধ","বৃহস্পতি","শুক্র","শনি"],["রবিবার","সোমবার","মঙ্গলবার","বুধবার","বৃহস্পতিবার","শুক্রবার","শনিবার"],["রঃ","সোঃ","মঃ","বুঃ","বৃঃ","শুঃ","শনি"]],u,[["জা","ফে","মা","এ","মে","জুন","জু","আ","সে","অ","ন","ডি"],["জানু","ফেব","মার্চ","এপ্রিল","মে","জুন","জুলাই","আগস্ট","সেপ্টেম্বর","অক্টোবর","নভেম্বর","ডিসেম্বর"],["জানুয়ারী","ফেব্রুয়ারী","মার্চ","এপ্রিল","মে","জুন","জুলাই","আগস্ট","সেপ্টেম্বর","অক্টোবর","নভেম্বর","ডিসেম্বর"]],[["জা","ফে","মা","এ","মে","জুন","জু","আ","সে","অ","ন","ডি"],["জানুয়ারী","ফেব্রুয়ারী","মার্চ","এপ্রিল","মে","জুন","জুলাই","আগস্ট","সেপ্টেম্বর","অক্টোবর","নভেম্বর","ডিসেম্বর"],u],[["খ্রিস্টপূর্ব","খৃষ্টাব্দ"],u,["খ্রিস্টপূর্ব","খ্রীষ্টাব্দ"]],0,[6,0],["d/M/yy","d MMM, y","d MMMM, y","EEEE, d MMMM, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1} {0}",u,u,u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##,##0.###","#,##,##0%","#,##,##0.00¤","#E0"],"BDT","৳","বাংলাদেশী টাকা",{"BDT":["৳"],"JPY":["JP¥","¥"],"THB":["฿"],"TWD":["NT$"],"USD":["US$","$"]},"ltr", plural_locale_bn]; -function plural_zh_CN(n: number): number { - return 5; + + +function plural_locale_br(n: number): number { + +if (n % 10 === 1 && !(n % 100 === 11 || (n % 100 === 71 || n % 100 === 91))) + return 1; +if (n % 10 === 2 && !(n % 100 === 12 || (n % 100 === 72 || n % 100 === 92))) + return 2; +if (n % 10 === Math.floor(n % 10) && (n % 10 >= 3 && n % 10 <= 4 || n % 10 === 9) && !(n % 100 >= 10 && n % 100 <= 19 || (n % 100 >= 70 && n % 100 <= 79 || n % 100 >= 90 && n % 100 <= 99))) + return 3; +if (!(n === 0) && n % 1000000 === 0) + return 4; +return 5; } -export const locale_zh_CN = [ - 'zh-Hans', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], - [ - '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', - '十二月' - ] - ], - u, - [['公元前', '公元'], u, u], - 0, - [6, 0], - ['y/M/d', 'y年M月d日', u, 'y年M月d日EEEE'], - ['ah:mm', 'ah:mm:ss', 'z ah:mm:ss', 'zzzz ah:mm:ss'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'CNY', - '¥', - '人民币', - { - 'AUD': ['AU$', '$'], - 'CNY': ['¥'], - 'ILR': ['ILS'], - 'JPY': ['JP¥', '¥'], - 'KRW': ['₩', '₩'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural_zh_CN -]; +export const locale_br = ["br",[["am","gm"],["A.M.","G.M."],u],[["A.M.","G.M."],u,u],[["Su","L","Mz","Mc","Y","G","Sa"],["Sul","Lun","Meu.","Mer.","Yaou","Gwe.","Sad."],["Sul","Lun","Meurzh","Mercʼher","Yaou","Gwener","Sadorn"],["Sul","Lun","Meu.","Mer.","Yaou","Gwe.","Sad."]],u,[["01","02","03","04","05","06","07","08","09","10","11","12"],["Gen.","Cʼhwe.","Meur.","Ebr.","Mae","Mezh.","Goue.","Eost","Gwen.","Here","Du","Kzu."],["Genver","Cʼhwevrer","Meurzh","Ebrel","Mae","Mezheven","Gouere","Eost","Gwengolo","Here","Du","Kerzu"]],u,[["a-raok J.K.","goude J.K."],u,["a-raok Jezuz-Krist","goude Jezuz-Krist"]],1,[6,0],["dd/MM/y","d MMM y","d MMMM y","EEEE d MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}","{1}, {0}","{1} 'da' {0}",u],[","," ",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0 %","#,##0.00 ¤","#E0"],"EUR","€","euro",{"AUD":["$A","$"],"BRL":[u,"R$"],"CAD":["$CA","$"],"CNY":[u,"¥"],"EGP":[u,"£ E"],"GBP":["£ RU","£"],"HKD":["$ HK","$"],"ILS":[u,"₪"],"JPY":[u,"¥"],"KRW":[u,"₩"],"LBP":[u,"£L"],"NZD":["$ ZN","$"],"TOP":[u,"$ T"],"TWD":[u,"$"],"USD":["$ SU","$"],"VND":[u,"₫"],"XCD":[u,"$"],"XXX":[]},"ltr", plural_locale_br]; -function plural_zh_HK(n: number): number { - return 5; + + +function plural_locale_bs(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; + +if (v === 0 && (i % 10 === 1 && !(i % 100 === 11)) || f % 10 === 1 && !(f % 100 === 11)) + return 1; +if (v === 0 && (i % 10 === Math.floor(i % 10) && (i % 10 >= 2 && i % 10 <= 4) && !(i % 100 >= 12 && i % 100 <= 14)) || f % 10 === Math.floor(f % 10) && (f % 10 >= 2 && f % 10 <= 4) && !(f % 100 >= 12 && f % 100 <= 14)) + return 3; +return 5; } -export const locale_zh_HK = [ - 'zh-Hant-HK', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['週日', '週一', '週二', '週三', '週四', '週五', '週六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - ['日', '一', '二', '三', '四', '五', '六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], u - ], - u, - [['公元前', '公元'], u, u], - 0, - [6, 0], - ['d/M/y', 'y年M月d日', u, 'y年M月d日EEEE'], - ['ah:mm', 'ah:mm:ss', 'ah:mm:ss [z]', 'ah:mm:ss [zzzz]'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', '非數值', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'HKD', - 'HK$', - '港元', - {'AUD': ['AU$', '$'], 'RON': [u, 'L'], 'USD': ['US$', '$'], 'XXX': []}, - 'ltr', - plural_zh_HK -]; +export const locale_bs = ["bs",[["prijepodne","popodne"],["AM","PM"],["prijepodne","popodne"]],u,[["N","P","U","S","Č","P","S"],["ned","pon","uto","sri","čet","pet","sub"],["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],["ned","pon","uto","sri","čet","pet","sub"]],[["n","p","u","s","č","p","s"],["ned","pon","uto","sri","čet","pet","sub"],["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],["ned","pon","uto","sri","čet","pet","sub"]],[["j","f","m","a","m","j","j","a","s","o","n","d"],["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],["januar","februar","mart","april","maj","juni","juli","august","septembar","oktobar","novembar","decembar"]],u,[["p.n.e.","n.e."],["p. n. e.","n. e."],["prije nove ere","nove ere"]],1,[6,0],["d. M. y.","d. MMM y.","d. MMMM y.","EEEE, d. MMMM y."],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",u,"{1} 'u' {0}",u],[",",".",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0 %","#,##0.00 ¤","#E0"],"BAM","KM","Bosanskohercegovačka konvertibilna marka",{"AUD":[u,"$"],"BAM":["KM"],"BRL":[u,"R$"],"CAD":[u,"$"],"CNY":[u,"¥"],"GBP":[u,"£"],"HKD":[u,"$"],"HRK":["kn"],"ILS":[u,"₪"],"MXN":[u,"$"],"NZD":[u,"$"],"RSD":["din."],"THB":["฿"],"TWD":["NT$"],"USD":[u,"$"],"XCD":[u,"$"],"XPF":[]},"ltr", plural_locale_bs]; -function plural_zh_TW(n: number): number { - return 5; + + +function plural_locale_ca(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +return 5; } -export const locale_zh_TW = [ - 'zh-Hant', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['週日', '週一', '週二', '週三', '週四', '週五', '週六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - ['日', '一', '二', '三', '四', '五', '六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], u - ], - u, - [['西元前', '西元'], u, u], - 0, - [6, 0], - ['y/M/d', 'y年M月d日', u, 'y年M月d日 EEEE'], - ['ah:mm', 'ah:mm:ss', 'ah:mm:ss [z]', 'ah:mm:ss [zzzz]'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', '非數值', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'TWD', - '$', - '新台幣', - { - 'AUD': ['AU$', '$'], - 'KRW': ['₩', '₩'], - 'RON': [u, 'L'], - 'TWD': ['$'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural_zh_TW -]; +export const locale_ca = ["ca",[["a. m.","p. m."],u,u],u,[["dg","dl","dt","dc","dj","dv","ds"],["dg.","dl.","dt.","dc.","dj.","dv.","ds."],["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],["dg.","dl.","dt.","dc.","dj.","dv.","ds."]],u,[["GN","FB","MÇ","AB","MG","JN","JL","AG","ST","OC","NV","DS"],["de gen.","de febr.","de març","d’abr.","de maig","de juny","de jul.","d’ag.","de set.","d’oct.","de nov.","de des."],["de gener","de febrer","de març","d’abril","de maig","de juny","de juliol","d’agost","de setembre","d’octubre","de novembre","de desembre"]],[["GN","FB","MÇ","AB","MG","JN","JL","AG","ST","OC","NV","DS"],["gen.","febr.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des."],["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"]],[["aC","dC"],u,["abans de Crist","després de Crist"]],1,[6,0],["d/M/yy","d MMM y","d MMMM 'de' y","EEEE, d MMMM 'de' y"],["H:mm","H:mm:ss","H:mm:ss z","H:mm:ss zzzz"],["{1} {0}","{1}, {0}","{1} 'a' 'les' {0}",u],[",",".",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","#,##0.00 ¤","#E0"],"EUR","€","euro",{"AUD":["AU$","$"],"BRL":[u,"R$"],"CAD":[u,"$"],"CNY":[u,"¥"],"ESP":["₧"],"MXN":[u,"$"],"THB":["฿"],"USD":[u,"$"],"VEF":[u,"Bs F"],"XCD":[u,"$"],"XXX":[]},"ltr", plural_locale_ca]; -function plural_zu(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; + + +function plural_locale_chr(n: number): number { + +if (n === 1) + return 1; +return 5; } -export const locale_zu = [ - 'zu', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'B', 'T', 'S', 'H', 'M'], ['Son', 'Mso', 'Bil', 'Tha', 'Sin', 'Hla', 'Mgq'], - ['ISonto', 'UMsombuluko', 'ULwesibili', 'ULwesithathu', 'ULwesine', 'ULwesihlanu', 'UMgqibelo'], - ['Son', 'Mso', 'Bil', 'Tha', 'Sin', 'Hla', 'Mgq'] - ], - u, - [ - ['J', 'F', 'M', 'E', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mas', 'Eph', 'Mey', 'Jun', 'Jul', 'Aga', 'Sep', 'Okt', 'Nov', 'Dis'], - [ - 'Januwari', 'Februwari', 'Mashi', 'Ephreli', 'Meyi', 'Juni', 'Julayi', 'Agasti', 'Septhemba', - 'Okthoba', 'Novemba', 'Disemba' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mas', 'Eph', 'Mey', 'Jun', 'Jul', 'Aga', 'Sep', 'Okt', 'Nov', 'Dis'], - [ - 'Januwari', 'Februwari', 'Mashi', 'Ephreli', 'Meyi', 'Juni', 'Julayi', 'Agasti', 'Septhemba', - 'Okthoba', 'Novemba', 'Disemba' - ] - ], - [['BC', 'AD'], u, u], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZAR', - 'R', - 'i-South African Rand', - { - 'BYN': [u, 'P.'], - 'DKK': [u, 'Kr'], - 'HRK': [u, 'Kn'], - 'ISK': [u, 'Kr'], - 'JPY': ['JP¥', '¥'], - 'NOK': [u, 'Kr'], - 'PLN': [u, 'Zł'], - 'SEK': [u, 'Kr'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'ZAR': ['R'] - }, - 'ltr', - plural_zu -]; +export const locale_chr = ["chr",[["Ꮜ","Ꮢ"],["ᏌᎾᎴ","ᏒᎯᏱᎢ"],["ᏌᎾᎴ","ᏒᎯᏱᎢᏗᏢ"]],[["ᏌᎾᎴ","ᏒᎯᏱᎢ"],u,["ᏌᎾᎴ","ᏒᎯᏱᎢᏗᏢ"]],[["Ꮖ","Ꮙ","Ꮤ","Ꮶ","Ꮕ","Ꮷ","Ꭴ"],["ᏆᏍᎬ","ᏉᏅᎯ","ᏔᎵᏁ","ᏦᎢᏁ","ᏅᎩᏁ","ᏧᎾᎩ","ᏈᏕᎾ"],["ᎤᎾᏙᏓᏆᏍᎬ","ᎤᎾᏙᏓᏉᏅᎯ","ᏔᎵᏁᎢᎦ","ᏦᎢᏁᎢᎦ","ᏅᎩᏁᎢᎦ","ᏧᎾᎩᎶᏍᏗ","ᎤᎾᏙᏓᏈᏕᎾ"],["ᏍᎬ","ᏅᎯ","ᏔᎵ","ᏦᎢ","ᏅᎩ","ᏧᎾ","ᏕᎾ"]],u,[["Ꭴ","Ꭷ","Ꭰ","Ꭷ","Ꭰ","Ꮥ","Ꭻ","Ꭶ","Ꮪ","Ꮪ","Ꮕ","Ꭵ"],["ᎤᏃ","ᎧᎦ","ᎠᏅ","ᎧᏬ","ᎠᏂ","ᏕᎭ","ᎫᏰ","ᎦᎶ","ᏚᎵ","ᏚᏂ","ᏅᏓ","ᎥᏍ"],["ᎤᏃᎸᏔᏅ","ᎧᎦᎵ","ᎠᏅᏱ","ᎧᏬᏂ","ᎠᏂᏍᎬᏘ","ᏕᎭᎷᏱ","ᎫᏰᏉᏂ","ᎦᎶᏂ","ᏚᎵᏍᏗ","ᏚᏂᏅᏗ","ᏅᏓᏕᏆ","ᎥᏍᎩᏱ"]],u,[["BC","AD"],u,["ᏧᏓᎷᎸ ᎤᎷᎯᏍᏗ ᎦᎶᏁᏛ","ᎠᏃ ᏙᎻᏂ"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",u,"{1} ᎤᎾᎢ {0}",u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"USD","$","US ᎠᏕᎳ",{"JPY":["JP¥","¥"]},"ltr", plural_locale_chr]; + + + +function plural_locale_cs(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +if (i === Math.floor(i) && (i >= 2 && i <= 4) && v === 0) + return 3; +if (!(v === 0)) + return 4; +return 5; +} + +export const locale_cs = ["cs",[["dop.","odp."],u,u],u,[["N","P","Ú","S","Č","P","S"],["ne","po","út","st","čt","pá","so"],["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],["ne","po","út","st","čt","pá","so"]],u,[["1","2","3","4","5","6","7","8","9","10","11","12"],["led","úno","bře","dub","kvě","čvn","čvc","srp","zář","říj","lis","pro"],["ledna","února","března","dubna","května","června","července","srpna","září","října","listopadu","prosince"]],[["1","2","3","4","5","6","7","8","9","10","11","12"],["led","úno","bře","dub","kvě","čvn","čvc","srp","zář","říj","lis","pro"],["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"]],[["př.n.l.","n.l."],["př. n. l.","n. l."],["před naším letopočtem","našeho letopočtu"]],1,[6,0],["dd.MM.yy","d. M. y","d. MMMM y","EEEE d. MMMM y"],["H:mm","H:mm:ss","H:mm:ss z","H:mm:ss zzzz"],["{1} {0}",u,u,u],[","," ",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0 %","#,##0.00 ¤","#E0"],"CZK","Kč","česká koruna",{"AUD":["AU$","$"],"CSK":["Kčs"],"CZK":["Kč"],"ILS":[u,"₪"],"INR":[u,"₹"],"JPY":["JP¥","¥"],"RON":[u,"L"],"TWD":["NT$"],"USD":["US$","$"],"VND":[u,"₫"],"XEU":["ECU"],"XXX":[]},"ltr", plural_locale_cs]; + + + +function plural_locale_cy(n: number): number { + +if (n === 0) + return 0; +if (n === 1) + return 1; +if (n === 2) + return 2; +if (n === 3) + return 3; +if (n === 6) + return 4; +return 5; +} + +export const locale_cy = ["cy",[["b","h"],["AM","PM"],["yb","yh"]],[["AM","PM"],u,u],[["S","Ll","M","M","I","G","S"],["Sul","Llun","Maw","Mer","Iau","Gwen","Sad"],["Dydd Sul","Dydd Llun","Dydd Mawrth","Dydd Mercher","Dydd Iau","Dydd Gwener","Dydd Sadwrn"],["Su","Ll","Ma","Me","Ia","Gw","Sa"]],[["S","Ll","M","M","I","G","S"],["Sul","Llun","Maw","Mer","Iau","Gwe","Sad"],["Dydd Sul","Dydd Llun","Dydd Mawrth","Dydd Mercher","Dydd Iau","Dydd Gwener","Dydd Sadwrn"],["Su","Ll","Ma","Me","Ia","Gw","Sa"]],[["I","Ch","M","E","M","M","G","A","M","H","T","Rh"],["Ion","Chwef","Maw","Ebr","Mai","Meh","Gorff","Awst","Medi","Hyd","Tach","Rhag"],["Ionawr","Chwefror","Mawrth","Ebrill","Mai","Mehefin","Gorffennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"]],[["I","Ch","M","E","M","M","G","A","M","H","T","Rh"],["Ion","Chw","Maw","Ebr","Mai","Meh","Gor","Awst","Medi","Hyd","Tach","Rhag"],["Ionawr","Chwefror","Mawrth","Ebrill","Mai","Mehefin","Gorffennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"]],[["C","O"],["CC","OC"],["Cyn Crist","Oed Crist"]],1,[6,0],["dd/MM/yy","d MMM y","d MMMM y","EEEE, d MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",u,"{1} 'am' {0}",u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"GBP","£","Punt Prydain",{"BDT":[u,"TK"],"BWP":[],"HKD":["HK$"],"JPY":["JP¥","¥"],"KRW":[u,"₩"],"THB":["฿"],"TWD":["NT$"],"USD":["US$","$"],"XXX":[],"ZAR":[],"ZMW":[]},"ltr", plural_locale_cy]; + + + +function plural_locale_da(n: number): number { +const i = Math.floor(Math.abs(n)), t = parseInt(n.toString().replace(/^[^.]*\.?|0+$/g, ''), 10) || 0; + +if (n === 1 || !(t === 0) && (i === 0 || i === 1)) + return 1; +return 5; +} + +export const locale_da = ["da",[["a","p"],["AM","PM"],u],[["AM","PM"],u,u],[["S","M","T","O","T","F","L"],["søn.","man.","tir.","ons.","tor.","fre.","lør."],["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],["sø","ma","ti","on","to","fr","lø"]],[["S","M","T","O","T","F","L"],["søn","man","tir","ons","tor","fre","lør"],["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],["sø","ma","ti","on","to","fr","lø"]],[["J","F","M","A","M","J","J","A","S","O","N","D"],["jan.","feb.","mar.","apr.","maj","jun.","jul.","aug.","sep.","okt.","nov.","dec."],["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"]],u,[["fKr","eKr"],["f.Kr.","e.Kr."],u],1,[6,0],["dd.MM.y","d. MMM y","d. MMMM y","EEEE 'den' d. MMMM y"],["HH.mm","HH.mm.ss","HH.mm.ss z","HH.mm.ss zzzz"],["{1} {0}",u,"{1} 'kl'. {0}",u],[",",".",";","%","+","-","E","×","‰","∞","NaN","."],["#,##0.###","#,##0 %","#,##0.00 ¤","#E0"],"DKK","kr.","dansk krone",{"AUD":["AU$","$"],"DKK":["kr."],"ISK":[u,"kr."],"JPY":["JP¥","¥"],"NOK":[u,"kr."],"RON":[u,"L"],"SEK":[u,"kr."],"THB":["฿"],"TWD":["NT$"],"USD":["US$","$"]},"ltr", plural_locale_da]; + + + +function plural_locale_de(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +return 5; +} + +export const locale_de = ["de",[["AM","PM"],u,u],u,[["S","M","D","M","D","F","S"],["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."]],[["S","M","D","M","D","F","S"],["So","Mo","Di","Mi","Do","Fr","Sa"],["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."]],[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan.","Feb.","März","Apr.","Mai","Juni","Juli","Aug.","Sept.","Okt.","Nov.","Dez."],["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]],[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]],[["v. Chr.","n. Chr."],u,u],1,[6,0],["dd.MM.yy","dd.MM.y","d. MMMM y","EEEE, d. MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",u,"{1} 'um' {0}",u],[",",".",";","%","+","-","E","·","‰","∞","NaN",":"],["#,##0.###","#,##0 %","#,##0.00 ¤","#E0"],"EUR","€","Euro",{"ATS":["öS"],"AUD":["AU$","$"],"BGM":["BGK"],"BGO":["BGJ"],"CUC":[u,"Cub$"],"DEM":["DM"],"FKP":[u,"Fl£"],"GNF":[u,"F.G."],"KMF":[u,"FC"],"RON":[u,"L"],"RWF":[u,"F.Rw"],"SYP":[],"THB":["฿"],"TWD":["NT$"],"XXX":[],"ZMW":[u,"K"]},"ltr", plural_locale_de]; + + + +function plural_locale_de_AT(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +return 5; +} + +export const locale_de_AT = ["de-AT",[["AM","PM"],u,u],[["vm.","nm."],["AM","PM"],u],[["S","M","D","M","D","F","S"],["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."]],[["S","M","D","M","D","F","S"],["So","Mo","Di","Mi","Do","Fr","Sa"],["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."]],[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jän.","Feb.","März","Apr.","Mai","Juni","Juli","Aug.","Sep.","Okt.","Nov.","Dez."],["Jänner","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]],[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jän","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],["Jänner","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]],[["v. Chr.","n. Chr."],u,u],1,[6,0],["dd.MM.yy","dd.MM.y","d. MMMM y","EEEE, d. MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",u,"{1} 'um' {0}",u],[","," ",";","%","+","-","E","·","‰","∞","NaN",":",u,"."],["#,##0.###","#,##0 %","¤ #,##0.00","#E0"],"EUR","€","Euro",{"ATS":["öS"],"AUD":["AU$","$"],"BGM":["BGK"],"BGO":["BGJ"],"CUC":[u,"Cub$"],"DEM":["DM"],"FKP":[u,"Fl£"],"GNF":[u,"F.G."],"KMF":[u,"FC"],"RON":[u,"L"],"RWF":[u,"F.Rw"],"SYP":[],"THB":["฿"],"TWD":["NT$"],"XXX":[],"ZMW":[u,"K"]},"ltr", plural_locale_de_AT]; + + + +function plural_locale_de_CH(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +return 5; +} + +export const locale_de_CH = ["de-CH",[["AM","PM"],u,u],u,[["S","M","D","M","D","F","S"],["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],["So","Mo","Di","Mi","Do","Fr","Sa"]],[["S","M","D","M","D","F","S"],["So","Mo","Di","Mi","Do","Fr","Sa"],["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."]],[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan.","Feb.","März","Apr.","Mai","Juni","Juli","Aug.","Sept.","Okt.","Nov.","Dez."],["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]],[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]],[["v. Chr.","n. Chr."],u,u],1,[6,0],["dd.MM.yy","dd.MM.y","d. MMMM y","EEEE, d. MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",u,"{1} 'um' {0}",u],[".","’",";","%","+","-","E","·","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤ #,##0.00;¤-#,##0.00","#E0"],"CHF","CHF","Schweizer Franken",{"ATS":["öS"],"AUD":["AU$","$"],"BGM":["BGK"],"BGO":["BGJ"],"CUC":[u,"Cub$"],"DEM":["DM"],"EUR":[],"FKP":[u,"Fl£"],"GNF":[u,"F.G."],"KMF":[u,"FC"],"RON":[u,"L"],"RWF":[u,"F.Rw"],"SYP":[],"THB":["฿"],"TWD":["NT$"],"XXX":[],"ZMW":[u,"K"]},"ltr", plural_locale_de_CH]; + + + +function plural_locale_el(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_el = ["el",[["πμ","μμ"],["π.μ.","μ.μ."],u],u,[["Κ","Δ","Τ","Τ","Π","Π","Σ"],["Κυρ","Δευ","Τρί","Τετ","Πέμ","Παρ","Σάβ"],["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],["Κυ","Δε","Τρ","Τε","Πέ","Πα","Σά"]],u,[["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Ν","Δ"],["Ιαν","Φεβ","Μαρ","Απρ","Μαΐ","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],["Ιανουαρίου","Φεβρουαρίου","Μαρτίου","Απριλίου","Μαΐου","Ιουνίου","Ιουλίου","Αυγούστου","Σεπτεμβρίου","Οκτωβρίου","Νοεμβρίου","Δεκεμβρίου"]],[["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Ν","Δ"],["Ιαν","Φεβ","Μάρ","Απρ","Μάι","Ιούν","Ιούλ","Αύγ","Σεπ","Οκτ","Νοέ","Δεκ"],["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"]],[["π.Χ.","μ.Χ."],u,["προ Χριστού","μετά Χριστόν"]],1,[6,0],["d/M/yy","d MMM y","d MMMM y","EEEE, d MMMM y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",u,"{1} - {0}",u],[",",".",";","%","+","-","e","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","#,##0.00 ¤","#E0"],"EUR","€","Ευρώ",{"GRD":["Δρχ"],"JPY":["JP¥","¥"],"THB":["฿"]},"ltr", plural_locale_el]; + + + +function plural_locale_en_AU(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +return 5; +} + +export const locale_en_AU = ["en-AU",[["am","pm"],u,u],u,[["Su.","M.","Tu.","W.","Th.","F.","Sa."],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mon","Tu","Wed","Th","Fri","Sat"]],u,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],u,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["d/M/yy","d MMM y","d MMMM y","EEEE, d MMMM y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",u,"{1} 'at' {0}",u],[".",",",";","%","+","-","e","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"AUD","$","Australian Dollar",{"AUD":["$"],"BDT":[u,"Tk"],"BOB":[u,"$b"],"BRL":[u,"R$"],"CAD":[u,"$"],"CNY":[u,"¥"],"CUP":[u,"₱"],"EGP":[u,"£"],"EUR":[u,"€"],"GBP":[u,"£"],"HKD":[u,"$"],"ILS":[u,"₪"],"INR":[u,"₹"],"ISK":[u,"Kr"],"JPY":[u,"¥"],"KRW":[u,"₩"],"MXN":[u,"$"],"NZD":[u,"$"],"PYG":[u,"Gs"],"SCR":["Rs"],"SEK":[u,"Kr"],"TWD":[u,"$"],"USD":[u,"$"],"UYU":[u,"$U"],"VND":[u,"₫"],"XAF":[],"XCD":[u,"$"],"XOF":[],"XPF":["CFP"]},"ltr", plural_locale_en_AU]; + + + +function plural_locale_en_CA(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +return 5; +} + +export const locale_en_CA = ["en-CA",[["am","pm"],["a.m.","p.m."],u],[["a.m.","pm"],["a.m.","p.m."],u],[["S","M","T","W","T","F","S"],["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],u,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan.","Feb.","Mar.","Apr.","May","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec."],["January","February","March","April","May","June","July","August","September","October","November","December"]],u,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["y-MM-dd","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",u,"{1} 'at' {0}",u],[".",",",";","%","+","-","e","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"CAD","$","Canadian Dollar",{"CAD":["$"],"JPY":["JP¥","¥"],"USD":["US$","$"]},"ltr", plural_locale_en_CA]; + + + +function plural_locale_en_GB(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +return 5; +} + +export const locale_en_GB = ["en-GB",[["a","p"],["am","pm"],u],[["am","pm"],u,u],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],u,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],u,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],1,[6,0],["dd/MM/y","d MMM y","d MMMM y","EEEE, d MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",u,"{1} 'at' {0}",u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"GBP","£","British Pound",{"JPY":["JP¥","¥"],"USD":["US$","$"]},"ltr", plural_locale_en_GB]; + + + +function plural_locale_en_IE(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +return 5; +} + +export const locale_en_IE = ["en-IE",[["a","p"],["am","pm"],["a.m.","p.m."]],[["am","pm"],u,u],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],u,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],u,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],1,[6,0],["dd/MM/y","d MMM y","d MMMM y","EEEE d MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",u,"{1} 'at' {0}",u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"EUR","€","Euro",{"JPY":["JP¥","¥"],"USD":["US$","$"]},"ltr", plural_locale_en_IE]; + + + +function plural_locale_en_IN(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +return 5; +} + +export const locale_en_IN = ["en-IN",[["a","p"],["am","pm"],u],[["am","pm"],u,u],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],u,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],u,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[0,0],["dd/MM/yy","dd-MMM-y","d MMMM y","EEEE, d MMMM, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",u,"{1} 'at' {0}",u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##,##0.###","#,##,##0%","¤#,##,##0.00","#E0"],"INR","₹","Indian Rupee",{"JPY":["JP¥","¥"],"USD":["US$","$"]},"ltr", plural_locale_en_IN]; + + + +function plural_locale_en_SG(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +return 5; +} + +export const locale_en_SG = ["en-SG",[["a","p"],["am","pm"],u],[["am","pm"],u,u],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],u,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],u,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["d/M/yy","d MMM y","d MMMM y","EEEE, d MMMM y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",u,"{1} 'at' {0}",u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"SGD","$","Singapore Dollar",{"JPY":["JP¥","¥"],"SGD":["$"],"USD":["US$","$"]},"ltr", plural_locale_en_SG]; + + + +function plural_locale_en_ZA(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +return 5; +} + +export const locale_en_ZA = ["en-ZA",[["a","p"],["am","pm"],u],[["am","pm"],u,u],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],u,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],u,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["y/MM/dd","dd MMM y","dd MMMM y","EEEE, dd MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",u,"{1} 'at' {0}",u],[","," ",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"ZAR","R","South African Rand",{"JPY":["JP¥","¥"],"USD":["US$","$"],"ZAR":["R"]},"ltr", plural_locale_en_ZA]; + + + +function plural_locale_es(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_es = ["es",[["a. m.","p. m."],u,u],u,[["D","L","M","X","J","V","S"],["dom.","lun.","mar.","mié.","jue.","vie.","sáb."],["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],["DO","LU","MA","MI","JU","VI","SA"]],u,[["E","F","M","A","M","J","J","A","S","O","N","D"],["ene.","feb.","mar.","abr.","may.","jun.","jul.","ago.","sept.","oct.","nov.","dic."],["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"]],u,[["a. C.","d. C."],u,["antes de Cristo","después de Cristo"]],1,[6,0],["d/M/yy","d MMM y","d 'de' MMMM 'de' y","EEEE, d 'de' MMMM 'de' y"],["H:mm","H:mm:ss","H:mm:ss z","H:mm:ss (zzzz)"],["{1} {0}",u,"{1}, {0}",u],[",",".",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0 %","#,##0.00 ¤","#E0"],"EUR","€","euro",{"AUD":[u,"$"],"BRL":[u,"R$"],"CNY":[u,"¥"],"EGP":[],"ESP":["₧"],"GBP":[u,"£"],"HKD":[u,"$"],"ILS":[u,"₪"],"INR":[u,"₹"],"JPY":[u,"¥"],"KRW":[u,"₩"],"MXN":[u,"$"],"NZD":[u,"$"],"RON":[u,"L"],"THB":["฿"],"TWD":[u,"NT$"],"USD":["US$","$"],"XAF":[],"XCD":[u,"$"],"XOF":[]},"ltr", plural_locale_es]; + + + +function plural_locale_es_419(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_es_419 = ["es-419",[["a. m.","p. m."],["a.m.","p.m."],u],u,[["d","l","m","m","j","v","s"],["dom.","lun.","mar.","mié.","jue.","vie.","sáb."],["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],["DO","LU","MA","MI","JU","VI","SA"]],[["D","L","M","M","J","V","S"],["dom.","lun.","mar.","mié.","jue.","vie.","sáb."],["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],["DO","LU","MA","MI","JU","VI","SA"]],[["E","F","M","A","M","J","J","A","S","O","N","D"],["ene.","feb.","mar.","abr.","may.","jun.","jul.","ago.","sep.","oct.","nov.","dic."],["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"]],u,[["a. C.","d. C."],u,["antes de Cristo","después de Cristo"]],1,[6,0],["d/M/yy","d MMM y","d 'de' MMMM 'de' y","EEEE, d 'de' MMMM 'de' y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",u,"{1} 'a' 'las' {0}",u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0 %","¤#,##0.00","#E0"],"EUR","EUR","euro",{"AUD":[u,"$"],"BRL":[u,"R$"],"CAD":[u,"$"],"CNY":[u,"¥"],"ESP":["₧"],"EUR":[u,"€"],"FKP":[u,"FK£"],"GBP":[u,"£"],"HKD":[u,"$"],"ILS":[u,"₪"],"INR":[u,"₹"],"JPY":[u,"¥"],"KRW":[u,"₩"],"MXN":[u,"$"],"NZD":[u,"$"],"RON":[u,"L"],"SSP":[u,"SD£"],"SYP":[u,"S£"],"TWD":[u,"NT$"],"USD":[u,"$"],"VEF":[u,"BsF"],"VND":[u,"₫"],"XAF":[],"XCD":[u,"$"],"XOF":[]},"ltr", plural_locale_es_419]; + + + +function plural_locale_es_MX(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_es_MX = ["es-MX",[["a. m.","p. m."],u,u],u,[["D","L","M","M","J","V","S"],["dom.","lun.","mar.","mié.","jue.","vie.","sáb."],["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],["DO","LU","MA","MI","JU","VI","SA"]],u,[["E","F","M","A","M","J","J","A","S","O","N","D"],["ene.","feb.","mar.","abr.","may.","jun.","jul.","ago.","sep.","oct.","nov.","dic."],["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"]],u,[["a. C.","d. C."],u,["antes de Cristo","después de Cristo"]],0,[6,0],["dd/MM/yy","d MMM y","d 'de' MMMM 'de' y","EEEE, d 'de' MMMM 'de' y"],["H:mm","H:mm:ss","H:mm:ss z","H:mm:ss zzzz"],["{1} {0}",u,"{1} 'a' 'las' {0}",u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0 %","¤#,##0.00","#E0"],"MXN","$","peso mexicano",{"AUD":[u,"$"],"BRL":[u,"R$"],"BYN":[u,"p."],"CAD":[u,"$"],"CNY":[u,"¥"],"ESP":["₧"],"EUR":[u,"€"],"GBP":[u,"£"],"HKD":[u,"$"],"ILS":[u,"₪"],"INR":[u,"₹"],"JPY":[u,"¥"],"KRW":[u,"₩"],"MRO":["MRU"],"MRU":["UM"],"MXN":["$"],"NZD":[u,"$"],"TWD":[u,"NT$"],"USD":[u,"$"],"VND":[u,"₫"],"XAF":[],"XCD":[u,"$"],"XOF":[]},"ltr", plural_locale_es_MX]; + + + +function plural_locale_es_US(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_es_US = ["es-US",[["a. m.","p. m."],u,u],u,[["D","L","M","M","J","V","S"],["dom.","lun.","mar.","mié.","jue.","vie.","sáb."],["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],["DO","LU","MA","MI","JU","VI","SA"]],u,[["E","F","M","A","M","J","J","A","S","O","N","D"],["ene.","feb.","mar.","abr.","may.","jun.","jul.","ago.","sep.","oct.","nov.","dic."],["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"]],u,[["a. C.","d. C."],u,["antes de Cristo","después de Cristo"]],0,[6,0],["d/M/y","d MMM y","d 'de' MMMM 'de' y","EEEE, d 'de' MMMM 'de' y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1} {0}",u,"{1} 'a' 'las' {0}",u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0 %","¤#,##0.00","#E0"],"USD","$","dólar estadounidense",{"AUD":[u,"$"],"BRL":[u,"R$"],"BYN":[u,"p."],"CAD":[u,"$"],"CNY":[u,"¥"],"ESP":["₧"],"EUR":[u,"€"],"GBP":[u,"£"],"HKD":[u,"$"],"ILS":[u,"₪"],"INR":[u,"₹"],"KRW":[u,"₩"],"MXN":[u,"$"],"NZD":[u,"$"],"TWD":[u,"NT$"],"VND":[u,"₫"],"XAF":[],"XCD":[u,"$"],"XOF":[]},"ltr", plural_locale_es_US]; + + + +function plural_locale_et(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +return 5; +} + +export const locale_et = ["et",[["AM","PM"],u,u],u,[["P","E","T","K","N","R","L"],u,["pühapäev","esmaspäev","teisipäev","kolmapäev","neljapäev","reede","laupäev"],["P","E","T","K","N","R","L"]],u,[["J","V","M","A","M","J","J","A","S","O","N","D"],["jaan","veebr","märts","apr","mai","juuni","juuli","aug","sept","okt","nov","dets"],["jaanuar","veebruar","märts","aprill","mai","juuni","juuli","august","september","oktoober","november","detsember"]],u,[["eKr","pKr"],u,["enne Kristust","pärast Kristust"]],1,[6,0],["dd.MM.yy","d. MMM y","d. MMMM y","EEEE, d. MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",u,u,u],[","," ",";","%","+","−","×10^","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","#,##0.00 ¤","#E0"],"EUR","€","euro",{"AUD":["AU$","$"],"EEK":["kr"],"THB":["฿"],"TWD":["NT$"]},"ltr", plural_locale_et]; + + + +function plural_locale_eu(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_eu = ["eu",[["g","a"],["AM","PM"],u],[["AM","PM"],u,u],[["I","A","A","A","O","O","L"],["ig.","al.","ar.","az.","og.","or.","lr."],["igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata"],["ig.","al.","ar.","az.","og.","or.","lr."]],u,[["U","O","M","A","M","E","U","A","I","U","A","A"],["urt.","ots.","mar.","api.","mai.","eka.","uzt.","abu.","ira.","urr.","aza.","abe."],["urtarrilak","otsailak","martxoak","apirilak","maiatzak","ekainak","uztailak","abuztuak","irailak","urriak","azaroak","abenduak"]],[["U","O","M","A","M","E","U","A","I","U","A","A"],["urt.","ots.","mar.","api.","mai.","eka.","uzt.","abu.","ira.","urr.","aza.","abe."],["urtarrila","otsaila","martxoa","apirila","maiatza","ekaina","uztaila","abuztua","iraila","urria","azaroa","abendua"]],[["K.a.","K.o."],u,["K.a.","Kristo ondoren"]],1,[6,0],["yy/M/d","y('e')'ko' MMM d('a')","y('e')'ko' MMMM'ren' d('a')","y('e')'ko' MMMM'ren' d('a'), EEEE"],["HH:mm","HH:mm:ss","HH:mm:ss (z)","HH:mm:ss (zzzz)"],["{1} {0}",u,u,u],[",",".",";","%","+","−","E","×","‰","∞","NaN",":"],["#,##0.###","% #,##0","#,##0.00 ¤","#E0"],"EUR","€","euroa",{"ESP":["₧"],"JPY":["JP¥","¥"],"THB":["฿"],"TWD":["NT$"],"USD":["US$","$"]},"ltr", plural_locale_eu]; + + + +function plural_locale_fa(n: number): number { +const i = Math.floor(Math.abs(n)); + +if (i === 0 || n === 1) + return 1; +return 5; +} + +export const locale_fa = ["fa",[["ق","ب"],["ق.ظ.","ب.ظ."],["قبل‌ازظهر","بعدازظهر"]],u,[["ی","د","س","چ","پ","ج","ش"],["یکشنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],u,["۱ش","۲ش","۳ش","۴ش","۵ش","ج","ش"]],u,[["ژ","ف","م","آ","م","ژ","ژ","ا","س","ا","ن","د"],["ژانویهٔ","فوریهٔ","مارس","آوریل","مهٔ","ژوئن","ژوئیهٔ","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],u],[["ژ","ف","م","آ","م","ژ","ژ","ا","س","ا","ن","د"],["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],u],[["ق","م"],["ق.م.","م."],["قبل از میلاد","میلادی"]],6,[5,5],["y/M/d","d MMM y","d MMMM y","EEEE d MMMM y"],["H:mm","H:mm:ss","H:mm:ss (z)","H:mm:ss (zzzz)"],["{1}،‏ {0}",u,"{1}، ساعت {0}",u],[".",",",";","%","‎+","‎−","E","×","‰","∞","ناعدد",":"],["#,##0.###","#,##0%","‎¤ #,##0.00","#E0"],"IRR","ریال","ریال ایران",{"AFN":["؋"],"CAD":["$CA","$"],"CNY":["¥CN","¥"],"HKD":["$HK","$"],"IRR":["ریال"],"MXN":["$MX","$"],"NZD":["$NZ","$"],"THB":["฿"],"XCD":["$EC","$"]},"rtl", plural_locale_fa]; + + + +function plural_locale_fi(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +return 5; +} + +export const locale_fi = ["fi",[["ap.","ip."],u,u],u,[["S","M","T","K","T","P","L"],["su","ma","ti","ke","to","pe","la"],["sunnuntaina","maanantaina","tiistaina","keskiviikkona","torstaina","perjantaina","lauantaina"],["su","ma","ti","ke","to","pe","la"]],[["S","M","T","K","T","P","L"],["su","ma","ti","ke","to","pe","la"],["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],["su","ma","ti","ke","to","pe","la"]],[["T","H","M","H","T","K","H","E","S","L","M","J"],["tammik.","helmik.","maalisk.","huhtik.","toukok.","kesäk.","heinäk.","elok.","syysk.","lokak.","marrask.","jouluk."],["tammikuuta","helmikuuta","maaliskuuta","huhtikuuta","toukokuuta","kesäkuuta","heinäkuuta","elokuuta","syyskuuta","lokakuuta","marraskuuta","joulukuuta"]],[["T","H","M","H","T","K","H","E","S","L","M","J"],["tammi","helmi","maalis","huhti","touko","kesä","heinä","elo","syys","loka","marras","joulu"],["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"]],[["eKr","jKr"],["eKr.","jKr."],["ennen Kristuksen syntymää","jälkeen Kristuksen syntymän"]],1,[6,0],["d.M.y",u,"d. MMMM y","cccc d. MMMM y"],["H.mm","H.mm.ss","H.mm.ss z","H.mm.ss zzzz"],["{1} {0}","{1} 'klo' {0}",u,u],[","," ",";","%","+","−","E","×","‰","∞","epäluku","."],["#,##0.###","#,##0 %","#,##0.00 ¤","#E0"],"EUR","€","euro",{"AOA":[],"ARS":[],"AUD":[],"BAM":[],"BBD":[],"BDT":[],"BMD":[],"BND":[],"BOB":[],"BRL":[],"BSD":[],"BWP":[],"BYN":[],"BZD":[],"CAD":[],"CLP":[],"CNY":[],"COP":[],"CRC":[],"CUC":[],"CUP":[],"CZK":[],"DKK":[],"DOP":[],"EGP":[],"ESP":[],"FIM":["mk"],"FJD":[],"FKP":[],"GEL":[],"GIP":[],"GNF":[],"GTQ":[],"GYD":[],"HKD":[],"HNL":[],"HRK":[],"HUF":[],"IDR":[],"ILS":[],"INR":[],"ISK":[],"JMD":[],"KHR":[],"KMF":[],"KPW":[],"KRW":[],"KYD":[],"KZT":[],"LAK":[],"LBP":[],"LKR":[],"LRD":[],"LTL":[],"LVL":[],"MGA":[],"MMK":[],"MNT":[],"MUR":[],"MXN":[],"MYR":[],"NAD":[],"NGN":[],"NIO":[],"NOK":[],"NPR":[],"NZD":[],"PHP":[],"PKR":[],"PLN":[],"PYG":[],"RON":[],"RUR":[],"RWF":[],"SBD":[],"SEK":[],"SGD":[],"SHP":[],"SRD":[],"SSP":[],"STN":[u,"STD"],"SYP":[],"THB":[],"TOP":[],"TRY":[],"TTD":[],"TWD":[],"UAH":[],"UYU":[],"VEF":[],"VND":[],"XCD":[],"XPF":[],"XXX":[],"ZAR":[],"ZMW":[]},"ltr", plural_locale_fi]; + + + +function plural_locale_fr(n: number): number { +const i = Math.floor(Math.abs(n)); + +if (i === 0 || i === 1) + return 1; +return 5; +} + +export const locale_fr = ["fr",[["AM","PM"],u,u],u,[["D","L","M","M","J","V","S"],["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],["di","lu","ma","me","je","ve","sa"]],u,[["J","F","M","A","M","J","J","A","S","O","N","D"],["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"]],u,[["av. J.-C.","ap. J.-C."],u,["avant Jésus-Christ","après Jésus-Christ"]],1,[6,0],["dd/MM/y","d MMM y","d MMMM y","EEEE d MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}","{1} 'à' {0}",u,u],[","," ",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0 %","#,##0.00 ¤","#E0"],"EUR","€","euro",{"ARS":["$AR","$"],"AUD":["$AU","$"],"BEF":["FB"],"BMD":["$BM","$"],"BND":["$BN","$"],"BZD":["$BZ","$"],"CAD":["$CA","$"],"CLP":["$CL","$"],"CNY":[u,"¥"],"COP":["$CO","$"],"CYP":["£CY"],"EGP":[u,"£E"],"FJD":["$FJ","$"],"FKP":["£FK","£"],"FRF":["F"],"GBP":["£GB","£"],"GIP":["£GI","£"],"HKD":[u,"$"],"IEP":["£IE"],"ILP":["£IL"],"ITL":["₤IT"],"JPY":[u,"¥"],"KMF":[u,"FC"],"LBP":["£LB","£L"],"MTP":["£MT"],"MXN":["$MX","$"],"NAD":["$NA","$"],"NIO":[u,"$C"],"NZD":["$NZ","$"],"RHD":["$RH"],"RON":[u,"L"],"RWF":[u,"FR"],"SBD":["$SB","$"],"SGD":["$SG","$"],"SRD":["$SR","$"],"TOP":[u,"$T"],"TTD":["$TT","$"],"TWD":[u,"NT$"],"USD":["$US","$"],"UYU":["$UY","$"],"WST":["$WS"],"XCD":[u,"$"],"XPF":["FCFP"],"ZMW":[u,"Kw"]},"ltr", plural_locale_fr]; + + + +function plural_locale_fr_CA(n: number): number { +const i = Math.floor(Math.abs(n)); + +if (i === 0 || i === 1) + return 1; +return 5; +} + +export const locale_fr_CA = ["fr-CA",[["a","p"],["a.m.","p.m."],u],[["a.m.","p.m."],u,u],[["D","L","M","M","J","V","S"],["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],["di","lu","ma","me","je","ve","sa"]],u,[["J","F","M","A","M","J","J","A","S","O","N","D"],["janv.","févr.","mars","avr.","mai","juin","juill.","août","sept.","oct.","nov.","déc."],["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"]],u,[["av. J.-C.","ap. J.-C."],u,["avant Jésus-Christ","après Jésus-Christ"]],0,[6,0],["y-MM-dd","d MMM y","d MMMM y","EEEE d MMMM y"],["HH 'h' mm","HH 'h' mm 'min' ss 's'","HH 'h' mm 'min' ss 's' z","HH 'h' mm 'min' ss 's' zzzz"],["{1} {0}",u,"{1} 'à' {0}",u],[","," ",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0 %","#,##0.00 ¤","#E0"],"CAD","$","dollar canadien",{"AUD":["$ AU","$"],"BEF":["FB"],"BYN":[u,"Br"],"CAD":["$"],"CYP":["£CY"],"EGP":[u,"£E"],"FRF":["F"],"GEL":[],"HKD":["$ HK","$"],"IEP":["£IE"],"ILP":["£IL"],"ILS":[u,"₪"],"INR":[u,"₹"],"ITL":["₤IT"],"KRW":[u,"₩"],"LBP":[u,"£L"],"MTP":["£MT"],"MXN":[u,"$"],"NZD":["$ NZ","$"],"RHD":["$RH"],"RON":[u,"L"],"RWF":[u,"FR"],"SGD":["$ SG","$"],"TOP":[u,"$T"],"TWD":[u,"NT$"],"USD":["$ US","$"],"VND":[u,"₫"],"XAF":[],"XCD":[u,"$"],"XOF":[],"XPF":[]},"ltr", plural_locale_fr_CA]; + + + +function plural_locale_ga(n: number): number { + +if (n === 1) + return 1; +if (n === 2) + return 2; +if (n === Math.floor(n) && (n >= 3 && n <= 6)) + return 3; +if (n === Math.floor(n) && (n >= 7 && n <= 10)) + return 4; +return 5; +} + +export const locale_ga = ["ga",[["r.n.","i.n."],u,u],u,[["D","L","M","C","D","A","S"],["Domh","Luan","Máirt","Céad","Déar","Aoine","Sath"],["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Sathairn"],["Do","Lu","Má","Cé","Dé","Ao","Sa"]],u,[["E","F","M","A","B","M","I","L","M","D","S","N"],["Ean","Feabh","Márta","Aib","Beal","Meith","Iúil","Lún","MFómh","DFómh","Samh","Noll"],["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Meitheamh","Iúil","Lúnasa","Meán Fómhair","Deireadh Fómhair","Samhain","Nollaig"]],u,[["RC","AD"],u,["Roimh Chríost","Anno Domini"]],1,[6,0],["dd/MM/y","d MMM y","d MMMM y","EEEE d MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",u,u,u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"EUR","€","Euro",{"THB":["฿"],"TWD":["NT$"],"XXX":[]},"ltr", plural_locale_ga]; + + + +function plural_locale_gl(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +return 5; +} + +export const locale_gl = ["gl",[["a.m.","p.m."],u,u],u,[["d.","l.","m.","m.","x.","v.","s."],["dom.","luns","mar.","mér.","xov.","ven.","sáb."],["domingo","luns","martes","mércores","xoves","venres","sábado"],["do.","lu.","ma.","mé.","xo.","ve.","sá."]],[["D","L","M","M","X","V","S"],["Dom.","Luns","Mar.","Mér.","Xov.","Ven.","Sáb."],["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],["Do","Lu","Ma","Mé","Xo","Ve","Sá"]],[["x.","f.","m.","a.","m.","x.","x.","a.","s.","o.","n.","d."],["xan.","feb.","mar.","abr.","maio","xuño","xul.","ago.","set.","out.","nov.","dec."],["xaneiro","febreiro","marzo","abril","maio","xuño","xullo","agosto","setembro","outubro","novembro","decembro"]],[["X","F","M","A","M","X","X","A","S","O","N","D"],["Xan.","Feb.","Mar.","Abr.","Maio","Xuño","Xul.","Ago.","Set.","Out.","Nov.","Dec."],["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"]],[["a.C.","d.C."],u,["antes de Cristo","despois de Cristo"]],1,[6,0],["dd/MM/yy","d 'de' MMM 'de' y","d 'de' MMMM 'de' y","EEEE, d 'de' MMMM 'de' y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{0}, {1}",u,"{0} 'do' {1}",u],[",",".",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0 %","#,##0.00 ¤","#E0"],"EUR","€","euro",{"BYN":[u,"Br"],"ESP":["₧"],"JPY":["JP¥","¥"],"KMF":[u,"FC"],"MXN":["$MX","$"],"RUB":[u,"руб"],"THB":["฿"],"TWD":["NT$"],"XCD":[u,"$"]},"ltr", plural_locale_gl]; + + + +function plural_locale_gsw(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_gsw = ["gsw",[["vorm.","nam."],u,["am Vormittag","am Namittag"]],[["vorm.","nam."],u,["Vormittag","Namittag"]],[["S","M","D","M","D","F","S"],["Su.","Mä.","Zi.","Mi.","Du.","Fr.","Sa."],["Sunntig","Määntig","Ziischtig","Mittwuch","Dunschtig","Friitig","Samschtig"],["Su.","Mä.","Zi.","Mi.","Du.","Fr.","Sa."]],u,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],["Januar","Februar","März","April","Mai","Juni","Juli","Auguscht","Septämber","Oktoober","Novämber","Dezämber"]],u,[["v. Chr.","n. Chr."],u,u],1,[6,0],["dd.MM.yy","dd.MM.y","d. MMMM y","EEEE, d. MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",u,u,u],[".","’",";","%","+","−","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0 %","#,##0.00 ¤","#E0"],"CHF","CHF","Schwiizer Franke",{"ATS":["öS"]},"ltr", plural_locale_gsw]; + + + +function plural_locale_gu(n: number): number { +const i = Math.floor(Math.abs(n)); + +if (i === 0 || n === 1) + return 1; +return 5; +} + +export const locale_gu = ["gu",[["AM","PM"],u,u],u,[["ર","સો","મં","બુ","ગુ","શુ","શ"],["રવિ","સોમ","મંગળ","બુધ","ગુરુ","શુક્ર","શનિ"],["રવિવાર","સોમવાર","મંગળવાર","બુધવાર","ગુરુવાર","શુક્રવાર","શનિવાર"],["ર","સો","મં","બુ","ગુ","શુ","શ"]],u,[["જા","ફે","મા","એ","મે","જૂ","જુ","ઑ","સ","ઑ","ન","ડિ"],["જાન્યુ","ફેબ્રુ","માર્ચ","એપ્રિલ","મે","જૂન","જુલાઈ","ઑગસ્ટ","સપ્ટે","ઑક્ટો","નવે","ડિસે"],["જાન્યુઆરી","ફેબ્રુઆરી","માર્ચ","એપ્રિલ","મે","જૂન","જુલાઈ","ઑગસ્ટ","સપ્ટેમ્બર","ઑક્ટોબર","નવેમ્બર","ડિસેમ્બર"]],u,[["ઇ સ પુ","ઇસ"],["ઈ.સ.પૂર્વે","ઈ.સ."],["ઈસવીસન પૂર્વે","ઇસવીસન"]],0,[0,0],["d/M/yy","d MMM, y","d MMMM, y","EEEE, d MMMM, y"],["hh:mm a","hh:mm:ss a","hh:mm:ss a z","hh:mm:ss a zzzz"],["{1} {0}",u,"{1} એ {0} વાગ્યે",u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##,##0.###","#,##,##0%","¤#,##,##0.00","[#E0]"],"INR","₹","ભારતીય રૂપિયા",{"JPY":["JP¥","¥"],"MUR":[u,"રૂ."],"THB":["฿"],"TWD":["NT$"],"USD":["US$","$"]},"ltr", plural_locale_gu]; + + + +function plural_locale_haw(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_haw = ["haw",[["AM","PM"],u,u],u,[["S","M","T","W","T","F","S"],["LP","P1","P2","P3","P4","P5","P6"],["Lāpule","Poʻakahi","Poʻalua","Poʻakolu","Poʻahā","Poʻalima","Poʻaono"],["LP","P1","P2","P3","P4","P5","P6"]],u,[["1","2","3","4","5","6","7","8","9","10","11","12"],["Ian.","Pep.","Mal.","ʻAp.","Mei","Iun.","Iul.","ʻAu.","Kep.","ʻOk.","Now.","Kek."],["Ianuali","Pepeluali","Malaki","ʻApelila","Mei","Iune","Iulai","ʻAukake","Kepakemapa","ʻOkakopa","Nowemapa","Kekemapa"]],u,[["BCE","CE"],u,u],0,[6,0],["d/M/yy","d MMM y","d MMMM y","EEEE, d MMMM y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1} {0}",u,u,u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"USD","$","USD",{"JPY":["JP¥","¥"]},"ltr", plural_locale_haw]; + + + +function plural_locale_hi(n: number): number { +const i = Math.floor(Math.abs(n)); + +if (i === 0 || n === 1) + return 1; +return 5; +} + +export const locale_hi = ["hi",[["am","pm"],u,u],u,[["र","सो","मं","बु","गु","शु","श"],["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],["र","सो","मं","बु","गु","शु","श"]],u,[["ज","फ़","मा","अ","म","जू","जु","अ","सि","अ","न","दि"],["जन॰","फ़र॰","मार्च","अप्रैल","मई","जून","जुल॰","अग॰","सित॰","अक्तू॰","नव॰","दिस॰"],["जनवरी","फ़रवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितंबर","अक्तूबर","नवंबर","दिसंबर"]],u,[["ईसा-पूर्व","ईस्वी"],u,["ईसा-पूर्व","ईसवी सन"]],0,[0,0],["d/M/yy","d MMM y","d MMMM y","EEEE, d MMMM y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",u,"{1} को {0}",u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##,##0.###","#,##,##0%","¤#,##,##0.00","[#E0]"],"INR","₹","भारतीय रुपया",{"JPY":["JP¥","¥"],"RON":[u,"लेई"],"THB":["฿"],"TWD":["NT$"]},"ltr", plural_locale_hi]; + + + +function plural_locale_hr(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; + +if (v === 0 && (i % 10 === 1 && !(i % 100 === 11)) || f % 10 === 1 && !(f % 100 === 11)) + return 1; +if (v === 0 && (i % 10 === Math.floor(i % 10) && (i % 10 >= 2 && i % 10 <= 4) && !(i % 100 >= 12 && i % 100 <= 14)) || f % 10 === Math.floor(f % 10) && (f % 10 >= 2 && f % 10 <= 4) && !(f % 100 >= 12 && f % 100 <= 14)) + return 3; +return 5; +} + +export const locale_hr = ["hr",[["AM","PM"],u,u],u,[["N","P","U","S","Č","P","S"],["ned","pon","uto","sri","čet","pet","sub"],["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],["ned","pon","uto","sri","čet","pet","sub"]],[["n","p","u","s","č","p","s"],["ned","pon","uto","sri","čet","pet","sub"],["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],["ned","pon","uto","sri","čet","pet","sub"]],[["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],["sij","velj","ožu","tra","svi","lip","srp","kol","ruj","lis","stu","pro"],["siječnja","veljače","ožujka","travnja","svibnja","lipnja","srpnja","kolovoza","rujna","listopada","studenoga","prosinca"]],[["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],["sij","velj","ožu","tra","svi","lip","srp","kol","ruj","lis","stu","pro"],["siječanj","veljača","ožujak","travanj","svibanj","lipanj","srpanj","kolovoz","rujan","listopad","studeni","prosinac"]],[["pr.n.e.","AD"],["pr. Kr.","po. Kr."],["prije Krista","poslije Krista"]],1,[6,0],["dd. MM. y.","d. MMM y.","d. MMMM y.","EEEE, d. MMMM y."],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss (zzzz)"],["{1} {0}",u,"{1} 'u' {0}",u],[",",".",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0 %","#,##0.00 ¤","#E0"],"HRK","HRK","hrvatska kuna",{"AUD":[u,"$"],"BRL":[u,"R$"],"CAD":[u,"$"],"CNY":[u,"¥"],"EUR":[u,"€"],"GBP":[u,"£"],"HKD":[u,"$"],"ILS":[u,"₪"],"INR":[u,"₹"],"JPY":[u,"¥"],"KRW":[u,"₩"],"MXN":[u,"$"],"NZD":[u,"$"],"TWD":[u,"NT$"],"USD":[u,"$"],"VND":[u,"₫"],"XCD":[u,"$"],"XPF":[],"XXX":[]},"ltr", plural_locale_hr]; + + + +function plural_locale_hu(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_hu = ["hu",[["de.","du."],u,u],u,[["V","H","K","Sz","Cs","P","Sz"],["V","H","K","Sze","Cs","P","Szo"],["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],["V","H","K","Sze","Cs","P","Szo"]],u,[["J","F","M","Á","M","J","J","A","Sz","O","N","D"],["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"]],u,[["ie.","isz."],["i. e.","i. sz."],["Krisztus előtt","időszámításunk szerint"]],1,[6,0],["y. MM. dd.","y. MMM d.","y. MMMM d.","y. MMMM d., EEEE"],["H:mm","H:mm:ss","H:mm:ss z","H:mm:ss zzzz"],["{1} {0}",u,u,u],[","," ",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","#,##0.00 ¤","#E0"],"HUF","Ft","magyar forint",{"AUD":[u,"$"],"BRL":[u,"R$"],"CAD":[u,"$"],"CNY":[u,"¥"],"EUR":[u,"€"],"GBP":[u,"£"],"HKD":[u,"$"],"HUF":["Ft"],"ILS":[u,"₪"],"INR":[u,"₹"],"KRW":[u,"₩"],"MXN":[u,"$"],"NZD":[u,"$"],"TWD":[u,"NT$"],"USD":[u,"$"],"VND":[u,"₫"],"XCD":[u,"$"]},"ltr", plural_locale_hu]; + + + +function plural_locale_hy(n: number): number { +const i = Math.floor(Math.abs(n)); + +if (i === 0 || i === 1) + return 1; +return 5; +} + +export const locale_hy = ["hy",[["ա","հ"],["AM","PM"],u],[["AM","PM"],u,u],[["Կ","Ե","Ե","Չ","Հ","Ո","Շ"],["կիր","երկ","երք","չրք","հնգ","ուր","շբթ"],["կիրակի","երկուշաբթի","երեքշաբթի","չորեքշաբթի","հինգշաբթի","ուրբաթ","շաբաթ"],["կր","եկ","եք","չք","հգ","ու","շբ"]],u,[["Հ","Փ","Մ","Ա","Մ","Հ","Հ","Օ","Ս","Հ","Ն","Դ"],["հնվ","փտվ","մրտ","ապր","մյս","հնս","հլս","օգս","սեպ","հոկ","նոյ","դեկ"],["հունվարի","փետրվարի","մարտի","ապրիլի","մայիսի","հունիսի","հուլիսի","օգոստոսի","սեպտեմբերի","հոկտեմբերի","նոյեմբերի","դեկտեմբերի"]],[["Հ","Փ","Մ","Ա","Մ","Հ","Հ","Օ","Ս","Հ","Ն","Դ"],["հնվ","փտվ","մրտ","ապր","մյս","հնս","հլս","օգս","սեպ","հոկ","նոյ","դեկ"],["հունվար","փետրվար","մարտ","ապրիլ","մայիս","հունիս","հուլիս","օգոստոս","սեպտեմբեր","հոկտեմբեր","նոյեմբեր","դեկտեմբեր"]],[["մ.թ.ա.","մ.թ."],u,["Քրիստոսից առաջ","Քրիստոսից հետո"]],1,[6,0],["dd.MM.yy","dd MMM, y թ.","dd MMMM, y թ.","y թ. MMMM d, EEEE"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",u,u,u],[","," ",";","%","+","-","E","×","‰","∞","ՈչԹ",":"],["#,##0.###","#,##0%","#,##0.00 ¤","#E0"],"AMD","֏","հայկական դրամ",{"AMD":["֏"],"JPY":["JP¥","¥"],"THB":["฿"],"TWD":["NT$"]},"ltr", plural_locale_hy]; + + + +function plural_locale_id(n: number): number { +return 5; +} + +export const locale_id = ["id",[["AM","PM"],u,u],u,[["M","S","S","R","K","J","S"],["Min","Sen","Sel","Rab","Kam","Jum","Sab"],["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],["Min","Sen","Sel","Rab","Kam","Jum","Sab"]],u,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agu","Sep","Okt","Nov","Des"],["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"]],u,[["SM","M"],u,["Sebelum Masehi","Masehi"]],0,[6,0],["dd/MM/yy","d MMM y","d MMMM y","EEEE, dd MMMM y"],["HH.mm","HH.mm.ss","HH.mm.ss z","HH.mm.ss zzzz"],["{1} {0}",u,u,u],[",",".",";","%","+","-","E","×","‰","∞","NaN","."],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"IDR","Rp","Rupiah Indonesia",{"AUD":["AU$","$"],"IDR":["Rp"],"INR":["Rs","₹"],"JPY":["JP¥","¥"],"THB":["฿"],"TWD":["NT$"],"USD":["US$","$"],"XXX":[]},"ltr", plural_locale_id]; + +export const locale_in = locale_id; + +function plural_locale_is(n: number): number { +const i = Math.floor(Math.abs(n)), t = parseInt(n.toString().replace(/^[^.]*\.?|0+$/g, ''), 10) || 0; + +if (t === 0 && (i % 10 === 1 && !(i % 100 === 11)) || !(t === 0)) + return 1; +return 5; +} + +export const locale_is = ["is",[["f.","e."],["f.h.","e.h."],u],[["f.h.","e.h."],u,u],[["S","M","Þ","M","F","F","L"],["sun.","mán.","þri.","mið.","fim.","fös.","lau."],["sunnudagur","mánudagur","þriðjudagur","miðvikudagur","fimmtudagur","föstudagur","laugardagur"],["su.","má.","þr.","mi.","fi.","fö.","la."]],u,[["J","F","M","A","M","J","J","Á","S","O","N","D"],["jan.","feb.","mar.","apr.","maí","jún.","júl.","ágú.","sep.","okt.","nóv.","des."],["janúar","febrúar","mars","apríl","maí","júní","júlí","ágúst","september","október","nóvember","desember"]],u,[["f.k.","e.k."],["f.Kr.","e.Kr."],["fyrir Krist","eftir Krist"]],1,[6,0],["d.M.y","d. MMM y","d. MMMM y","EEEE, d. MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",u,"{1} 'kl'. {0}",u],[",",".",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","#,##0.00 ¤","#E0"],"ISK","ISK","íslensk króna",{"AUD":[u,"$"],"BRL":[u,"R$"],"CAD":[u,"$"],"EUR":[u,"€"],"GBP":[u,"£"],"INR":[u,"₹"],"JPY":["JP¥","¥"],"KRW":[u,"₩"],"MXN":[u,"$"],"NZD":[u,"$"],"TWD":[u,"NT$"],"USD":[u,"$"],"VND":[u,"₫"]},"ltr", plural_locale_is]; + + + +function plural_locale_it(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +return 5; +} + +export const locale_it = ["it",[["m.","p."],["AM","PM"],u],u,[["D","L","M","M","G","V","S"],["dom","lun","mar","mer","gio","ven","sab"],["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],["dom","lun","mar","mer","gio","ven","sab"]],u,[["G","F","M","A","M","G","L","A","S","O","N","D"],["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"]],u,[["aC","dC"],["a.C.","d.C."],["avanti Cristo","dopo Cristo"]],1,[6,0],["dd/MM/yy","d MMM y","d MMMM y","EEEE d MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",u,"{1} {0}",u],[",",".",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","#,##0.00 ¤","#E0"],"EUR","€","euro",{"BRL":[u,"R$"],"BYN":[u,"Br"],"EGP":[u,"£E"],"HKD":[u,"$"],"JPY":[u,"¥"],"KRW":[u,"₩"],"MXN":[u,"$"],"NOK":[u,"NKr"],"THB":["฿"],"TWD":[u,"NT$"],"USD":[u,"$"]},"ltr", plural_locale_it]; + + + +function plural_locale_he(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +if (i === 2 && v === 0) + return 2; +if (v === 0 && (!(n >= 0 && n <= 10) && n % 10 === 0)) + return 4; +return 5; +} + +export const locale_he = ["he",[["לפנה״צ","אחה״צ"],u,u],[["לפנה״צ","אחה״צ"],["AM","PM"],u],[["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"]],u,[["1","2","3","4","5","6","7","8","9","10","11","12"],["ינו׳","פבר׳","מרץ","אפר׳","מאי","יוני","יולי","אוג׳","ספט׳","אוק׳","נוב׳","דצמ׳"],["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"]],u,[["לפנה״ס","לספירה"],u,["לפני הספירה","לספירה"]],0,[5,6],["d.M.y","d בMMM y","d בMMMM y","EEEE, d בMMMM y"],["H:mm","H:mm:ss","H:mm:ss z","H:mm:ss zzzz"],["{1}, {0}",u,"{1} בשעה {0}",u],[".",",",";","%","‎+","‎-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","‏#,##0.00 ¤;‏-#,##0.00 ¤","#E0"],"ILS","₪","שקל חדש",{"BYN":[u,"р"],"CNY":["‎CN¥‎","¥"],"ILP":["ל״י"],"THB":["฿"],"TWD":["NT$"]},"rtl", plural_locale_he]; + +export const locale_iw = locale_he; + +function plural_locale_ja(n: number): number { +return 5; +} + +export const locale_ja = ["ja",[["午前","午後"],u,u],u,[["日","月","火","水","木","金","土"],u,["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],["日","月","火","水","木","金","土"]],u,[["1","2","3","4","5","6","7","8","9","10","11","12"],["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],u],u,[["BC","AD"],["紀元前","西暦"],u],0,[6,0],["y/MM/dd",u,"y年M月d日","y年M月d日EEEE"],["H:mm","H:mm:ss","H:mm:ss z","H時mm分ss秒 zzzz"],["{1} {0}",u,u,u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"JPY","¥","日本円",{"CNY":["元","¥"],"JPY":["¥"],"RON":[u,"レイ"],"XXX":[]},"ltr", plural_locale_ja]; + + + +function plural_locale_ka(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_ka = ["ka",[["a","p"],["AM","PM"],u],[["AM","PM"],u,u],[["კ","ო","ს","ო","ხ","პ","შ"],["კვი","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],["კვ","ორ","სმ","ოთ","ხთ","პრ","შბ"]],u,[["ი","თ","მ","ა","მ","ი","ი","ა","ს","ო","ნ","დ"],["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"]],u,[["ძვ. წ.","ახ. წ."],u,["ძველი წელთაღრიცხვით","ახალი წელთაღრიცხვით"]],1,[6,0],["dd.MM.yy","d MMM. y","d MMMM, y","EEEE, dd MMMM, y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",u,u,u],[","," ",";","%","+","-","E","×","‰","∞","არ არის რიცხვი",":"],["#,##0.###","#,##0%","#,##0.00 ¤","#E0"],"GEL","₾","ქართული ლარი",{"AUD":[u,"$"],"CNY":[u,"¥"],"GEL":["₾"],"HKD":[u,"$"],"ILS":[u,"₪"],"INR":[u,"₹"],"JPY":[u,"¥"],"KRW":[u,"₩"],"NZD":[u,"$"],"TWD":["NT$"],"USD":["US$","$"],"VND":[u,"₫"]},"ltr", plural_locale_ka]; + + + +function plural_locale_kk(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_kk = ["kk",[["AM","PM"],u,u],u,[["Ж","Д","С","С","Б","Ж","С"],["жс","дс","сс","ср","бс","жм","сб"],["жексенбі","дүйсенбі","сейсенбі","сәрсенбі","бейсенбі","жұма","сенбі"],["жс","дс","сс","ср","бс","жм","сб"]],u,[["Қ","А","Н","С","М","М","Ш","Т","Қ","Қ","Қ","Ж"],["қаң.","ақп.","нау.","сәу.","мам.","мау.","шіл.","там.","қыр.","қаз.","қар.","жел."],["қаңтар","ақпан","наурыз","сәуір","мамыр","маусым","шілде","тамыз","қыркүйек","қазан","қараша","желтоқсан"]],[["Қ","А","Н","С","М","М","Ш","Т","Қ","Қ","Қ","Ж"],["қаң.","ақп.","нау.","сәу.","мам.","мау.","шіл.","там.","қыр.","қаз.","қар.","жел."],["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"]],[["б.з.д.","б.з."],u,["Біздің заманымызға дейін","біздің заманымыз"]],1,[6,0],["dd.MM.yy","y 'ж'. dd MMM","y 'ж'. d MMMM","y 'ж'. d MMMM, EEEE"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",u,u,u],[","," ",";","%","+","-","E","×","‰","∞","сан емес",":"],["#,##0.###","#,##0%","#,##0.00 ¤","#E0"],"KZT","₸","Қазақстан теңгесі",{"JPY":["JP¥","¥"],"KZT":["₸"],"RUB":["₽"],"THB":["฿"],"TWD":["NT$"]},"ltr", plural_locale_kk]; + + + +function plural_locale_km(n: number): number { +return 5; +} + +export const locale_km = ["km",[["a","p"],["AM","PM"],u],[["AM","PM"],u,u],[["អ","ច","អ","ព","ព","ស","ស"],["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហ","សុក្រ","សៅរ៍"],["អាទិត្យ","ច័ន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],["អា","ច","អ","ពុ","ព្រ","សុ","ស"]],[["អ","ច","អ","ព","ព","ស","ស"],["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហ","សុក្រ","សៅរ៍"],["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],["អា","ច","អ","ពុ","ព្រ","សុ","ស"]],[["ម","ក","ម","ម","ឧ","ម","ក","ស","ក","ត","វ","ធ"],["មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],u],u,[["មុន គ.ស.","គ.ស."],u,["មុន​គ្រិស្តសករាជ","គ្រិស្តសករាជ"]],0,[6,0],["d/M/yy","d MMM y","d MMMM y","EEEE d MMMM y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",u,"{1} នៅ​ម៉ោង {0}",u],[",",".",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","#,##0.00¤","#E0"],"KHR","៛","រៀល​កម្ពុជា",{"JPY":["JP¥","¥"],"KHR":["៛"],"THB":["฿"],"TWD":["NT$"]},"ltr", plural_locale_km]; + + + +function plural_locale_kn(n: number): number { +const i = Math.floor(Math.abs(n)); + +if (i === 0 || n === 1) + return 1; +return 5; +} + +export const locale_kn = ["kn",[["ಪೂ","ಅ"],["ಪೂರ್ವಾಹ್ನ","ಅಪರಾಹ್ನ"],u],[["ಪೂರ್ವಾಹ್ನ","ಅಪರಾಹ್ನ"],u,u],[["ಭಾ","ಸೋ","ಮಂ","ಬು","ಗು","ಶು","ಶ"],["ಭಾನು","ಸೋಮ","ಮಂಗಳ","ಬುಧ","ಗುರು","ಶುಕ್ರ","ಶನಿ"],["ಭಾನುವಾರ","ಸೋಮವಾರ","ಮಂಗಳವಾರ","ಬುಧವಾರ","ಗುರುವಾರ","ಶುಕ್ರವಾರ","ಶನಿವಾರ"],["ಭಾನು","ಸೋಮ","ಮಂಗಳ","ಬುಧ","ಗುರು","ಶುಕ್ರ","ಶನಿ"]],u,[["ಜ","ಫೆ","ಮಾ","ಏ","ಮೇ","ಜೂ","ಜು","ಆ","ಸೆ","ಅ","ನ","ಡಿ"],["ಜನವರಿ","ಫೆಬ್ರವರಿ","ಮಾರ್ಚ್","ಏಪ್ರಿ","ಮೇ","ಜೂನ್","ಜುಲೈ","ಆಗ","ಸೆಪ್ಟೆಂ","ಅಕ್ಟೋ","ನವೆಂ","ಡಿಸೆಂ"],["ಜನವರಿ","ಫೆಬ್ರವರಿ","ಮಾರ್ಚ್","ಏಪ್ರಿಲ್","ಮೇ","ಜೂನ್","ಜುಲೈ","ಆಗಸ್ಟ್","ಸೆಪ್ಟೆಂಬರ್","ಅಕ್ಟೋಬರ್","ನವೆಂಬರ್","ಡಿಸೆಂಬರ್"]],[["ಜ","ಫೆ","ಮಾ","ಏ","ಮೇ","ಜೂ","ಜು","ಆ","ಸೆ","ಅ","ನ","ಡಿ"],["ಜನ","ಫೆಬ್ರ","ಮಾರ್ಚ್","ಏಪ್ರಿ","ಮೇ","ಜೂನ್","ಜುಲೈ","ಆಗ","ಸೆಪ್ಟೆಂ","ಅಕ್ಟೋ","ನವೆಂ","ಡಿಸೆಂ"],["ಜನವರಿ","ಫೆಬ್ರವರಿ","ಮಾರ್ಚ್","ಏಪ್ರಿಲ್","ಮೇ","ಜೂನ್","ಜುಲೈ","ಆಗಸ್ಟ್","ಸೆಪ್ಟೆಂಬರ್","ಅಕ್ಟೋಬರ್","ನವೆಂಬರ್","ಡಿಸೆಂಬರ್"]],[["ಕ್ರಿ.ಪೂ","ಕ್ರಿ.ಶ"],u,["ಕ್ರಿಸ್ತ ಪೂರ್ವ","ಕ್ರಿಸ್ತ ಶಕ"]],0,[0,0],["d/M/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["hh:mm a","hh:mm:ss a","hh:mm:ss a z","hh:mm:ss a zzzz"],["{1} {0}",u,u,u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"INR","₹","ಭಾರತೀಯ ರೂಪಾಯಿ",{"JPY":["JP¥","¥"],"RON":[u,"ಲೀ"],"THB":["฿"],"TWD":["NT$"]},"ltr", plural_locale_kn]; + + + +function plural_locale_ko(n: number): number { +return 5; +} + +export const locale_ko = ["ko",[["AM","PM"],u,["오전","오후"]],u,[["일","월","화","수","목","금","토"],u,["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],["일","월","화","수","목","금","토"]],u,[["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],u,u],u,[["BC","AD"],u,["기원전","서기"]],0,[6,0],["yy. M. d.","y. M. d.","y년 M월 d일","y년 M월 d일 EEEE"],["a h:mm","a h:mm:ss","a h시 m분 s초 z","a h시 m분 s초 zzzz"],["{1} {0}",u,u,u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"KRW","₩","대한민국 원",{"AUD":["AU$","$"],"JPY":["JP¥","¥"],"RON":[u,"L"],"TWD":["NT$"],"USD":["US$","$"]},"ltr", plural_locale_ko]; + + + +function plural_locale_ky(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_ky = ["ky",[["тң","тк"],u,["таңкы","түштөн кийинки"]],u,[["Ж","Д","Ш","Ш","Б","Ж","И"],["жек.","дүй.","шейш.","шарш.","бейш.","жума","ишм."],["жекшемби","дүйшөмбү","шейшемби","шаршемби","бейшемби","жума","ишемби"],["жш.","дш.","шш.","шр.","бш.","жм.","иш."]],u,[["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],["янв.","фев.","мар.","апр.","май","июн.","июл.","авг.","сен.","окт.","ноя.","дек."],["январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь"]],[["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"]],[["б.з.ч.","б.з."],u,["биздин заманга чейин","биздин заман"]],1,[6,0],["d/M/yy","y-'ж'., d-MMM","y-'ж'., d-MMMM","y-'ж'., d-MMMM, EEEE"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",u,u,u],[","," ",";","%","+","-","E","×","‰","∞","сан эмес",":"],["#,##0.###","#,##0%","#,##0.00 ¤","#E0"],"KGS","сом","Кыргызстан сому",{"AUD":[u,"$"],"BMD":[u,"BD$"],"BRL":[u,"R$"],"BSD":[u,"B$"],"BZD":[u,"BZ$"],"CAD":[u,"C$"],"DOP":[u,"RD$"],"EGP":[u,"LE"],"GBP":[u,"£"],"HKD":[u,"HK$"],"HRK":[u,"Kn"],"ILS":[u,"₪"],"INR":[u,"₹"],"JMD":[u,"J$"],"JPY":["JP¥","¥"],"KGS":["сом"],"KRW":[u,"₩"],"MXN":[u,"$"],"NZD":[u,"$"],"THB":["฿"],"TTD":[u,"TT$"],"TWD":[u,"NT$"],"USD":[u,"$"],"XCD":[u,"$"]},"ltr", plural_locale_ky]; + + + +function plural_locale_ln(n: number): number { + +if (n === Math.floor(n) && (n >= 0 && n <= 1)) + return 1; +return 5; +} + +export const locale_ln = ["ln",[["ntɔ́ngɔ́","mpókwa"],u,u],u,[["e","y","m","m","m","m","p"],["eye","ybo","mbl","mst","min","mtn","mps"],["eyenga","mokɔlɔ mwa yambo","mokɔlɔ mwa míbalé","mokɔlɔ mwa mísáto","mokɔlɔ ya mínéi","mokɔlɔ ya mítáno","mpɔ́sɔ"],["eye","ybo","mbl","mst","min","mtn","mps"]],u,[["y","f","m","a","m","y","y","a","s","ɔ","n","d"],["yan","fbl","msi","apl","mai","yun","yul","agt","stb","ɔtb","nvb","dsb"],["sánzá ya yambo","sánzá ya míbalé","sánzá ya mísáto","sánzá ya mínei","sánzá ya mítáno","sánzá ya motóbá","sánzá ya nsambo","sánzá ya mwambe","sánzá ya libwa","sánzá ya zómi","sánzá ya zómi na mɔ̌kɔ́","sánzá ya zómi na míbalé"]],u,[["libóso ya","nsima ya Y"],u,["Yambo ya Yézu Krís","Nsima ya Yézu Krís"]],1,[6,0],["d/M/y","d MMM y","d MMMM y","EEEE d MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",u,u,u],[",",".",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","#,##0.00 ¤","#E0"],"CDF","FC","Falánga ya Kongó",{"CDF":["FC"],"JPY":["JP¥","¥"],"USD":["US$","$"]},"ltr", plural_locale_ln]; + + + +function plural_locale_lo(n: number): number { +return 5; +} + +export const locale_lo = ["lo",[["ກ່ອນທ່ຽງ","ຫຼັງທ່ຽງ"],u,u],u,[["ອາ","ຈ","ອ","ພ","ພຫ","ສຸ","ສ"],["ອາທິດ","ຈັນ","ອັງຄານ","ພຸດ","ພະຫັດ","ສຸກ","ເສົາ"],["ວັນອາທິດ","ວັນຈັນ","ວັນອັງຄານ","ວັນພຸດ","ວັນພະຫັດ","ວັນສຸກ","ວັນເສົາ"],["ອາ.","ຈ.","ອ.","ພ.","ພຫ.","ສຸ.","ສ."]],u,[["1","2","3","4","5","6","7","8","9","10","11","12"],["ມ.ກ.","ກ.ພ.","ມ.ນ.","ມ.ສ.","ພ.ພ.","ມິ.ຖ.","ກ.ລ.","ສ.ຫ.","ກ.ຍ.","ຕ.ລ.","ພ.ຈ.","ທ.ວ."],["ມັງກອນ","ກຸມພາ","ມີນາ","ເມສາ","ພຶດສະພາ","ມິຖຸນາ","ກໍລະກົດ","ສິງຫາ","ກັນຍາ","ຕຸລາ","ພະຈິກ","ທັນວາ"]],u,[["ກ່ອນ ຄ.ສ.","ຄ.ສ."],u,["ກ່ອນຄຣິດສັກກະລາດ","ຄຣິດສັກກະລາດ"]],0,[6,0],["d/M/y","d MMM y","d MMMM y","EEEE ທີ d MMMM G y"],["H:mm","H:mm:ss","H ໂມງ m ນາທີ ss ວິນາທີ z","H ໂມງ m ນາທີ ss ວິນາທີ zzzz"],["{1}, {0}",u,u,u],[",",".",";","%","+","-","E","×","‰","∞","ບໍ່​ແມ່ນ​ໂຕ​ເລກ",":"],["#,##0.###","#,##0%","¤#,##0.00;¤-#,##0.00","#"],"LAK","₭","ລາວ ກີບ",{"JPY":["JP¥","¥"],"LAK":["₭"],"THB":["฿"],"TWD":["NT$"],"USD":["US$","$"]},"ltr", plural_locale_lo]; + + + +function plural_locale_lt(n: number): number { +const f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; + +if (n % 10 === 1 && !(n % 100 >= 11 && n % 100 <= 19)) + return 1; +if (n % 10 === Math.floor(n % 10) && (n % 10 >= 2 && n % 10 <= 9) && !(n % 100 >= 11 && n % 100 <= 19)) + return 3; +if (!(f === 0)) + return 4; +return 5; +} + +export const locale_lt = ["lt",[["pr. p.","pop."],["priešpiet","popiet"],u],u,[["S","P","A","T","K","P","Š"],["sk","pr","an","tr","kt","pn","št"],["sekmadienis","pirmadienis","antradienis","trečiadienis","ketvirtadienis","penktadienis","šeštadienis"],["Sk","Pr","An","Tr","Kt","Pn","Št"]],u,[["S","V","K","B","G","B","L","R","R","S","L","G"],["saus.","vas.","kov.","bal.","geg.","birž.","liep.","rugp.","rugs.","spal.","lapkr.","gruod."],["sausio","vasario","kovo","balandžio","gegužės","birželio","liepos","rugpjūčio","rugsėjo","spalio","lapkričio","gruodžio"]],[["S","V","K","B","G","B","L","R","R","S","L","G"],["saus.","vas.","kov.","bal.","geg.","birž.","liep.","rugp.","rugs.","spal.","lapkr.","gruod."],["sausis","vasaris","kovas","balandis","gegužė","birželis","liepa","rugpjūtis","rugsėjis","spalis","lapkritis","gruodis"]],[["pr. Kr.","po Kr."],u,["prieš Kristų","po Kristaus"]],1,[6,0],["y-MM-dd",u,"y 'm'. MMMM d 'd'.","y 'm'. MMMM d 'd'., EEEE"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",u,u,u],[","," ",";","%","+","−","×10^","×","‰","∞","NaN",":"],["#,##0.###","#,##0 %","#,##0.00 ¤","#E0"],"EUR","€","Euras",{"AUD":[u,"$"],"BDT":[],"BRL":[u,"R$"],"BYN":[u,"Br"],"CAD":[u,"$"],"CNY":[u,"¥"],"GBP":[u,"£"],"HKD":[u,"$"],"ILS":[],"INR":[],"JPY":[u,"¥"],"KHR":[],"KRW":[u,"₩"],"LAK":[],"MNT":[],"MXN":[u,"$"],"NZD":[u,"$"],"PLN":[u,"zl"],"PYG":[u,"Gs"],"RUB":[u,"rb"],"TWD":[u,"$"],"USD":[u,"$"],"VND":[],"XAF":[],"XCD":[u,"$"],"XOF":[],"XPF":[]},"ltr", plural_locale_lt]; + + + +function plural_locale_lv(n: number): number { +const v = n.toString().replace(/^[^.]*\.?/, '').length, f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; + +if (n % 10 === 0 || (n % 100 === Math.floor(n % 100) && (n % 100 >= 11 && n % 100 <= 19) || v === 2 && (f % 100 === Math.floor(f % 100) && (f % 100 >= 11 && f % 100 <= 19)))) + return 0; +if (n % 10 === 1 && !(n % 100 === 11) || (v === 2 && (f % 10 === 1 && !(f % 100 === 11)) || !(v === 2) && f % 10 === 1)) + return 1; +return 5; +} + +export const locale_lv = ["lv",[["priekšp.","pēcp."],u,["priekšpusdienā","pēcpusdienā"]],[["priekšp.","pēcpusd."],u,["priekšpusdiena","pēcpusdiena"]],[["S","P","O","T","C","P","S"],["svētd.","pirmd.","otrd.","trešd.","ceturtd.","piektd.","sestd."],["svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],["Sv","Pr","Ot","Tr","Ce","Pk","Se"]],[["S","P","O","T","C","P","S"],["Svētd.","Pirmd.","Otrd.","Trešd.","Ceturtd.","Piektd.","Sestd."],["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"],["Sv","Pr","Ot","Tr","Ce","Pk","Se"]],[["J","F","M","A","M","J","J","A","S","O","N","D"],["janv.","febr.","marts","apr.","maijs","jūn.","jūl.","aug.","sept.","okt.","nov.","dec."],["janvāris","februāris","marts","aprīlis","maijs","jūnijs","jūlijs","augusts","septembris","oktobris","novembris","decembris"]],u,[["p.m.ē.","m.ē."],u,["pirms mūsu ēras","mūsu ērā"]],1,[6,0],["dd.MM.yy","y. 'gada' d. MMM","y. 'gada' d. MMMM","EEEE, y. 'gada' d. MMMM"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",u,u,u],[","," ",";","%","+","-","E","×","‰","∞","NS",":"],["#,##0.###","#,##0%","#,##0.00 ¤","#E0"],"EUR","€","eiro",{"AUD":["AU$","$"],"LVL":["Ls"],"THB":["฿"],"TWD":["NT$"]},"ltr", plural_locale_lv]; + + + +function plural_locale_mk(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; + +if (v === 0 && (i % 10 === 1 && !(i % 100 === 11)) || f % 10 === 1 && !(f % 100 === 11)) + return 1; +return 5; +} + +export const locale_mk = ["mk",[["претпл.","попл."],u,["претпладне","попладне"]],u,[["н","п","в","с","ч","п","с"],["нед.","пон.","вт.","сре.","чет.","пет.","саб."],["недела","понеделник","вторник","среда","четврток","петок","сабота"],["нед.","пон.","вто.","сре.","чет.","пет.","саб."]],[["н","п","в","с","ч","п","с"],["нед.","пон.","вто.","сре.","чет.","пет.","саб."],["недела","понеделник","вторник","среда","четврток","петок","сабота"],["нед.","пон.","вто.","сре.","чет.","пет.","саб."]],[["ј","ф","м","а","м","ј","ј","а","с","о","н","д"],["јан.","фев.","мар.","апр.","мај","јун.","јул.","авг.","септ.","окт.","ноем.","дек."],["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"]],u,[["пр.н.е.","н.е."],u,["пред нашата ера","од нашата ера"]],1,[6,0],["d.M.yy","d.M.y","d MMMM y","EEEE, d MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",u,u,u],[",",".",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0 %","#,##0.00 ¤","#E0"],"MKD","ден.","Македонски денар",{"AUD":[u,"$"],"CNY":[u,"¥"],"GBP":[u,"£"],"HKD":[u,"$"],"ILS":[u,"₪"],"INR":[u,"₹"],"JPY":[u,"¥"],"KRW":[u,"₩"],"MKD":["ден."],"NZD":[u,"$"],"TWD":[u,"NT$"],"USD":["US$","$"],"VND":[u,"₫"]},"ltr", plural_locale_mk]; + + + +function plural_locale_ml(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_ml = ["ml",[["AM","PM"],u,u],u,[["ഞ","തി","ചൊ","ബു","വ്യാ","വെ","ശ"],["ഞായർ","തിങ്കൾ","ചൊവ്വ","ബുധൻ","വ്യാഴം","വെള്ളി","ശനി"],["ഞായറാഴ്‌ച","തിങ്കളാഴ്‌ച","ചൊവ്വാഴ്ച","ബുധനാഴ്‌ച","വ്യാഴാഴ്‌ച","വെള്ളിയാഴ്‌ച","ശനിയാഴ്‌ച"],["ഞാ","തി","ചൊ","ബു","വ്യാ","വെ","ശ"]],[["ഞാ","തി","ചൊ","ബു","വ്യാ","വെ","ശ"],["ഞായർ","തിങ്കൾ","ചൊവ്വ","ബുധൻ","വ്യാഴം","വെള്ളി","ശനി"],["ഞായറാഴ്‌ച","തിങ്കളാഴ്‌ച","ചൊവ്വാഴ്‌ച","ബുധനാഴ്‌ച","വ്യാഴാഴ്‌ച","വെള്ളിയാഴ്‌ച","ശനിയാഴ്‌ച"],["ഞാ","തി","ചൊ","ബു","വ്യാ","വെ","ശ"]],[["ജ","ഫെ","മാ","ഏ","മെ","ജൂൺ","ജൂ","ഓ","സെ","ഒ","ന","ഡി"],["ജനു","ഫെബ്രു","മാർ","ഏപ്രി","മേയ്","ജൂൺ","ജൂലൈ","ഓഗ","സെപ്റ്റം","ഒക്ടോ","നവം","ഡിസം"],["ജനുവരി","ഫെബ്രുവരി","മാർച്ച്","ഏപ്രിൽ","മേയ്","ജൂൺ","ജൂലൈ","ഓഗസ്റ്റ്","സെപ്റ്റംബർ","ഒക്‌ടോബർ","നവംബർ","ഡിസംബർ"]],u,[["ക്രി.മു.","എഡി"],u,["ക്രിസ്‌തുവിന് മുമ്പ്","ആന്നോ ഡൊമിനി"]],0,[0,0],["d/M/yy","y, MMM d","y, MMMM d","y, MMMM d, EEEE"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1} {0}",u,u,u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##,##0.###","#,##0%","¤#,##0.00","#E0"],"INR","₹","ഇന്ത്യൻ രൂപ",{"THB":["฿"],"TWD":["NT$"]},"ltr", plural_locale_ml]; + + + +function plural_locale_mn(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_mn = ["mn",[["ү.ө.","ү.х."],u,u],u,[["Ня","Да","Мя","Лх","Пү","Ба","Бя"],u,["ням","даваа","мягмар","лхагва","пүрэв","баасан","бямба"],["Ня","Да","Мя","Лх","Пү","Ба","Бя"]],[["Ня","Да","Мя","Лх","Пү","Ба","Бя"],u,["Ням","Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба"],["Ня","Да","Мя","Лх","Пү","Ба","Бя"]],[["I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII"],["1-р сар","2-р сар","3-р сар","4-р сар","5-р сар","6-р сар","7-р сар","8-р сар","9-р сар","10-р сар","11-р сар","12-р сар"],["нэгдүгээр сар","хоёрдугаар сар","гуравдугаар сар","дөрөвдүгээр сар","тавдугаар сар","зургаадугаар сар","долоодугаар сар","наймдугаар сар","есдүгээр сар","аравдугаар сар","арван нэгдүгээр сар","арван хоёрдугаар сар"]],[["I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII"],["1-р сар","2-р сар","3-р сар","4-р сар","5-р сар","6-р сар","7-р сар","8-р сар","9-р сар","10-р сар","11-р сар","12-р сар"],["Нэгдүгээр сар","Хоёрдугаар сар","Гуравдугаар сар","Дөрөвдүгээр сар","Тавдугаар сар","Зургаадугаар сар","Долоодугаар сар","Наймдугаар сар","Есдүгээр сар","Аравдугаар сар","Арван нэгдүгээр сар","Арван хоёрдугаар сар"]],[["МЭӨ","МЭ"],u,["манай эриний өмнөх","манай эриний"]],1,[6,0],["y.MM.dd","y 'оны' MMM'ын' d","y 'оны' MMMM'ын' d","y 'оны' MMMM'ын' d, EEEE 'гараг'"],["HH:mm","HH:mm:ss","HH:mm:ss (z)","HH:mm:ss (zzzz)"],["{1} {0}",u,u,u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤ #,##0.00","#E0"],"MNT","₮","Монгол төгрөг",{"JPY":["JP¥","¥"],"MNT":["₮"],"SEK":[u,"кр"],"THB":["฿"],"TWD":["NT$"]},"ltr", plural_locale_mn]; + + + +function plural_locale_ro_MD(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +if (!(v === 0) || (n === 0 || n % 100 === Math.floor(n % 100) && (n % 100 >= 2 && n % 100 <= 19))) + return 3; +return 5; +} + +export const locale_ro_MD = ["ro-MD",[["a.m.","p.m."],u,u],u,[["D","L","Ma","Mi","J","V","S"],["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],["duminică","luni","marți","miercuri","joi","vineri","sâmbătă"],["Du","Lu","Ma","Mi","Jo","Vi","Sâ"]],u,[["I","F","M","A","M","I","I","A","S","O","N","D"],["ian.","feb.","mar.","apr.","mai","iun.","iul.","aug.","sept.","oct.","nov.","dec."],["ianuarie","februarie","martie","aprilie","mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie"]],u,[["î.Hr.","d.Hr."],u,["înainte de Hristos","după Hristos"]],1,[6,0],["dd.MM.y","d MMM y","d MMMM y","EEEE, d MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",u,u,u],[",",".",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0 %","#,##0.00 ¤","#E0"],"MDL","L","leu moldovenesc",{"AUD":[u,"$"],"BRL":[u,"R$"],"CAD":[u,"$"],"CNY":[u,"¥"],"EUR":[u,"€"],"GBP":[u,"£"],"HKD":[u,"$"],"ILS":[u,"₪"],"INR":[u,"₹"],"JPY":[u,"¥"],"KRW":[u,"₩"],"MDL":["L"],"MXN":[u,"$"],"NZD":[u,"$"],"TWD":[u,"NT$"],"USD":[u,"$"],"VND":[u,"₫"],"XCD":[u,"$"]},"ltr", plural_locale_ro_MD]; + +export const locale_mo = locale_ro_MD; + +function plural_locale_mr(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_mr = ["mr",[["स","सं"],["म.पू.","म.उ."],u],[["म.पू.","म.उ."],u,u],[["र","सो","मं","बु","गु","शु","श"],["रवि","सोम","मंगळ","बुध","गुरु","शुक्र","शनि"],["रविवार","सोमवार","मंगळवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],["र","सो","मं","बु","गु","शु","श"]],u,[["जा","फे","मा","ए","मे","जू","जु","ऑ","स","ऑ","नो","डि"],["जाने","फेब्रु","मार्च","एप्रि","मे","जून","जुलै","ऑग","सप्टें","ऑक्टो","नोव्हें","डिसें"],["जानेवारी","फेब्रुवारी","मार्च","एप्रिल","मे","जून","जुलै","ऑगस्ट","सप्टेंबर","ऑक्टोबर","नोव्हेंबर","डिसेंबर"]],u,[["इ. स. पू.","इ. स."],u,["ईसवीसनपूर्व","ईसवीसन"]],0,[0,0],["d/M/yy","d MMM, y","d MMMM, y","EEEE, d MMMM, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",u,"{1} रोजी {0}",u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##,##0.###","#,##0%","¤#,##0.00","[#E0]"],"INR","₹","भारतीय रुपया",{"JPY":["JP¥","¥"],"THB":["฿"],"TWD":["NT$"]},"ltr", plural_locale_mr]; + + + +function plural_locale_ms(n: number): number { +return 5; +} + +export const locale_ms = ["ms",[["a","p"],["PG","PTG"],u],u,[["A","I","S","R","K","J","S"],["Ahd","Isn","Sel","Rab","Kha","Jum","Sab"],["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],["Ah","Is","Se","Ra","Kh","Ju","Sa"]],u,[["J","F","M","A","M","J","J","O","S","O","N","D"],["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"]],u,[["S.M.","TM"],u,u],1,[6,0],["d/MM/yy","d MMM y","d MMMM y","EEEE, d MMMM y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",u,"{1} {0}",u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"MYR","RM","Ringgit Malaysia",{"CAD":[u,"$"],"JPY":["JP¥","¥"],"MXN":[u,"$"],"MYR":["RM"],"TWD":["NT$"],"USD":[u,"$"]},"ltr", plural_locale_ms]; + + + +function plural_locale_mt(n: number): number { + +if (n === 1) + return 1; +if (n === 0 || n % 100 === Math.floor(n % 100) && (n % 100 >= 2 && n % 100 <= 10)) + return 3; +if (n % 100 === Math.floor(n % 100) && (n % 100 >= 11 && n % 100 <= 19)) + return 4; +return 5; +} + +export const locale_mt = ["mt",[["am","pm"],["AM","PM"],u],u,[["Ħd","T","Tl","Er","Ħm","Ġm","Sb"],["Ħad","Tne","Tli","Erb","Ħam","Ġim","Sib"],["Il-Ħadd","It-Tnejn","It-Tlieta","L-Erbgħa","Il-Ħamis","Il-Ġimgħa","Is-Sibt"],["Ħad","Tne","Tli","Erb","Ħam","Ġim","Sib"]],[["Ħd","Tn","Tl","Er","Ħm","Ġm","Sb"],["Ħad","Tne","Tli","Erb","Ħam","Ġim","Sib"],["Il-Ħadd","It-Tnejn","It-Tlieta","L-Erbgħa","Il-Ħamis","Il-Ġimgħa","Is-Sibt"],["Ħad","Tne","Tli","Erb","Ħam","Ġim","Sib"]],[["J","F","M","A","M","Ġ","L","A","S","O","N","D"],["Jan","Fra","Mar","Apr","Mej","Ġun","Lul","Aww","Set","Ott","Nov","Diċ"],["Jannar","Frar","Marzu","April","Mejju","Ġunju","Lulju","Awwissu","Settembru","Ottubru","Novembru","Diċembru"]],[["Jn","Fr","Mz","Ap","Mj","Ġn","Lj","Aw","St","Ob","Nv","Dċ"],["Jan","Fra","Mar","Apr","Mej","Ġun","Lul","Aww","Set","Ott","Nov","Diċ"],["Jannar","Frar","Marzu","April","Mejju","Ġunju","Lulju","Awwissu","Settembru","Ottubru","Novembru","Diċembru"]],[["QK","WK"],u,["Qabel Kristu","Wara Kristu"]],0,[6,0],["dd/MM/y","dd MMM y","d 'ta'’ MMMM y","EEEE, d 'ta'’ MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",u,u,u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"EUR","€","ewro",{"JPY":["JP¥","¥"],"USD":["US$","$"]},"ltr", plural_locale_mt]; + + + +function plural_locale_my(n: number): number { +return 5; +} + +export const locale_my = ["my",[["နံနက်","ညနေ"],u,u],u,[["တ","တ","အ","ဗ","က","သ","စ"],["တနင်္ဂနွေ","တနင်္လာ","အင်္ဂါ","ဗုဒ္ဓဟူး","ကြာသပတေး","သောကြာ","စနေ"],u,u],u,[["ဇ","ဖ","မ","ဧ","မ","ဇ","ဇ","ဩ","စ","အ","န","ဒ"],["ဇန်","ဖေ","မတ်","ဧ","မေ","ဇွန်","ဇူ","ဩ","စက်","အောက်","နို","ဒီ"],["ဇန်နဝါရီ","ဖေဖော်ဝါရီ","မတ်","ဧပြီ","မေ","ဇွန်","ဇူလိုင်","ဩဂုတ်","စက်တင်ဘာ","အောက်တိုဘာ","နိုဝင်ဘာ","ဒီဇင်ဘာ"]],u,[["ဘီစီ","အဒေီ"],u,["ခရစ်တော် မပေါ်မီနှစ်","ခရစ်နှစ်"]],0,[6,0],["dd-MM-yy","y၊ MMM d","y၊ d MMMM","y၊ MMMM d၊ EEEE"],["B H:mm","B HH:mm:ss","z HH:mm:ss","zzzz HH:mm:ss"],["{1} {0}",u,u,u],[".",",",";","%","+","-","E","×","‰","∞","ဂဏန်းမဟုတ်သော",":"],["#,##0.###","#,##0%","#,##0.00 ¤","#E0"],"MMK","K","မြန်မာ ကျပ်",{"ANG":["NAf"],"AWG":["Afl"],"BBD":[u,"Bds$"],"BSD":[u,"B$"],"HTG":["G"],"JPY":["JP¥","¥"],"MMK":["K"],"PAB":["B/."],"THB":["฿"],"TTD":["TT$","$"],"USD":["US$","$"]},"ltr", plural_locale_my]; + + + +function plural_locale_ne(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_ne = ["ne",[["पूर्वाह्न","अपराह्न"],u,u],u,[["आ","सो","म","बु","बि","शु","श"],["आइत","सोम","मङ्गल","बुध","बिहि","शुक्र","शनि"],["आइतबार","सोमबार","मङ्गलबार","बुधबार","बिहिबार","शुक्रबार","शनिबार"],["आइत","सोम","मङ्गल","बुध","बिहि","शुक्र","शनि"]],u,[["जन","फेब","मार्च","अप्र","मे","जुन","जुल","अग","सेप","अक्टो","नोभे","डिसे"],["जनवरी","फेब्रुअरी","मार्च","अप्रिल","मे","जुन","जुलाई","अगस्ट","सेप्टेम्बर","अक्टोबर","नोभेम्बर","डिसेम्बर"],u],[["जन","फेेब","मार्च","अप्र","मे","जुन","जुल","अग","सेप","अक्टो","नोभे","डिसे"],["जनवरी","फेब्रुअरी","मार्च","अप्रिल","मे","जुन","जुलाई","अगस्ट","सेप्टेम्बर","अक्टोबर","नोभेम्बर","डिसेम्बर"],u],[["ईसा पूर्व","सन्"],u,u],0,[6,0],["yy/M/d","y MMM d","y MMMM d","y MMMM d, EEEE"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",u,"{1} {0}",u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##,##0.###","#,##,##0%","¤ #,##,##0.00","#E0"],"NPR","नेरू","नेपाली रूपैयाँ",{"JPY":["JP¥","¥"],"NPR":["नेरू","रू"],"THB":["฿"],"USD":["US$","$"]},"ltr", plural_locale_ne]; + + + +function plural_locale_nl(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +return 5; +} + +export const locale_nl = ["nl",[["a.m.","p.m."],u,u],u,[["Z","M","D","W","D","V","Z"],["zo","ma","di","wo","do","vr","za"],["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],["zo","ma","di","wo","do","vr","za"]],u,[["J","F","M","A","M","J","J","A","S","O","N","D"],["jan.","feb.","mrt.","apr.","mei","jun.","jul.","aug.","sep.","okt.","nov.","dec."],["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"]],u,[["v.C.","n.C."],["v.Chr.","n.Chr."],["voor Christus","na Christus"]],1,[6,0],["dd-MM-y","d MMM y","d MMMM y","EEEE d MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",u,"{1} 'om' {0}",u],[",",".",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤ #,##0.00;¤ -#,##0.00","#E0"],"EUR","€","Euro",{"AUD":["AU$","$"],"CAD":["C$","$"],"FJD":["FJ$","$"],"JPY":["JP¥","¥"],"SBD":["SI$","$"],"THB":["฿"],"TWD":["NT$"],"USD":["US$","$"],"XPF":[],"XXX":[]},"ltr", plural_locale_nl]; + + + +function plural_locale_nb(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_nb = ["nb",[["a","p"],["a.m.","p.m."],u],[["a.m.","p.m."],u,u],[["S","M","T","O","T","F","L"],["søn.","man.","tir.","ons.","tor.","fre.","lør."],["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],["sø.","ma.","ti.","on.","to.","fr.","lø."]],u,[["J","F","M","A","M","J","J","A","S","O","N","D"],["jan.","feb.","mar.","apr.","mai","jun.","jul.","aug.","sep.","okt.","nov.","des."],["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"]],[["J","F","M","A","M","J","J","A","S","O","N","D"],["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"]],[["f.Kr.","e.Kr."],u,["før Kristus","etter Kristus"]],1,[6,0],["dd.MM.y","d. MMM y","d. MMMM y","EEEE d. MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",u,"{1} 'kl'. {0}","{1} {0}"],[","," ",";","%","+","−","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0 %","¤ #,##0.00","#E0"],"NOK","kr","norske kroner",{"AUD":[u,"$"],"BRL":[u,"R$"],"CAD":[u,"$"],"CNY":[u,"¥"],"HKD":[u,"$"],"ILS":[u,"₪"],"INR":[u,"₹"],"JPY":[u,"¥"],"KRW":[u,"₩"],"MXN":[u,"$"],"NOK":["kr"],"NZD":[u,"$"],"RON":[u,"L"],"TWD":[u,"NT$"],"USD":[u,"$"],"VND":[u,"₫"],"XAF":[],"XCD":[u,"$"],"XPF":[],"XXX":[]},"ltr", plural_locale_nb]; + +export const locale_no = locale_nb; +export const locale_no_NO = locale_nb; + +function plural_locale_or(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_or = ["or",[["ପୂ","ଅ"],["AM","PM"],u],[["AM","ଅପରାହ୍ନ"],["ପୂର୍ବାହ୍ନ","ଅପରାହ୍ନ"],u],[["ର","ସୋ","ମ","ବୁ","ଗୁ","ଶୁ","ଶ"],["ରବି","ସୋମ","ମଙ୍ଗଳ","ବୁଧ","ଗୁରୁ","ଶୁକ୍ର","ଶନି"],["ରବିବାର","ସୋମବାର","ମଙ୍ଗଳବାର","ବୁଧବାର","ଗୁରୁବାର","ଶୁକ୍ରବାର","ଶନିବାର"],["ରବି","ସୋମ","ମଙ୍ଗଳ","ବୁଧ","ଗୁରୁ","ଶୁକ୍ର","ଶନି"]],u,[["ଜା","ଫେ","ମା","ଅ","ମଇ","ଜୁ","ଜୁ","ଅ","ସେ","ଅ","ନ","ଡି"],["ଜାନୁଆରୀ","ଫେବୃଆରୀ","ମାର୍ଚ୍ଚ","ଅପ୍ରେଲ","ମଇ","ଜୁନ","ଜୁଲାଇ","ଅଗଷ୍ଟ","ସେପ୍ଟେମ୍ବର","ଅକ୍ଟୋବର","ନଭେମ୍ବର","ଡିସେମ୍ବର"],u],u,[["BC","AD"],u,["ଖ୍ରୀଷ୍ଟପୂର୍ବ","ଖ୍ରୀଷ୍ଟାବ୍ଦ"]],0,[0,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",u,"{0} ଠାରେ {1}",u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##,##0.###","#,##0%","¤#,##0.00","#E0"],"INR","₹","ଭାରତୀୟ ଟଙ୍କା",{},"ltr", plural_locale_or]; + + + +function plural_locale_pa(n: number): number { + +if (n === Math.floor(n) && (n >= 0 && n <= 1)) + return 1; +return 5; +} + +export const locale_pa = ["pa",[["ਸ.","ਸ਼."],["ਪੂ.ਦੁ.","ਬਾ.ਦੁ."],u],[["ਪੂ.ਦੁ.","ਬਾ.ਦੁ."],u,u],[["ਐ","ਸੋ","ਮੰ","ਬੁੱ","ਵੀ","ਸ਼ੁੱ","ਸ਼"],["ਐਤ","ਸੋਮ","ਮੰਗਲ","ਬੁੱਧ","ਵੀਰ","ਸ਼ੁੱਕਰ","ਸ਼ਨਿੱਚਰ"],["ਐਤਵਾਰ","ਸੋਮਵਾਰ","ਮੰਗਲਵਾਰ","ਬੁੱਧਵਾਰ","ਵੀਰਵਾਰ","ਸ਼ੁੱਕਰਵਾਰ","ਸ਼ਨਿੱਚਰਵਾਰ"],["ਐਤ","ਸੋਮ","ਮੰਗ","ਬੁੱਧ","ਵੀਰ","ਸ਼ੁੱਕ","ਸ਼ਨਿੱ"]],u,[["ਜ","ਫ਼","ਮਾ","ਅ","ਮ","ਜੂ","ਜੁ","ਅ","ਸ","ਅ","ਨ","ਦ"],["ਜਨ","ਫ਼ਰ","ਮਾਰਚ","ਅਪ੍ਰੈ","ਮਈ","ਜੂਨ","ਜੁਲਾ","ਅਗ","ਸਤੰ","ਅਕਤੂ","ਨਵੰ","ਦਸੰ"],["ਜਨਵਰੀ","ਫ਼ਰਵਰੀ","ਮਾਰਚ","ਅਪ੍ਰੈਲ","ਮਈ","ਜੂਨ","ਜੁਲਾਈ","ਅਗਸਤ","ਸਤੰਬਰ","ਅਕਤੂਬਰ","ਨਵੰਬਰ","ਦਸੰਬਰ"]],u,[["ਈ.ਪੂ.","ਸੰਨ"],["ਈ. ਪੂ.","ਸੰਨ"],["ਈਸਵੀ ਪੂਰਵ","ਈਸਵੀ ਸੰਨ"]],0,[0,0],["d/M/yy","d MMM y","d MMMM y","EEEE, d MMMM y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",u,"{1} {0}",u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##,##0.###","#,##,##0%","¤ #,##,##0.00","[#E0]"],"INR","₹","ਭਾਰਤੀ ਰੁਪਇਆ",{"JPY":["JP¥","¥"],"THB":["฿"],"TWD":["NT$"],"USD":["US$","$"],"XXX":[]},"ltr", plural_locale_pa]; + + + +function plural_locale_pl(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +if (v === 0 && (i % 10 === Math.floor(i % 10) && (i % 10 >= 2 && i % 10 <= 4) && !(i % 100 >= 12 && i % 100 <= 14))) + return 3; +if (v === 0 && (!(i === 1) && (i % 10 === Math.floor(i % 10) && (i % 10 >= 0 && i % 10 <= 1))) || (v === 0 && (i % 10 === Math.floor(i % 10) && (i % 10 >= 5 && i % 10 <= 9)) || v === 0 && (i % 100 === Math.floor(i % 100) && (i % 100 >= 12 && i % 100 <= 14)))) + return 4; +return 5; +} + +export const locale_pl = ["pl",[["a","p"],["AM","PM"],u],u,[["n","p","w","ś","c","p","s"],["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],["nie","pon","wto","śro","czw","pią","sob"]],[["N","P","W","Ś","C","P","S"],["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],["nie","pon","wto","śro","czw","pią","sob"]],[["s","l","m","k","m","c","l","s","w","p","l","g"],["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],["stycznia","lutego","marca","kwietnia","maja","czerwca","lipca","sierpnia","września","października","listopada","grudnia"]],[["S","L","M","K","M","C","L","S","W","P","L","G"],["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"]],[["p.n.e.","n.e."],u,["przed naszą erą","naszej ery"]],1,[6,0],["dd.MM.y","d MMM y","d MMMM y","EEEE, d MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",u,"{1} {0}",u],[","," ",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","#,##0.00 ¤","#E0"],"PLN","zł","złoty polski",{"AUD":[u,"$"],"CAD":[u,"$"],"CNY":[u,"¥"],"GBP":[u,"£"],"HKD":[u,"$"],"ILS":[u,"₪"],"INR":[u,"₹"],"JPY":[u,"¥"],"KRW":[u,"₩"],"MXN":[u,"$"],"NZD":[u,"$"],"PLN":["zł"],"RON":[u,"lej"],"TWD":[u,"NT$"],"USD":[u,"$"],"VND":[u,"₫"]},"ltr", plural_locale_pl]; + + + +function plural_locale_pt(n: number): number { +const i = Math.floor(Math.abs(n)); + +if (i === Math.floor(i) && (i >= 0 && i <= 1)) + return 1; +return 5; +} + +export const locale_pt = ["pt",[["AM","PM"],u,u],u,[["D","S","T","Q","Q","S","S"],["dom.","seg.","ter.","qua.","qui.","sex.","sáb."],["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],["dom.","seg.","ter.","qua.","qui.","sex.","sáb."]],u,[["J","F","M","A","M","J","J","A","S","O","N","D"],["jan.","fev.","mar.","abr.","mai.","jun.","jul.","ago.","set.","out.","nov.","dez."],["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"]],u,[["a.C.","d.C."],u,["antes de Cristo","depois de Cristo"]],0,[6,0],["dd/MM/y","d 'de' MMM 'de' y","d 'de' MMMM 'de' y","EEEE, d 'de' MMMM 'de' y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",u,u,u],[",",".",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤ #,##0.00","#E0"],"BRL","R$","Real brasileiro",{"AUD":["AU$","$"],"JPY":["JP¥","¥"],"PTE":["Esc."],"RON":[u,"L"],"SYP":[u,"S£"],"THB":["฿"],"TWD":["NT$"],"USD":["US$","$"]},"ltr", plural_locale_pt]; + +export const locale_pt_BR = locale_pt; + +function plural_locale_pt_PT(n: number): number { +const i = Math.floor(Math.abs(n)); + +if (i === Math.floor(i) && (i >= 0 && i <= 1)) + return 1; +return 5; +} + +export const locale_pt_PT = ["pt-PT",[["a.m.","p.m."],u,["da manhã","da tarde"]],[["a.m.","p.m."],u,["manhã","tarde"]],[["D","S","T","Q","Q","S","S"],["domingo","segunda","terça","quarta","quinta","sexta","sábado"],["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],["domingo","segunda","terça","quarta","quinta","sexta","sábado"]],u,[["J","F","M","A","M","J","J","A","S","O","N","D"],["jan.","fev.","mar.","abr.","mai.","jun.","jul.","ago.","set.","out.","nov.","dez."],["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"]],u,[["a.C.","d.C."],u,["antes de Cristo","depois de Cristo"]],0,[6,0],["dd/MM/yy","dd/MM/y","d 'de' MMMM 'de' y","EEEE, d 'de' MMMM 'de' y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",u,"{1} 'às' {0}",u],[","," ",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","#,##0.00 ¤","#E0"],"EUR","€","euro",{"AUD":["AU$","$"],"JPY":["JP¥","¥"],"PTE":["​"],"RON":[u,"L"],"THB":["฿"],"TWD":["NT$"],"USD":["US$","$"]},"ltr", plural_locale_pt_PT]; + + + +function plural_locale_ro(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +if (!(v === 0) || (n === 0 || n % 100 === Math.floor(n % 100) && (n % 100 >= 2 && n % 100 <= 19))) + return 3; +return 5; +} + +export const locale_ro = ["ro",[["a.m.","p.m."],u,u],u,[["D","L","M","M","J","V","S"],["dum.","lun.","mar.","mie.","joi","vin.","sâm."],["duminică","luni","marți","miercuri","joi","vineri","sâmbătă"],["du.","lu.","ma.","mi.","joi","vi.","sâ."]],u,[["I","F","M","A","M","I","I","A","S","O","N","D"],["ian.","feb.","mar.","apr.","mai","iun.","iul.","aug.","sept.","oct.","nov.","dec."],["ianuarie","februarie","martie","aprilie","mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie"]],u,[["î.Hr.","d.Hr."],u,["înainte de Hristos","după Hristos"]],1,[6,0],["dd.MM.y","d MMM y","d MMMM y","EEEE, d MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",u,u,u],[",",".",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0 %","#,##0.00 ¤","#E0"],"RON","RON","leu românesc",{"AUD":[u,"$"],"BRL":[u,"R$"],"CAD":[u,"$"],"CNY":[u,"¥"],"EUR":[u,"€"],"GBP":[u,"£"],"HKD":[u,"$"],"ILS":[u,"₪"],"INR":[u,"₹"],"JPY":[u,"¥"],"KRW":[u,"₩"],"MXN":[u,"$"],"NZD":[u,"$"],"TWD":[u,"NT$"],"USD":[u,"$"],"VND":[u,"₫"],"XCD":[u,"$"]},"ltr", plural_locale_ro]; + + + +function plural_locale_ru(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (v === 0 && (i % 10 === 1 && !(i % 100 === 11))) + return 1; +if (v === 0 && (i % 10 === Math.floor(i % 10) && (i % 10 >= 2 && i % 10 <= 4) && !(i % 100 >= 12 && i % 100 <= 14))) + return 3; +if (v === 0 && i % 10 === 0 || (v === 0 && (i % 10 === Math.floor(i % 10) && (i % 10 >= 5 && i % 10 <= 9)) || v === 0 && (i % 100 === Math.floor(i % 100) && (i % 100 >= 11 && i % 100 <= 14)))) + return 4; +return 5; +} + +export const locale_ru = ["ru",[["AM","PM"],u,u],u,[["вс","пн","вт","ср","чт","пт","сб"],u,["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],["вс","пн","вт","ср","чт","пт","сб"]],[["В","П","В","С","Ч","П","С"],["вс","пн","вт","ср","чт","пт","сб"],["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],["вс","пн","вт","ср","чт","пт","сб"]],[["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],["янв.","февр.","мар.","апр.","мая","июн.","июл.","авг.","сент.","окт.","нояб.","дек."],["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"]],[["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],["янв.","февр.","март","апр.","май","июнь","июль","авг.","сент.","окт.","нояб.","дек."],["январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь"]],[["до н.э.","н.э."],["до н. э.","н. э."],["до Рождества Христова","от Рождества Христова"]],1,[6,0],["dd.MM.y","d MMM y 'г'.","d MMMM y 'г'.","EEEE, d MMMM y 'г'."],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",u,u,u],[","," ",";","%","+","-","E","×","‰","∞","не число",":"],["#,##0.###","#,##0 %","#,##0.00 ¤","#E0"],"RUB","₽","российский рубль",{"GEL":[u,"ლ"],"RON":[u,"L"],"RUB":["₽"],"RUR":["р."],"THB":["฿"],"TMT":["ТМТ"],"TWD":["NT$"],"UAH":["₴"],"XXX":["XXXX"]},"ltr", plural_locale_ru]; + + + +function plural_locale_sr_Latn(n: number): number { +return 5; +} + +export const locale_sr_Latn = ["sr-Latn",[["a","p"],["pre podne","po podne"],u],[["pre podne","po podne"],u,u],[["n","p","u","s","č","p","s"],["ned","pon","uto","sre","čet","pet","sub"],["nedelja","ponedeljak","utorak","sreda","četvrtak","petak","subota"],["ne","po","ut","sr","če","pe","su"]],u,[["j","f","m","a","m","j","j","a","s","o","n","d"],["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec"],["januar","februar","mart","april","maj","jun","jul","avgust","septembar","oktobar","novembar","decembar"]],u,[["p.n.e.","n.e."],["p. n. e.","n. e."],["pre nove ere","nove ere"]],1,[6,0],["d.M.yy.","dd.MM.y.","dd. MMMM y.","EEEE, dd. MMMM y."],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",u,u,u],[",",".",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","#,##0.00 ¤","#E0"],"RSD","RSD","Srpski dinar",{"AUD":[u,"$"],"BAM":["KM"],"BYN":[u,"r."],"GEL":[u,"ლ"],"KRW":[u,"₩"],"NZD":[u,"$"],"TWD":["NT$"],"USD":["US$","$"],"VND":[u,"₫"]},"ltr", plural_locale_sr_Latn]; + +export const locale_sh = locale_sr_Latn; + +function plural_locale_si(n: number): number { +const i = Math.floor(Math.abs(n)), f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; + +if (n === 0 || n === 1 || i === 0 && f === 1) + return 1; +return 5; +} + +export const locale_si = ["si",[["පෙ","ප"],["පෙ.ව.","ප.ව."],u],[["පෙ.ව.","ප.ව."],u,u],[["ඉ","ස","අ","බ","බ්‍ර","සි","සෙ"],["ඉරිදා","සඳුදා","අඟහ","බදාදා","බ්‍රහස්","සිකු","සෙන"],["ඉරිදා","සඳුදා","අඟහරුවාදා","බදාදා","බ්‍රහස්පතින්දා","සිකුරාදා","සෙනසුරාදා"],["ඉරි","සඳු","අඟ","බදා","බ්‍රහ","සිකු","සෙන"]],u,[["ජ","පෙ","මා","අ","මැ","ජූ","ජූ","අ","සැ","ඔ","නෙ","දෙ"],["ජන","පෙබ","මාර්තු","අප්‍රේල්","මැයි","ජූනි","ජූලි","අගෝ","සැප්","ඔක්","නොවැ","දෙසැ"],["ජනවාරි","පෙබරවාරි","මාර්තු","අප්‍රේල්","මැයි","ජූනි","ජූලි","අගෝස්තු","සැප්තැම්බර්","ඔක්තෝබර්","නොවැම්බර්","දෙසැම්බර්"]],[["ජ","පෙ","මා","අ","මැ","ජූ","ජූ","අ","සැ","ඔ","නෙ","දෙ"],["ජන","පෙබ","මාර්","අප්‍රේල්","මැයි","ජූනි","ජූලි","අගෝ","සැප්","ඔක්","නොවැ","දෙසැ"],["ජනවාරි","පෙබරවාරි","මාර්තු","අප්‍රේල්","මැයි","ජූනි","ජූලි","අගෝස්තු","සැප්තැම්බර්","ඔක්තෝබර්","නොවැම්බර්","දෙසැම්බර්"]],[["ක්‍රි.පූ.","ක්‍රි.ව."],u,["ක්‍රිස්තු පූර්ව","ක්‍රිස්තු වර්ෂ"]],1,[6,0],["y-MM-dd","y MMM d","y MMMM d","y MMMM d, EEEE"],["HH.mm","HH.mm.ss","HH.mm.ss z","HH.mm.ss zzzz"],["{1} {0}",u,u,u],[".",",",";","%","+","-","E","×","‰","∞","NaN","."],["#,##0.###","#,##0%","¤#,##0.00","#"],"LKR","රු.","ශ්‍රී ලංකා රුපියල",{"JPY":["JP¥","¥"],"LKR":["රු."],"THB":["฿"],"TWD":["NT$"],"USD":["US$","$"],"XOF":["සිෆ්එ"]},"ltr", plural_locale_si]; + + + +function plural_locale_sk(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +if (i === Math.floor(i) && (i >= 2 && i <= 4) && v === 0) + return 3; +if (!(v === 0)) + return 4; +return 5; +} + +export const locale_sk = ["sk",[["AM","PM"],u,u],u,[["n","p","u","s","š","p","s"],["ne","po","ut","st","št","pi","so"],["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],["ne","po","ut","st","št","pi","so"]],u,[["j","f","m","a","m","j","j","a","s","o","n","d"],["jan","feb","mar","apr","máj","jún","júl","aug","sep","okt","nov","dec"],["januára","februára","marca","apríla","mája","júna","júla","augusta","septembra","októbra","novembra","decembra"]],[["j","f","m","a","m","j","j","a","s","o","n","d"],["jan","feb","mar","apr","máj","jún","júl","aug","sep","okt","nov","dec"],["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"]],[["pred Kr.","po Kr."],u,["pred Kristom","po Kristovi"]],1,[6,0],["d. M. y",u,"d. MMMM y","EEEE d. MMMM y"],["H:mm","H:mm:ss","H:mm:ss z","H:mm:ss zzzz"],["{1} {0}","{1}, {0}",u,u],[","," ",";","%","+","-","e","×","‰","∞","NaN",":"],["#,##0.###","#,##0 %","#,##0.00 ¤","#E0"],"EUR","€","euro",{"AUD":[u,"$"],"BRL":[u,"R$"],"CAD":[u,"$"],"CNY":[u,"¥"],"GBP":[u,"£"],"HKD":[u,"$"],"ILS":["NIS","₪"],"INR":[u,"₹"],"JPY":[u,"¥"],"KRW":[u,"₩"],"NZD":[u,"$"],"TWD":[u,"NT$"],"USD":[u,"$"],"VND":[u,"₫"],"XXX":[]},"ltr", plural_locale_sk]; + + + +function plural_locale_sl(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (v === 0 && i % 100 === 1) + return 1; +if (v === 0 && i % 100 === 2) + return 2; +if (v === 0 && (i % 100 === Math.floor(i % 100) && (i % 100 >= 3 && i % 100 <= 4)) || !(v === 0)) + return 3; +return 5; +} + +export const locale_sl = ["sl",[["d","p"],["dop.","pop."],u],[["d","p"],["dop.","pop."],["dopoldne","popoldne"]],[["n","p","t","s","č","p","s"],["ned.","pon.","tor.","sre.","čet.","pet.","sob."],["nedelja","ponedeljek","torek","sreda","četrtek","petek","sobota"],["ned.","pon.","tor.","sre.","čet.","pet.","sob."]],u,[["j","f","m","a","m","j","j","a","s","o","n","d"],["jan.","feb.","mar.","apr.","maj","jun.","jul.","avg.","sep.","okt.","nov.","dec."],["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december"]],u,[["pr. Kr.","po Kr."],u,["pred Kristusom","po Kristusu"]],1,[6,0],["d. MM. yy","d. MMM y","dd. MMMM y","EEEE, dd. MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",u,u,u],[",",".",";","%","+","−","e","×","‰","∞","NaN",":"],["#,##0.###","#,##0 %","#,##0.00 ¤","#E0"],"EUR","€","evro",{"AUD":[u,"$"],"BRL":[u,"R$"],"CAD":[u,"$"],"GBP":[u,"£"],"MXN":[u,"$"],"NZD":[u,"$"],"TWD":[u,"NT$"],"XCD":[u,"$"]},"ltr", plural_locale_sl]; + + + +function plural_locale_sq(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_sq = ["sq",[["p.d.","m.d."],u,["e paradites","e pasdites"]],[["p.d.","m.d."],u,["paradite","pasdite"]],[["d","h","m","m","e","p","sh"],["Die","Hën","Mar","Mër","Enj","Pre","Sht"],["e diel","e hënë","e martë","e mërkurë","e enjte","e premte","e shtunë"],["die","hën","mar","mër","enj","pre","sht"]],[["d","h","m","m","e","p","sh"],["die","hën","mar","mër","enj","pre","sht"],["e diel","e hënë","e martë","e mërkurë","e enjte","e premte","e shtunë"],["die","hën","mar","mër","enj","pre","sht"]],[["j","sh","m","p","m","q","k","g","sh","t","n","dh"],["jan","shk","mar","pri","maj","qer","korr","gush","sht","tet","nën","dhj"],["janar","shkurt","mars","prill","maj","qershor","korrik","gusht","shtator","tetor","nëntor","dhjetor"]],u,[["p.K.","mb.K."],u,["para Krishtit","mbas Krishtit"]],1,[6,0],["d.M.yy","d MMM y","d MMMM y","EEEE, d MMMM y"],["h:mm a","h:mm:ss a","h:mm:ss a, z","h:mm:ss a, zzzz"],["{1}, {0}",u,"{1} 'në' {0}",u],[","," ",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","#,##0.00 ¤","#E0"],"ALL","Lekë","Leku shqiptar",{"ALL":["Lekë"],"AOA":[],"ARS":[],"AUD":["A$","AUD"],"BAM":[],"BBD":[],"BDT":[],"BMD":[],"BND":[],"BOB":[],"BRL":[],"BSD":[],"BWP":[],"BYN":[],"BZD":[],"CAD":["CA$","CAD"],"CLP":[],"CNY":["CN¥","CNY"],"COP":[],"CRC":[],"CUC":[],"CUP":[],"CZK":[],"DKK":[],"DOP":[],"EGP":[],"EUR":["€","EUR"],"FJD":[],"FKP":[],"GBP":["£","GBP"],"GEL":[],"GIP":[],"GNF":[],"GTQ":[],"GYD":[],"HKD":["HK$","HKS"],"HNL":[],"HRK":[],"HUF":[],"IDR":[],"ILS":["₪","ILS"],"INR":["₹","INR"],"ISK":[],"JMD":[],"JPY":["JP¥","JPY"],"KHR":[],"KMF":[],"KPW":[],"KRW":["₩","KRW"],"KYD":[],"KZT":[],"LAK":[],"LBP":[],"LKR":[],"LRD":[],"MGA":[],"MMK":[],"MNT":[],"MUR":[],"MXN":["MX$","MXN"],"MYR":[],"NAD":[],"NGN":[],"NIO":[],"NOK":[],"NPR":[],"NZD":["NZ$","NZD"],"PHP":[],"PKR":[],"PLN":[],"PYG":[],"RON":[],"RUB":[],"RWF":[],"SBD":[],"SEK":[],"SGD":[],"SHP":[],"SRD":[],"SSP":[],"STN":[],"SYP":[],"THB":["฿","THB"],"TOP":[],"TRY":[],"TTD":[],"TWD":["NT$","TWD"],"UAH":[],"USD":["US$","USD"],"UYU":[],"VND":["₫","VND"],"XCD":["EC$","XCD"],"ZAR":[],"ZMW":[]},"ltr", plural_locale_sq]; + + + +function plural_locale_sr(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; + +if (v === 0 && (i % 10 === 1 && !(i % 100 === 11)) || f % 10 === 1 && !(f % 100 === 11)) + return 1; +if (v === 0 && (i % 10 === Math.floor(i % 10) && (i % 10 >= 2 && i % 10 <= 4) && !(i % 100 >= 12 && i % 100 <= 14)) || f % 10 === Math.floor(f % 10) && (f % 10 >= 2 && f % 10 <= 4) && !(f % 100 >= 12 && f % 100 <= 14)) + return 3; +return 5; +} + +export const locale_sr = ["sr",[["a","p"],["пре подне","по подне"],u],[["пре подне","по подне"],u,u],[["н","п","у","с","ч","п","с"],["нед","пон","уто","сре","чет","пет","суб"],["недеља","понедељак","уторак","среда","четвртак","петак","субота"],["не","по","ут","ср","че","пе","су"]],u,[["ј","ф","м","а","м","ј","ј","а","с","о","н","д"],["јан","феб","мар","апр","мај","јун","јул","авг","сеп","окт","нов","дец"],["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"]],u,[["п.н.е.","н.е."],["п. н. е.","н. е."],["пре нове ере","нове ере"]],1,[6,0],["d.M.yy.","dd.MM.y.","dd. MMMM y.","EEEE, dd. MMMM y."],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",u,u,u],[",",".",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","#,##0.00 ¤","#E0"],"RSD","RSD","Српски динар",{"AUD":[u,"$"],"BAM":["КМ","KM"],"GEL":[u,"ლ"],"KRW":[u,"₩"],"NZD":[u,"$"],"TWD":["NT$"],"USD":["US$","$"],"VND":[u,"₫"]},"ltr", plural_locale_sr]; + + + +function plural_locale_sv(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +return 5; +} + +export const locale_sv = ["sv",[["fm","em"],u,u],[["fm","em"],["f.m.","e.m."],["förmiddag","eftermiddag"]],[["S","M","T","O","T","F","L"],["sön","mån","tis","ons","tors","fre","lör"],["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],["sö","må","ti","on","to","fr","lö"]],u,[["J","F","M","A","M","J","J","A","S","O","N","D"],["jan.","feb.","mars","apr.","maj","juni","juli","aug.","sep.","okt.","nov.","dec."],["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"]],u,[["f.Kr.","e.Kr."],u,["före Kristus","efter Kristus"]],1,[6,0],["y-MM-dd","d MMM y","d MMMM y","EEEE d MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","'kl'. HH:mm:ss zzzz"],["{1} {0}",u,u,u],[","," ",";","%","+","−","×10^","×","‰","∞","NaN",":"],["#,##0.###","#,##0 %","#,##0.00 ¤","#E0"],"SEK","kr","svensk krona",{"AUD":[u,"$"],"BBD":["Bds$","$"],"BMD":["BM$","$"],"BRL":["BR$","R$"],"BSD":["BS$","$"],"BZD":["BZ$","$"],"CNY":[u,"¥"],"DKK":["Dkr","kr"],"DOP":["RD$","$"],"EEK":["Ekr"],"EGP":["EG£","E£"],"ESP":[],"GBP":[u,"£"],"HKD":[u,"$"],"IEP":["IE£"],"INR":[u,"₹"],"ISK":["Ikr","kr"],"JMD":["JM$","$"],"JPY":[u,"¥"],"KRW":[u,"₩"],"NOK":["Nkr","kr"],"NZD":[u,"$"],"RON":[u,"L"],"SEK":["kr"],"TWD":[u,"NT$"],"USD":["US$","$"],"VND":[u,"₫"]},"ltr", plural_locale_sv]; + + + +function plural_locale_sw(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +return 5; +} + +export const locale_sw = ["sw",[["am","pm"],["AM","PM"],u],[["AM","PM"],u,u],[["S","M","T","W","T","F","S"],["Jumapili","Jumatatu","Jumanne","Jumatano","Alhamisi","Ijumaa","Jumamosi"],u,u],u,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ago","Sep","Okt","Nov","Des"],["Januari","Februari","Machi","Aprili","Mei","Juni","Julai","Agosti","Septemba","Oktoba","Novemba","Desemba"]],u,[["KK","BK"],u,["Kabla ya Kristo","Baada ya Kristo"]],1,[6,0],["dd/MM/y","d MMM y","d MMMM y","EEEE, d MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",u,u,u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤ #,##0.00","#E0"],"TZS","TSh","Shilingi ya Tanzania",{"JPY":["JP¥","¥"],"KES":["Ksh"],"THB":["฿"],"TWD":["NT$"],"TZS":["TSh"],"USD":["US$","$"]},"ltr", plural_locale_sw]; + + + +function plural_locale_ta(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_ta = ["ta",[["மு.ப","பி.ப"],["முற்பகல்","பிற்பகல்"],u],u,[["ஞா","தி","செ","பு","வி","வெ","ச"],["ஞாயி.","திங்.","செவ்.","புத.","வியா.","வெள்.","சனி"],["ஞாயிறு","திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி"],["ஞா","தி","செ","பு","வி","வெ","ச"]],u,[["ஜ","பி","மா","ஏ","மே","ஜூ","ஜூ","ஆ","செ","அ","ந","டி"],["ஜன.","பிப்.","மார்.","ஏப்.","மே","ஜூன்","ஜூலை","ஆக.","செப்.","அக்.","நவ.","டிச."],["ஜனவரி","பிப்ரவரி","மார்ச்","ஏப்ரல்","மே","ஜூன்","ஜூலை","ஆகஸ்ட்","செப்டம்பர்","அக்டோபர்","நவம்பர்","டிசம்பர்"]],u,[["கி.மு.","கி.பி."],u,["கிறிஸ்துவுக்கு முன்","அன்னோ டோமினி"]],0,[0,0],["d/M/yy","d MMM, y","d MMMM, y","EEEE, d MMMM, y"],["a h:mm","a h:mm:ss","a h:mm:ss z","a h:mm:ss zzzz"],["{1}, {0}",u,"{1} ’அன்று’ {0}",u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##,##0.###","#,##,##0%","¤ #,##,##0.00","#E0"],"INR","₹","இந்திய ரூபாய்",{"THB":["฿"],"TWD":["NT$"]},"ltr", plural_locale_ta]; + + + +function plural_locale_te(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_te = ["te",[["ఉ","సా"],["AM","PM"],u],[["AM","PM"],u,u],[["ఆ","సో","మ","బు","గు","శు","శ"],["ఆది","సోమ","మంగళ","బుధ","గురు","శుక్ర","శని"],["ఆదివారం","సోమవారం","మంగళవారం","బుధవారం","గురువారం","శుక్రవారం","శనివారం"],["ఆది","సోమ","మం","బుధ","గురు","శుక్ర","శని"]],u,[["జ","ఫి","మా","ఏ","మే","జూ","జు","ఆ","సె","అ","న","డి"],["జన","ఫిబ్ర","మార్చి","ఏప్రి","మే","జూన్","జులై","ఆగ","సెప్టెం","అక్టో","నవం","డిసెం"],["జనవరి","ఫిబ్రవరి","మార్చి","ఏప్రిల్","మే","జూన్","జులై","ఆగస్టు","సెప్టెంబర్","అక్టోబర్","నవంబర్","డిసెంబర్"]],u,[["క్రీపూ","క్రీశ"],u,["క్రీస్తు పూర్వం","క్రీస్తు శకం"]],0,[0,0],["dd-MM-yy","d MMM, y","d MMMM, y","d, MMMM y, EEEE"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1} {0}",u,"{1} {0}కి",u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##,##0.###","#,##0%","¤#,##,##0.00","#E0"],"INR","₹","రూపాయి",{"JPY":["JP¥","¥"],"THB":["฿"],"TWD":["NT$"]},"ltr", plural_locale_te]; + + + +function plural_locale_th(n: number): number { +return 5; +} + +export const locale_th = ["th",[["a","p"],["ก่อนเที่ยง","หลังเที่ยง"],u],[["ก่อนเที่ยง","หลังเที่ยง"],u,u],[["อา","จ","อ","พ","พฤ","ศ","ส"],["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."]],u,[["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],u,["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"]],u,[["ก่อน ค.ศ.","ค.ศ."],u,["ปีก่อนคริสตกาล","คริสต์ศักราช"]],0,[6,0],["d/M/yy","d MMM y","d MMMM G y","EEEEที่ d MMMM G y"],["HH:mm","HH:mm:ss","H นาฬิกา mm นาที ss วินาที z","H นาฬิกา mm นาที ss วินาที zzzz"],["{1} {0}",u,u,u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"THB","฿","บาท",{"AUD":["AU$","$"],"THB":["฿"],"TWD":["NT$"],"USD":["US$","$"],"XXX":[]},"ltr", plural_locale_th]; + + + +function plural_locale_fil(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; + +if (v === 0 && (i === 1 || (i === 2 || i === 3)) || (v === 0 && !(i % 10 === 4 || (i % 10 === 6 || i % 10 === 9)) || !(v === 0) && !(f % 10 === 4 || (f % 10 === 6 || f % 10 === 9)))) + return 1; +return 5; +} + +export const locale_fil = ["fil",[["am","pm"],["AM","PM"],u],[["AM","PM"],u,u],[["Lin","Lun","Mar","Miy","Huw","Biy","Sab"],u,["Linggo","Lunes","Martes","Miyerkules","Huwebes","Biyernes","Sabado"],["Li","Lu","Ma","Mi","Hu","Bi","Sa"]],u,[["Ene","Peb","Mar","Abr","May","Hun","Hul","Ago","Set","Okt","Nob","Dis"],u,["Enero","Pebrero","Marso","Abril","Mayo","Hunyo","Hulyo","Agosto","Setyembre","Oktubre","Nobyembre","Disyembre"]],[["E","P","M","A","M","Hun","Hul","Ago","Set","Okt","Nob","Dis"],["Ene","Peb","Mar","Abr","May","Hun","Hul","Ago","Set","Okt","Nob","Dis"],["Enero","Pebrero","Marso","Abril","Mayo","Hunyo","Hulyo","Agosto","Setyembre","Oktubre","Nobyembre","Disyembre"]],[["BC","AD"],u,["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",u,"{1} 'nang' {0}",u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"PHP","₱","Piso ng Pilipinas",{"PHP":["₱"],"THB":["฿"],"TWD":["NT$"]},"ltr", plural_locale_fil]; + +export const locale_tl = locale_fil; + +function plural_locale_tr(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_tr = ["tr",[["öö","ös"],["ÖÖ","ÖS"],u],[["ÖÖ","ÖS"],u,u],[["P","P","S","Ç","P","C","C"],["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],["Pa","Pt","Sa","Ça","Pe","Cu","Ct"]],u,[["O","Ş","M","N","M","H","T","A","E","E","K","A"],["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"]],u,[["MÖ","MS"],u,["Milattan Önce","Milattan Sonra"]],1,[6,0],["d.MM.y","d MMM y","d MMMM y","d MMMM y EEEE"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",u,u,u],[",",".",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","%#,##0","¤#,##0.00","#E0"],"TRY","₺","Türk Lirası",{"AUD":["AU$","$"],"RON":[u,"L"],"THB":["฿"],"TRY":["₺"],"TWD":["NT$"]},"ltr", plural_locale_tr]; + + + +function plural_locale_uk(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (v === 0 && (i % 10 === 1 && !(i % 100 === 11))) + return 1; +if (v === 0 && (i % 10 === Math.floor(i % 10) && (i % 10 >= 2 && i % 10 <= 4) && !(i % 100 >= 12 && i % 100 <= 14))) + return 3; +if (v === 0 && i % 10 === 0 || (v === 0 && (i % 10 === Math.floor(i % 10) && (i % 10 >= 5 && i % 10 <= 9)) || v === 0 && (i % 100 === Math.floor(i % 100) && (i % 100 >= 11 && i % 100 <= 14)))) + return 4; +return 5; +} + +export const locale_uk = ["uk",[["дп","пп"],u,u],u,[["Н","П","В","С","Ч","П","С"],["нд","пн","вт","ср","чт","пт","сб"],["неділя","понеділок","вівторок","середа","четвер","пʼятниця","субота"],["нд","пн","вт","ср","чт","пт","сб"]],u,[["с","л","б","к","т","ч","л","с","в","ж","л","г"],["січ.","лют.","бер.","квіт.","трав.","черв.","лип.","серп.","вер.","жовт.","лист.","груд."],["січня","лютого","березня","квітня","травня","червня","липня","серпня","вересня","жовтня","листопада","грудня"]],[["С","Л","Б","К","Т","Ч","Л","С","В","Ж","Л","Г"],["січ","лют","бер","кві","тра","чер","лип","сер","вер","жов","лис","гру"],["січень","лютий","березень","квітень","травень","червень","липень","серпень","вересень","жовтень","листопад","грудень"]],[["до н.е.","н.е."],["до н. е.","н. е."],["до нашої ери","нашої ери"]],1,[6,0],["dd.MM.yy","d MMM y 'р'.","d MMMM y 'р'.","EEEE, d MMMM y 'р'."],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",u,"{1} 'о' {0}",u],[","," ",";","%","+","-","Е","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","#,##0.00 ¤","#E0"],"UAH","₴","українська гривня",{"AUD":[u,"$"],"BRL":[u,"R$"],"CAD":[u,"$"],"CNY":[u,"¥"],"EUR":[u,"€"],"GBP":[u,"£"],"HKD":[u,"$"],"ILS":[u,"₪"],"INR":[u,"₹"],"KRW":[u,"₩"],"MXN":[u,"$"],"NZD":[u,"$"],"TWD":[u,"$"],"UAH":["₴"],"UAK":["крб."],"USD":[u,"$"],"VND":[u,"₫"],"XCD":[u,"$"]},"ltr", plural_locale_uk]; + + + +function plural_locale_ur(n: number): number { +const i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; + +if (i === 1 && v === 0) + return 1; +return 5; +} + +export const locale_ur = ["ur",[["a","p"],["AM","PM"],u],[["AM","PM"],u,u],[["S","M","T","W","T","F","S"],["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"],u,u],u,[["J","F","M","A","M","J","J","A","S","O","N","D"],["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],u],u,[["قبل مسیح","عیسوی"],u,u],0,[6,0],["d/M/yy","d MMM، y","d MMMM، y","EEEE، d MMMM، y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1} {0}",u,u,u],[".",",",";","%","‎+","‎-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤ #,##0.00","#E0"],"PKR","Rs","پاکستانی روپیہ",{"JPY":["JP¥","¥"],"PKR":["Rs"],"THB":["฿"],"TWD":["NT$"]},"rtl", plural_locale_ur]; + + + +function plural_locale_uz(n: number): number { + +if (n === 1) + return 1; +return 5; +} + +export const locale_uz = ["uz",[["TO","TK"],u,u],u,[["Y","D","S","C","P","J","S"],["Yak","Dush","Sesh","Chor","Pay","Jum","Shan"],["yakshanba","dushanba","seshanba","chorshanba","payshanba","juma","shanba"],["Ya","Du","Se","Ch","Pa","Ju","Sh"]],u,[["Y","F","M","A","M","I","I","A","S","O","N","D"],["yan","fev","mar","apr","may","iyn","iyl","avg","sen","okt","noy","dek"],["yanvar","fevral","mart","aprel","may","iyun","iyul","avgust","sentabr","oktabr","noyabr","dekabr"]],[["Y","F","M","A","M","I","I","A","S","O","N","D"],["Yan","Fev","Mar","Apr","May","Iyn","Iyl","Avg","Sen","Okt","Noy","Dek"],["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avgust","Sentabr","Oktabr","Noyabr","Dekabr"]],[["m.a.","milodiy"],u,["miloddan avvalgi","milodiy"]],1,[6,0],["dd/MM/yy","d-MMM, y","d-MMMM, y","EEEE, d-MMMM, y"],["HH:mm","HH:mm:ss","H:mm:ss (z)","H:mm:ss (zzzz)"],["{1}, {0}",u,u,u],[","," ",";","%","+","-","E","×","‰","∞","son emas",":"],["#,##0.###","#,##0%","#,##0.00 ¤","#E0"],"UZS","soʻm","O‘zbekiston so‘mi",{"JPY":["JP¥","¥"],"USD":["US$","$"],"UZS":["soʻm"]},"ltr", plural_locale_uz]; + + + +function plural_locale_vi(n: number): number { +return 5; +} + +export const locale_vi = ["vi",[["s","c"],["SA","CH"],u],[["SA","CH"],u,u],[["CN","T2","T3","T4","T5","T6","T7"],["CN","Th 2","Th 3","Th 4","Th 5","Th 6","Th 7"],["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"],["CN","T2","T3","T4","T5","T6","T7"]],u,[["1","2","3","4","5","6","7","8","9","10","11","12"],["thg 1","thg 2","thg 3","thg 4","thg 5","thg 6","thg 7","thg 8","thg 9","thg 10","thg 11","thg 12"],["tháng 1","tháng 2","tháng 3","tháng 4","tháng 5","tháng 6","tháng 7","tháng 8","tháng 9","tháng 10","tháng 11","tháng 12"]],[["1","2","3","4","5","6","7","8","9","10","11","12"],["Thg 1","Thg 2","Thg 3","Thg 4","Thg 5","Thg 6","Thg 7","Thg 8","Thg 9","Thg 10","Thg 11","Thg 12"],["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"]],[["tr. CN","sau CN"],["Trước CN","sau CN"],u],1,[6,0],["dd/MM/y","d MMM, y","d MMMM, y","EEEE, d MMMM, y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{0}, {1}",u,"{0} {1}",u],[",",".",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","#,##0.00 ¤","#E0"],"VND","₫","Đồng Việt Nam",{"AUD":["AU$","$"],"JPY":["JP¥","¥"],"THB":["฿"],"TWD":["NT$"],"USD":["US$","$"],"XXX":[]},"ltr", plural_locale_vi]; + + + +function plural_locale_zh(n: number): number { +return 5; +} + +export const locale_zh = ["zh",[["上午","下午"],u,u],u,[["日","一","二","三","四","五","六"],["周日","周一","周二","周三","周四","周五","周六"],["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],["周日","周一","周二","周三","周四","周五","周六"]],u,[["1","2","3","4","5","6","7","8","9","10","11","12"],["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]],u,[["公元前","公元"],u,u],0,[6,0],["y/M/d","y年M月d日",u,"y年M月d日EEEE"],["ah:mm","ah:mm:ss","z ah:mm:ss","zzzz ah:mm:ss"],["{1} {0}",u,u,u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"CNY","¥","人民币",{"AUD":["AU$","$"],"CNY":["¥"],"ILR":["ILS"],"JPY":["JP¥","¥"],"KRW":["₩","₩"],"TWD":["NT$"],"USD":["US$","$"],"XXX":[]},"ltr", plural_locale_zh]; + + + +function plural_locale_zh_Hans(n: number): number { +return 5; +} + +export const locale_zh_Hans = ["zh-Hans",[["上午","下午"],u,u],u,[["日","一","二","三","四","五","六"],["周日","周一","周二","周三","周四","周五","周六"],["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],["周日","周一","周二","周三","周四","周五","周六"]],u,[["1","2","3","4","5","6","7","8","9","10","11","12"],["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]],u,[["公元前","公元"],u,u],0,[6,0],["y/M/d","y年M月d日",u,"y年M月d日EEEE"],["ah:mm","ah:mm:ss","z ah:mm:ss","zzzz ah:mm:ss"],["{1} {0}",u,u,u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"CNY","¥","人民币",{"AUD":["AU$","$"],"CNY":["¥"],"ILR":["ILS"],"JPY":["JP¥","¥"],"KRW":["₩","₩"],"TWD":["NT$"],"USD":["US$","$"],"XXX":[]},"ltr", plural_locale_zh_Hans]; + +export const locale_zh_Hans_CN = locale_zh_Hans; +export const locale_zh_CN = locale_zh_Hans; + +function plural_locale_zh_Hant_HK(n: number): number { +return 5; +} + +export const locale_zh_Hant_HK = ["zh-Hant-HK",[["上午","下午"],u,u],u,[["日","一","二","三","四","五","六"],["週日","週一","週二","週三","週四","週五","週六"],["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],["日","一","二","三","四","五","六"]],u,[["1","2","3","4","5","6","7","8","9","10","11","12"],["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],u],u,[["公元前","公元"],u,u],0,[6,0],["d/M/y","y年M月d日",u,"y年M月d日EEEE"],["ah:mm","ah:mm:ss","ah:mm:ss [z]","ah:mm:ss [zzzz]"],["{1} {0}",u,u,u],[".",",",";","%","+","-","E","×","‰","∞","非數值",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"HKD","HK$","港元",{"AUD":["AU$","$"],"RON":[u,"L"],"USD":["US$","$"],"XXX":[]},"ltr", plural_locale_zh_Hant_HK]; + +export const locale_zh_HK = locale_zh_Hant_HK; + +function plural_locale_zh_Hant(n: number): number { +return 5; +} + +export const locale_zh_Hant = ["zh-Hant",[["上午","下午"],u,u],u,[["日","一","二","三","四","五","六"],["週日","週一","週二","週三","週四","週五","週六"],["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],["日","一","二","三","四","五","六"]],u,[["1","2","3","4","5","6","7","8","9","10","11","12"],["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],u],u,[["西元前","西元"],u,u],0,[6,0],["y/M/d","y年M月d日",u,"y年M月d日 EEEE"],["ah:mm","ah:mm:ss","ah:mm:ss [z]","ah:mm:ss [zzzz]"],["{1} {0}",u,u,u],[".",",",";","%","+","-","E","×","‰","∞","非數值",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"TWD","$","新台幣",{"AUD":["AU$","$"],"KRW":["₩","₩"],"RON":[u,"L"],"TWD":["$"],"USD":["US$","$"],"XXX":[]},"ltr", plural_locale_zh_Hant]; + +export const locale_zh_Hant_TW = locale_zh_Hant; +export const locale_zh_TW = locale_zh_Hant; + +function plural_locale_zu(n: number): number { +const i = Math.floor(Math.abs(n)); + +if (i === 0 || n === 1) + return 1; +return 5; +} + +export const locale_zu = ["zu",[["a","p"],["AM","PM"],u],[["AM","PM"],u,u],[["S","M","B","T","S","H","M"],["Son","Mso","Bil","Tha","Sin","Hla","Mgq"],["ISonto","UMsombuluko","ULwesibili","ULwesithathu","ULwesine","ULwesihlanu","UMgqibelo"],["Son","Mso","Bil","Tha","Sin","Hla","Mgq"]],u,[["J","F","M","E","M","J","J","A","S","O","N","D"],["Jan","Feb","Mas","Eph","Mey","Jun","Jul","Aga","Sep","Okt","Nov","Dis"],["Januwari","Februwari","Mashi","Ephreli","Meyi","Juni","Julayi","Agasti","Septhemba","Okthoba","Novemba","Disemba"]],[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mas","Eph","Mey","Jun","Jul","Aga","Sep","Okt","Nov","Dis"],["Januwari","Februwari","Mashi","Ephreli","Meyi","Juni","Julayi","Agasti","Septhemba","Okthoba","Novemba","Disemba"]],[["BC","AD"],u,u],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",u,u,u],[".",",",";","%","+","-","E","×","‰","∞","NaN",":"],["#,##0.###","#,##0%","¤#,##0.00","#E0"],"ZAR","R","i-South African Rand",{"BYN":[u,"P."],"DKK":[u,"Kr"],"HRK":[u,"Kn"],"ISK":[u,"Kr"],"JPY":["JP¥","¥"],"NOK":[u,"Kr"],"PLN":[u,"Zł"],"SEK":[u,"Kr"],"THB":["฿"],"TWD":["NT$"],"ZAR":["R"]},"ltr", plural_locale_zu]; + let l: any; let locales: string[] = []; switch (goog.LOCALE) { - case 'af': - l = locale_af; - locales = ['af']; - break; - case 'am': - l = locale_am; - locales = ['am']; - break; - case 'ar': - l = locale_ar; - locales = ['ar']; - break; - case 'ar-DZ': - case 'ar_DZ': - l = locale_ar_DZ; - locales = ['ar-DZ', 'ar_DZ']; - break; - case 'az': - l = locale_az; - locales = ['az']; - break; - case 'be': - l = locale_be; - locales = ['be']; - break; - case 'bg': - l = locale_bg; - locales = ['bg']; - break; - case 'bn': - l = locale_bn; - locales = ['bn']; - break; - case 'br': - l = locale_br; - locales = ['br']; - break; - case 'bs': - l = locale_bs; - locales = ['bs']; - break; - case 'ca': - l = locale_ca; - locales = ['ca']; - break; - case 'chr': - l = locale_chr; - locales = ['chr']; - break; - case 'cs': - l = locale_cs; - locales = ['cs']; - break; - case 'cy': - l = locale_cy; - locales = ['cy']; - break; - case 'da': - l = locale_da; - locales = ['da']; - break; - case 'de': - l = locale_de; - locales = ['de']; - break; - case 'de-AT': - case 'de_AT': - l = locale_de_AT; - locales = ['de-AT', 'de_AT']; - break; - case 'de-CH': - case 'de_CH': - l = locale_de_CH; - locales = ['de-CH', 'de_CH']; - break; - case 'el': - l = locale_el; - locales = ['el']; - break; - case 'en-AU': - case 'en_AU': - l = locale_en_AU; - locales = ['en-AU', 'en_AU']; - break; - case 'en-CA': - case 'en_CA': - l = locale_en_CA; - locales = ['en-CA', 'en_CA']; - break; - case 'en-GB': - case 'en_GB': - l = locale_en_GB; - locales = ['en-GB', 'en_GB']; - break; - case 'en-IE': - case 'en_IE': - l = locale_en_IE; - locales = ['en-IE', 'en_IE']; - break; - case 'en-IN': - case 'en_IN': - l = locale_en_IN; - locales = ['en-IN', 'en_IN']; - break; - case 'en-SG': - case 'en_SG': - l = locale_en_SG; - locales = ['en-SG', 'en_SG']; - break; - case 'en-ZA': - case 'en_ZA': - l = locale_en_ZA; - locales = ['en-ZA', 'en_ZA']; - break; - case 'es': - l = locale_es; - locales = ['es']; - break; - case 'es-419': - case 'es_419': - l = locale_es_419; - locales = ['es-419', 'es_419']; - break; - case 'es-MX': - case 'es_MX': - l = locale_es_MX; - locales = ['es-MX', 'es_MX']; - break; - case 'es-US': - case 'es_US': - l = locale_es_US; - locales = ['es-US', 'es_US']; - break; - case 'et': - l = locale_et; - locales = ['et']; - break; - case 'eu': - l = locale_eu; - locales = ['eu']; - break; - case 'fa': - l = locale_fa; - locales = ['fa']; - break; - case 'fi': - l = locale_fi; - locales = ['fi']; - break; - case 'fr': - l = locale_fr; - locales = ['fr']; - break; - case 'fr-CA': - case 'fr_CA': - l = locale_fr_CA; - locales = ['fr-CA', 'fr_CA']; - break; - case 'ga': - l = locale_ga; - locales = ['ga']; - break; - case 'gl': - l = locale_gl; - locales = ['gl']; - break; - case 'gsw': - l = locale_gsw; - locales = ['gsw']; - break; - case 'gu': - l = locale_gu; - locales = ['gu']; - break; - case 'haw': - l = locale_haw; - locales = ['haw']; - break; - case 'hi': - l = locale_hi; - locales = ['hi']; - break; - case 'hr': - l = locale_hr; - locales = ['hr']; - break; - case 'hu': - l = locale_hu; - locales = ['hu']; - break; - case 'hy': - l = locale_hy; - locales = ['hy']; - break; - case 'in': - case 'id': - l = locale_in; - locales = ['in', 'id']; - break; - case 'is': - l = locale_is; - locales = ['is']; - break; - case 'it': - l = locale_it; - locales = ['it']; - break; - case 'iw': - case 'he': - l = locale_iw; - locales = ['iw', 'he']; - break; - case 'ja': - l = locale_ja; - locales = ['ja']; - break; - case 'ka': - l = locale_ka; - locales = ['ka']; - break; - case 'kk': - l = locale_kk; - locales = ['kk']; - break; - case 'km': - l = locale_km; - locales = ['km']; - break; - case 'kn': - l = locale_kn; - locales = ['kn']; - break; - case 'ko': - l = locale_ko; - locales = ['ko']; - break; - case 'ky': - l = locale_ky; - locales = ['ky']; - break; - case 'ln': - l = locale_ln; - locales = ['ln']; - break; - case 'lo': - l = locale_lo; - locales = ['lo']; - break; - case 'lt': - l = locale_lt; - locales = ['lt']; - break; - case 'lv': - l = locale_lv; - locales = ['lv']; - break; - case 'mk': - l = locale_mk; - locales = ['mk']; - break; - case 'ml': - l = locale_ml; - locales = ['ml']; - break; - case 'mn': - l = locale_mn; - locales = ['mn']; - break; - case 'mo': - case 'ro-MD': - case 'ro_MD': - l = locale_mo; - locales = ['mo', 'ro-MD', 'ro_MD']; - break; - case 'mr': - l = locale_mr; - locales = ['mr']; - break; - case 'ms': - l = locale_ms; - locales = ['ms']; - break; - case 'mt': - l = locale_mt; - locales = ['mt']; - break; - case 'my': - l = locale_my; - locales = ['my']; - break; - case 'ne': - l = locale_ne; - locales = ['ne']; - break; - case 'nl': - l = locale_nl; - locales = ['nl']; - break; - case 'no': - case 'nb': - case 'no-NO': - case 'no_NO': - l = locale_no; - locales = ['no', 'nb', 'no-NO', 'no_NO']; - break; - case 'or': - l = locale_or; - locales = ['or']; - break; - case 'pa': - l = locale_pa; - locales = ['pa']; - break; - case 'pl': - l = locale_pl; - locales = ['pl']; - break; - case 'pt': - case 'pt-BR': - case 'pt_BR': - l = locale_pt; - locales = ['pt', 'pt-BR', 'pt_BR']; - break; - case 'pt-PT': - case 'pt_PT': - l = locale_pt_PT; - locales = ['pt-PT', 'pt_PT']; - break; - case 'ro': - l = locale_ro; - locales = ['ro']; - break; - case 'ru': - l = locale_ru; - locales = ['ru']; - break; - case 'sh': - case 'sr-Latn': - case 'sr_Latn': - l = locale_sh; - locales = ['sh', 'sr-Latn', 'sr_Latn']; - break; - case 'si': - l = locale_si; - locales = ['si']; - break; - case 'sk': - l = locale_sk; - locales = ['sk']; - break; - case 'sl': - l = locale_sl; - locales = ['sl']; - break; - case 'sq': - l = locale_sq; - locales = ['sq']; - break; - case 'sr': - l = locale_sr; - locales = ['sr']; - break; - case 'sv': - l = locale_sv; - locales = ['sv']; - break; - case 'sw': - l = locale_sw; - locales = ['sw']; - break; - case 'ta': - l = locale_ta; - locales = ['ta']; - break; - case 'te': - l = locale_te; - locales = ['te']; - break; - case 'th': - l = locale_th; - locales = ['th']; - break; - case 'tl': - case 'fil': - l = locale_tl; - locales = ['tl', 'fil']; - break; - case 'tr': - l = locale_tr; - locales = ['tr']; - break; - case 'uk': - l = locale_uk; - locales = ['uk']; - break; - case 'ur': - l = locale_ur; - locales = ['ur']; - break; - case 'uz': - l = locale_uz; - locales = ['uz']; - break; - case 'vi': - l = locale_vi; - locales = ['vi']; - break; - case 'zh': - l = locale_zh; - locales = ['zh']; - break; - case 'zh-CN': - case 'zh_CN': - case 'zh-Hans-CN': - case 'zh_Hans_CN': - case 'zh-Hans': - case 'zh_Hans': - l = locale_zh_CN; - locales = ['zh-CN', 'zh_CN', 'zh-Hans-CN', 'zh_Hans_CN', 'zh-Hans', 'zh_Hans']; - break; - case 'zh-HK': - case 'zh_HK': - case 'zh-Hant-HK': - case 'zh_Hant_HK': - l = locale_zh_HK; - locales = ['zh-HK', 'zh_HK', 'zh-Hant-HK', 'zh_Hant_HK']; - break; - case 'zh-TW': - case 'zh_TW': - case 'zh-Hant-TW': - case 'zh_Hant_TW': - case 'zh-Hant': - case 'zh_Hant': - l = locale_zh_TW; - locales = ['zh-TW', 'zh_TW', 'zh-Hant-TW', 'zh_Hant_TW', 'zh-Hant', 'zh_Hant']; - break; - case 'zu': - l = locale_zu; - locales = ['zu']; - break; -} + +case 'af': + l = locale_af; + locales = ["af"]; + break; +case 'am': + l = locale_am; + locales = ["am"]; + break; +case 'ar': + l = locale_ar; + locales = ["ar"]; + break; +case 'ar-DZ': +case 'ar_DZ': + l = locale_ar_DZ; + locales = ["ar-DZ", "ar_DZ"]; + break; +case 'az': + l = locale_az; + locales = ["az"]; + break; +case 'be': + l = locale_be; + locales = ["be"]; + break; +case 'bg': + l = locale_bg; + locales = ["bg"]; + break; +case 'bn': + l = locale_bn; + locales = ["bn"]; + break; +case 'br': + l = locale_br; + locales = ["br"]; + break; +case 'bs': + l = locale_bs; + locales = ["bs"]; + break; +case 'ca': + l = locale_ca; + locales = ["ca"]; + break; +case 'chr': + l = locale_chr; + locales = ["chr"]; + break; +case 'cs': + l = locale_cs; + locales = ["cs"]; + break; +case 'cy': + l = locale_cy; + locales = ["cy"]; + break; +case 'da': + l = locale_da; + locales = ["da"]; + break; +case 'de': + l = locale_de; + locales = ["de"]; + break; +case 'de-AT': +case 'de_AT': + l = locale_de_AT; + locales = ["de-AT", "de_AT"]; + break; +case 'de-CH': +case 'de_CH': + l = locale_de_CH; + locales = ["de-CH", "de_CH"]; + break; +case 'el': + l = locale_el; + locales = ["el"]; + break; +case 'en-AU': +case 'en_AU': + l = locale_en_AU; + locales = ["en-AU", "en_AU"]; + break; +case 'en-CA': +case 'en_CA': + l = locale_en_CA; + locales = ["en-CA", "en_CA"]; + break; +case 'en-GB': +case 'en_GB': + l = locale_en_GB; + locales = ["en-GB", "en_GB"]; + break; +case 'en-IE': +case 'en_IE': + l = locale_en_IE; + locales = ["en-IE", "en_IE"]; + break; +case 'en-IN': +case 'en_IN': + l = locale_en_IN; + locales = ["en-IN", "en_IN"]; + break; +case 'en-SG': +case 'en_SG': + l = locale_en_SG; + locales = ["en-SG", "en_SG"]; + break; +case 'en-ZA': +case 'en_ZA': + l = locale_en_ZA; + locales = ["en-ZA", "en_ZA"]; + break; +case 'es': + l = locale_es; + locales = ["es"]; + break; +case 'es-419': +case 'es_419': + l = locale_es_419; + locales = ["es-419", "es_419"]; + break; +case 'es-MX': +case 'es_MX': + l = locale_es_MX; + locales = ["es-MX", "es_MX"]; + break; +case 'es-US': +case 'es_US': + l = locale_es_US; + locales = ["es-US", "es_US"]; + break; +case 'et': + l = locale_et; + locales = ["et"]; + break; +case 'eu': + l = locale_eu; + locales = ["eu"]; + break; +case 'fa': + l = locale_fa; + locales = ["fa"]; + break; +case 'fi': + l = locale_fi; + locales = ["fi"]; + break; +case 'fr': + l = locale_fr; + locales = ["fr"]; + break; +case 'fr-CA': +case 'fr_CA': + l = locale_fr_CA; + locales = ["fr-CA", "fr_CA"]; + break; +case 'ga': + l = locale_ga; + locales = ["ga"]; + break; +case 'gl': + l = locale_gl; + locales = ["gl"]; + break; +case 'gsw': + l = locale_gsw; + locales = ["gsw"]; + break; +case 'gu': + l = locale_gu; + locales = ["gu"]; + break; +case 'haw': + l = locale_haw; + locales = ["haw"]; + break; +case 'hi': + l = locale_hi; + locales = ["hi"]; + break; +case 'hr': + l = locale_hr; + locales = ["hr"]; + break; +case 'hu': + l = locale_hu; + locales = ["hu"]; + break; +case 'hy': + l = locale_hy; + locales = ["hy"]; + break; +case 'id': +case 'in': + l = locale_id; + locales = ["id", "in"]; + break; +case 'is': + l = locale_is; + locales = ["is"]; + break; +case 'it': + l = locale_it; + locales = ["it"]; + break; +case 'he': +case 'iw': + l = locale_he; + locales = ["he", "iw"]; + break; +case 'ja': + l = locale_ja; + locales = ["ja"]; + break; +case 'ka': + l = locale_ka; + locales = ["ka"]; + break; +case 'kk': + l = locale_kk; + locales = ["kk"]; + break; +case 'km': + l = locale_km; + locales = ["km"]; + break; +case 'kn': + l = locale_kn; + locales = ["kn"]; + break; +case 'ko': + l = locale_ko; + locales = ["ko"]; + break; +case 'ky': + l = locale_ky; + locales = ["ky"]; + break; +case 'ln': + l = locale_ln; + locales = ["ln"]; + break; +case 'lo': + l = locale_lo; + locales = ["lo"]; + break; +case 'lt': + l = locale_lt; + locales = ["lt"]; + break; +case 'lv': + l = locale_lv; + locales = ["lv"]; + break; +case 'mk': + l = locale_mk; + locales = ["mk"]; + break; +case 'ml': + l = locale_ml; + locales = ["ml"]; + break; +case 'mn': + l = locale_mn; + locales = ["mn"]; + break; +case 'ro-MD': +case 'ro_MD': +case 'mo': + l = locale_ro_MD; + locales = ["ro-MD", "ro_MD", "mo"]; + break; +case 'mr': + l = locale_mr; + locales = ["mr"]; + break; +case 'ms': + l = locale_ms; + locales = ["ms"]; + break; +case 'mt': + l = locale_mt; + locales = ["mt"]; + break; +case 'my': + l = locale_my; + locales = ["my"]; + break; +case 'ne': + l = locale_ne; + locales = ["ne"]; + break; +case 'nl': + l = locale_nl; + locales = ["nl"]; + break; +case 'nb': +case 'no': +case 'no-NO': +case 'no_NO': + l = locale_nb; + locales = ["nb", "no", "no-NO", "no_NO"]; + break; +case 'or': + l = locale_or; + locales = ["or"]; + break; +case 'pa': + l = locale_pa; + locales = ["pa"]; + break; +case 'pl': + l = locale_pl; + locales = ["pl"]; + break; +case 'pt': +case 'pt-BR': +case 'pt_BR': + l = locale_pt; + locales = ["pt", "pt-BR", "pt_BR"]; + break; +case 'pt-PT': +case 'pt_PT': + l = locale_pt_PT; + locales = ["pt-PT", "pt_PT"]; + break; +case 'ro': + l = locale_ro; + locales = ["ro"]; + break; +case 'ru': + l = locale_ru; + locales = ["ru"]; + break; +case 'sr-Latn': +case 'sr_Latn': +case 'sh': + l = locale_sr_Latn; + locales = ["sr-Latn", "sr_Latn", "sh"]; + break; +case 'si': + l = locale_si; + locales = ["si"]; + break; +case 'sk': + l = locale_sk; + locales = ["sk"]; + break; +case 'sl': + l = locale_sl; + locales = ["sl"]; + break; +case 'sq': + l = locale_sq; + locales = ["sq"]; + break; +case 'sr': + l = locale_sr; + locales = ["sr"]; + break; +case 'sv': + l = locale_sv; + locales = ["sv"]; + break; +case 'sw': + l = locale_sw; + locales = ["sw"]; + break; +case 'ta': + l = locale_ta; + locales = ["ta"]; + break; +case 'te': + l = locale_te; + locales = ["te"]; + break; +case 'th': + l = locale_th; + locales = ["th"]; + break; +case 'fil': +case 'tl': + l = locale_fil; + locales = ["fil", "tl"]; + break; +case 'tr': + l = locale_tr; + locales = ["tr"]; + break; +case 'uk': + l = locale_uk; + locales = ["uk"]; + break; +case 'ur': + l = locale_ur; + locales = ["ur"]; + break; +case 'uz': + l = locale_uz; + locales = ["uz"]; + break; +case 'vi': + l = locale_vi; + locales = ["vi"]; + break; +case 'zh': + l = locale_zh; + locales = ["zh"]; + break; +case 'zh-Hans': +case 'zh_Hans': +case 'zh-Hans-CN': +case 'zh_Hans_CN': +case 'zh-CN': +case 'zh_CN': + l = locale_zh_Hans; + locales = ["zh-Hans", "zh_Hans", "zh-Hans-CN", "zh_Hans_CN", "zh-CN", "zh_CN"]; + break; +case 'zh-Hant-HK': +case 'zh_Hant_HK': +case 'zh-HK': +case 'zh_HK': + l = locale_zh_Hant_HK; + locales = ["zh-Hant-HK", "zh_Hant_HK", "zh-HK", "zh_HK"]; + break; +case 'zh-Hant': +case 'zh_Hant': +case 'zh-Hant-TW': +case 'zh_Hant_TW': +case 'zh-TW': +case 'zh_TW': + l = locale_zh_Hant; + locales = ["zh-Hant", "zh_Hant", "zh-Hant-TW", "zh_Hant_TW", "zh-TW", "zh_TW"]; + break; +case 'zu': + l = locale_zu; + locales = ["zu"]; + break;} if (l) { locales.forEach(locale => registerLocaleData(l, locale)); diff --git a/packages/common/locales/cs.ts b/packages/common/locales/cs.ts deleted file mode 100644 index c7c98ad34f..0000000000 --- a/packages/common/locales/cs.ts +++ /dev/null @@ -1,75 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - if (i === Math.floor(i) && i >= 2 && i <= 4 && v === 0) return 3; - if (!(v === 0)) return 4; - return 5; -} - -export default [ - 'cs', - [['dop.', 'odp.'], u, u], - u, - [ - ['N', 'P', 'Ú', 'S', 'Č', 'P', 'S'], ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'], - ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'], - ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['led', 'úno', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro'], - [ - 'ledna', 'února', 'března', 'dubna', 'května', 'června', 'července', 'srpna', 'září', 'října', - 'listopadu', 'prosince' - ] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['led', 'úno', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro'], - [ - 'leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen', 'září', 'říjen', - 'listopad', 'prosinec' - ] - ], - [['př.n.l.', 'n.l.'], ['př. n. l.', 'n. l.'], ['před naším letopočtem', 'našeho letopočtu']], - 1, - [6, 0], - ['dd.MM.yy', 'd. M. y', 'd. MMMM y', 'EEEE d. MMMM y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'CZK', - 'Kč', - 'česká koruna', - { - 'AUD': ['AU$', '$'], - 'CSK': ['Kčs'], - 'CZK': ['Kč'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': ['JP¥', '¥'], - 'RON': [u, 'L'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'], - 'XEU': ['ECU'], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/cu.ts b/packages/common/locales/cu.ts deleted file mode 100644 index ee553a6f78..0000000000 --- a/packages/common/locales/cu.ts +++ /dev/null @@ -1,43 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'cu', - [['AM', 'PM'], u, u], - u, - [['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], u, u], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'], u - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'RUB', - '₽', - 'RUB', - {'JPY': ['JP¥', '¥'], 'RUB': ['₽'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/cy.ts b/packages/common/locales/cy.ts deleted file mode 100644 index 77b42f753d..0000000000 --- a/packages/common/locales/cy.ts +++ /dev/null @@ -1,85 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n === 3) return 3; - if (n === 6) return 4; - return 5; -} - -export default [ - 'cy', - [['b', 'h'], ['AM', 'PM'], ['yb', 'yh']], - [['AM', 'PM'], u, u], - [ - ['S', 'Ll', 'M', 'M', 'I', 'G', 'S'], ['Sul', 'Llun', 'Maw', 'Mer', 'Iau', 'Gwen', 'Sad'], - [ - 'Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', - 'Dydd Sadwrn' - ], - ['Su', 'Ll', 'Ma', 'Me', 'Ia', 'Gw', 'Sa'] - ], - [ - ['S', 'Ll', 'M', 'M', 'I', 'G', 'S'], ['Sul', 'Llun', 'Maw', 'Mer', 'Iau', 'Gwe', 'Sad'], - [ - 'Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', - 'Dydd Sadwrn' - ], - ['Su', 'Ll', 'Ma', 'Me', 'Ia', 'Gw', 'Sa'] - ], - [ - ['I', 'Ch', 'M', 'E', 'M', 'M', 'G', 'A', 'M', 'H', 'T', 'Rh'], - ['Ion', 'Chwef', 'Maw', 'Ebr', 'Mai', 'Meh', 'Gorff', 'Awst', 'Medi', 'Hyd', 'Tach', 'Rhag'], - [ - 'Ionawr', 'Chwefror', 'Mawrth', 'Ebrill', 'Mai', 'Mehefin', 'Gorffennaf', 'Awst', 'Medi', - 'Hydref', 'Tachwedd', 'Rhagfyr' - ] - ], - [ - ['I', 'Ch', 'M', 'E', 'M', 'M', 'G', 'A', 'M', 'H', 'T', 'Rh'], - ['Ion', 'Chw', 'Maw', 'Ebr', 'Mai', 'Meh', 'Gor', 'Awst', 'Medi', 'Hyd', 'Tach', 'Rhag'], - [ - 'Ionawr', 'Chwefror', 'Mawrth', 'Ebrill', 'Mai', 'Mehefin', 'Gorffennaf', 'Awst', 'Medi', - 'Hydref', 'Tachwedd', 'Rhagfyr' - ] - ], - [['C', 'O'], ['CC', 'OC'], ['Cyn Crist', 'Oed Crist']], - 1, - [6, 0], - ['dd/MM/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'am\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GBP', - '£', - 'Punt Prydain', - { - 'BDT': [u, 'TK'], - 'BWP': [], - 'HKD': ['HK$'], - 'JPY': ['JP¥', '¥'], - 'KRW': [u, '₩'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XXX': [], - 'ZAR': [], - 'ZMW': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/da-GL.ts b/packages/common/locales/da-GL.ts deleted file mode 100644 index 83907351b0..0000000000 --- a/packages/common/locales/da-GL.ts +++ /dev/null @@ -1,69 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), - t = parseInt(n.toString().replace(/^[^.]*\.?|0+$/g, ''), 10) || 0; - if (n === 1 || !(t === 0) && (i === 0 || i === 1)) return 1; - return 5; -} - -export default [ - 'da-GL', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['søn.', 'man.', 'tir.', 'ons.', 'tor.', 'fre.', 'lør.'], - ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'], - ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'] - ], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['søn', 'man', 'tir', 'ons', 'tor', 'fre', 'lør'], - ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'], - ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januar', 'februar', 'marts', 'april', 'maj', 'juni', 'juli', 'august', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['fKr', 'eKr'], ['f.Kr.', 'e.Kr.'], u], - 1, - [6, 0], - ['dd.MM.y', 'd. MMM y', 'd. MMMM y', 'EEEE \'den\' d. MMMM y'], - ['HH.mm', 'HH.mm.ss', 'HH.mm.ss z', 'HH.mm.ss zzzz'], - ['{1} {0}', u, '{1} \'kl\'. {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', '.'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'DKK', - 'kr.', - 'dansk krone', - { - 'AUD': ['AU$', '$'], - 'DKK': ['kr.'], - 'ISK': [u, 'kr.'], - 'JPY': ['JP¥', '¥'], - 'NOK': [u, 'kr.'], - 'RON': [u, 'L'], - 'SEK': [u, 'kr.'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/da.ts b/packages/common/locales/da.ts deleted file mode 100644 index 43f372d138..0000000000 --- a/packages/common/locales/da.ts +++ /dev/null @@ -1,69 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), - t = parseInt(n.toString().replace(/^[^.]*\.?|0+$/g, ''), 10) || 0; - if (n === 1 || !(t === 0) && (i === 0 || i === 1)) return 1; - return 5; -} - -export default [ - 'da', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['søn.', 'man.', 'tir.', 'ons.', 'tor.', 'fre.', 'lør.'], - ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'], - ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'] - ], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['søn', 'man', 'tir', 'ons', 'tor', 'fre', 'lør'], - ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'], - ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januar', 'februar', 'marts', 'april', 'maj', 'juni', 'juli', 'august', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['fKr', 'eKr'], ['f.Kr.', 'e.Kr.'], u], - 1, - [6, 0], - ['dd.MM.y', 'd. MMM y', 'd. MMMM y', 'EEEE \'den\' d. MMMM y'], - ['HH.mm', 'HH.mm.ss', 'HH.mm.ss z', 'HH.mm.ss zzzz'], - ['{1} {0}', u, '{1} \'kl\'. {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', '.'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'DKK', - 'kr.', - 'dansk krone', - { - 'AUD': ['AU$', '$'], - 'DKK': ['kr.'], - 'ISK': [u, 'kr.'], - 'JPY': ['JP¥', '¥'], - 'NOK': [u, 'kr.'], - 'RON': [u, 'L'], - 'SEK': [u, 'kr.'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/dav.ts b/packages/common/locales/dav.ts deleted file mode 100644 index 93482faa5f..0000000000 --- a/packages/common/locales/dav.ts +++ /dev/null @@ -1,55 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'dav', - [['Luma lwa K', 'luma lwa p'], u, u], - u, - [ - ['J', 'J', 'K', 'K', 'K', 'K', 'N'], ['Jum', 'Jim', 'Kaw', 'Kad', 'Kan', 'Kas', 'Ngu'], - [ - 'Ituku ja jumwa', 'Kuramuka jimweri', 'Kuramuka kawi', 'Kuramuka kadadu', 'Kuramuka kana', - 'Kuramuka kasanu', 'Kifula nguwo' - ], - ['Jum', 'Jim', 'Kaw', 'Kad', 'Kan', 'Kas', 'Ngu'] - ], - u, - [ - ['I', 'K', 'K', 'K', 'K', 'K', 'M', 'W', 'I', 'I', 'I', 'I'], - ['Imb', 'Kaw', 'Kad', 'Kan', 'Kas', 'Kar', 'Mfu', 'Wun', 'Ike', 'Iku', 'Imw', 'Iwi'], - [ - 'Mori ghwa imbiri', 'Mori ghwa kawi', 'Mori ghwa kadadu', 'Mori ghwa kana', - 'Mori ghwa kasanu', 'Mori ghwa karandadu', 'Mori ghwa mfungade', 'Mori ghwa wunyanya', - 'Mori ghwa ikenda', 'Mori ghwa ikumi', 'Mori ghwa ikumi na imweri', 'Mori ghwa ikumi na iwi' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Kristo', 'Baada ya Kristo']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Shilingi ya Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/de-AT.ts b/packages/common/locales/de-AT.ts deleted file mode 100644 index 96b92f795b..0000000000 --- a/packages/common/locales/de-AT.ts +++ /dev/null @@ -1,81 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'de-AT', - [['AM', 'PM'], u, u], - [['vm.', 'nm.'], ['AM', 'PM'], u], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jän.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Dez.'], - [ - 'Jänner', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jän', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Jänner', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'um\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':', u, '.'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - { - 'ATS': ['öS'], - 'AUD': ['AU$', '$'], - 'BGM': ['BGK'], - 'BGO': ['BGJ'], - 'CUC': [u, 'Cub$'], - 'DEM': ['DM'], - 'FKP': [u, 'Fl£'], - 'GNF': [u, 'F.G.'], - 'KMF': [u, 'FC'], - 'RON': [u, 'L'], - 'RWF': [u, 'F.Rw'], - 'SYP': [], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XXX': [], - 'ZMW': [u, 'K'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/de-BE.ts b/packages/common/locales/de-BE.ts deleted file mode 100644 index f2f7c6412d..0000000000 --- a/packages/common/locales/de-BE.ts +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'de-BE', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sept.', 'Okt.', 'Nov.', 'Dez.' - ], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'um\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - { - 'ATS': ['öS'], - 'AUD': ['AU$', '$'], - 'BGM': ['BGK'], - 'BGO': ['BGJ'], - 'CUC': [u, 'Cub$'], - 'DEM': ['DM'], - 'FKP': [u, 'Fl£'], - 'GNF': [u, 'F.G.'], - 'KMF': [u, 'FC'], - 'RON': [u, 'L'], - 'RWF': [u, 'F.Rw'], - 'SYP': [], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XXX': [], - 'ZMW': [u, 'K'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/de-CH.ts b/packages/common/locales/de-CH.ts deleted file mode 100644 index ef335bb921..0000000000 --- a/packages/common/locales/de-CH.ts +++ /dev/null @@ -1,84 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'de-CH', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'] - ], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sept.', 'Okt.', 'Nov.', 'Dez.' - ], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'um\' {0}', u], - ['.', '’', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤-#,##0.00', '#E0'], - 'CHF', - 'CHF', - 'Schweizer Franken', - { - 'ATS': ['öS'], - 'AUD': ['AU$', '$'], - 'BGM': ['BGK'], - 'BGO': ['BGJ'], - 'CUC': [u, 'Cub$'], - 'DEM': ['DM'], - 'EUR': [], - 'FKP': [u, 'Fl£'], - 'GNF': [u, 'F.G.'], - 'KMF': [u, 'FC'], - 'RON': [u, 'L'], - 'RWF': [u, 'F.Rw'], - 'SYP': [], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XXX': [], - 'ZMW': [u, 'K'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/de-IT.ts b/packages/common/locales/de-IT.ts deleted file mode 100644 index 0619aa9463..0000000000 --- a/packages/common/locales/de-IT.ts +++ /dev/null @@ -1,81 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'de-IT', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jän.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Dez.'], - [ - 'Jänner', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jän', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Jänner', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'um\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - { - 'ATS': ['öS'], - 'AUD': ['AU$', '$'], - 'BGM': ['BGK'], - 'BGO': ['BGJ'], - 'CUC': [u, 'Cub$'], - 'DEM': ['DM'], - 'FKP': [u, 'Fl£'], - 'GNF': [u, 'F.G.'], - 'KMF': [u, 'FC'], - 'RON': [u, 'L'], - 'RWF': [u, 'F.Rw'], - 'SYP': [], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XXX': [], - 'ZMW': [u, 'K'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/de-LI.ts b/packages/common/locales/de-LI.ts deleted file mode 100644 index 9d0653364b..0000000000 --- a/packages/common/locales/de-LI.ts +++ /dev/null @@ -1,84 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'de-LI', - [['AM', 'PM'], u, u], - [['vm.', 'nm.'], ['AM', 'PM'], u], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sept.', 'Okt.', 'Nov.', 'Dez.' - ], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'um\' {0}', u], - ['.', '’', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'CHF', - 'CHF', - 'Schweizer Franken', - { - 'ATS': ['öS'], - 'AUD': ['AU$', '$'], - 'BGM': ['BGK'], - 'BGO': ['BGJ'], - 'CUC': [u, 'Cub$'], - 'DEM': ['DM'], - 'EUR': [u, '€'], - 'FKP': [u, 'Fl£'], - 'GNF': [u, 'F.G.'], - 'KMF': [u, 'FC'], - 'RON': [u, 'L'], - 'RWF': [u, 'F.Rw'], - 'SYP': [], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XXX': [], - 'ZMW': [u, 'K'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/de-LU.ts b/packages/common/locales/de-LU.ts deleted file mode 100644 index dc1f98de7f..0000000000 --- a/packages/common/locales/de-LU.ts +++ /dev/null @@ -1,84 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'de-LU', - [['vorm.', 'nachm.'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sept.', 'Okt.', 'Nov.', 'Dez.' - ], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'um\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - { - 'ATS': ['öS'], - 'AUD': ['AU$', '$'], - 'BGM': ['BGK'], - 'BGO': ['BGJ'], - 'CUC': [u, 'Cub$'], - 'DEM': ['DM'], - 'FKP': [u, 'Fl£'], - 'GNF': [u, 'F.G.'], - 'KMF': [u, 'FC'], - 'LUF': ['F'], - 'RON': [u, 'L'], - 'RWF': [u, 'F.Rw'], - 'SYP': [], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XXX': [], - 'ZMW': [u, 'K'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/de.ts b/packages/common/locales/de.ts deleted file mode 100644 index beef1ccd70..0000000000 --- a/packages/common/locales/de.ts +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'de', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sept.', 'Okt.', 'Nov.', 'Dez.' - ], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'um\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - { - 'ATS': ['öS'], - 'AUD': ['AU$', '$'], - 'BGM': ['BGK'], - 'BGO': ['BGJ'], - 'CUC': [u, 'Cub$'], - 'DEM': ['DM'], - 'FKP': [u, 'Fl£'], - 'GNF': [u, 'F.G.'], - 'KMF': [u, 'FC'], - 'RON': [u, 'L'], - 'RWF': [u, 'F.Rw'], - 'SYP': [], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XXX': [], - 'ZMW': [u, 'K'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/dje.ts b/packages/common/locales/dje.ts deleted file mode 100644 index d908299d35..0000000000 --- a/packages/common/locales/dje.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'dje', - [['Subbaahi', 'Zaarikay b'], u, u], - u, - [ - ['H', 'T', 'T', 'L', 'M', 'Z', 'S'], ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'], - ['Alhadi', 'Atinni', 'Atalaata', 'Alarba', 'Alhamisi', 'Alzuma', 'Asibti'], - ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'] - ], - u, - [ - ['Ž', 'F', 'M', 'A', 'M', 'Ž', 'Ž', 'U', 'S', 'O', 'N', 'D'], - ['Žan', 'Fee', 'Mar', 'Awi', 'Me', 'Žuw', 'Žuy', 'Ut', 'Sek', 'Okt', 'Noo', 'Dee'], - [ - 'Žanwiye', 'Feewiriye', 'Marsi', 'Awiril', 'Me', 'Žuweŋ', 'Žuyye', 'Ut', 'Sektanbur', - 'Oktoobur', 'Noowanbur', 'Deesanbur' - ] - ], - u, - [['IJ', 'IZ'], u, ['Isaa jine', 'Isaa zamanoo']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'XOF', - 'CFA', - 'CFA Fraŋ (BCEAO)', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/dsb.ts b/packages/common/locales/dsb.ts deleted file mode 100644 index 1788075d60..0000000000 --- a/packages/common/locales/dsb.ts +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 100 === 1 || f % 100 === 1) return 1; - if (v === 0 && i % 100 === 2 || f % 100 === 2) return 2; - if (v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 3 && i % 100 <= 4 || - f % 100 === Math.floor(f % 100) && f % 100 >= 3 && f % 100 <= 4) - return 3; - return 5; -} - -export default [ - 'dsb', - [['dop.', 'wótp.'], ['dopołdnja', 'wótpołdnja'], u], - [['dopołdnja', 'wótpołdnja'], u, u], - [ - ['n', 'p', 'w', 's', 's', 'p', 's'], ['nje', 'pón', 'wał', 'srj', 'stw', 'pět', 'sob'], - ['njeźela', 'pónjeźele', 'wałtora', 'srjoda', 'stwórtk', 'pětk', 'sobota'], - ['nj', 'pó', 'wa', 'sr', 'st', 'pě', 'so'] - ], - u, - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - [ - 'jan.', 'feb.', 'měr.', 'apr.', 'maj.', 'jun.', 'jul.', 'awg.', 'sep.', 'okt.', 'now.', 'dec.' - ], - [ - 'januara', 'februara', 'měrca', 'apryla', 'maja', 'junija', 'julija', 'awgusta', 'septembra', - 'oktobra', 'nowembra', 'decembra' - ] - ], - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'měr', 'apr', 'maj', 'jun', 'jul', 'awg', 'sep', 'okt', 'now', 'dec'], - [ - 'januar', 'februar', 'měrc', 'apryl', 'maj', 'junij', 'julij', 'awgust', 'september', - 'oktober', 'nowember', 'december' - ] - ], - [['pś.Chr.n.', 'pó Chr.n.'], u, ['pśed Kristusowym naroźenim', 'pó Kristusowem naroźenju']], - 1, - [6, 0], - ['d.M.yy', 'd.M.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - {'AUD': [u, '$'], 'PLN': ['zł'], 'THB': ['฿']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/dua.ts b/packages/common/locales/dua.ts deleted file mode 100644 index 145e41966a..0000000000 --- a/packages/common/locales/dua.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'dua', - [['idiɓa', 'ebyámu'], u, u], - u, - [ - ['e', 'm', 'k', 'm', 'ŋ', 'ɗ', 'e'], ['ét', 'mɔ́s', 'kwa', 'muk', 'ŋgi', 'ɗón', 'esa'], - ['éti', 'mɔ́sú', 'kwasú', 'mukɔ́sú', 'ŋgisú', 'ɗónɛsú', 'esaɓasú'], - ['ét', 'mɔ́s', 'kwa', 'muk', 'ŋgi', 'ɗón', 'esa'] - ], - u, - [ - ['d', 'ŋ', 's', 'd', 'e', 'e', 'm', 'd', 'n', 'm', 't', 'e'], - ['di', 'ŋgɔn', 'sɔŋ', 'diɓ', 'emi', 'esɔ', 'mad', 'diŋ', 'nyɛt', 'may', 'tin', 'elá'], - [ - 'dimɔ́di', 'ŋgɔndɛ', 'sɔŋɛ', 'diɓáɓá', 'emiasele', 'esɔpɛsɔpɛ', 'madiɓɛ́díɓɛ́', 'diŋgindi', - 'nyɛtɛki', 'mayésɛ́', 'tiníní', 'eláŋgɛ́' - ] - ], - u, - [['ɓ.Ys', 'mb.Ys'], u, ['ɓoso ɓwá yáɓe lá', 'mbúsa kwédi a Yés']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'XAF', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/dyo.ts b/packages/common/locales/dyo.ts deleted file mode 100644 index 53a356c747..0000000000 --- a/packages/common/locales/dyo.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'dyo', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'T', 'T', 'A', 'A', 'A', 'S'], ['Dim', 'Ten', 'Tal', 'Ala', 'Ara', 'Arj', 'Sib'], - ['Dimas', 'Teneŋ', 'Talata', 'Alarbay', 'Aramisay', 'Arjuma', 'Sibiti'], - ['Dim', 'Ten', 'Tal', 'Ala', 'Ara', 'Arj', 'Sib'] - ], - u, - [ - ['S', 'F', 'M', 'A', 'M', 'S', 'S', 'U', 'S', 'O', 'N', 'D'], - ['Sa', 'Fe', 'Ma', 'Ab', 'Me', 'Su', 'Sú', 'Ut', 'Se', 'Ok', 'No', 'De'], - [ - 'Sanvie', 'Fébirie', 'Mars', 'Aburil', 'Mee', 'Sueŋ', 'Súuyee', 'Ut', 'Settembar', 'Oktobar', - 'Novembar', 'Disambar' - ] - ], - u, - [['ArY', 'AtY'], u, ['Ariŋuu Yeesu', 'Atooŋe Yeesu']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'seefa yati BCEAO', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/dz.ts b/packages/common/locales/dz.ts deleted file mode 100644 index 567cf44169..0000000000 --- a/packages/common/locales/dz.ts +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'dz', - [['སྔ་ཆ་', 'ཕྱི་ཆ་'], u, u], - u, - [ - ['ཟླ', 'མིར', 'ལྷག', 'ཕུར', 'སངྶ', 'སྤེན', 'ཉི'], ['ཟླ་', 'མིར་', 'ལྷག་', 'ཕུར་', 'སངས་', 'སྤེན་', 'ཉི་'], - ['གཟའ་ཟླ་བ་', 'གཟའ་མིག་དམར་', 'གཟའ་ལྷག་པ་', 'གཟའ་ཕུར་བུ་', 'གཟའ་པ་སངས་', 'གཟའ་སྤེན་པ་', 'གཟའ་ཉི་མ་'], - ['ཟླ་', 'མིར་', 'ལྷག་', 'ཕུར་', 'སངས་', 'སྤེན་', 'ཉི་'] - ], - u, - [ - ['༡', '༢', '༣', '4', '༥', '༦', '༧', '༨', '9', '༡༠', '༡༡', '༡༢'], - ['༡', '༢', '༣', '༤', '༥', '༦', '༧', '༨', '༩', '༡༠', '༡༡', '12'], - [ - 'ཟླ་དངཔ་', 'ཟླ་གཉིས་པ་', 'ཟླ་གསུམ་པ་', 'ཟླ་བཞི་པ་', 'ཟླ་ལྔ་པ་', 'ཟླ་དྲུག་པ', 'ཟླ་བདུན་པ་', 'ཟླ་བརྒྱད་པ་', - 'ཟླ་དགུ་པ་', 'ཟླ་བཅུ་པ་', 'ཟླ་བཅུ་གཅིག་པ་', 'ཟླ་བཅུ་གཉིས་པ་' - ] - ], - [ - ['༡', '༢', '༣', '༤', '༥', '༦', '༧', '༨', '༩', '༡༠', '༡༡', '༡༢'], - ['ཟླ་༡', 'ཟླ་༢', 'ཟླ་༣', 'ཟླ་༤', 'ཟླ་༥', 'ཟླ་༦', 'ཟླ་༧', 'ཟླ་༨', 'ཟླ་༩', 'ཟླ་༡༠', 'ཟླ་༡༡', 'ཟླ་༡༢'], - [ - 'སྤྱི་ཟླ་དངཔ་', 'སྤྱི་ཟླ་གཉིས་པ་', 'སྤྱི་ཟླ་གསུམ་པ་', 'སྤྱི་ཟླ་བཞི་པ', 'སྤྱི་ཟླ་ལྔ་པ་', 'སྤྱི་ཟླ་དྲུག་པ', 'སྤྱི་ཟླ་བདུན་པ་', - 'སྤྱི་ཟླ་བརྒྱད་པ་', 'སྤྱི་ཟླ་དགུ་པ་', 'སྤྱི་ཟླ་བཅུ་པ་', 'སྤྱི་ཟླ་བཅུ་གཅིག་པ་', 'སྤྱི་ཟླ་བཅུ་གཉིས་པ་' - ] - ], - [['BCE', 'CE'], u, u], - 0, - [6, 0], - ['y-MM-dd', 'སྤྱི་ལོ་y ཟླ་MMM ཚེས་dd', 'སྤྱི་ལོ་y MMMM ཚེས་ dd', 'EEEE, སྤྱི་ལོ་y MMMM ཚེས་dd'], - ['ཆུ་ཚོད་ h སྐར་མ་ mm a', 'ཆུ་ཚོད་h:mm:ss a', 'ཆུ་ཚོད་ h སྐར་མ་ mm:ss a z', 'ཆུ་ཚོད་ h སྐར་མ་ mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0 %', '¤#,##,##0.00', '#E0'], - 'INR', - '₹', - 'རྒྱ་གར་གྱི་དངུལ་ རུ་པི', - { - 'AUD': ['AU$', '$'], - 'BTN': ['Nu.'], - 'ILS': [u, '₪'], - 'JPY': ['JP¥', '¥'], - 'KRW': ['KR₩', '₩'], - 'THB': ['TH฿', '฿'], - 'USD': ['US$', '$'], - 'XAF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ebu.ts b/packages/common/locales/ebu.ts deleted file mode 100644 index 4fb849b651..0000000000 --- a/packages/common/locales/ebu.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'ebu', - [['KI', 'UT'], u, u], - u, - [ - ['K', 'N', 'N', 'N', 'A', 'M', 'N'], ['Kma', 'Tat', 'Ine', 'Tan', 'Arm', 'Maa', 'NMM'], - ['Kiumia', 'Njumatatu', 'Njumaine', 'Njumatano', 'Aramithi', 'Njumaa', 'NJumamothii'], - ['Kma', 'Tat', 'Ine', 'Tan', 'Arm', 'Maa', 'NMM'] - ], - u, - [ - ['M', 'K', 'K', 'K', 'G', 'G', 'M', 'K', 'K', 'I', 'I', 'I'], - ['Mbe', 'Kai', 'Kat', 'Kan', 'Gat', 'Gan', 'Mug', 'Knn', 'Ken', 'Iku', 'Imw', 'Igi'], - [ - 'Mweri wa mbere', 'Mweri wa kaĩri', 'Mweri wa kathatũ', 'Mweri wa kana', 'Mweri wa gatano', - 'Mweri wa gatantatũ', 'Mweri wa mũgwanja', 'Mweri wa kanana', 'Mweri wa kenda', - 'Mweri wa ikũmi', 'Mweri wa ikũmi na ũmwe', 'Mweri wa ikũmi na Kaĩrĩ' - ] - ], - u, - [['MK', 'TK'], u, ['Mbere ya Kristo', 'Thutha wa Kristo']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Shilingi ya Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ee-TG.ts b/packages/common/locales/ee-TG.ts deleted file mode 100644 index 0fdf423794..0000000000 --- a/packages/common/locales/ee-TG.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ee-TG', - [['ŋ', 'ɣ'], ['ŋdi', 'ɣetrɔ'], u], - u, - [ - ['k', 'd', 'b', 'k', 'y', 'f', 'm'], ['kɔs', 'dzo', 'bla', 'kuɖ', 'yaw', 'fiɖ', 'mem'], - ['kɔsiɖa', 'dzoɖa', 'blaɖa', 'kuɖa', 'yawoɖa', 'fiɖa', 'memleɖa'], - ['kɔs', 'dzo', 'bla', 'kuɖ', 'yaw', 'fiɖ', 'mem'] - ], - u, - [ - ['d', 'd', 't', 'a', 'd', 'm', 's', 'd', 'a', 'k', 'a', 'd'], - ['dzv', 'dzd', 'ted', 'afɔ', 'dam', 'mas', 'sia', 'dea', 'any', 'kel', 'ade', 'dzm'], - [ - 'dzove', 'dzodze', 'tedoxe', 'afɔfĩe', 'dama', 'masa', 'siamlɔm', 'deasiamime', 'anyɔnyɔ', - 'kele', 'adeɛmekpɔxe', 'dzome' - ] - ], - u, - [['HYV', 'Yŋ'], u, ['Hafi Yesu Va', 'Yesu ŋɔli']], - 1, - [6, 0], - ['M/d/yy', 'MMM d \'lia\', y', 'MMMM d \'lia\' y', 'EEEE, MMMM d \'lia\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{0} {1}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'mnn', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XOF', - 'CFA', - 'ɣetoɖofe afrikaga CFA franc BCEAO', - {'AUD': ['AU$', '$'], 'GHS': ['GH₵'], 'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ee.ts b/packages/common/locales/ee.ts deleted file mode 100644 index 356624ad08..0000000000 --- a/packages/common/locales/ee.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ee', - [['ŋ', 'ɣ'], ['ŋdi', 'ɣetrɔ'], u], - u, - [ - ['k', 'd', 'b', 'k', 'y', 'f', 'm'], ['kɔs', 'dzo', 'bla', 'kuɖ', 'yaw', 'fiɖ', 'mem'], - ['kɔsiɖa', 'dzoɖa', 'blaɖa', 'kuɖa', 'yawoɖa', 'fiɖa', 'memleɖa'], - ['kɔs', 'dzo', 'bla', 'kuɖ', 'yaw', 'fiɖ', 'mem'] - ], - u, - [ - ['d', 'd', 't', 'a', 'd', 'm', 's', 'd', 'a', 'k', 'a', 'd'], - ['dzv', 'dzd', 'ted', 'afɔ', 'dam', 'mas', 'sia', 'dea', 'any', 'kel', 'ade', 'dzm'], - [ - 'dzove', 'dzodze', 'tedoxe', 'afɔfĩe', 'dama', 'masa', 'siamlɔm', 'deasiamime', 'anyɔnyɔ', - 'kele', 'adeɛmekpɔxe', 'dzome' - ] - ], - u, - [['HYV', 'Yŋ'], u, ['Hafi Yesu Va', 'Yesu ŋɔli']], - 1, - [6, 0], - ['M/d/yy', 'MMM d \'lia\', y', 'MMMM d \'lia\' y', 'EEEE, MMMM d \'lia\' y'], - ['a \'ga\' h:mm', 'a \'ga\' h:mm:ss', 'a \'ga\' h:mm:ss z', 'a \'ga\' h:mm:ss zzzz'], - ['{0} {1}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'mnn', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GHS', - 'GH₵', - 'ghana siɖi', - {'AUD': ['AU$', '$'], 'GHS': ['GH₵'], 'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/el-CY.ts b/packages/common/locales/el-CY.ts deleted file mode 100644 index d51f05c1e5..0000000000 --- a/packages/common/locales/el-CY.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'el-CY', - [['πμ', 'μμ'], ['π.μ.', 'μ.μ.'], u], - u, - [ - ['Κ', 'Δ', 'Τ', 'Τ', 'Π', 'Π', 'Σ'], ['Κυρ', 'Δευ', 'Τρί', 'Τετ', 'Πέμ', 'Παρ', 'Σάβ'], - ['Κυριακή', 'Δευτέρα', 'Τρίτη', 'Τετάρτη', 'Πέμπτη', 'Παρασκευή', 'Σάββατο'], - ['Κυ', 'Δε', 'Τρ', 'Τε', 'Πέ', 'Πα', 'Σά'] - ], - u, - [ - ['Ι', 'Φ', 'Μ', 'Α', 'Μ', 'Ι', 'Ι', 'Α', 'Σ', 'Ο', 'Ν', 'Δ'], - ['Ιαν', 'Φεβ', 'Μαρ', 'Απρ', 'Μαΐ', 'Ιουν', 'Ιουλ', 'Αυγ', 'Σεπ', 'Οκτ', 'Νοε', 'Δεκ'], - [ - 'Ιανουαρίου', 'Φεβρουαρίου', 'Μαρτίου', 'Απριλίου', 'Μαΐου', 'Ιουνίου', 'Ιουλίου', - 'Αυγούστου', 'Σεπτεμβρίου', 'Οκτωβρίου', 'Νοεμβρίου', 'Δεκεμβρίου' - ] - ], - [ - ['Ι', 'Φ', 'Μ', 'Α', 'Μ', 'Ι', 'Ι', 'Α', 'Σ', 'Ο', 'Ν', 'Δ'], - ['Ιαν', 'Φεβ', 'Μάρ', 'Απρ', 'Μάι', 'Ιούν', 'Ιούλ', 'Αύγ', 'Σεπ', 'Οκτ', 'Νοέ', 'Δεκ'], - [ - 'Ιανουάριος', 'Φεβρουάριος', 'Μάρτιος', 'Απρίλιος', 'Μάιος', 'Ιούνιος', 'Ιούλιος', - 'Αύγουστος', 'Σεπτέμβριος', 'Οκτώβριος', 'Νοέμβριος', 'Δεκέμβριος' - ] - ], - [['π.Χ.', 'μ.Χ.'], u, ['προ Χριστού', 'μετά Χριστόν']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} - {0}', u], - [',', '.', ';', '%', '+', '-', 'e', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Ευρώ', - {'GRD': ['Δρχ'], 'JPY': ['JP¥', '¥'], 'THB': ['฿']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/el.ts b/packages/common/locales/el.ts deleted file mode 100644 index 1f7140010c..0000000000 --- a/packages/common/locales/el.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'el', - [['πμ', 'μμ'], ['π.μ.', 'μ.μ.'], u], - u, - [ - ['Κ', 'Δ', 'Τ', 'Τ', 'Π', 'Π', 'Σ'], ['Κυρ', 'Δευ', 'Τρί', 'Τετ', 'Πέμ', 'Παρ', 'Σάβ'], - ['Κυριακή', 'Δευτέρα', 'Τρίτη', 'Τετάρτη', 'Πέμπτη', 'Παρασκευή', 'Σάββατο'], - ['Κυ', 'Δε', 'Τρ', 'Τε', 'Πέ', 'Πα', 'Σά'] - ], - u, - [ - ['Ι', 'Φ', 'Μ', 'Α', 'Μ', 'Ι', 'Ι', 'Α', 'Σ', 'Ο', 'Ν', 'Δ'], - ['Ιαν', 'Φεβ', 'Μαρ', 'Απρ', 'Μαΐ', 'Ιουν', 'Ιουλ', 'Αυγ', 'Σεπ', 'Οκτ', 'Νοε', 'Δεκ'], - [ - 'Ιανουαρίου', 'Φεβρουαρίου', 'Μαρτίου', 'Απριλίου', 'Μαΐου', 'Ιουνίου', 'Ιουλίου', - 'Αυγούστου', 'Σεπτεμβρίου', 'Οκτωβρίου', 'Νοεμβρίου', 'Δεκεμβρίου' - ] - ], - [ - ['Ι', 'Φ', 'Μ', 'Α', 'Μ', 'Ι', 'Ι', 'Α', 'Σ', 'Ο', 'Ν', 'Δ'], - ['Ιαν', 'Φεβ', 'Μάρ', 'Απρ', 'Μάι', 'Ιούν', 'Ιούλ', 'Αύγ', 'Σεπ', 'Οκτ', 'Νοέ', 'Δεκ'], - [ - 'Ιανουάριος', 'Φεβρουάριος', 'Μάρτιος', 'Απρίλιος', 'Μάιος', 'Ιούνιος', 'Ιούλιος', - 'Αύγουστος', 'Σεπτέμβριος', 'Οκτώβριος', 'Νοέμβριος', 'Δεκέμβριος' - ] - ], - [['π.Χ.', 'μ.Χ.'], u, ['προ Χριστού', 'μετά Χριστόν']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} - {0}', u], - [',', '.', ';', '%', '+', '-', 'e', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Ευρώ', - {'GRD': ['Δρχ'], 'JPY': ['JP¥', '¥'], 'THB': ['฿']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-001.ts b/packages/common/locales/en-001.ts deleted file mode 100644 index e7e16afe5c..0000000000 --- a/packages/common/locales/en-001.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-001', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - u, - u, - u, - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-150.ts b/packages/common/locales/en-150.ts deleted file mode 100644 index 28042babe1..0000000000 --- a/packages/common/locales/en-150.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-150', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - u, - u, - u, - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-AE.ts b/packages/common/locales/en-AE.ts deleted file mode 100644 index c12eb0f65a..0000000000 --- a/packages/common/locales/en-AE.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-AE', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 6, - [5, 6], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'AED', - 'AED', - 'United Arab Emirates Dirham', - {}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-AG.ts b/packages/common/locales/en-AG.ts deleted file mode 100644 index a37c8786a3..0000000000 --- a/packages/common/locales/en-AG.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-AG', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XCD', - '$', - 'East Caribbean Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'XCD': ['$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-AI.ts b/packages/common/locales/en-AI.ts deleted file mode 100644 index 9118d329a7..0000000000 --- a/packages/common/locales/en-AI.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-AI', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XCD', - '$', - 'East Caribbean Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'XCD': ['$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-AS.ts b/packages/common/locales/en-AS.ts deleted file mode 100644 index 4e6be55122..0000000000 --- a/packages/common/locales/en-AS.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-AS', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'US Dollar', - {}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-AT.ts b/packages/common/locales/en-AT.ts deleted file mode 100644 index 1c10fea330..0000000000 --- a/packages/common/locales/en-AT.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-AT', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-AU.ts b/packages/common/locales/en-AU.ts deleted file mode 100644 index 31895673a4..0000000000 --- a/packages/common/locales/en-AU.ts +++ /dev/null @@ -1,84 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-AU', - [['am', 'pm'], u, u], - u, - [ - ['Su.', 'M.', 'Tu.', 'W.', 'Th.', 'F.', 'Sa.'], - ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mon', 'Tu', 'Wed', 'Th', 'Fri', 'Sat'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'e', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'AUD', - '$', - 'Australian Dollar', - { - 'AUD': ['$'], - 'BDT': [u, 'Tk'], - 'BOB': [u, '$b'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'CUP': [u, '₱'], - 'EGP': [u, '£'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'ISK': [u, 'Kr'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'PYG': [u, 'Gs'], - 'SCR': ['Rs'], - 'SEK': [u, 'Kr'], - 'TWD': [u, '$'], - 'USD': [u, '$'], - 'UYU': [u, '$U'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [], - 'XPF': ['CFP'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-BB.ts b/packages/common/locales/en-BB.ts deleted file mode 100644 index a67af73a67..0000000000 --- a/packages/common/locales/en-BB.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-BB', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'BBD', - '$', - 'Barbadian Dollar', - {'BBD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-BE.ts b/packages/common/locales/en-BE.ts deleted file mode 100644 index dfcf1019ed..0000000000 --- a/packages/common/locales/en-BE.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-BE', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/yy', 'dd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-BI.ts b/packages/common/locales/en-BI.ts deleted file mode 100644 index 806d1282bc..0000000000 --- a/packages/common/locales/en-BI.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-BI', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'BIF', - 'FBu', - 'Burundian Franc', - {'BIF': ['FBu']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-BM.ts b/packages/common/locales/en-BM.ts deleted file mode 100644 index 142b40138c..0000000000 --- a/packages/common/locales/en-BM.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-BM', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'BMD', - '$', - 'Bermudan Dollar', - {'BMD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-BS.ts b/packages/common/locales/en-BS.ts deleted file mode 100644 index 53b803dbd6..0000000000 --- a/packages/common/locales/en-BS.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-BS', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'BSD', - '$', - 'Bahamian Dollar', - {'BSD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-BW.ts b/packages/common/locales/en-BW.ts deleted file mode 100644 index c25832ee82..0000000000 --- a/packages/common/locales/en-BW.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-BW', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/yy', 'dd MMM y', 'dd MMMM y', 'EEEE, dd MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'BWP', - 'P', - 'Botswanan Pula', - {'BWP': ['P'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-BZ.ts b/packages/common/locales/en-BZ.ts deleted file mode 100644 index 0999d20f63..0000000000 --- a/packages/common/locales/en-BZ.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-BZ', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/yy', 'dd-MMM-y', 'dd MMMM y', 'EEEE, dd MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'BZD', - '$', - 'Belize Dollar', - {'BZD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-CA.ts b/packages/common/locales/en-CA.ts deleted file mode 100644 index d3b795afc1..0000000000 --- a/packages/common/locales/en-CA.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-CA', - [['am', 'pm'], ['a.m.', 'p.m.'], u], - [['a.m.', 'pm'], ['a.m.', 'p.m.'], u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['y-MM-dd', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'e', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'CAD', - '$', - 'Canadian Dollar', - {'CAD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-CC.ts b/packages/common/locales/en-CC.ts deleted file mode 100644 index dd0e27a696..0000000000 --- a/packages/common/locales/en-CC.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-CC', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'AUD', - '$', - 'Australian Dollar', - {'AUD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-CH.ts b/packages/common/locales/en-CH.ts deleted file mode 100644 index c61fc68af9..0000000000 --- a/packages/common/locales/en-CH.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-CH', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', '’', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤-#,##0.00', '#E0'], - 'CHF', - 'CHF', - 'Swiss Franc', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-CK.ts b/packages/common/locales/en-CK.ts deleted file mode 100644 index a0a075165b..0000000000 --- a/packages/common/locales/en-CK.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-CK', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'NZD', - '$', - 'New Zealand Dollar', - {'JPY': ['JP¥', '¥'], 'NZD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-CM.ts b/packages/common/locales/en-CM.ts deleted file mode 100644 index ef2574d679..0000000000 --- a/packages/common/locales/en-CM.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-CM', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XAF', - 'FCFA', - 'Central African CFA Franc', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-CX.ts b/packages/common/locales/en-CX.ts deleted file mode 100644 index f984cdf9df..0000000000 --- a/packages/common/locales/en-CX.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-CX', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'AUD', - '$', - 'Australian Dollar', - {'AUD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-CY.ts b/packages/common/locales/en-CY.ts deleted file mode 100644 index f5d5d64a38..0000000000 --- a/packages/common/locales/en-CY.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-CY', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-DE.ts b/packages/common/locales/en-DE.ts deleted file mode 100644 index 75e60fc895..0000000000 --- a/packages/common/locales/en-DE.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-DE', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-DG.ts b/packages/common/locales/en-DG.ts deleted file mode 100644 index b2a8c81cf8..0000000000 --- a/packages/common/locales/en-DG.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-DG', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - 'US$', - 'US Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-DK.ts b/packages/common/locales/en-DK.ts deleted file mode 100644 index 0cdeecf498..0000000000 --- a/packages/common/locales/en-DK.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-DK', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH.mm', 'HH.mm.ss', 'HH.mm.ss z', 'HH.mm.ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', '.'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'DKK', - 'kr.', - 'Danish Krone', - {'DKK': ['kr.', 'kr'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-DM.ts b/packages/common/locales/en-DM.ts deleted file mode 100644 index fe7e98cf35..0000000000 --- a/packages/common/locales/en-DM.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-DM', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XCD', - '$', - 'East Caribbean Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'XCD': ['$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-ER.ts b/packages/common/locales/en-ER.ts deleted file mode 100644 index 244a716a79..0000000000 --- a/packages/common/locales/en-ER.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-ER', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ERN', - 'Nfk', - 'Eritrean Nakfa', - {'ERN': ['Nfk'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-FI.ts b/packages/common/locales/en-FI.ts deleted file mode 100644 index 74085b9524..0000000000 --- a/packages/common/locales/en-FI.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-FI', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['H.mm', 'H.mm.ss', 'H.mm.ss z', 'H.mm.ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', '.'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-FJ.ts b/packages/common/locales/en-FJ.ts deleted file mode 100644 index eaa78efae8..0000000000 --- a/packages/common/locales/en-FJ.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-FJ', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'FJD', - '$', - 'Fijian Dollar', - {'FJD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-FK.ts b/packages/common/locales/en-FK.ts deleted file mode 100644 index 28b2c1ef59..0000000000 --- a/packages/common/locales/en-FK.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-FK', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'FKP', - '£', - 'Falkland Islands Pound', - {'FKP': ['£'], 'GBP': ['GB£', '£'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-FM.ts b/packages/common/locales/en-FM.ts deleted file mode 100644 index 05bedf0a26..0000000000 --- a/packages/common/locales/en-FM.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-FM', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - 'US$', - 'US Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-GB.ts b/packages/common/locales/en-GB.ts deleted file mode 100644 index 20fd327fb1..0000000000 --- a/packages/common/locales/en-GB.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-GB', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GBP', - '£', - 'British Pound', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-GD.ts b/packages/common/locales/en-GD.ts deleted file mode 100644 index 125ec86b74..0000000000 --- a/packages/common/locales/en-GD.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-GD', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XCD', - '$', - 'East Caribbean Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'XCD': ['$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-GG.ts b/packages/common/locales/en-GG.ts deleted file mode 100644 index f4e3680d81..0000000000 --- a/packages/common/locales/en-GG.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-GG', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GBP', - '£', - 'UK Pound', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-GH.ts b/packages/common/locales/en-GH.ts deleted file mode 100644 index 94d62c0945..0000000000 --- a/packages/common/locales/en-GH.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-GH', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GHS', - 'GH₵', - 'Ghanaian Cedi', - {'GHS': ['GH₵'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-GI.ts b/packages/common/locales/en-GI.ts deleted file mode 100644 index cf7fa30378..0000000000 --- a/packages/common/locales/en-GI.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-GI', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GIP', - '£', - 'Gibraltar Pound', - {'GBP': ['GB£', '£'], 'GIP': ['£'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-GM.ts b/packages/common/locales/en-GM.ts deleted file mode 100644 index aeb1ed7ef6..0000000000 --- a/packages/common/locales/en-GM.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-GM', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GMD', - 'D', - 'Gambian Dalasi', - {'GMD': ['D'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-GU.ts b/packages/common/locales/en-GU.ts deleted file mode 100644 index 8250aed366..0000000000 --- a/packages/common/locales/en-GU.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-GU', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'US Dollar', - {}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-GY.ts b/packages/common/locales/en-GY.ts deleted file mode 100644 index e8544e647b..0000000000 --- a/packages/common/locales/en-GY.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-GY', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GYD', - '$', - 'Guyanaese Dollar', - {'GYD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-HK.ts b/packages/common/locales/en-HK.ts deleted file mode 100644 index e2e0e6130d..0000000000 --- a/packages/common/locales/en-HK.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-HK', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'HKD', - 'HK$', - 'Hong Kong Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-IE.ts b/packages/common/locales/en-IE.ts deleted file mode 100644 index c9f28a5432..0000000000 --- a/packages/common/locales/en-IE.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-IE', - [['a', 'p'], ['am', 'pm'], ['a.m.', 'p.m.']], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-IL.ts b/packages/common/locales/en-IL.ts deleted file mode 100644 index acc59dc449..0000000000 --- a/packages/common/locales/en-IL.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-IL', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [5, 6], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ILS', - '₪', - 'Israeli New Shekel', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-IM.ts b/packages/common/locales/en-IM.ts deleted file mode 100644 index 989ba4319e..0000000000 --- a/packages/common/locales/en-IM.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-IM', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GBP', - '£', - 'UK Pound', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-IN.ts b/packages/common/locales/en-IN.ts deleted file mode 100644 index 3c08632d4d..0000000000 --- a/packages/common/locales/en-IN.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-IN', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [0, 0], - ['dd/MM/yy', 'dd-MMM-y', 'd MMMM y', 'EEEE, d MMMM, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤#,##,##0.00', '#E0'], - 'INR', - '₹', - 'Indian Rupee', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-IO.ts b/packages/common/locales/en-IO.ts deleted file mode 100644 index a10fe2cebc..0000000000 --- a/packages/common/locales/en-IO.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-IO', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - 'US$', - 'US Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-JE.ts b/packages/common/locales/en-JE.ts deleted file mode 100644 index 44a685cd22..0000000000 --- a/packages/common/locales/en-JE.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-JE', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GBP', - '£', - 'UK Pound', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-JM.ts b/packages/common/locales/en-JM.ts deleted file mode 100644 index 884f665b34..0000000000 --- a/packages/common/locales/en-JM.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-JM', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'JMD', - '$', - 'Jamaican Dollar', - {'JMD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-KE.ts b/packages/common/locales/en-KE.ts deleted file mode 100644 index 832bb2bd0d..0000000000 --- a/packages/common/locales/en-KE.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-KE', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Kenyan Shilling', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-KI.ts b/packages/common/locales/en-KI.ts deleted file mode 100644 index 9cb491b40c..0000000000 --- a/packages/common/locales/en-KI.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-KI', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'AUD', - '$', - 'Australian Dollar', - {'AUD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-KN.ts b/packages/common/locales/en-KN.ts deleted file mode 100644 index 95dac03bb8..0000000000 --- a/packages/common/locales/en-KN.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-KN', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XCD', - '$', - 'East Caribbean Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'XCD': ['$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-KY.ts b/packages/common/locales/en-KY.ts deleted file mode 100644 index 177e3443cb..0000000000 --- a/packages/common/locales/en-KY.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-KY', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KYD', - '$', - 'Cayman Islands Dollar', - {'JPY': ['JP¥', '¥'], 'KYD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-LC.ts b/packages/common/locales/en-LC.ts deleted file mode 100644 index 41142d377f..0000000000 --- a/packages/common/locales/en-LC.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-LC', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XCD', - '$', - 'East Caribbean Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'XCD': ['$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-LR.ts b/packages/common/locales/en-LR.ts deleted file mode 100644 index b1fb93c28d..0000000000 --- a/packages/common/locales/en-LR.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-LR', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'LRD', - '$', - 'Liberian Dollar', - {'JPY': ['JP¥', '¥'], 'LRD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-LS.ts b/packages/common/locales/en-LS.ts deleted file mode 100644 index ae55e1693a..0000000000 --- a/packages/common/locales/en-LS.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-LS', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZAR', - 'R', - 'South African Rand', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'ZAR': ['R']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-MG.ts b/packages/common/locales/en-MG.ts deleted file mode 100644 index 9671197396..0000000000 --- a/packages/common/locales/en-MG.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-MG', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'MGA', - 'Ar', - 'Malagasy Ariary', - {'JPY': ['JP¥', '¥'], 'MGA': ['Ar'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-MH.ts b/packages/common/locales/en-MH.ts deleted file mode 100644 index f04cbe0b1c..0000000000 --- a/packages/common/locales/en-MH.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-MH', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'US Dollar', - {}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-MO.ts b/packages/common/locales/en-MO.ts deleted file mode 100644 index fa9de43138..0000000000 --- a/packages/common/locales/en-MO.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-MO', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'MOP', - 'MOP$', - 'Macanese Pataca', - {'JPY': ['JP¥', '¥'], 'MOP': ['MOP$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-MP.ts b/packages/common/locales/en-MP.ts deleted file mode 100644 index e49e131707..0000000000 --- a/packages/common/locales/en-MP.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-MP', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'US Dollar', - {}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-MS.ts b/packages/common/locales/en-MS.ts deleted file mode 100644 index da645a4a2e..0000000000 --- a/packages/common/locales/en-MS.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-MS', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XCD', - '$', - 'East Caribbean Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'XCD': ['$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-MT.ts b/packages/common/locales/en-MT.ts deleted file mode 100644 index a1f5aa0fac..0000000000 --- a/packages/common/locales/en-MT.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-MT', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/y', 'dd MMM y', 'dd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - {'GBP': ['GB£', '£'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-MU.ts b/packages/common/locales/en-MU.ts deleted file mode 100644 index 8a48958f55..0000000000 --- a/packages/common/locales/en-MU.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-MU', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'MUR', - 'Rs', - 'Mauritian Rupee', - {'JPY': ['JP¥', '¥'], 'MUR': ['Rs'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-MW.ts b/packages/common/locales/en-MW.ts deleted file mode 100644 index 38af3620a5..0000000000 --- a/packages/common/locales/en-MW.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-MW', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'MWK', - 'MK', - 'Malawian Kwacha', - {'JPY': ['JP¥', '¥'], 'MWK': ['MK'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-MY.ts b/packages/common/locales/en-MY.ts deleted file mode 100644 index 2428be4df1..0000000000 --- a/packages/common/locales/en-MY.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-MY', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'MYR', - 'RM', - 'Malaysian Ringgit', - {'JPY': ['JP¥', '¥'], 'MYR': ['RM'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-NA.ts b/packages/common/locales/en-NA.ts deleted file mode 100644 index ea171e828a..0000000000 --- a/packages/common/locales/en-NA.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-NA', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZAR', - 'ZAR', - 'South African Rand', - {'JPY': ['JP¥', '¥'], 'NAD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-NF.ts b/packages/common/locales/en-NF.ts deleted file mode 100644 index 292b6d628a..0000000000 --- a/packages/common/locales/en-NF.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-NF', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'AUD', - '$', - 'Australian Dollar', - {'AUD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-NG.ts b/packages/common/locales/en-NG.ts deleted file mode 100644 index 5f92d2da9b..0000000000 --- a/packages/common/locales/en-NG.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-NG', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'NGN', - '₦', - 'Nigerian Naira', - {'JPY': ['JP¥', '¥'], 'NGN': ['₦'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-NL.ts b/packages/common/locales/en-NL.ts deleted file mode 100644 index 7ed55d2be0..0000000000 --- a/packages/common/locales/en-NL.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-NL', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤ -#,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-NR.ts b/packages/common/locales/en-NR.ts deleted file mode 100644 index 448b59edb2..0000000000 --- a/packages/common/locales/en-NR.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-NR', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'AUD', - '$', - 'Australian Dollar', - {'AUD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-NU.ts b/packages/common/locales/en-NU.ts deleted file mode 100644 index 9b709f17a9..0000000000 --- a/packages/common/locales/en-NU.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-NU', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'NZD', - '$', - 'New Zealand Dollar', - {'JPY': ['JP¥', '¥'], 'NZD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-NZ.ts b/packages/common/locales/en-NZ.ts deleted file mode 100644 index 522de84c75..0000000000 --- a/packages/common/locales/en-NZ.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-NZ', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['d/MM/yy', 'd/MM/y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'NZD', - '$', - 'New Zealand Dollar', - {'JPY': ['JP¥', '¥'], 'NZD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-PG.ts b/packages/common/locales/en-PG.ts deleted file mode 100644 index bb3c001959..0000000000 --- a/packages/common/locales/en-PG.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-PG', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'PGK', - 'K', - 'Papua New Guinean Kina', - {'JPY': ['JP¥', '¥'], 'PGK': ['K'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-PH.ts b/packages/common/locales/en-PH.ts deleted file mode 100644 index 8173d19ffd..0000000000 --- a/packages/common/locales/en-PH.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-PH', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'PHP', - '₱', - 'Philippine Piso', - {'JPY': ['JP¥', '¥'], 'PHP': ['₱'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-PK.ts b/packages/common/locales/en-PK.ts deleted file mode 100644 index ad3ef55063..0000000000 --- a/packages/common/locales/en-PK.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-PK', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/y', 'dd-MMM-y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'PKR', - 'Rs', - 'Pakistani Rupee', - {'JPY': ['JP¥', '¥'], 'PKR': ['Rs'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-PN.ts b/packages/common/locales/en-PN.ts deleted file mode 100644 index c8d9133e7d..0000000000 --- a/packages/common/locales/en-PN.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-PN', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'NZD', - '$', - 'New Zealand Dollar', - {'JPY': ['JP¥', '¥'], 'NZD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-PR.ts b/packages/common/locales/en-PR.ts deleted file mode 100644 index 01bafc8b8b..0000000000 --- a/packages/common/locales/en-PR.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-PR', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'US Dollar', - {}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-PW.ts b/packages/common/locales/en-PW.ts deleted file mode 100644 index dee5e6f472..0000000000 --- a/packages/common/locales/en-PW.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-PW', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - 'US$', - 'US Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-RW.ts b/packages/common/locales/en-RW.ts deleted file mode 100644 index 12155fae28..0000000000 --- a/packages/common/locales/en-RW.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-RW', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'RWF', - 'RF', - 'Rwandan Franc', - {'JPY': ['JP¥', '¥'], 'RWF': ['RF'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-SB.ts b/packages/common/locales/en-SB.ts deleted file mode 100644 index 53fc1b0518..0000000000 --- a/packages/common/locales/en-SB.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-SB', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SBD', - '$', - 'Solomon Islands Dollar', - {'JPY': ['JP¥', '¥'], 'SBD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-SC.ts b/packages/common/locales/en-SC.ts deleted file mode 100644 index 4b7eea8916..0000000000 --- a/packages/common/locales/en-SC.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-SC', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SCR', - 'SR', - 'Seychellois Rupee', - {'JPY': ['JP¥', '¥'], 'SCR': ['SR'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-SD.ts b/packages/common/locales/en-SD.ts deleted file mode 100644 index 87c517e4f4..0000000000 --- a/packages/common/locales/en-SD.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-SD', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 6, - [5, 6], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SDG', - 'SDG', - 'Sudanese Pound', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-SE.ts b/packages/common/locales/en-SE.ts deleted file mode 100644 index 9ce1869eb2..0000000000 --- a/packages/common/locales/en-SE.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-SE', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['y-MM-dd', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - [',', ' ', ';', '%', '+', '-', '×10^', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'SEK', - 'kr', - 'Swedish Krona', - {'JPY': ['JP¥', '¥'], 'SEK': ['kr'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-SG.ts b/packages/common/locales/en-SG.ts deleted file mode 100644 index 76e6231f58..0000000000 --- a/packages/common/locales/en-SG.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-SG', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SGD', - '$', - 'Singapore Dollar', - {'JPY': ['JP¥', '¥'], 'SGD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-SH.ts b/packages/common/locales/en-SH.ts deleted file mode 100644 index 5c6438dea8..0000000000 --- a/packages/common/locales/en-SH.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-SH', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SHP', - '£', - 'St Helena Pound', - {'GBP': ['GB£', '£'], 'JPY': ['JP¥', '¥'], 'SHP': ['£'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-SI.ts b/packages/common/locales/en-SI.ts deleted file mode 100644 index add552f98e..0000000000 --- a/packages/common/locales/en-SI.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-SI', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - [',', '.', ';', '%', '+', '-', 'e', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-SL.ts b/packages/common/locales/en-SL.ts deleted file mode 100644 index f39028005a..0000000000 --- a/packages/common/locales/en-SL.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-SL', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SLL', - 'Le', - 'Sierra Leonean Leone', - {'JPY': ['JP¥', '¥'], 'SLL': ['Le'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-SS.ts b/packages/common/locales/en-SS.ts deleted file mode 100644 index dbd084e90b..0000000000 --- a/packages/common/locales/en-SS.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-SS', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SSP', - '£', - 'South Sudanese Pound', - {'GBP': ['GB£', '£'], 'JPY': ['JP¥', '¥'], 'SSP': ['£'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-SX.ts b/packages/common/locales/en-SX.ts deleted file mode 100644 index cd3bc8e14e..0000000000 --- a/packages/common/locales/en-SX.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-SX', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ANG', - 'NAf.', - 'Netherlands Antillean Guilder', - {'ANG': ['NAf.'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-SZ.ts b/packages/common/locales/en-SZ.ts deleted file mode 100644 index e9c1fda921..0000000000 --- a/packages/common/locales/en-SZ.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-SZ', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SZL', - 'E', - 'Swazi Lilangeni', - {'JPY': ['JP¥', '¥'], 'SZL': ['E'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-TC.ts b/packages/common/locales/en-TC.ts deleted file mode 100644 index b6a629243c..0000000000 --- a/packages/common/locales/en-TC.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-TC', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - 'US$', - 'US Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-TK.ts b/packages/common/locales/en-TK.ts deleted file mode 100644 index 93da7fb3b9..0000000000 --- a/packages/common/locales/en-TK.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-TK', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'NZD', - '$', - 'New Zealand Dollar', - {'JPY': ['JP¥', '¥'], 'NZD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-TO.ts b/packages/common/locales/en-TO.ts deleted file mode 100644 index f1263c184c..0000000000 --- a/packages/common/locales/en-TO.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-TO', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'TOP', - 'T$', - 'Tongan Paʻanga', - {'JPY': ['JP¥', '¥'], 'TOP': ['T$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-TT.ts b/packages/common/locales/en-TT.ts deleted file mode 100644 index 87864b5f77..0000000000 --- a/packages/common/locales/en-TT.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-TT', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'TTD', - '$', - 'Trinidad & Tobago Dollar', - {'JPY': ['JP¥', '¥'], 'TTD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-TV.ts b/packages/common/locales/en-TV.ts deleted file mode 100644 index fb8e97fa4a..0000000000 --- a/packages/common/locales/en-TV.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-TV', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'AUD', - '$', - 'Australian Dollar', - {'AUD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-TZ.ts b/packages/common/locales/en-TZ.ts deleted file mode 100644 index bd5fad9780..0000000000 --- a/packages/common/locales/en-TZ.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-TZ', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'TZS', - 'TSh', - 'Tanzanian Shilling', - {'JPY': ['JP¥', '¥'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-UG.ts b/packages/common/locales/en-UG.ts deleted file mode 100644 index 1843d20b89..0000000000 --- a/packages/common/locales/en-UG.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-UG', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [0, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'UGX', - 'USh', - 'Ugandan Shilling', - {'JPY': ['JP¥', '¥'], 'UGX': ['USh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-UM.ts b/packages/common/locales/en-UM.ts deleted file mode 100644 index a1e904b138..0000000000 --- a/packages/common/locales/en-UM.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-UM', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'US Dollar', - {}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-US-POSIX.ts b/packages/common/locales/en-US-POSIX.ts deleted file mode 100644 index 215dfc9964..0000000000 --- a/packages/common/locales/en-US-POSIX.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-US-POSIX', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '0/00', 'INF', 'NaN', ':'], - ['0.######', '0%', '¤ 0.00', '0.000000E+000'], - 'USD', - '$', - 'US Dollar', - {}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-VC.ts b/packages/common/locales/en-VC.ts deleted file mode 100644 index fffc2ff5a7..0000000000 --- a/packages/common/locales/en-VC.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-VC', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XCD', - '$', - 'East Caribbean Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'XCD': ['$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-VG.ts b/packages/common/locales/en-VG.ts deleted file mode 100644 index d2dd9bae3c..0000000000 --- a/packages/common/locales/en-VG.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-VG', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - 'US$', - 'US Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-VI.ts b/packages/common/locales/en-VI.ts deleted file mode 100644 index 4d1a9f4b13..0000000000 --- a/packages/common/locales/en-VI.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-VI', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'US Dollar', - {}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-VU.ts b/packages/common/locales/en-VU.ts deleted file mode 100644 index b4de61f4be..0000000000 --- a/packages/common/locales/en-VU.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-VU', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'VUV', - 'VT', - 'Vanuatu Vatu', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'VUV': ['VT']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-WS.ts b/packages/common/locales/en-WS.ts deleted file mode 100644 index 8f24a3da41..0000000000 --- a/packages/common/locales/en-WS.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-WS', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'WST', - 'WS$', - 'Samoan Tala', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'WST': ['WS$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-ZA.ts b/packages/common/locales/en-ZA.ts deleted file mode 100644 index f704e2c7f2..0000000000 --- a/packages/common/locales/en-ZA.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-ZA', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['y/MM/dd', 'dd MMM y', 'dd MMMM y', 'EEEE, dd MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZAR', - 'R', - 'South African Rand', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'ZAR': ['R']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-ZM.ts b/packages/common/locales/en-ZM.ts deleted file mode 100644 index 9325758d91..0000000000 --- a/packages/common/locales/en-ZM.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-ZM', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZMW', - 'K', - 'Zambian Kwacha', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'ZMW': ['K', 'ZK']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en-ZW.ts b/packages/common/locales/en-ZW.ts deleted file mode 100644 index 0252159fdc..0000000000 --- a/packages/common/locales/en-ZW.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en-ZW', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['d/M/y', 'dd MMM,y', 'dd MMMM y', 'EEEE, dd MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - 'US$', - 'US Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/en.ts b/packages/common/locales/en.ts deleted file mode 100644 index e027aca2cb..0000000000 --- a/packages/common/locales/en.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'en', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'US Dollar', - {}, - 'ltr', - plural -]; diff --git a/packages/common/locales/eo.ts b/packages/common/locales/eo.ts deleted file mode 100644 index 3b28a98e0e..0000000000 --- a/packages/common/locales/eo.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'eo', - [['atm', 'ptm'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['di', 'lu', 'ma', 'me', 'ĵa', 've', 'sa'], - ['dimanĉo', 'lundo', 'mardo', 'merkredo', 'ĵaŭdo', 'vendredo', 'sabato'], - ['di', 'lu', 'ma', 'me', 'ĵa', 've', 'sa'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aŭg', 'sep', 'okt', 'nov', 'dec'], - [ - 'januaro', 'februaro', 'marto', 'aprilo', 'majo', 'junio', 'julio', 'aŭgusto', 'septembro', - 'oktobro', 'novembro', 'decembro' - ] - ], - u, - [['aK', 'pK'], u, u], - 1, - [6, 0], - ['yy-MM-dd', 'y-MMM-dd', 'y-MMMM-dd', 'EEEE, d-\'a\' \'de\' MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'H-\'a\' \'horo\' \'kaj\' m:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - u, - u, - u, - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-419.ts b/packages/common/locales/es-419.ts deleted file mode 100644 index 6ee24b3893..0000000000 --- a/packages/common/locales/es-419.ts +++ /dev/null @@ -1,84 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-419', - [['a. m.', 'p. m.'], ['a.m.', 'p.m.'], u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'EUR', - 'EUR', - 'euro', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-AR.ts b/packages/common/locales/es-AR.ts deleted file mode 100644 index edfaec6ee0..0000000000 --- a/packages/common/locales/es-AR.ts +++ /dev/null @@ -1,81 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-AR', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'ARS', - '$', - 'peso argentino', - { - 'ARS': ['$'], - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-BO.ts b/packages/common/locales/es-BO.ts deleted file mode 100644 index 83c8fa3a5f..0000000000 --- a/packages/common/locales/es-BO.ts +++ /dev/null @@ -1,85 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-BO', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM \'de\' y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'BOB', - 'Bs', - 'boliviano', - { - 'AUD': [u, '$'], - 'BOB': ['Bs'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-BR.ts b/packages/common/locales/es-BR.ts deleted file mode 100644 index 69a12047e8..0000000000 --- a/packages/common/locales/es-BR.ts +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-BR', - [['a. m.', 'p. m.'], ['a.m.', 'p.m.'], u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'BRL', - 'R$', - 'real brasileño', - { - 'AUD': [u, '$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-BZ.ts b/packages/common/locales/es-BZ.ts deleted file mode 100644 index e35339d80f..0000000000 --- a/packages/common/locales/es-BZ.ts +++ /dev/null @@ -1,85 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-BZ', - [['a. m.', 'p. m.'], ['a.m.', 'p.m.'], u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'BZD', - '$', - 'dólar beliceño', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'BZD': ['$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-CL.ts b/packages/common/locales/es-CL.ts deleted file mode 100644 index e80af3d406..0000000000 --- a/packages/common/locales/es-CL.ts +++ /dev/null @@ -1,95 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-CL', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['do', 'lu', 'ma', 'mi', 'ju', 'vi', 'sá'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sept.', 'oct.', 'nov.', - 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['dd-MM-yy', 'dd-MM-y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00;¤-#,##0.00', '#E0'], - 'CLP', - '$', - 'Peso chileno', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CLP': ['$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-CO.ts b/packages/common/locales/es-CO.ts deleted file mode 100644 index 77b9b6e840..0000000000 --- a/packages/common/locales/es-CO.ts +++ /dev/null @@ -1,95 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-CO', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sept.', 'oct.', 'nov.', - 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/MM/yy', 'd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'a\' \'las\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'COP', - '$', - 'peso colombiano', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'COP': ['$'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-CR.ts b/packages/common/locales/es-CR.ts deleted file mode 100644 index 5ad1a8369e..0000000000 --- a/packages/common/locales/es-CR.ts +++ /dev/null @@ -1,85 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-CR', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'CRC', - '₡', - 'colón costarricense', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'CRC': ['₡'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-CU.ts b/packages/common/locales/es-CU.ts deleted file mode 100644 index d6fc5b5b37..0000000000 --- a/packages/common/locales/es-CU.ts +++ /dev/null @@ -1,85 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-CU', - [['a. m.', 'p. m.'], ['a.m.', 'p.m.'], u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'CUP', - '$', - 'peso cubano', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'CUP': ['$'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-DO.ts b/packages/common/locales/es-DO.ts deleted file mode 100644 index 64aac72091..0000000000 --- a/packages/common/locales/es-DO.ts +++ /dev/null @@ -1,81 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-DO', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'DOP', - 'RD$', - 'peso dominicano', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'DOP': ['RD$', '$'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-EA.ts b/packages/common/locales/es-EA.ts deleted file mode 100644 index 43d8bf68f9..0000000000 --- a/packages/common/locales/es-EA.ts +++ /dev/null @@ -1,76 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-EA', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'X', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sept.', 'oct.', 'nov.', - 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss (zzzz)'], - ['{1} {0}', u, '{1}, {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CNY': [u, '¥'], - 'EGP': [], - 'ESP': ['₧'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-EC.ts b/packages/common/locales/es-EC.ts deleted file mode 100644 index dfdb3331f6..0000000000 --- a/packages/common/locales/es-EC.ts +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-EC', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00;¤-#,##0.00', '#E0'], - 'USD', - '$', - 'dólar estadounidense', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-GQ.ts b/packages/common/locales/es-GQ.ts deleted file mode 100644 index 39e121b711..0000000000 --- a/packages/common/locales/es-GQ.ts +++ /dev/null @@ -1,75 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-GQ', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'X', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sept.', 'oct.', 'nov.', - 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss (zzzz)'], - ['{1} {0}', u, '{1}, {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'XAF', - 'FCFA', - 'franco CFA de África Central', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CNY': [u, '¥'], - 'EGP': [], - 'ESP': ['₧'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-GT.ts b/packages/common/locales/es-GT.ts deleted file mode 100644 index 032970e187..0000000000 --- a/packages/common/locales/es-GT.ts +++ /dev/null @@ -1,85 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-GT', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/MM/yy', 'd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'GTQ', - 'Q', - 'quetzal', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'GTQ': ['Q'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-HN.ts b/packages/common/locales/es-HN.ts deleted file mode 100644 index af32faf065..0000000000 --- a/packages/common/locales/es-HN.ts +++ /dev/null @@ -1,85 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-HN', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'dd \'de\' MMMM \'de\' y', 'EEEE dd \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'HNL', - 'L', - 'lempira hondureño', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'HNL': ['L'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-IC.ts b/packages/common/locales/es-IC.ts deleted file mode 100644 index 308c46a784..0000000000 --- a/packages/common/locales/es-IC.ts +++ /dev/null @@ -1,76 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-IC', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'X', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sept.', 'oct.', 'nov.', - 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss (zzzz)'], - ['{1} {0}', u, '{1}, {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CNY': [u, '¥'], - 'EGP': [], - 'ESP': ['₧'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-MX.ts b/packages/common/locales/es-MX.ts deleted file mode 100644 index ddc0cf933e..0000000000 --- a/packages/common/locales/es-MX.ts +++ /dev/null @@ -1,78 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-MX', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['dd/MM/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'MXN', - '$', - 'peso mexicano', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'BYN': [u, 'p.'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MRO': ['MRU'], - 'MRU': ['UM'], - 'MXN': ['$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-NI.ts b/packages/common/locales/es-NI.ts deleted file mode 100644 index fff051681c..0000000000 --- a/packages/common/locales/es-NI.ts +++ /dev/null @@ -1,85 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-NI', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'NIO', - 'C$', - 'córdoba nicaragüense', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NIO': ['C$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-PA.ts b/packages/common/locales/es-PA.ts deleted file mode 100644 index fc5a1f47e8..0000000000 --- a/packages/common/locales/es-PA.ts +++ /dev/null @@ -1,85 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-PA', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['MM/dd/yy', 'MM/dd/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'PAB', - 'B/.', - 'balboa panameño', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'PAB': ['B/.'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-PE.ts b/packages/common/locales/es-PE.ts deleted file mode 100644 index dee5f1b00d..0000000000 --- a/packages/common/locales/es-PE.ts +++ /dev/null @@ -1,94 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-PE', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'set.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'setiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'Ene.', 'Feb.', 'Mar.', 'Abr.', 'May.', 'Jun.', 'Jul.', 'Ago.', 'Set.', 'Oct.', 'Nov.', 'Dic.' - ], - [ - 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Setiembre', - 'Octubre', 'Noviembre', 'Diciembre' - ] - ], - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/MM/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'PEN', - 'S/', - 'sol peruano', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'PEN': ['S/'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-PH.ts b/packages/common/locales/es-PH.ts deleted file mode 100644 index f73e0491b9..0000000000 --- a/packages/common/locales/es-PH.ts +++ /dev/null @@ -1,77 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-PH', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'X', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sept.', 'oct.', 'nov.', - 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, '{1}, {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'PHP', - '₱', - 'peso filipino', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CNY': [u, '¥'], - 'EGP': [], - 'ESP': ['₧'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'PHP': ['₱'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-PR.ts b/packages/common/locales/es-PR.ts deleted file mode 100644 index aea073b22d..0000000000 --- a/packages/common/locales/es-PR.ts +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-PR', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['MM/dd/yy', 'MM/dd/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'dólar estadounidense', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-PY.ts b/packages/common/locales/es-PY.ts deleted file mode 100644 index efb1d11a1d..0000000000 --- a/packages/common/locales/es-PY.ts +++ /dev/null @@ -1,86 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-PY', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['do', 'lu', 'ma', 'mi', 'ju', 'vi', 'sa'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sept.', 'oct.', 'nov.', - 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00;¤ -#,##0.00', '#E0'], - 'PYG', - 'Gs.', - 'guaraní paraguayo', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'PYG': ['Gs.', '₲'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-SV.ts b/packages/common/locales/es-SV.ts deleted file mode 100644 index 74b1981244..0000000000 --- a/packages/common/locales/es-SV.ts +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-SV', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'dólar estadounidense', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-US.ts b/packages/common/locales/es-US.ts deleted file mode 100644 index 7f6bad8299..0000000000 --- a/packages/common/locales/es-US.ts +++ /dev/null @@ -1,74 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-US', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/M/y', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'dólar estadounidense', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'BYN': [u, 'p.'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-UY.ts b/packages/common/locales/es-UY.ts deleted file mode 100644 index bd2d6f3cf1..0000000000 --- a/packages/common/locales/es-UY.ts +++ /dev/null @@ -1,95 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-UY', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'set.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'setiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'Ene.', 'Feb.', 'Mar.', 'Abr.', 'May.', 'Jun.', 'Jul.', 'Ago.', 'Set.', 'Oct.', 'Nov.', 'Dic.' - ], - [ - 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Setiembre', - 'Octubre', 'Noviembre', 'Diciembre' - ] - ], - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'UYU', - '$', - 'peso uruguayo', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'UYU': ['$'], - 'UYW': ['UP'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es-VE.ts b/packages/common/locales/es-VE.ts deleted file mode 100644 index f2f44da220..0000000000 --- a/packages/common/locales/es-VE.ts +++ /dev/null @@ -1,86 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es-VE', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sept.', 'oct.', 'nov.', - 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00;¤-#,##0.00', '#E0'], - 'VES', - 'Bs.S', - 'bolívar soberano', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': ['Bs.'], - 'VES': ['Bs.S'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/es.ts b/packages/common/locales/es.ts deleted file mode 100644 index c5b817a12f..0000000000 --- a/packages/common/locales/es.ts +++ /dev/null @@ -1,76 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'es', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'X', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sept.', 'oct.', 'nov.', - 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss (zzzz)'], - ['{1} {0}', u, '{1}, {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CNY': [u, '¥'], - 'EGP': [], - 'ESP': ['₧'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/et.ts b/packages/common/locales/et.ts deleted file mode 100644 index a26838be00..0000000000 --- a/packages/common/locales/et.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'et', - [['AM', 'PM'], u, u], - u, - [ - ['P', 'E', 'T', 'K', 'N', 'R', 'L'], u, - ['pühapäev', 'esmaspäev', 'teisipäev', 'kolmapäev', 'neljapäev', 'reede', 'laupäev'], - ['P', 'E', 'T', 'K', 'N', 'R', 'L'] - ], - u, - [ - ['J', 'V', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jaan', 'veebr', 'märts', 'apr', 'mai', 'juuni', 'juuli', 'aug', 'sept', 'okt', 'nov', 'dets'], - [ - 'jaanuar', 'veebruar', 'märts', 'aprill', 'mai', 'juuni', 'juuli', 'august', 'september', - 'oktoober', 'november', 'detsember' - ] - ], - u, - [['eKr', 'pKr'], u, ['enne Kristust', 'pärast Kristust']], - 1, - [6, 0], - ['dd.MM.yy', 'd. MMM y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '−', '×10^', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - {'AUD': ['AU$', '$'], 'EEK': ['kr'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/eu.ts b/packages/common/locales/eu.ts deleted file mode 100644 index da1352a28a..0000000000 --- a/packages/common/locales/eu.ts +++ /dev/null @@ -1,66 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'eu', - [['g', 'a'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['I', 'A', 'A', 'A', 'O', 'O', 'L'], ['ig.', 'al.', 'ar.', 'az.', 'og.', 'or.', 'lr.'], - ['igandea', 'astelehena', 'asteartea', 'asteazkena', 'osteguna', 'ostirala', 'larunbata'], - ['ig.', 'al.', 'ar.', 'az.', 'og.', 'or.', 'lr.'] - ], - u, - [ - ['U', 'O', 'M', 'A', 'M', 'E', 'U', 'A', 'I', 'U', 'A', 'A'], - [ - 'urt.', 'ots.', 'mar.', 'api.', 'mai.', 'eka.', 'uzt.', 'abu.', 'ira.', 'urr.', 'aza.', 'abe.' - ], - [ - 'urtarrilak', 'otsailak', 'martxoak', 'apirilak', 'maiatzak', 'ekainak', 'uztailak', - 'abuztuak', 'irailak', 'urriak', 'azaroak', 'abenduak' - ] - ], - [ - ['U', 'O', 'M', 'A', 'M', 'E', 'U', 'A', 'I', 'U', 'A', 'A'], - [ - 'urt.', 'ots.', 'mar.', 'api.', 'mai.', 'eka.', 'uzt.', 'abu.', 'ira.', 'urr.', 'aza.', 'abe.' - ], - [ - 'urtarrila', 'otsaila', 'martxoa', 'apirila', 'maiatza', 'ekaina', 'uztaila', 'abuztua', - 'iraila', 'urria', 'azaroa', 'abendua' - ] - ], - [['K.a.', 'K.o.'], u, ['K.a.', 'Kristo ondoren']], - 1, - [6, 0], - [ - 'yy/M/d', 'y(\'e\')\'ko\' MMM d(\'a\')', 'y(\'e\')\'ko\' MMMM\'ren\' d(\'a\')', - 'y(\'e\')\'ko\' MMMM\'ren\' d(\'a\'), EEEE' - ], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss (z)', 'HH:mm:ss (zzzz)'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '% #,##0', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euroa', - {'ESP': ['₧'], 'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ewo.ts b/packages/common/locales/ewo.ts deleted file mode 100644 index e72d2b0bae..0000000000 --- a/packages/common/locales/ewo.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'ewo', - [['kíkíríg', 'ngəgógəle'], u, u], - u, - [ - ['s', 'm', 's', 's', 's', 'f', 's'], ['sɔ́n', 'mɔ́n', 'smb', 'sml', 'smn', 'fúl', 'sér'], - [ - 'sɔ́ndɔ', 'mɔ́ndi', 'sɔ́ndɔ məlú mə́bɛ̌', 'sɔ́ndɔ məlú mə́lɛ́', 'sɔ́ndɔ məlú mə́nyi', 'fúladé', 'séradé' - ], - ['sɔ́n', 'mɔ́n', 'smb', 'sml', 'smn', 'fúl', 'sér'] - ], - u, - [ - ['o', 'b', 'l', 'n', 't', 's', 'z', 'm', 'e', 'a', 'd', 'b'], - ['ngo', 'ngb', 'ngl', 'ngn', 'ngt', 'ngs', 'ngz', 'ngm', 'nge', 'nga', 'ngad', 'ngab'], - [ - 'ngɔn osú', 'ngɔn bɛ̌', 'ngɔn lála', 'ngɔn nyina', 'ngɔn tána', 'ngɔn saməna', 'ngɔn zamgbála', - 'ngɔn mwom', 'ngɔn ebulú', 'ngɔn awóm', 'ngɔn awóm ai dziá', 'ngɔn awóm ai bɛ̌' - ] - ], - u, - [['oyk', 'ayk'], u, ['osúsúa Yésus kiri', 'ámvus Yésus Kirís']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'Fəláŋ CFA (BEAC)', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/extra/af-NA.ts b/packages/common/locales/extra/af-NA.ts deleted file mode 100644 index dd40d87253..0000000000 --- a/packages/common/locales/extra/af-NA.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['mn', 'o', 'm', 'a', 'n'], ['middernag', 'die oggend', 'die middag', 'die aand', 'die nag'], u], - [['mn', 'o', 'm', 'a', 'n'], ['middernag', 'oggend', 'middag', 'aand', 'nag'], u], - ['00:00', ['05:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '05:00']] -]; diff --git a/packages/common/locales/extra/af.ts b/packages/common/locales/extra/af.ts deleted file mode 100644 index dd40d87253..0000000000 --- a/packages/common/locales/extra/af.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['mn', 'o', 'm', 'a', 'n'], ['middernag', 'die oggend', 'die middag', 'die aand', 'die nag'], u], - [['mn', 'o', 'm', 'a', 'n'], ['middernag', 'oggend', 'middag', 'aand', 'nag'], u], - ['00:00', ['05:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '05:00']] -]; diff --git a/packages/common/locales/extra/agq.ts b/packages/common/locales/extra/agq.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/agq.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ak.ts b/packages/common/locales/extra/ak.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ak.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/am.ts b/packages/common/locales/extra/am.ts deleted file mode 100644 index 27b3625c01..0000000000 --- a/packages/common/locales/extra/am.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['እኩለ ሌሊት', 'ቀ', 'ጥዋት1', 'ከሰዓት1', 'ማታ1', 'ሌሊት1'], - ['እኩለ ሌሊት', 'ቀትር', 'ጥዋት1', 'ከሰዓት 7', 'ማታ1', 'ሌሊት1'], - ['እኩለ ሌሊት', 'ቀትር', 'ጥዋት1', 'ከሰዓት 7 ሰዓት', 'ማታ1', 'ሌሊት1'] - ], - [ - ['እኩለ ሌሊት', 'ቀትር', 'ጥዋት', 'ከሰዓት በኋላ', 'ማታ', 'ሌሊት'], - ['እኩለ ሌሊት', 'ቀትር', 'ጥዋት1', 'ከሰዓት በኋላ', 'ማታ', 'ሌሊት'], u - ], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/ar-AE.ts b/packages/common/locales/extra/ar-AE.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-AE.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-BH.ts b/packages/common/locales/extra/ar-BH.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-BH.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-DJ.ts b/packages/common/locales/extra/ar-DJ.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-DJ.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-DZ.ts b/packages/common/locales/extra/ar-DZ.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-DZ.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-EG.ts b/packages/common/locales/extra/ar-EG.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-EG.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-EH.ts b/packages/common/locales/extra/ar-EH.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-EH.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-ER.ts b/packages/common/locales/extra/ar-ER.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-ER.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-IL.ts b/packages/common/locales/extra/ar-IL.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-IL.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-IQ.ts b/packages/common/locales/extra/ar-IQ.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-IQ.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-JO.ts b/packages/common/locales/extra/ar-JO.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-JO.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-KM.ts b/packages/common/locales/extra/ar-KM.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-KM.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-KW.ts b/packages/common/locales/extra/ar-KW.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-KW.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-LB.ts b/packages/common/locales/extra/ar-LB.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-LB.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-LY.ts b/packages/common/locales/extra/ar-LY.ts deleted file mode 100644 index 83fc1f3c8a..0000000000 --- a/packages/common/locales/extra/ar-LY.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ل'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-MA.ts b/packages/common/locales/extra/ar-MA.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-MA.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-MR.ts b/packages/common/locales/extra/ar-MR.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-MR.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-OM.ts b/packages/common/locales/extra/ar-OM.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-OM.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-PS.ts b/packages/common/locales/extra/ar-PS.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-PS.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-QA.ts b/packages/common/locales/extra/ar-QA.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-QA.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-SA.ts b/packages/common/locales/extra/ar-SA.ts deleted file mode 100644 index 83fc1f3c8a..0000000000 --- a/packages/common/locales/extra/ar-SA.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ل'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-SD.ts b/packages/common/locales/extra/ar-SD.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-SD.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-SO.ts b/packages/common/locales/extra/ar-SO.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-SO.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-SS.ts b/packages/common/locales/extra/ar-SS.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-SS.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-SY.ts b/packages/common/locales/extra/ar-SY.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-SY.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-TD.ts b/packages/common/locales/extra/ar-TD.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-TD.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-TN.ts b/packages/common/locales/extra/ar-TN.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-TN.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar-YE.ts b/packages/common/locales/extra/ar-YE.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar-YE.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ar.ts b/packages/common/locales/extra/ar.ts deleted file mode 100644 index b56b0c5289..0000000000 --- a/packages/common/locales/extra/ar.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/as.ts b/packages/common/locales/extra/as.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/as.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/asa.ts b/packages/common/locales/extra/asa.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/asa.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ast.ts b/packages/common/locales/extra/ast.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ast.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/az-Cyrl.ts b/packages/common/locales/extra/az-Cyrl.ts deleted file mode 100644 index 2ca0603b42..0000000000 --- a/packages/common/locales/extra/az-Cyrl.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['ҝеҹәјары', 'ҝ', 'сүбһ', 'сәһәр', 'ҝүндүз', 'ахшамүстү', 'ахшам', 'ҝеҹә'], - ['ҝеҹәјары', 'ҝүнорта', 'сүбһ', 'сәһәр', 'ҝүндүз', 'ахшамүстү', 'ахшам', 'ҝеҹә'], u - ], - [['ҝеҹәјары', 'ҝүнорта', 'сүбһ', 'сәһәр', 'ҝүндүз', 'ахшамүстү', 'ахшам', 'ҝеҹә'], u, u], - [ - '00:00', '12:00', ['04:00', '06:00'], ['06:00', '12:00'], ['12:00', '17:00'], - ['17:00', '19:00'], ['19:00', '24:00'], ['00:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/az-Latn.ts b/packages/common/locales/extra/az-Latn.ts deleted file mode 100644 index 3f589f987f..0000000000 --- a/packages/common/locales/extra/az-Latn.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['gecəyarı', 'g', 'sübh', 'səhər', 'gündüz', 'axşamüstü', 'axşam', 'gecə'], - ['gecəyarı', 'günorta', 'sübh', 'səhər', 'gündüz', 'axşamüstü', 'axşam', 'gecə'], u - ], - [['gecəyarı', 'günorta', 'sübh', 'səhər', 'gündüz', 'axşamüstü', 'axşam', 'gecə'], u, u], - [ - '00:00', '12:00', ['04:00', '06:00'], ['06:00', '12:00'], ['12:00', '17:00'], - ['17:00', '19:00'], ['19:00', '24:00'], ['00:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/az.ts b/packages/common/locales/extra/az.ts deleted file mode 100644 index 3f589f987f..0000000000 --- a/packages/common/locales/extra/az.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['gecəyarı', 'g', 'sübh', 'səhər', 'gündüz', 'axşamüstü', 'axşam', 'gecə'], - ['gecəyarı', 'günorta', 'sübh', 'səhər', 'gündüz', 'axşamüstü', 'axşam', 'gecə'], u - ], - [['gecəyarı', 'günorta', 'sübh', 'səhər', 'gündüz', 'axşamüstü', 'axşam', 'gecə'], u, u], - [ - '00:00', '12:00', ['04:00', '06:00'], ['06:00', '12:00'], ['12:00', '17:00'], - ['17:00', '19:00'], ['19:00', '24:00'], ['00:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/bas.ts b/packages/common/locales/extra/bas.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/bas.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/be.ts b/packages/common/locales/extra/be.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/be.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/bem.ts b/packages/common/locales/extra/bem.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/bem.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/bez.ts b/packages/common/locales/extra/bez.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/bez.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/bg.ts b/packages/common/locales/extra/bg.ts deleted file mode 100644 index 0bf2c6deb0..0000000000 --- a/packages/common/locales/extra/bg.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['полунощ', 'сутринта', 'на обяд', 'следобед', 'вечерта', 'през нощта'], u, u], u, - [ - '00:00', ['04:00', '11:00'], ['11:00', '14:00'], ['14:00', '18:00'], ['18:00', '22:00'], - ['22:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/bm.ts b/packages/common/locales/extra/bm.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/bm.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/bn-IN.ts b/packages/common/locales/extra/bn-IN.ts deleted file mode 100644 index b593bca9e5..0000000000 --- a/packages/common/locales/extra/bn-IN.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['ভোর', 'সকাল', 'দুপুর', 'বিকাল', 'সন্ধ্যা', 'রাত্রি'], u, - ['ভোর', 'সকাল', 'দুপুর', 'বিকাল', 'সন্ধ্যা', 'রাত্রিতে'] - ], - [['ভোর', 'সকাল', 'দুপুর', 'বিকাল', 'সন্ধ্যা', 'রাত্রি'], u, u], - [ - ['04:00', '06:00'], ['06:00', '12:00'], ['12:00', '16:00'], ['16:00', '18:00'], - ['18:00', '20:00'], ['20:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/bn.ts b/packages/common/locales/extra/bn.ts deleted file mode 100644 index b593bca9e5..0000000000 --- a/packages/common/locales/extra/bn.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['ভোর', 'সকাল', 'দুপুর', 'বিকাল', 'সন্ধ্যা', 'রাত্রি'], u, - ['ভোর', 'সকাল', 'দুপুর', 'বিকাল', 'সন্ধ্যা', 'রাত্রিতে'] - ], - [['ভোর', 'সকাল', 'দুপুর', 'বিকাল', 'সন্ধ্যা', 'রাত্রি'], u, u], - [ - ['04:00', '06:00'], ['06:00', '12:00'], ['12:00', '16:00'], ['16:00', '18:00'], - ['18:00', '20:00'], ['20:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/bo-IN.ts b/packages/common/locales/extra/bo-IN.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/bo-IN.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/bo.ts b/packages/common/locales/extra/bo.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/bo.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/br.ts b/packages/common/locales/extra/br.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/br.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/brx.ts b/packages/common/locales/extra/brx.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/brx.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/bs-Cyrl.ts b/packages/common/locales/extra/bs-Cyrl.ts deleted file mode 100644 index b276215d1d..0000000000 --- a/packages/common/locales/extra/bs-Cyrl.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['поноћ', 'подне', 'ујутру', 'у подне', 'увече', 'ноћу'], u, u], - [['поноћ', 'подне', 'јутро', 'послийеподне', 'вече', 'ноћ'], u, u], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '04:00']] -]; diff --git a/packages/common/locales/extra/bs-Latn.ts b/packages/common/locales/extra/bs-Latn.ts deleted file mode 100644 index 0c855bedb1..0000000000 --- a/packages/common/locales/extra/bs-Latn.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['ponoć', 'podne', 'ujutro', 'poslijepodne', 'navečer', 'po noći'], u, u], u, - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '04:00']] -]; diff --git a/packages/common/locales/extra/bs.ts b/packages/common/locales/extra/bs.ts deleted file mode 100644 index 0c855bedb1..0000000000 --- a/packages/common/locales/extra/bs.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['ponoć', 'podne', 'ujutro', 'poslijepodne', 'navečer', 'po noći'], u, u], u, - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '04:00']] -]; diff --git a/packages/common/locales/extra/ca-AD.ts b/packages/common/locales/extra/ca-AD.ts deleted file mode 100644 index 5940168021..0000000000 --- a/packages/common/locales/extra/ca-AD.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mitjanit', 'mat.', 'matí', 'md', 'tarda', 'vespre', 'nit'], - ['mitjanit', 'matinada', 'matí', 'migdia', 'tarda', 'vespre', 'nit'], u - ], - [['mitjanit', 'matinada', 'matí', 'migdia', 'tarda', 'vespre', 'nit'], u, u], - [ - '00:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '21:00'], ['21:00', '24:00'] - ] -]; diff --git a/packages/common/locales/extra/ca-ES-VALENCIA.ts b/packages/common/locales/extra/ca-ES-VALENCIA.ts deleted file mode 100644 index 5940168021..0000000000 --- a/packages/common/locales/extra/ca-ES-VALENCIA.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mitjanit', 'mat.', 'matí', 'md', 'tarda', 'vespre', 'nit'], - ['mitjanit', 'matinada', 'matí', 'migdia', 'tarda', 'vespre', 'nit'], u - ], - [['mitjanit', 'matinada', 'matí', 'migdia', 'tarda', 'vespre', 'nit'], u, u], - [ - '00:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '21:00'], ['21:00', '24:00'] - ] -]; diff --git a/packages/common/locales/extra/ca-FR.ts b/packages/common/locales/extra/ca-FR.ts deleted file mode 100644 index 5940168021..0000000000 --- a/packages/common/locales/extra/ca-FR.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mitjanit', 'mat.', 'matí', 'md', 'tarda', 'vespre', 'nit'], - ['mitjanit', 'matinada', 'matí', 'migdia', 'tarda', 'vespre', 'nit'], u - ], - [['mitjanit', 'matinada', 'matí', 'migdia', 'tarda', 'vespre', 'nit'], u, u], - [ - '00:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '21:00'], ['21:00', '24:00'] - ] -]; diff --git a/packages/common/locales/extra/ca-IT.ts b/packages/common/locales/extra/ca-IT.ts deleted file mode 100644 index 5940168021..0000000000 --- a/packages/common/locales/extra/ca-IT.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mitjanit', 'mat.', 'matí', 'md', 'tarda', 'vespre', 'nit'], - ['mitjanit', 'matinada', 'matí', 'migdia', 'tarda', 'vespre', 'nit'], u - ], - [['mitjanit', 'matinada', 'matí', 'migdia', 'tarda', 'vespre', 'nit'], u, u], - [ - '00:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '21:00'], ['21:00', '24:00'] - ] -]; diff --git a/packages/common/locales/extra/ca.ts b/packages/common/locales/extra/ca.ts deleted file mode 100644 index 5940168021..0000000000 --- a/packages/common/locales/extra/ca.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mitjanit', 'mat.', 'matí', 'md', 'tarda', 'vespre', 'nit'], - ['mitjanit', 'matinada', 'matí', 'migdia', 'tarda', 'vespre', 'nit'], u - ], - [['mitjanit', 'matinada', 'matí', 'migdia', 'tarda', 'vespre', 'nit'], u, u], - [ - '00:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '21:00'], ['21:00', '24:00'] - ] -]; diff --git a/packages/common/locales/extra/ccp-IN.ts b/packages/common/locales/extra/ccp-IN.ts deleted file mode 100644 index 7e3ed111f3..0000000000 --- a/packages/common/locales/extra/ccp-IN.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['𑄛𑄧𑄖𑄳𑄠𑄃𑄟𑄧𑄣𑄳𑄠𑄬', '𑄝𑄬𑄚𑄳𑄠𑄬', '𑄘𑄨𑄝𑄪𑄎𑄳𑄠', '𑄝𑄬𑄣𑄳𑄠𑄬', '𑄥𑄎𑄧𑄚𑄳𑄠', '𑄢𑄬𑄖𑄴'], u, u], u, - [ - ['04:00', '06:00'], ['06:00', '12:00'], ['12:00', '16:00'], ['16:00', '18:00'], - ['18:00', '20:00'], ['20:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/ccp.ts b/packages/common/locales/extra/ccp.ts deleted file mode 100644 index 7e3ed111f3..0000000000 --- a/packages/common/locales/extra/ccp.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['𑄛𑄧𑄖𑄳𑄠𑄃𑄟𑄧𑄣𑄳𑄠𑄬', '𑄝𑄬𑄚𑄳𑄠𑄬', '𑄘𑄨𑄝𑄪𑄎𑄳𑄠', '𑄝𑄬𑄣𑄳𑄠𑄬', '𑄥𑄎𑄧𑄚𑄳𑄠', '𑄢𑄬𑄖𑄴'], u, u], u, - [ - ['04:00', '06:00'], ['06:00', '12:00'], ['12:00', '16:00'], ['16:00', '18:00'], - ['18:00', '20:00'], ['20:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/ce.ts b/packages/common/locales/extra/ce.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ce.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ceb.ts b/packages/common/locales/extra/ceb.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ceb.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/cgg.ts b/packages/common/locales/extra/cgg.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/cgg.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/chr.ts b/packages/common/locales/extra/chr.ts deleted file mode 100644 index adcefae50c..0000000000 --- a/packages/common/locales/extra/chr.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['Ꭲ', 'ᏌᎾᎴ', 'ᏒᎯᏱᎢᏗᏢ'], ['ᎢᎦ', 'ᏌᎾᎴ', 'ᏒᎯᏱᎢᏗᏢ'], u], [['ᎢᎦ', 'ᏌᎾᎴ', 'ᏒᎯᏱᎢᏗᏢ'], u, u], - ['12:00', ['00:00', '12:00'], ['12:00', '24:00']] -]; diff --git a/packages/common/locales/extra/ckb-IR.ts b/packages/common/locales/extra/ckb-IR.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ckb-IR.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ckb.ts b/packages/common/locales/extra/ckb.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ckb.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/cs.ts b/packages/common/locales/extra/cs.ts deleted file mode 100644 index 2c8183db9e..0000000000 --- a/packages/common/locales/extra/cs.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['půl.', 'pol.', 'r.', 'd.', 'o.', 'v.', 'n.'], - ['půln.', 'pol.', 'r.', 'dop.', 'odp.', 'več.', 'v n.'], - ['půlnoc', 'poledne', 'ráno', 'dopoledne', 'odpoledne', 'večer', 'v noci'] - ], - [ - ['půl.', 'pol.', 'ráno', 'dop.', 'odp.', 'več.', 'noc'], - ['půlnoc', 'poledne', 'ráno', 'dopoledne', 'odpoledne', 'večer', 'noc'], u - ], - [ - '00:00', '12:00', ['04:00', '09:00'], ['09:00', '12:00'], ['12:00', '18:00'], - ['18:00', '22:00'], ['22:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/cu.ts b/packages/common/locales/extra/cu.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/cu.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/cy.ts b/packages/common/locales/extra/cy.ts deleted file mode 100644 index 67e8ae7ea9..0000000000 --- a/packages/common/locales/extra/cy.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['canol nos', 'canol dydd', 'yn y bore', 'yn y prynhawn', 'min nos'], - ['canol nos', 'canol dydd', 'y bore', 'y prynhawn', 'yr hwyr'], u - ], - [ - ['canol nos', 'canol dydd', 'bore', 'prynhawn', 'min nos'], - ['canol nos', 'canol dydd', 'bore', 'prynhawn', 'yr hwyr'], - ['canol nos', 'canol dydd', 'y bore', 'y prynhawn', 'yr hwyr'] - ], - ['00:00', '12:00', ['00:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00']] -]; diff --git a/packages/common/locales/extra/da-GL.ts b/packages/common/locales/extra/da-GL.ts deleted file mode 100644 index 2aa997eec0..0000000000 --- a/packages/common/locales/extra/da-GL.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['midnat', 'om morgenen', 'om formiddagen', 'om eftermiddagen', 'om aftenen', 'om natten'], u, u - ], - [['midnat', 'morgen', 'formiddag', 'eftermiddag', 'aften', 'nat'], u, u], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/da.ts b/packages/common/locales/extra/da.ts deleted file mode 100644 index 2aa997eec0..0000000000 --- a/packages/common/locales/extra/da.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['midnat', 'om morgenen', 'om formiddagen', 'om eftermiddagen', 'om aftenen', 'om natten'], u, u - ], - [['midnat', 'morgen', 'formiddag', 'eftermiddag', 'aften', 'nat'], u, u], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/dav.ts b/packages/common/locales/extra/dav.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/dav.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/de-AT.ts b/packages/common/locales/extra/de-AT.ts deleted file mode 100644 index 1b31461724..0000000000 --- a/packages/common/locales/extra/de-AT.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['Mitternacht', 'morgens', 'vorm.', 'mittags', 'nachm.', 'abends', 'nachts'], u, - ['Mitternacht', 'morgens', 'vormittags', 'mittags', 'nachmittags', 'abends', 'nachts'] - ], - [ - ['Mitternacht', 'Morgen', 'Vorm.', 'Mittag', 'Nachm.', 'Abend', 'Nacht'], u, - ['Mitternacht', 'Morgen', 'Vormittag', 'Mittag', 'Nachmittag', 'Abend', 'Nacht'] - ], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/de-BE.ts b/packages/common/locales/extra/de-BE.ts deleted file mode 100644 index 1b31461724..0000000000 --- a/packages/common/locales/extra/de-BE.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['Mitternacht', 'morgens', 'vorm.', 'mittags', 'nachm.', 'abends', 'nachts'], u, - ['Mitternacht', 'morgens', 'vormittags', 'mittags', 'nachmittags', 'abends', 'nachts'] - ], - [ - ['Mitternacht', 'Morgen', 'Vorm.', 'Mittag', 'Nachm.', 'Abend', 'Nacht'], u, - ['Mitternacht', 'Morgen', 'Vormittag', 'Mittag', 'Nachmittag', 'Abend', 'Nacht'] - ], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/de-CH.ts b/packages/common/locales/extra/de-CH.ts deleted file mode 100644 index 1b31461724..0000000000 --- a/packages/common/locales/extra/de-CH.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['Mitternacht', 'morgens', 'vorm.', 'mittags', 'nachm.', 'abends', 'nachts'], u, - ['Mitternacht', 'morgens', 'vormittags', 'mittags', 'nachmittags', 'abends', 'nachts'] - ], - [ - ['Mitternacht', 'Morgen', 'Vorm.', 'Mittag', 'Nachm.', 'Abend', 'Nacht'], u, - ['Mitternacht', 'Morgen', 'Vormittag', 'Mittag', 'Nachmittag', 'Abend', 'Nacht'] - ], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/de-IT.ts b/packages/common/locales/extra/de-IT.ts deleted file mode 100644 index 1b31461724..0000000000 --- a/packages/common/locales/extra/de-IT.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['Mitternacht', 'morgens', 'vorm.', 'mittags', 'nachm.', 'abends', 'nachts'], u, - ['Mitternacht', 'morgens', 'vormittags', 'mittags', 'nachmittags', 'abends', 'nachts'] - ], - [ - ['Mitternacht', 'Morgen', 'Vorm.', 'Mittag', 'Nachm.', 'Abend', 'Nacht'], u, - ['Mitternacht', 'Morgen', 'Vormittag', 'Mittag', 'Nachmittag', 'Abend', 'Nacht'] - ], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/de-LI.ts b/packages/common/locales/extra/de-LI.ts deleted file mode 100644 index 1b31461724..0000000000 --- a/packages/common/locales/extra/de-LI.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['Mitternacht', 'morgens', 'vorm.', 'mittags', 'nachm.', 'abends', 'nachts'], u, - ['Mitternacht', 'morgens', 'vormittags', 'mittags', 'nachmittags', 'abends', 'nachts'] - ], - [ - ['Mitternacht', 'Morgen', 'Vorm.', 'Mittag', 'Nachm.', 'Abend', 'Nacht'], u, - ['Mitternacht', 'Morgen', 'Vormittag', 'Mittag', 'Nachmittag', 'Abend', 'Nacht'] - ], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/de-LU.ts b/packages/common/locales/extra/de-LU.ts deleted file mode 100644 index 1b31461724..0000000000 --- a/packages/common/locales/extra/de-LU.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['Mitternacht', 'morgens', 'vorm.', 'mittags', 'nachm.', 'abends', 'nachts'], u, - ['Mitternacht', 'morgens', 'vormittags', 'mittags', 'nachmittags', 'abends', 'nachts'] - ], - [ - ['Mitternacht', 'Morgen', 'Vorm.', 'Mittag', 'Nachm.', 'Abend', 'Nacht'], u, - ['Mitternacht', 'Morgen', 'Vormittag', 'Mittag', 'Nachmittag', 'Abend', 'Nacht'] - ], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/de.ts b/packages/common/locales/extra/de.ts deleted file mode 100644 index 1b31461724..0000000000 --- a/packages/common/locales/extra/de.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['Mitternacht', 'morgens', 'vorm.', 'mittags', 'nachm.', 'abends', 'nachts'], u, - ['Mitternacht', 'morgens', 'vormittags', 'mittags', 'nachmittags', 'abends', 'nachts'] - ], - [ - ['Mitternacht', 'Morgen', 'Vorm.', 'Mittag', 'Nachm.', 'Abend', 'Nacht'], u, - ['Mitternacht', 'Morgen', 'Vormittag', 'Mittag', 'Nachmittag', 'Abend', 'Nacht'] - ], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/dje.ts b/packages/common/locales/extra/dje.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/dje.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/dsb.ts b/packages/common/locales/extra/dsb.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/dsb.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/dua.ts b/packages/common/locales/extra/dua.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/dua.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/dyo.ts b/packages/common/locales/extra/dyo.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/dyo.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/dz.ts b/packages/common/locales/extra/dz.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/dz.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ebu.ts b/packages/common/locales/extra/ebu.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ebu.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ee-TG.ts b/packages/common/locales/extra/ee-TG.ts deleted file mode 100644 index bcc52e6cec..0000000000 --- a/packages/common/locales/extra/ee-TG.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['fɔŋli', 'ŋdi', 'ŋdɔ', 'ɣetrɔ', 'fiẽ', 'zã'], u, u], u, - [ - ['04:00', '05:00'], ['05:00', '12:00'], ['12:00', '14:00'], ['14:00', '18:00'], - ['18:00', '21:00'], ['21:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/ee.ts b/packages/common/locales/extra/ee.ts deleted file mode 100644 index bcc52e6cec..0000000000 --- a/packages/common/locales/extra/ee.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['fɔŋli', 'ŋdi', 'ŋdɔ', 'ɣetrɔ', 'fiẽ', 'zã'], u, u], u, - [ - ['04:00', '05:00'], ['05:00', '12:00'], ['12:00', '14:00'], ['14:00', '18:00'], - ['18:00', '21:00'], ['21:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/el-CY.ts b/packages/common/locales/extra/el-CY.ts deleted file mode 100644 index 4de5860ca6..0000000000 --- a/packages/common/locales/extra/el-CY.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['πρωί', 'μεσημ.', 'απόγ.', 'βράδυ'], u, ['το πρωί', 'το μεσημέρι', 'το απόγευμα', 'το βράδυ']], - [['πρωί', 'μεσημ.', 'απόγ.', 'βράδυ'], u, ['πρωί', 'μεσημέρι', 'απόγευμα', 'βράδυ']], - [['04:00', '12:00'], ['12:00', '17:00'], ['17:00', '20:00'], ['20:00', '04:00']] -]; diff --git a/packages/common/locales/extra/el.ts b/packages/common/locales/extra/el.ts deleted file mode 100644 index 4de5860ca6..0000000000 --- a/packages/common/locales/extra/el.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['πρωί', 'μεσημ.', 'απόγ.', 'βράδυ'], u, ['το πρωί', 'το μεσημέρι', 'το απόγευμα', 'το βράδυ']], - [['πρωί', 'μεσημ.', 'απόγ.', 'βράδυ'], u, ['πρωί', 'μεσημέρι', 'απόγευμα', 'βράδυ']], - [['04:00', '12:00'], ['12:00', '17:00'], ['17:00', '20:00'], ['20:00', '04:00']] -]; diff --git a/packages/common/locales/extra/en-001.ts b/packages/common/locales/extra/en-001.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-001.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-150.ts b/packages/common/locales/extra/en-150.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-150.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-AE.ts b/packages/common/locales/extra/en-AE.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-AE.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-AG.ts b/packages/common/locales/extra/en-AG.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-AG.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-AI.ts b/packages/common/locales/extra/en-AI.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-AI.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-AS.ts b/packages/common/locales/extra/en-AS.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-AS.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-AT.ts b/packages/common/locales/extra/en-AT.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-AT.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-AU.ts b/packages/common/locales/extra/en-AU.ts deleted file mode 100644 index dd8246bed8..0000000000 --- a/packages/common/locales/extra/en-AU.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['midnight', 'midday', 'morning', 'afternoon', 'evening', 'night'], u, - ['midnight', 'midday', 'in the morning', 'in the afternoon', 'in the evening', 'at night'] - ], - [['midnight', 'midday', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-BB.ts b/packages/common/locales/extra/en-BB.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-BB.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-BE.ts b/packages/common/locales/extra/en-BE.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-BE.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-BI.ts b/packages/common/locales/extra/en-BI.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-BI.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-BM.ts b/packages/common/locales/extra/en-BM.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-BM.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-BS.ts b/packages/common/locales/extra/en-BS.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-BS.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-BW.ts b/packages/common/locales/extra/en-BW.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-BW.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-BZ.ts b/packages/common/locales/extra/en-BZ.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-BZ.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-CA.ts b/packages/common/locales/extra/en-CA.ts deleted file mode 100644 index 60956fddc2..0000000000 --- a/packages/common/locales/extra/en-CA.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mid', 'n', 'mor', 'aft', 'eve', 'night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [ - ['mid', 'noon', 'mor', 'aft', 'eve', 'night'], - ['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u - ], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-CC.ts b/packages/common/locales/extra/en-CC.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-CC.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-CH.ts b/packages/common/locales/extra/en-CH.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-CH.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-CK.ts b/packages/common/locales/extra/en-CK.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-CK.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-CM.ts b/packages/common/locales/extra/en-CM.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-CM.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-CX.ts b/packages/common/locales/extra/en-CX.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-CX.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-CY.ts b/packages/common/locales/extra/en-CY.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-CY.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-DE.ts b/packages/common/locales/extra/en-DE.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-DE.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-DG.ts b/packages/common/locales/extra/en-DG.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-DG.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-DK.ts b/packages/common/locales/extra/en-DK.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-DK.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-DM.ts b/packages/common/locales/extra/en-DM.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-DM.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-ER.ts b/packages/common/locales/extra/en-ER.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-ER.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-FI.ts b/packages/common/locales/extra/en-FI.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-FI.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-FJ.ts b/packages/common/locales/extra/en-FJ.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-FJ.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-FK.ts b/packages/common/locales/extra/en-FK.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-FK.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-FM.ts b/packages/common/locales/extra/en-FM.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-FM.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-GB.ts b/packages/common/locales/extra/en-GB.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-GB.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-GD.ts b/packages/common/locales/extra/en-GD.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-GD.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-GG.ts b/packages/common/locales/extra/en-GG.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-GG.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-GH.ts b/packages/common/locales/extra/en-GH.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-GH.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-GI.ts b/packages/common/locales/extra/en-GI.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-GI.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-GM.ts b/packages/common/locales/extra/en-GM.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-GM.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-GU.ts b/packages/common/locales/extra/en-GU.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-GU.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-GY.ts b/packages/common/locales/extra/en-GY.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-GY.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-HK.ts b/packages/common/locales/extra/en-HK.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-HK.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-IE.ts b/packages/common/locales/extra/en-IE.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-IE.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-IL.ts b/packages/common/locales/extra/en-IL.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-IL.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-IM.ts b/packages/common/locales/extra/en-IM.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-IM.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-IN.ts b/packages/common/locales/extra/en-IN.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-IN.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-IO.ts b/packages/common/locales/extra/en-IO.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-IO.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-JE.ts b/packages/common/locales/extra/en-JE.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-JE.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-JM.ts b/packages/common/locales/extra/en-JM.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-JM.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-KE.ts b/packages/common/locales/extra/en-KE.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-KE.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-KI.ts b/packages/common/locales/extra/en-KI.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-KI.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-KN.ts b/packages/common/locales/extra/en-KN.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-KN.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-KY.ts b/packages/common/locales/extra/en-KY.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-KY.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-LC.ts b/packages/common/locales/extra/en-LC.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-LC.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-LR.ts b/packages/common/locales/extra/en-LR.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-LR.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-LS.ts b/packages/common/locales/extra/en-LS.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-LS.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-MG.ts b/packages/common/locales/extra/en-MG.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-MG.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-MH.ts b/packages/common/locales/extra/en-MH.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-MH.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-MO.ts b/packages/common/locales/extra/en-MO.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-MO.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-MP.ts b/packages/common/locales/extra/en-MP.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-MP.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-MS.ts b/packages/common/locales/extra/en-MS.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-MS.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-MT.ts b/packages/common/locales/extra/en-MT.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-MT.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-MU.ts b/packages/common/locales/extra/en-MU.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-MU.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-MW.ts b/packages/common/locales/extra/en-MW.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-MW.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-MY.ts b/packages/common/locales/extra/en-MY.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-MY.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-NA.ts b/packages/common/locales/extra/en-NA.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-NA.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-NF.ts b/packages/common/locales/extra/en-NF.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-NF.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-NG.ts b/packages/common/locales/extra/en-NG.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-NG.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-NL.ts b/packages/common/locales/extra/en-NL.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-NL.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-NR.ts b/packages/common/locales/extra/en-NR.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-NR.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-NU.ts b/packages/common/locales/extra/en-NU.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-NU.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-NZ.ts b/packages/common/locales/extra/en-NZ.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-NZ.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-PG.ts b/packages/common/locales/extra/en-PG.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-PG.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-PH.ts b/packages/common/locales/extra/en-PH.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-PH.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-PK.ts b/packages/common/locales/extra/en-PK.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-PK.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-PN.ts b/packages/common/locales/extra/en-PN.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-PN.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-PR.ts b/packages/common/locales/extra/en-PR.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-PR.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-PW.ts b/packages/common/locales/extra/en-PW.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-PW.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-RW.ts b/packages/common/locales/extra/en-RW.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-RW.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-SB.ts b/packages/common/locales/extra/en-SB.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-SB.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-SC.ts b/packages/common/locales/extra/en-SC.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-SC.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-SD.ts b/packages/common/locales/extra/en-SD.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-SD.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-SE.ts b/packages/common/locales/extra/en-SE.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-SE.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-SG.ts b/packages/common/locales/extra/en-SG.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-SG.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-SH.ts b/packages/common/locales/extra/en-SH.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-SH.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-SI.ts b/packages/common/locales/extra/en-SI.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-SI.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-SL.ts b/packages/common/locales/extra/en-SL.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-SL.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-SS.ts b/packages/common/locales/extra/en-SS.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-SS.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-SX.ts b/packages/common/locales/extra/en-SX.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-SX.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-SZ.ts b/packages/common/locales/extra/en-SZ.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-SZ.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-TC.ts b/packages/common/locales/extra/en-TC.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-TC.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-TK.ts b/packages/common/locales/extra/en-TK.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-TK.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-TO.ts b/packages/common/locales/extra/en-TO.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-TO.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-TT.ts b/packages/common/locales/extra/en-TT.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-TT.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-TV.ts b/packages/common/locales/extra/en-TV.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-TV.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-TZ.ts b/packages/common/locales/extra/en-TZ.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-TZ.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-UG.ts b/packages/common/locales/extra/en-UG.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-UG.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-UM.ts b/packages/common/locales/extra/en-UM.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-UM.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-US-POSIX.ts b/packages/common/locales/extra/en-US-POSIX.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-US-POSIX.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-VC.ts b/packages/common/locales/extra/en-VC.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-VC.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-VG.ts b/packages/common/locales/extra/en-VG.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-VG.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-VI.ts b/packages/common/locales/extra/en-VI.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-VI.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-VU.ts b/packages/common/locales/extra/en-VU.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-VU.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-WS.ts b/packages/common/locales/extra/en-WS.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-WS.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-ZA.ts b/packages/common/locales/extra/en-ZA.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-ZA.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-ZM.ts b/packages/common/locales/extra/en-ZM.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-ZM.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en-ZW.ts b/packages/common/locales/extra/en-ZW.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en-ZW.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/en.ts b/packages/common/locales/extra/en.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/en.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/eo.ts b/packages/common/locales/extra/eo.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/eo.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/es-419.ts b/packages/common/locales/extra/es-419.ts deleted file mode 100644 index 186a6884b4..0000000000 --- a/packages/common/locales/extra/es-419.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-AR.ts b/packages/common/locales/extra/es-AR.ts deleted file mode 100644 index f468080ded..0000000000 --- a/packages/common/locales/extra/es-AR.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], - ['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u - ], - [ - ['m.', 'madrugada', 'mañana', 'tarde', 'noche'], - ['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u - ], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-BO.ts b/packages/common/locales/extra/es-BO.ts deleted file mode 100644 index 186a6884b4..0000000000 --- a/packages/common/locales/extra/es-BO.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-BR.ts b/packages/common/locales/extra/es-BR.ts deleted file mode 100644 index 186a6884b4..0000000000 --- a/packages/common/locales/extra/es-BR.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-BZ.ts b/packages/common/locales/extra/es-BZ.ts deleted file mode 100644 index 186a6884b4..0000000000 --- a/packages/common/locales/extra/es-BZ.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-CL.ts b/packages/common/locales/extra/es-CL.ts deleted file mode 100644 index 186a6884b4..0000000000 --- a/packages/common/locales/extra/es-CL.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-CO.ts b/packages/common/locales/extra/es-CO.ts deleted file mode 100644 index 0a4615c974..0000000000 --- a/packages/common/locales/extra/es-CO.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], - ['m.', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], - ['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'] - ], - [ - ['m.', 'madrugada', 'mañana', 'tarde', 'noche'], u, - ['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'] - ], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-CR.ts b/packages/common/locales/extra/es-CR.ts deleted file mode 100644 index 186a6884b4..0000000000 --- a/packages/common/locales/extra/es-CR.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-CU.ts b/packages/common/locales/extra/es-CU.ts deleted file mode 100644 index 186a6884b4..0000000000 --- a/packages/common/locales/extra/es-CU.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-DO.ts b/packages/common/locales/extra/es-DO.ts deleted file mode 100644 index 6393f43fc2..0000000000 --- a/packages/common/locales/extra/es-DO.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mediodía', 'día', 'mañana', 'tarde', 'noche'], - ['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u - ], - [ - ['m.', 'madrugada', 'mañana', 'tarde', 'noche'], - ['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u - ], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-EA.ts b/packages/common/locales/extra/es-EA.ts deleted file mode 100644 index 186a6884b4..0000000000 --- a/packages/common/locales/extra/es-EA.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-EC.ts b/packages/common/locales/extra/es-EC.ts deleted file mode 100644 index 186a6884b4..0000000000 --- a/packages/common/locales/extra/es-EC.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-GQ.ts b/packages/common/locales/extra/es-GQ.ts deleted file mode 100644 index 186a6884b4..0000000000 --- a/packages/common/locales/extra/es-GQ.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-GT.ts b/packages/common/locales/extra/es-GT.ts deleted file mode 100644 index 186a6884b4..0000000000 --- a/packages/common/locales/extra/es-GT.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-HN.ts b/packages/common/locales/extra/es-HN.ts deleted file mode 100644 index 186a6884b4..0000000000 --- a/packages/common/locales/extra/es-HN.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-IC.ts b/packages/common/locales/extra/es-IC.ts deleted file mode 100644 index 186a6884b4..0000000000 --- a/packages/common/locales/extra/es-IC.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-MX.ts b/packages/common/locales/extra/es-MX.ts deleted file mode 100644 index 2ff376be75..0000000000 --- a/packages/common/locales/extra/es-MX.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['del mediodía', 'de la madrugada', 'mañana', 'de la tarde', 'de la noche'], - ['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u - ], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-NI.ts b/packages/common/locales/extra/es-NI.ts deleted file mode 100644 index 186a6884b4..0000000000 --- a/packages/common/locales/extra/es-NI.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-PA.ts b/packages/common/locales/extra/es-PA.ts deleted file mode 100644 index 99fa9b4a8b..0000000000 --- a/packages/common/locales/extra/es-PA.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], - ['mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u - ], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-PE.ts b/packages/common/locales/extra/es-PE.ts deleted file mode 100644 index 186a6884b4..0000000000 --- a/packages/common/locales/extra/es-PE.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-PH.ts b/packages/common/locales/extra/es-PH.ts deleted file mode 100644 index 186a6884b4..0000000000 --- a/packages/common/locales/extra/es-PH.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-PR.ts b/packages/common/locales/extra/es-PR.ts deleted file mode 100644 index 186a6884b4..0000000000 --- a/packages/common/locales/extra/es-PR.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-PY.ts b/packages/common/locales/extra/es-PY.ts deleted file mode 100644 index cc932be59f..0000000000 --- a/packages/common/locales/extra/es-PY.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [ - ['m.', 'madrugada', 'mañana', 'tarde', 'noche'], - ['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u - ], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-SV.ts b/packages/common/locales/extra/es-SV.ts deleted file mode 100644 index 186a6884b4..0000000000 --- a/packages/common/locales/extra/es-SV.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-US.ts b/packages/common/locales/extra/es-US.ts deleted file mode 100644 index 2ff376be75..0000000000 --- a/packages/common/locales/extra/es-US.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['del mediodía', 'de la madrugada', 'mañana', 'de la tarde', 'de la noche'], - ['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u - ], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-UY.ts b/packages/common/locales/extra/es-UY.ts deleted file mode 100644 index 186a6884b4..0000000000 --- a/packages/common/locales/extra/es-UY.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es-VE.ts b/packages/common/locales/extra/es-VE.ts deleted file mode 100644 index cc932be59f..0000000000 --- a/packages/common/locales/extra/es-VE.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [ - ['m.', 'madrugada', 'mañana', 'tarde', 'noche'], - ['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u - ], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/es.ts b/packages/common/locales/extra/es.ts deleted file mode 100644 index 186a6884b4..0000000000 --- a/packages/common/locales/extra/es.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] -]; diff --git a/packages/common/locales/extra/et.ts b/packages/common/locales/extra/et.ts deleted file mode 100644 index 48bd2ff43a..0000000000 --- a/packages/common/locales/extra/et.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['keskööl', 'keskpäeval', 'hommikul', 'pärastlõunal', 'õhtul', 'öösel'], u, u], - [['kesköö', 'keskpäev', 'hommik', 'pärastlõuna', 'õhtu', 'öö'], u, u], - ['00:00', '12:00', ['05:00', '12:00'], ['12:00', '18:00'], ['18:00', '23:00'], ['23:00', '05:00']] -]; diff --git a/packages/common/locales/extra/eu.ts b/packages/common/locales/extra/eu.ts deleted file mode 100644 index cc3fbc3d0d..0000000000 --- a/packages/common/locales/extra/eu.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['gauerdia', 'goizald.', 'goizeko', 'eguerd.', 'arrats.', 'iluntz.', 'gaueko'], u, - ['gauerdia', 'goizaldeko', 'goizeko', 'eguerdiko', 'arratsaldeko', 'iluntzeko', 'gaueko'] - ], - [ - ['gauerdia', 'goizald.', 'goiza', 'eguerd.', 'arrats.', 'iluntz.', 'gaua'], - ['gauerdia', 'goiz.', 'goiza', 'eguerd.', 'arrats.', 'iluntz.', 'gaua'], - ['gauerdia', 'goizaldea', 'goiza', 'eguerdia', 'arratsaldea', 'iluntzea', 'gaua'] - ], - [ - '00:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '14:00'], ['14:00', '19:00'], - ['19:00', '21:00'], ['21:00', '24:00'] - ] -]; diff --git a/packages/common/locales/extra/ewo.ts b/packages/common/locales/extra/ewo.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ewo.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/fa-AF.ts b/packages/common/locales/extra/fa-AF.ts deleted file mode 100644 index 5dd41cd70e..0000000000 --- a/packages/common/locales/extra/fa-AF.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['ب', 'ص', 'ظ', 'ع', 'ش', 'ن'], ['بامداد', 'صبح', 'ظهر', 'بعدازچاشت', 'شب', 'نیمه\u200cشب'], u], - [ - ['ب', 'ص', 'بعد از چاشت', 'ع', 'ش', 'ن'], - ['بامداد', 'صبح', 'ظهر', 'بعدازچاشت', 'شب', 'نیمه\u200cشب'], u - ], - [ - ['01:00', '04:00'], ['04:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '01:00'] - ] -]; diff --git a/packages/common/locales/extra/fa.ts b/packages/common/locales/extra/fa.ts deleted file mode 100644 index 25a35c59b8..0000000000 --- a/packages/common/locales/extra/fa.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['ب', 'ص', 'ظ', 'ع', 'ش', 'ن'], ['بامداد', 'صبح', 'ظهر', 'عصر', 'شب', 'نیمه\u200cشب'], u], u, - [ - ['01:00', '04:00'], ['04:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '01:00'] - ] -]; diff --git a/packages/common/locales/extra/ff-CM.ts b/packages/common/locales/extra/ff-CM.ts index 460d1c15ee..e9d355c0d9 100644 --- a/packages/common/locales/extra/ff-CM.ts +++ b/packages/common/locales/extra/ff-CM.ts @@ -6,8 +6,12 @@ * found in the LICENSE file at https://angular.io/license */ -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js +// **Note**: Locale files are generated through Bazel and never part of the sources. This is an +// exception for backwards compatibility. With the Gulp setup we never deleted old locale files +// when updating CLDR, so older locale files which have been removed, or renamed in the CLDR +// data remained in the repository. We keep these files checked-in until the next major to avoid +// potential breaking changes. It's worth noting that the locale data for such files is outdated +// anyway. e.g. the data is missing the directionality, throwing off the indices. const u = undefined; diff --git a/packages/common/locales/extra/ff-GN.ts b/packages/common/locales/extra/ff-GN.ts index 460d1c15ee..e9d355c0d9 100644 --- a/packages/common/locales/extra/ff-GN.ts +++ b/packages/common/locales/extra/ff-GN.ts @@ -6,8 +6,12 @@ * found in the LICENSE file at https://angular.io/license */ -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js +// **Note**: Locale files are generated through Bazel and never part of the sources. This is an +// exception for backwards compatibility. With the Gulp setup we never deleted old locale files +// when updating CLDR, so older locale files which have been removed, or renamed in the CLDR +// data remained in the repository. We keep these files checked-in until the next major to avoid +// potential breaking changes. It's worth noting that the locale data for such files is outdated +// anyway. e.g. the data is missing the directionality, throwing off the indices. const u = undefined; diff --git a/packages/common/locales/extra/ff-Latn-BF.ts b/packages/common/locales/extra/ff-Latn-BF.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ff-Latn-BF.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ff-Latn-CM.ts b/packages/common/locales/extra/ff-Latn-CM.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ff-Latn-CM.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ff-Latn-GH.ts b/packages/common/locales/extra/ff-Latn-GH.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ff-Latn-GH.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ff-Latn-GM.ts b/packages/common/locales/extra/ff-Latn-GM.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ff-Latn-GM.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ff-Latn-GN.ts b/packages/common/locales/extra/ff-Latn-GN.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ff-Latn-GN.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ff-Latn-GW.ts b/packages/common/locales/extra/ff-Latn-GW.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ff-Latn-GW.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ff-Latn-LR.ts b/packages/common/locales/extra/ff-Latn-LR.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ff-Latn-LR.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ff-Latn-MR.ts b/packages/common/locales/extra/ff-Latn-MR.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ff-Latn-MR.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ff-Latn-NE.ts b/packages/common/locales/extra/ff-Latn-NE.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ff-Latn-NE.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ff-Latn-NG.ts b/packages/common/locales/extra/ff-Latn-NG.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ff-Latn-NG.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ff-Latn-SL.ts b/packages/common/locales/extra/ff-Latn-SL.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ff-Latn-SL.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ff-Latn.ts b/packages/common/locales/extra/ff-Latn.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ff-Latn.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ff-MR.ts b/packages/common/locales/extra/ff-MR.ts index 460d1c15ee..e9d355c0d9 100644 --- a/packages/common/locales/extra/ff-MR.ts +++ b/packages/common/locales/extra/ff-MR.ts @@ -6,8 +6,12 @@ * found in the LICENSE file at https://angular.io/license */ -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js +// **Note**: Locale files are generated through Bazel and never part of the sources. This is an +// exception for backwards compatibility. With the Gulp setup we never deleted old locale files +// when updating CLDR, so older locale files which have been removed, or renamed in the CLDR +// data remained in the repository. We keep these files checked-in until the next major to avoid +// potential breaking changes. It's worth noting that the locale data for such files is outdated +// anyway. e.g. the data is missing the directionality, throwing off the indices. const u = undefined; diff --git a/packages/common/locales/extra/ff.ts b/packages/common/locales/extra/ff.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ff.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/fi.ts b/packages/common/locales/extra/fi.ts deleted file mode 100644 index 0d49d28d78..0000000000 --- a/packages/common/locales/extra/fi.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['ky.', 'kp.', 'aamulla', 'ap.', 'ip.', 'illalla', 'yöllä'], - ['keskiyöllä', 'keskip.', 'aamulla', 'aamup.', 'iltap.', 'illalla', 'yöllä'], - ['keskiyöllä', 'keskipäivällä', 'aamulla', 'aamupäivällä', 'iltapäivällä', 'illalla', 'yöllä'] - ], - [ - ['ky.', 'kp.', 'aamu', 'ap.', 'ip.', 'ilta', 'yö'], - ['keskiyö', 'keskip.', 'aamu', 'aamup.', 'iltap.', 'ilta', 'yö'], - ['keskiyö', 'keskipäivä', 'aamu', 'aamupäivä', 'iltapäivä', 'ilta', 'yö'] - ], - [ - '00:00', '12:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '18:00'], - ['18:00', '23:00'], ['23:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/fil.ts b/packages/common/locales/extra/fil.ts deleted file mode 100644 index 2b8003e457..0000000000 --- a/packages/common/locales/extra/fil.ts +++ /dev/null @@ -1,34 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['hatinggabi', 'tanghaling-tapat', 'umaga', 'madaling-araw', 'sa hapon', 'sa gabi', 'gabi'], - [ - 'hatinggabi', 'tanghaling-tapat', 'nang umaga', 'madaling-araw', 'tanghali', 'ng hapon', - 'gabi' - ], - [ - 'hatinggabi', 'tanghaling-tapat', 'nang umaga', 'madaling-araw', 'tanghali', 'ng hapon', - 'ng gabi' - ] - ], - [ - ['hatinggabi', 'tanghaling-tapat', 'umaga', 'madaling-araw', 'tanghali', 'gabi', 'gabi'], - ['hatinggabi', 'tanghaling-tapat', 'umaga', 'madaling-araw', 'tanghali', 'hapon', 'gabi'], u - ], - [ - '00:00', '12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '16:00'], - ['16:00', '18:00'], ['18:00', '24:00'] - ] -]; diff --git a/packages/common/locales/extra/fo-DK.ts b/packages/common/locales/extra/fo-DK.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/fo-DK.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/fo.ts b/packages/common/locales/extra/fo.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/fo.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/fr-BE.ts b/packages/common/locales/extra/fr-BE.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-BE.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-BF.ts b/packages/common/locales/extra/fr-BF.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-BF.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-BI.ts b/packages/common/locales/extra/fr-BI.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-BI.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-BJ.ts b/packages/common/locales/extra/fr-BJ.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-BJ.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-BL.ts b/packages/common/locales/extra/fr-BL.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-BL.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-CA.ts b/packages/common/locales/extra/fr-CA.ts deleted file mode 100644 index f448ca1965..0000000000 --- a/packages/common/locales/extra/fr-CA.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'après-midi', 'soir', 'mat.'], - ['minuit', 'midi', 'du mat.', 'après-midi', 'du soir', 'du mat.'], - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'après-midi', 'soir', 'mat.'], - ['minuit', 'midi', 'mat.', 'après-midi', 'soir', 'nuit'], - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-CD.ts b/packages/common/locales/extra/fr-CD.ts deleted file mode 100644 index c0c3edfcf1..0000000000 --- a/packages/common/locales/extra/fr-CD.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['min.', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['min.', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-CF.ts b/packages/common/locales/extra/fr-CF.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-CF.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-CG.ts b/packages/common/locales/extra/fr-CG.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-CG.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-CH.ts b/packages/common/locales/extra/fr-CH.ts deleted file mode 100644 index 108badcab5..0000000000 --- a/packages/common/locales/extra/fr-CH.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['min.', 'midi', 'du mat.', 'de l’ap.m.', 'du soir', 'du mat.'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['min.', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-CI.ts b/packages/common/locales/extra/fr-CI.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-CI.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-CM.ts b/packages/common/locales/extra/fr-CM.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-CM.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-DJ.ts b/packages/common/locales/extra/fr-DJ.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-DJ.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-DZ.ts b/packages/common/locales/extra/fr-DZ.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-DZ.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-GA.ts b/packages/common/locales/extra/fr-GA.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-GA.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-GF.ts b/packages/common/locales/extra/fr-GF.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-GF.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-GN.ts b/packages/common/locales/extra/fr-GN.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-GN.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-GP.ts b/packages/common/locales/extra/fr-GP.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-GP.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-GQ.ts b/packages/common/locales/extra/fr-GQ.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-GQ.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-HT.ts b/packages/common/locales/extra/fr-HT.ts deleted file mode 100644 index e45cd216cf..0000000000 --- a/packages/common/locales/extra/fr-HT.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'de la nuit'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-KM.ts b/packages/common/locales/extra/fr-KM.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-KM.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-LU.ts b/packages/common/locales/extra/fr-LU.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-LU.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-MA.ts b/packages/common/locales/extra/fr-MA.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-MA.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-MC.ts b/packages/common/locales/extra/fr-MC.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-MC.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-MF.ts b/packages/common/locales/extra/fr-MF.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-MF.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-MG.ts b/packages/common/locales/extra/fr-MG.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-MG.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-ML.ts b/packages/common/locales/extra/fr-ML.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-ML.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-MQ.ts b/packages/common/locales/extra/fr-MQ.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-MQ.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-MR.ts b/packages/common/locales/extra/fr-MR.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-MR.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-MU.ts b/packages/common/locales/extra/fr-MU.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-MU.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-NC.ts b/packages/common/locales/extra/fr-NC.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-NC.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-NE.ts b/packages/common/locales/extra/fr-NE.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-NE.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-PF.ts b/packages/common/locales/extra/fr-PF.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-PF.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-PM.ts b/packages/common/locales/extra/fr-PM.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-PM.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-RE.ts b/packages/common/locales/extra/fr-RE.ts deleted file mode 100644 index 44ee165bc6..0000000000 --- a/packages/common/locales/extra/fr-RE.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], - ['min.', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['min.', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-RW.ts b/packages/common/locales/extra/fr-RW.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-RW.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-SC.ts b/packages/common/locales/extra/fr-SC.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-SC.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-SN.ts b/packages/common/locales/extra/fr-SN.ts deleted file mode 100644 index 98e58bb029..0000000000 --- a/packages/common/locales/extra/fr-SN.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['min.', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['min.', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-SY.ts b/packages/common/locales/extra/fr-SY.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-SY.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-TD.ts b/packages/common/locales/extra/fr-TD.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-TD.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-TG.ts b/packages/common/locales/extra/fr-TG.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-TG.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-TN.ts b/packages/common/locales/extra/fr-TN.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-TN.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-VU.ts b/packages/common/locales/extra/fr-VU.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-VU.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-WF.ts b/packages/common/locales/extra/fr-WF.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-WF.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr-YT.ts b/packages/common/locales/extra/fr-YT.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr-YT.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fr.ts b/packages/common/locales/extra/fr.ts deleted file mode 100644 index 330f6972af..0000000000 --- a/packages/common/locales/extra/fr.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/fur.ts b/packages/common/locales/extra/fur.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/fur.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/fy.ts b/packages/common/locales/extra/fy.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/fy.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ga-GB.ts b/packages/common/locales/extra/ga-GB.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ga-GB.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ga.ts b/packages/common/locales/extra/ga.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ga.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/gd.ts b/packages/common/locales/extra/gd.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/gd.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/gl.ts b/packages/common/locales/extra/gl.ts deleted file mode 100644 index 1c2420d95d..0000000000 --- a/packages/common/locales/extra/gl.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['da noite', 'da madrugada', 'da mañá', 'do mediodía', 'da tarde', 'da noite'], u, u], - [['medianoite', 'madrugada', 'mañá', 'mediodía', 'tarde', 'noite'], u, u], - [ - '00:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '21:00'], - ['21:00', '24:00'] - ] -]; diff --git a/packages/common/locales/extra/gsw-FR.ts b/packages/common/locales/extra/gsw-FR.ts deleted file mode 100644 index 708860b9ba..0000000000 --- a/packages/common/locales/extra/gsw-FR.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['Mitternacht', 'am Morge', 'zmittag', 'am Namittag', 'zaabig', 'znacht'], u, u], - [ - ['Mitternacht', 'am Morge', 'zmittag', 'am Namittag', 'zaabig', 'znacht'], u, - ['Mitternacht', 'Morge', 'Mittag', 'Namittag', 'Aabig', 'Nacht'] - ], - [ - '00:00', ['05:00', '12:00'], ['12:00', '14:00'], ['14:00', '18:00'], ['18:00', '24:00'], - ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/gsw-LI.ts b/packages/common/locales/extra/gsw-LI.ts deleted file mode 100644 index 708860b9ba..0000000000 --- a/packages/common/locales/extra/gsw-LI.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['Mitternacht', 'am Morge', 'zmittag', 'am Namittag', 'zaabig', 'znacht'], u, u], - [ - ['Mitternacht', 'am Morge', 'zmittag', 'am Namittag', 'zaabig', 'znacht'], u, - ['Mitternacht', 'Morge', 'Mittag', 'Namittag', 'Aabig', 'Nacht'] - ], - [ - '00:00', ['05:00', '12:00'], ['12:00', '14:00'], ['14:00', '18:00'], ['18:00', '24:00'], - ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/gsw.ts b/packages/common/locales/extra/gsw.ts deleted file mode 100644 index 708860b9ba..0000000000 --- a/packages/common/locales/extra/gsw.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['Mitternacht', 'am Morge', 'zmittag', 'am Namittag', 'zaabig', 'znacht'], u, u], - [ - ['Mitternacht', 'am Morge', 'zmittag', 'am Namittag', 'zaabig', 'znacht'], u, - ['Mitternacht', 'Morge', 'Mittag', 'Namittag', 'Aabig', 'Nacht'] - ], - [ - '00:00', ['05:00', '12:00'], ['12:00', '14:00'], ['14:00', '18:00'], ['18:00', '24:00'], - ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/gu.ts b/packages/common/locales/extra/gu.ts deleted file mode 100644 index 194e68b117..0000000000 --- a/packages/common/locales/extra/gu.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['મ.રાત્રિ', 'સવારે', 'બપોરે', 'સાંજે', 'રાત્રે'], ['મધ્યરાત્રિ', 'સવારે', 'બપોરે', 'સાંજે', 'રાત્રે'], u], - [['મધ્યરાત્રિ', 'સવારે', 'બપોરે', 'સાંજે', 'રાત્રે'], u, ['મધ્યરાત્રિ', 'સવાર', 'બપોર', 'સાંજ', 'રાત્રિ']], - ['00:00', ['04:00', '12:00'], ['12:00', '16:00'], ['16:00', '20:00'], ['20:00', '04:00']] -]; diff --git a/packages/common/locales/extra/guz.ts b/packages/common/locales/extra/guz.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/guz.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/gv.ts b/packages/common/locales/extra/gv.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/gv.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ha-GH.ts b/packages/common/locales/extra/ha-GH.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ha-GH.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ha-NE.ts b/packages/common/locales/extra/ha-NE.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ha-NE.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ha.ts b/packages/common/locales/extra/ha.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ha.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/haw.ts b/packages/common/locales/extra/haw.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/haw.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/he.ts b/packages/common/locales/extra/he.ts deleted file mode 100644 index 672565c056..0000000000 --- a/packages/common/locales/extra/he.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['חצות', 'בבוקר', 'בצהריים', 'אחה״צ', 'בערב', 'בלילה', 'לפנות בוקר'], - ['חצות', 'בוקר', 'צהריים', 'אחר הצהריים', 'ערב', 'לילה', 'לפנות בוקר'], - ['חצות', 'בבוקר', 'בצהריים', 'אחר הצהריים', 'בערב', 'בלילה', 'לפנות בוקר'] - ], - [ - ['חצות', 'בוקר', 'צהריים', 'אחה״צ', 'ערב', 'לילה', 'לפנות בוקר'], u, - ['חצות', 'בוקר', 'צהריים', 'אחר הצהריים', 'ערב', 'לילה', 'לפנות בוקר'] - ], - [ - '00:00', ['06:00', '12:00'], ['12:00', '16:00'], ['16:00', '18:00'], ['18:00', '22:00'], - ['22:00', '03:00'], ['03:00', '06:00'] - ] -]; diff --git a/packages/common/locales/extra/hi.ts b/packages/common/locales/extra/hi.ts deleted file mode 100644 index 2a851ae27b..0000000000 --- a/packages/common/locales/extra/hi.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['मध्यरात्रि', 'सुबह', 'दोपहर', 'शाम', 'रात'], u, u], - [['आधी रात', 'सुबह', 'दोपहर', 'शाम', 'रात'], ['मध्यरात्रि', 'सुबह', 'दोपहर', 'शाम', 'रात'], u], - ['00:00', ['04:00', '12:00'], ['12:00', '16:00'], ['16:00', '20:00'], ['20:00', '04:00']] -]; diff --git a/packages/common/locales/extra/hr-BA.ts b/packages/common/locales/extra/hr-BA.ts deleted file mode 100644 index abce0d28bb..0000000000 --- a/packages/common/locales/extra/hr-BA.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['ponoć', 'podne', 'ujutro', 'popodne', 'navečer', 'noću'], u, - ['ponoć', 'podne', 'ujutro', 'poslije podne', 'navečer', 'noću'] - ], - [['ponoć', 'podne', 'ujutro', 'popodne', 'navečer', 'noću'], u, u], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '04:00']] -]; diff --git a/packages/common/locales/extra/hr.ts b/packages/common/locales/extra/hr.ts deleted file mode 100644 index abce0d28bb..0000000000 --- a/packages/common/locales/extra/hr.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['ponoć', 'podne', 'ujutro', 'popodne', 'navečer', 'noću'], u, - ['ponoć', 'podne', 'ujutro', 'poslije podne', 'navečer', 'noću'] - ], - [['ponoć', 'podne', 'ujutro', 'popodne', 'navečer', 'noću'], u, u], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '04:00']] -]; diff --git a/packages/common/locales/extra/hsb.ts b/packages/common/locales/extra/hsb.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/hsb.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/hu.ts b/packages/common/locales/extra/hu.ts deleted file mode 100644 index 6f9c381f6c..0000000000 --- a/packages/common/locales/extra/hu.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['éjfél', 'dél', 'reggel', 'de.', 'du.', 'este', 'éjjel', 'hajnal'], u, - ['éjfél', 'dél', 'reggel', 'délelőtt', 'délután', 'este', 'éjjel', 'hajnal'] - ], - u, - [ - '00:00', '12:00', ['06:00', '09:00'], ['09:00', '12:00'], ['12:00', '18:00'], - ['18:00', '21:00'], ['21:00', '04:00'], ['04:00', '06:00'] - ] -]; diff --git a/packages/common/locales/extra/hy.ts b/packages/common/locales/extra/hy.ts deleted file mode 100644 index fe38a5796b..0000000000 --- a/packages/common/locales/extra/hy.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['կգ․', 'կօ․', 'առվ', 'ցրկ', 'երկ', 'գշր'], - ['կեսգիշեր', 'կեսօր', 'առավոտյան', 'ցերեկը', 'երեկոյան', 'գիշերը'], - ['կեսգիշերին', 'կեսօրին', 'առավոտյան', 'ցերեկվա', 'երեկոյան', 'գիշերվա'] - ], - [['կեսգիշեր', 'կեսօր', 'առավոտ', 'ցերեկ', 'երեկո', 'գիշեր'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/ia.ts b/packages/common/locales/extra/ia.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ia.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/id.ts b/packages/common/locales/extra/id.ts deleted file mode 100644 index c0ae6a9e50..0000000000 --- a/packages/common/locales/extra/id.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['tengah malam', 'tengah hari', 'pagi', 'siang', 'sore', 'malam'], u, u], u, - ['00:00', '12:00', ['00:00', '10:00'], ['10:00', '15:00'], ['15:00', '18:00'], ['18:00', '24:00']] -]; diff --git a/packages/common/locales/extra/ig.ts b/packages/common/locales/extra/ig.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ig.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ii.ts b/packages/common/locales/extra/ii.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ii.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/is.ts b/packages/common/locales/extra/is.ts deleted file mode 100644 index 5ecea74b70..0000000000 --- a/packages/common/locales/extra/is.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mn.', 'h.', 'mrg.', 'sd.', 'kv.', 'n.'], - ['miðnætti', 'hádegi', 'að morgni', 'síðdegis', 'að kvöldi', 'að nóttu'], u - ], - [ - ['mn.', 'hd.', 'mrg.', 'sd.', 'kv.', 'n.'], - ['miðnætti', 'hádegi', 'morgunn', 'síðdegis', 'kvöld', 'nótt'], - ['miðnætti', 'hádegi', 'morgunn', 'eftir hádegi', 'kvöld', 'nótt'] - ], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/it-CH.ts b/packages/common/locales/extra/it-CH.ts deleted file mode 100644 index bf839c52ca..0000000000 --- a/packages/common/locales/extra/it-CH.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mezzanotte', 'mezzogiorno', 'di mattina', 'di pomeriggio', 'di sera', 'di notte'], u, - ['mezzanotte', 'mezzogiorno', 'di mattina', 'del pomeriggio', 'di sera', 'di notte'] - ], - [['mezzanotte', 'mezzogiorno', 'mattina', 'pomeriggio', 'sera', 'notte'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/it-SM.ts b/packages/common/locales/extra/it-SM.ts deleted file mode 100644 index bf839c52ca..0000000000 --- a/packages/common/locales/extra/it-SM.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mezzanotte', 'mezzogiorno', 'di mattina', 'di pomeriggio', 'di sera', 'di notte'], u, - ['mezzanotte', 'mezzogiorno', 'di mattina', 'del pomeriggio', 'di sera', 'di notte'] - ], - [['mezzanotte', 'mezzogiorno', 'mattina', 'pomeriggio', 'sera', 'notte'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/it-VA.ts b/packages/common/locales/extra/it-VA.ts deleted file mode 100644 index bf839c52ca..0000000000 --- a/packages/common/locales/extra/it-VA.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mezzanotte', 'mezzogiorno', 'di mattina', 'di pomeriggio', 'di sera', 'di notte'], u, - ['mezzanotte', 'mezzogiorno', 'di mattina', 'del pomeriggio', 'di sera', 'di notte'] - ], - [['mezzanotte', 'mezzogiorno', 'mattina', 'pomeriggio', 'sera', 'notte'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/it.ts b/packages/common/locales/extra/it.ts deleted file mode 100644 index bf839c52ca..0000000000 --- a/packages/common/locales/extra/it.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mezzanotte', 'mezzogiorno', 'di mattina', 'di pomeriggio', 'di sera', 'di notte'], u, - ['mezzanotte', 'mezzogiorno', 'di mattina', 'del pomeriggio', 'di sera', 'di notte'] - ], - [['mezzanotte', 'mezzogiorno', 'mattina', 'pomeriggio', 'sera', 'notte'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/ja.ts b/packages/common/locales/extra/ja.ts deleted file mode 100644 index ae7cdd37b4..0000000000 --- a/packages/common/locales/extra/ja.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['真夜中', '正午', '朝', '昼', '夕方', '夜', '夜中'], u, u], u, - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '16:00'], ['16:00', '19:00'], - ['19:00', '23:00'], ['23:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/jgo.ts b/packages/common/locales/extra/jgo.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/jgo.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/jmc.ts b/packages/common/locales/extra/jmc.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/jmc.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/jv.ts b/packages/common/locales/extra/jv.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/jv.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ka.ts b/packages/common/locales/extra/ka.ts deleted file mode 100644 index e88b74ee5c..0000000000 --- a/packages/common/locales/extra/ka.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['შუაღამეს', 'შუადღ.', 'დილ.', 'ნაშუადღ.', 'საღ.', 'ღამ.'], u, - ['შუაღამეს', 'შუადღეს', 'დილით', 'ნაშუადღევს', 'საღამოს', 'ღამით'] - ], - [['შუაღამე', 'შუადღე', 'დილა', 'ნაშუადღევი', 'საღამო', 'ღამე'], u, u], - ['00:00', '12:00', ['05:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '05:00']] -]; diff --git a/packages/common/locales/extra/kab.ts b/packages/common/locales/extra/kab.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/kab.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/kam.ts b/packages/common/locales/extra/kam.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/kam.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/kde.ts b/packages/common/locales/extra/kde.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/kde.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/kea.ts b/packages/common/locales/extra/kea.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/kea.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/khq.ts b/packages/common/locales/extra/khq.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/khq.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ki.ts b/packages/common/locales/extra/ki.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ki.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/kk.ts b/packages/common/locales/extra/kk.ts deleted file mode 100644 index abfc47bf44..0000000000 --- a/packages/common/locales/extra/kk.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['түнгі', 'түскі', 'таңғы', 'түстен кейінгі', 'кешкі', 'түнгі'], - ['түн жарымы', 'түскі', 'таңғы', 'түстен кейінгі', 'кешкі', 'түнгі'], u - ], - [['түн жарымы', 'талтүс', 'таң', 'түстен кейін', 'кеш', 'түн'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/kkj.ts b/packages/common/locales/extra/kkj.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/kkj.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/kl.ts b/packages/common/locales/extra/kl.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/kl.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/kln.ts b/packages/common/locales/extra/kln.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/kln.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/km.ts b/packages/common/locales/extra/km.ts deleted file mode 100644 index 655ad69035..0000000000 --- a/packages/common/locales/extra/km.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - [ - 'អធ្រាត្រ', 'ថ្ងៃត្រង់', 'នៅពេល​ព្រឹក', 'នៅពេលរសៀល', - 'នៅពេល​ល្ងាច', 'នៅពេល​យប់' - ], - u, u - ], - [['អធ្រាត្រ', 'ថ្ងៃ​ត្រង់', 'ព្រឹក', 'រសៀល', 'ល្ងាច', 'យប់'], u, u], - ['00:00', '12:00', ['00:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '24:00']] -]; diff --git a/packages/common/locales/extra/kn.ts b/packages/common/locales/extra/kn.ts deleted file mode 100644 index f8341e2824..0000000000 --- a/packages/common/locales/extra/kn.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['ಮಧ್ಯರಾತ್ರಿ', 'ಬೆಳಗ್ಗೆ', 'ಮಧ್ಯಾಹ್ನ', 'ಸಂಜೆ', 'ರಾತ್ರಿ'], ['ಮಧ್ಯ ರಾತ್ರಿ', 'ಬೆಳಗ್ಗೆ', 'ಮಧ್ಯಾಹ್ನ', 'ಸಂಜೆ', 'ರಾತ್ರಿ'], u], - [['ಮಧ್ಯರಾತ್ರಿ', 'ಬೆಳಗ್ಗೆ', 'ಮಧ್ಯಾಹ್ನ', 'ಸಂಜೆ', 'ರಾತ್ರಿ'], u, u], - ['00:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/ko-KP.ts b/packages/common/locales/extra/ko-KP.ts deleted file mode 100644 index c691c37222..0000000000 --- a/packages/common/locales/extra/ko-KP.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['자정', '정오', '새벽', '오전', '오후', '저녁', '밤'], u, u], u, - [ - '00:00', '12:00', ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '18:00'], - ['18:00', '21:00'], ['21:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ko.ts b/packages/common/locales/extra/ko.ts deleted file mode 100644 index c691c37222..0000000000 --- a/packages/common/locales/extra/ko.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['자정', '정오', '새벽', '오전', '오후', '저녁', '밤'], u, u], u, - [ - '00:00', '12:00', ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '18:00'], - ['18:00', '21:00'], ['21:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/kok.ts b/packages/common/locales/extra/kok.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/kok.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ks.ts b/packages/common/locales/extra/ks.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ks.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ksb.ts b/packages/common/locales/extra/ksb.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ksb.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ksf.ts b/packages/common/locales/extra/ksf.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ksf.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ksh.ts b/packages/common/locales/extra/ksh.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ksh.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ku.ts b/packages/common/locales/extra/ku.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ku.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/kw.ts b/packages/common/locales/extra/kw.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/kw.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ky.ts b/packages/common/locales/extra/ky.ts deleted file mode 100644 index 4e6584f8a4..0000000000 --- a/packages/common/locales/extra/ky.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['түн орт', 'чт', 'эртң мн', 'түшт кйн', 'кечк', 'түн'], - ['түн ортосу', 'чак түш', 'эртең менен', 'түштөн кийин', 'кечинде', 'түн ичинде'], u - ], - [['түн ортосу', 'чак түш', 'эртең менен', 'түштөн кийин', 'кечкурун', 'түн'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/lag.ts b/packages/common/locales/extra/lag.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/lag.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/lb.ts b/packages/common/locales/extra/lb.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/lb.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/lg.ts b/packages/common/locales/extra/lg.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/lg.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/lkt.ts b/packages/common/locales/extra/lkt.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/lkt.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ln-AO.ts b/packages/common/locales/extra/ln-AO.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ln-AO.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ln-CF.ts b/packages/common/locales/extra/ln-CF.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ln-CF.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ln-CG.ts b/packages/common/locales/extra/ln-CG.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ln-CG.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ln.ts b/packages/common/locales/extra/ln.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ln.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/lo.ts b/packages/common/locales/extra/lo.ts deleted file mode 100644 index 466bba0f63..0000000000 --- a/packages/common/locales/extra/lo.ts +++ /dev/null @@ -1,32 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['ທ່ຽງຄືນ', 'ຕອນທ່ຽງ', 'ຕອນເຊົ້າ', 'ຕອນທ່ຽງ', 'ຕອນແລງ', 'ກາງຄືນ'], - ['ທ່ຽງຄືນ', 'ຕອນທ່ຽງ', 'ຕອນເຊົ້າ', 'ຕອນບ່າຍ', 'ຕອນແລງ', 'ກາງຄືນ'], - ['ທ່ຽງຄືນ', 'ຕອນທ່ຽງ', 'ຕອນເຊົ້າ', 'ຕອນບ່າຍ', 'ຕອນແລງ', 'ຕອນກາງຄືນ'] - ], - [ - [ - 'ທ່ຽງ​ຄືນ', 'ຕອນທ່ຽງ', '​ເຊົ້າ', 'ສ', 'ແລງ', - '​ກາງ​ຄືນ' - ], - [ - 'ທ່ຽງ​ຄືນ', 'ທ່ຽງ', '​ເຊົ້າ', 'ສວຍ', 'ແລງ', - '​ກາງ​ຄືນ' - ], - ['ທ່ຽງຄືນ', 'ຕອນທ່ຽງ', '​ເຊົ້າ', 'ສວຍ', 'ແລງ', '​ກາງ​ຄືນ'] - ], - ['00:00', '12:00', ['05:00', '12:00'], ['12:00', '16:00'], ['16:00', '20:00'], ['20:00', '05:00']] -]; diff --git a/packages/common/locales/extra/lrc-IQ.ts b/packages/common/locales/extra/lrc-IQ.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/lrc-IQ.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/lrc.ts b/packages/common/locales/extra/lrc.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/lrc.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/lt.ts b/packages/common/locales/extra/lt.ts deleted file mode 100644 index 3828435397..0000000000 --- a/packages/common/locales/extra/lt.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['vidurnaktis', 'perpiet', 'rytas', 'popietė', 'vakaras', 'naktis'], u, u], - [['vidurnaktis', 'vidurdienis', 'rytas', 'diena', 'vakaras', 'naktis'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/lu.ts b/packages/common/locales/extra/lu.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/lu.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/luo.ts b/packages/common/locales/extra/luo.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/luo.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/luy.ts b/packages/common/locales/extra/luy.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/luy.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/lv.ts b/packages/common/locales/extra/lv.ts deleted file mode 100644 index 506e441d8b..0000000000 --- a/packages/common/locales/extra/lv.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['pusnaktī', 'pusd.', 'no rīta', 'pēcpusd.', 'vakarā', 'naktī'], u, - ['pusnaktī', 'pusdienlaikā', 'no rīta', 'pēcpusdienā', 'vakarā', 'naktī'] - ], - [ - ['pusnakts', 'pusd.', 'rīts', 'pēcpusd.', 'vakars', 'nakts'], - ['pusnakts', 'pusd.', 'rīts', 'pēcpusdiena', 'vakars', 'nakts'], - ['pusnakts', 'pusdienlaiks', 'rīts', 'pēcpusdiena', 'vakars', 'nakts'] - ], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '23:00'], ['23:00', '06:00']] -]; diff --git a/packages/common/locales/extra/mas-TZ.ts b/packages/common/locales/extra/mas-TZ.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/mas-TZ.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/mas.ts b/packages/common/locales/extra/mas.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/mas.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/mer.ts b/packages/common/locales/extra/mer.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/mer.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/mfe.ts b/packages/common/locales/extra/mfe.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/mfe.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/mg.ts b/packages/common/locales/extra/mg.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/mg.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/mgh.ts b/packages/common/locales/extra/mgh.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/mgh.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/mgo.ts b/packages/common/locales/extra/mgo.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/mgo.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/mi.ts b/packages/common/locales/extra/mi.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/mi.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/mk.ts b/packages/common/locales/extra/mk.ts deleted file mode 100644 index b97689e7eb..0000000000 --- a/packages/common/locales/extra/mk.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['полн.', 'напл.', 'утро', 'претпл.', 'попл.', 'веч.', 'ноќе'], - ['полноќ', 'напладне', 'наутро', 'претпл.', 'попл.', 'навечер', 'ноќе'], - ['полноќ', 'напладне', 'наутро', 'претпладне', 'попладне', 'навечер', 'по полноќ'] - ], - [ - ['полноќ', 'пладне', 'наутро', 'претпл.', 'попл.', 'навечер', 'по полноќ'], - ['полноќ', 'напладне', 'наутро', 'претпл.', 'попл.', 'навечер', 'по полноќ'], - ['на полноќ', 'напладне', 'наутро', 'претпладне', 'попладне', 'навечер', 'по полноќ'] - ], - [ - '00:00', '12:00', ['04:00', '10:00'], ['10:00', '12:00'], ['12:00', '18:00'], - ['18:00', '24:00'], ['00:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/ml.ts b/packages/common/locales/extra/ml.ts deleted file mode 100644 index 9d963fdbd0..0000000000 --- a/packages/common/locales/extra/ml.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['അ', 'ഉച്ച', 'പുലർച്ചെ', 'രാവിലെ', 'ഉച്ചയ്ക്ക്', 'ഉച്ചതിരിഞ്ഞ്', 'വൈകുന്നേരം', 'സന്ധ്യ', 'രാത്രി'], - ['അർദ്ധരാത്രി', 'ഉച്ച', 'പുലർച്ചെ', 'രാവിലെ', 'ഉച്ചയ്ക്ക്', 'ഉച്ചതിരിഞ്ഞ്', 'വൈകുന്നേരം', 'സന്ധ്യ', 'രാത്രി'], u - ], - [ - ['അർദ്ധരാത്രി', 'ഉച്ച', 'പുലർച്ചെ', 'രാവിലെ', 'ഉച്ചയ്ക്ക്', 'ഉച്ചതിരിഞ്ഞ്', 'വൈകുന്നേരം', 'സന്ധ്യ', 'രാത്രി'], u, - u - ], - [ - '00:00', '12:00', ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '14:00'], - ['14:00', '15:00'], ['15:00', '18:00'], ['18:00', '19:00'], ['19:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/mn.ts b/packages/common/locales/extra/mn.ts deleted file mode 100644 index c2d59cb9bc..0000000000 --- a/packages/common/locales/extra/mn.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['шөнө дунд', 'үд дунд', 'өглөө', 'өдөр', 'орой', 'шөнө'], u, u], u, - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/mr.ts b/packages/common/locales/extra/mr.ts deleted file mode 100644 index ebd3add3ef..0000000000 --- a/packages/common/locales/extra/mr.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['म.रा.', 'दु', 'प', 'स', 'दु', 'सं', 'सा', 'रा'], - ['मध्यरात्र', 'मध्यान्ह', 'पहाट', 'सकाळ', 'दुपार', 'संध्याकाळ', 'सायंकाळ', 'रात्र'], u - ], - [ - ['म.रा.', 'म', 'प', 'स', 'दु', 'सं', 'सा', 'रात्र'], - ['मध्यरात्र', 'मध्यान्ह', 'पहाट', 'सकाळ', 'दुपार', 'संध्याकाळ', 'सायंकाळ', 'रात्र'], u - ], - [ - '00:00', '12:00', ['04:00', '06:00'], ['06:00', '12:00'], ['12:00', '16:00'], - ['16:00', '18:00'], ['18:00', '21:00'], ['21:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/ms-BN.ts b/packages/common/locales/extra/ms-BN.ts deleted file mode 100644 index e6e53cf86b..0000000000 --- a/packages/common/locales/extra/ms-BN.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['pagi', 'pagi', 'tengah hari', 'petang', 'malam'], u, - ['tengah malam', 'pagi', 'tengah hari', 'petang', 'malam'] - ], - [ - ['pagi', 'pagi', 'tengah hari', 'petang', 'malam'], - ['tengah malam', 'pagi', 'tengah hari', 'petang', 'malam'], u - ], - [ - ['00:00', '01:00'], ['01:00', '12:00'], ['12:00', '14:00'], ['14:00', '19:00'], - ['19:00', '24:00'] - ] -]; diff --git a/packages/common/locales/extra/ms-SG.ts b/packages/common/locales/extra/ms-SG.ts deleted file mode 100644 index e6e53cf86b..0000000000 --- a/packages/common/locales/extra/ms-SG.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['pagi', 'pagi', 'tengah hari', 'petang', 'malam'], u, - ['tengah malam', 'pagi', 'tengah hari', 'petang', 'malam'] - ], - [ - ['pagi', 'pagi', 'tengah hari', 'petang', 'malam'], - ['tengah malam', 'pagi', 'tengah hari', 'petang', 'malam'], u - ], - [ - ['00:00', '01:00'], ['01:00', '12:00'], ['12:00', '14:00'], ['14:00', '19:00'], - ['19:00', '24:00'] - ] -]; diff --git a/packages/common/locales/extra/ms.ts b/packages/common/locales/extra/ms.ts deleted file mode 100644 index e6e53cf86b..0000000000 --- a/packages/common/locales/extra/ms.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['pagi', 'pagi', 'tengah hari', 'petang', 'malam'], u, - ['tengah malam', 'pagi', 'tengah hari', 'petang', 'malam'] - ], - [ - ['pagi', 'pagi', 'tengah hari', 'petang', 'malam'], - ['tengah malam', 'pagi', 'tengah hari', 'petang', 'malam'], u - ], - [ - ['00:00', '01:00'], ['01:00', '12:00'], ['12:00', '14:00'], ['14:00', '19:00'], - ['19:00', '24:00'] - ] -]; diff --git a/packages/common/locales/extra/mt.ts b/packages/common/locales/extra/mt.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/mt.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/mua.ts b/packages/common/locales/extra/mua.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/mua.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/my.ts b/packages/common/locales/extra/my.ts deleted file mode 100644 index 5e22e6c95f..0000000000 --- a/packages/common/locales/extra/my.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['သန်းခေါင်ယံ', 'မွန်းတည့်', 'နံနက်', 'နေ့လယ်', 'ညနေ', 'ည'], u, u], u, - ['00:00', '12:00', ['00:00', '12:00'], ['12:00', '16:00'], ['16:00', '19:00'], ['19:00', '24:00']] -]; diff --git a/packages/common/locales/extra/mzn.ts b/packages/common/locales/extra/mzn.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/mzn.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/naq.ts b/packages/common/locales/extra/naq.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/naq.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/nb-SJ.ts b/packages/common/locales/extra/nb-SJ.ts deleted file mode 100644 index f4b1c6e499..0000000000 --- a/packages/common/locales/extra/nb-SJ.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mn.', 'mg.', 'fm.', 'em.', 'kv.', 'nt.'], - ['midn.', 'morg.', 'form.', 'etterm.', 'kveld', 'natt'], - ['midnatt', 'morgenen', 'formiddagen', 'ettermiddagen', 'kvelden', 'natten'] - ], - [ - ['mn.', 'mg.', 'fm.', 'em.', 'kv.', 'nt.'], - ['midn.', 'morg.', 'form.', 'etterm.', 'kveld', 'natt'], - ['midnatt', 'morgen', 'formiddag', 'ettermiddag', 'kveld', 'natt'] - ], - [ - '00:00', ['06:00', '10:00'], ['10:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '06:00'] - ] -]; diff --git a/packages/common/locales/extra/nb.ts b/packages/common/locales/extra/nb.ts deleted file mode 100644 index f4b1c6e499..0000000000 --- a/packages/common/locales/extra/nb.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mn.', 'mg.', 'fm.', 'em.', 'kv.', 'nt.'], - ['midn.', 'morg.', 'form.', 'etterm.', 'kveld', 'natt'], - ['midnatt', 'morgenen', 'formiddagen', 'ettermiddagen', 'kvelden', 'natten'] - ], - [ - ['mn.', 'mg.', 'fm.', 'em.', 'kv.', 'nt.'], - ['midn.', 'morg.', 'form.', 'etterm.', 'kveld', 'natt'], - ['midnatt', 'morgen', 'formiddag', 'ettermiddag', 'kveld', 'natt'] - ], - [ - '00:00', ['06:00', '10:00'], ['10:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '06:00'] - ] -]; diff --git a/packages/common/locales/extra/nd.ts b/packages/common/locales/extra/nd.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/nd.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/nds-NL.ts b/packages/common/locales/extra/nds-NL.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/nds-NL.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/nds.ts b/packages/common/locales/extra/nds.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/nds.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ne-IN.ts b/packages/common/locales/extra/ne-IN.ts deleted file mode 100644 index 7f38319adc..0000000000 --- a/packages/common/locales/extra/ne-IN.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['मध्यरात', 'मध्यान्ह', 'बिहान', 'अपरान्ह', 'साँझ', 'बेलुकी', 'रात'], u, u], u, - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '16:00'], ['16:00', '19:00'], - ['19:00', '22:00'], ['22:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/ne.ts b/packages/common/locales/extra/ne.ts deleted file mode 100644 index 7f38319adc..0000000000 --- a/packages/common/locales/extra/ne.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['मध्यरात', 'मध्यान्ह', 'बिहान', 'अपरान्ह', 'साँझ', 'बेलुकी', 'रात'], u, u], u, - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '16:00'], ['16:00', '19:00'], - ['19:00', '22:00'], ['22:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/nl-AW.ts b/packages/common/locales/extra/nl-AW.ts deleted file mode 100644 index 12ee0b463b..0000000000 --- a/packages/common/locales/extra/nl-AW.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['middernacht', '’s ochtends', '’s middags', '’s avonds', '’s nachts'], u, u], - [['middernacht', 'ochtend', 'middag', 'avond', 'nacht'], u, u], - ['00:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/nl-BE.ts b/packages/common/locales/extra/nl-BE.ts deleted file mode 100644 index 12ee0b463b..0000000000 --- a/packages/common/locales/extra/nl-BE.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['middernacht', '’s ochtends', '’s middags', '’s avonds', '’s nachts'], u, u], - [['middernacht', 'ochtend', 'middag', 'avond', 'nacht'], u, u], - ['00:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/nl-BQ.ts b/packages/common/locales/extra/nl-BQ.ts deleted file mode 100644 index 12ee0b463b..0000000000 --- a/packages/common/locales/extra/nl-BQ.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['middernacht', '’s ochtends', '’s middags', '’s avonds', '’s nachts'], u, u], - [['middernacht', 'ochtend', 'middag', 'avond', 'nacht'], u, u], - ['00:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/nl-CW.ts b/packages/common/locales/extra/nl-CW.ts deleted file mode 100644 index 12ee0b463b..0000000000 --- a/packages/common/locales/extra/nl-CW.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['middernacht', '’s ochtends', '’s middags', '’s avonds', '’s nachts'], u, u], - [['middernacht', 'ochtend', 'middag', 'avond', 'nacht'], u, u], - ['00:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/nl-SR.ts b/packages/common/locales/extra/nl-SR.ts deleted file mode 100644 index 12ee0b463b..0000000000 --- a/packages/common/locales/extra/nl-SR.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['middernacht', '’s ochtends', '’s middags', '’s avonds', '’s nachts'], u, u], - [['middernacht', 'ochtend', 'middag', 'avond', 'nacht'], u, u], - ['00:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/nl-SX.ts b/packages/common/locales/extra/nl-SX.ts deleted file mode 100644 index 12ee0b463b..0000000000 --- a/packages/common/locales/extra/nl-SX.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['middernacht', '’s ochtends', '’s middags', '’s avonds', '’s nachts'], u, u], - [['middernacht', 'ochtend', 'middag', 'avond', 'nacht'], u, u], - ['00:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/nl.ts b/packages/common/locales/extra/nl.ts deleted file mode 100644 index 12ee0b463b..0000000000 --- a/packages/common/locales/extra/nl.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['middernacht', '’s ochtends', '’s middags', '’s avonds', '’s nachts'], u, u], - [['middernacht', 'ochtend', 'middag', 'avond', 'nacht'], u, u], - ['00:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/nmg.ts b/packages/common/locales/extra/nmg.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/nmg.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/nn.ts b/packages/common/locales/extra/nn.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/nn.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/nnh.ts b/packages/common/locales/extra/nnh.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/nnh.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/nus.ts b/packages/common/locales/extra/nus.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/nus.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/nyn.ts b/packages/common/locales/extra/nyn.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/nyn.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/om-KE.ts b/packages/common/locales/extra/om-KE.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/om-KE.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/om.ts b/packages/common/locales/extra/om.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/om.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/or.ts b/packages/common/locales/extra/or.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/or.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/os-RU.ts b/packages/common/locales/extra/os-RU.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/os-RU.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/os.ts b/packages/common/locales/extra/os.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/os.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/pa-Arab.ts b/packages/common/locales/extra/pa-Arab.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/pa-Arab.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/pa-Guru.ts b/packages/common/locales/extra/pa-Guru.ts deleted file mode 100644 index 03faf1cdad..0000000000 --- a/packages/common/locales/extra/pa-Guru.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['ਅੱਧੀ ਰਾਤ', 'ਸਵੇਰੇ', 'ਦੁਪਹਿਰੇ', 'ਸ਼ਾਮੀਂ', 'ਰਾਤੀਂ'], u, u], - [['ਅੱਧੀ ਰਾਤ', 'ਸਵੇਰੇ', 'ਦੁਪਹਿਰੇ', 'ਸ਼ਾਮੀਂ', 'ਰਾਤੀਂ'], u, ['ਅੱਧੀ ਰਾਤ', 'ਸਵੇਰੇ', 'ਦੁਪਹਿਰੇ', 'ਸ਼ਾਮ', 'ਰਾਤ']], - ['00:00', ['04:00', '12:00'], ['12:00', '16:00'], ['16:00', '21:00'], ['21:00', '04:00']] -]; diff --git a/packages/common/locales/extra/pa.ts b/packages/common/locales/extra/pa.ts deleted file mode 100644 index 03faf1cdad..0000000000 --- a/packages/common/locales/extra/pa.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['ਅੱਧੀ ਰਾਤ', 'ਸਵੇਰੇ', 'ਦੁਪਹਿਰੇ', 'ਸ਼ਾਮੀਂ', 'ਰਾਤੀਂ'], u, u], - [['ਅੱਧੀ ਰਾਤ', 'ਸਵੇਰੇ', 'ਦੁਪਹਿਰੇ', 'ਸ਼ਾਮੀਂ', 'ਰਾਤੀਂ'], u, ['ਅੱਧੀ ਰਾਤ', 'ਸਵੇਰੇ', 'ਦੁਪਹਿਰੇ', 'ਸ਼ਾਮ', 'ਰਾਤ']], - ['00:00', ['04:00', '12:00'], ['12:00', '16:00'], ['16:00', '21:00'], ['21:00', '04:00']] -]; diff --git a/packages/common/locales/extra/pl.ts b/packages/common/locales/extra/pl.ts deleted file mode 100644 index 1fd54a047b..0000000000 --- a/packages/common/locales/extra/pl.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['o półn.', 'w poł.', 'rano', 'przed poł.', 'po poł.', 'wiecz.', 'w nocy'], - ['o północy', 'w południe', 'rano', 'przed południem', 'po południu', 'wieczorem', 'w nocy'], u - ], - [ - ['półn.', 'poł.', 'rano', 'przedpoł.', 'popoł.', 'wiecz.', 'noc'], - ['północ', 'południe', 'rano', 'przedpołudnie', 'popołudnie', 'wieczór', 'noc'], u - ], - [ - '00:00', '12:00', ['06:00', '10:00'], ['10:00', '12:00'], ['12:00', '18:00'], - ['18:00', '21:00'], ['21:00', '06:00'] - ] -]; diff --git a/packages/common/locales/extra/prg.ts b/packages/common/locales/extra/prg.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/prg.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ps-PK.ts b/packages/common/locales/extra/ps-PK.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ps-PK.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ps.ts b/packages/common/locales/extra/ps.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ps.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/pt-AO.ts b/packages/common/locales/extra/pt-AO.ts deleted file mode 100644 index a5444c855d..0000000000 --- a/packages/common/locales/extra/pt-AO.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], - ['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u - ], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/pt-CH.ts b/packages/common/locales/extra/pt-CH.ts deleted file mode 100644 index a5444c855d..0000000000 --- a/packages/common/locales/extra/pt-CH.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], - ['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u - ], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/pt-CV.ts b/packages/common/locales/extra/pt-CV.ts deleted file mode 100644 index a5444c855d..0000000000 --- a/packages/common/locales/extra/pt-CV.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], - ['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u - ], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/pt-GQ.ts b/packages/common/locales/extra/pt-GQ.ts deleted file mode 100644 index a5444c855d..0000000000 --- a/packages/common/locales/extra/pt-GQ.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], - ['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u - ], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/pt-GW.ts b/packages/common/locales/extra/pt-GW.ts deleted file mode 100644 index a5444c855d..0000000000 --- a/packages/common/locales/extra/pt-GW.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], - ['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u - ], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/pt-LU.ts b/packages/common/locales/extra/pt-LU.ts deleted file mode 100644 index a5444c855d..0000000000 --- a/packages/common/locales/extra/pt-LU.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], - ['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u - ], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/pt-MO.ts b/packages/common/locales/extra/pt-MO.ts deleted file mode 100644 index a5444c855d..0000000000 --- a/packages/common/locales/extra/pt-MO.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], - ['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u - ], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/pt-MZ.ts b/packages/common/locales/extra/pt-MZ.ts deleted file mode 100644 index a5444c855d..0000000000 --- a/packages/common/locales/extra/pt-MZ.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], - ['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u - ], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/pt-PT.ts b/packages/common/locales/extra/pt-PT.ts deleted file mode 100644 index a5444c855d..0000000000 --- a/packages/common/locales/extra/pt-PT.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], - ['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u - ], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/pt-ST.ts b/packages/common/locales/extra/pt-ST.ts deleted file mode 100644 index a5444c855d..0000000000 --- a/packages/common/locales/extra/pt-ST.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], - ['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u - ], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/pt-TL.ts b/packages/common/locales/extra/pt-TL.ts deleted file mode 100644 index a5444c855d..0000000000 --- a/packages/common/locales/extra/pt-TL.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], - ['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u - ], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/pt.ts b/packages/common/locales/extra/pt.ts deleted file mode 100644 index 4b5c4358fb..0000000000 --- a/packages/common/locales/extra/pt.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u, u], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], ['00:00', '06:00']] -]; diff --git a/packages/common/locales/extra/qu-BO.ts b/packages/common/locales/extra/qu-BO.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/qu-BO.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/qu-EC.ts b/packages/common/locales/extra/qu-EC.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/qu-EC.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/qu.ts b/packages/common/locales/extra/qu.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/qu.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/rm.ts b/packages/common/locales/extra/rm.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/rm.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/rn.ts b/packages/common/locales/extra/rn.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/rn.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ro-MD.ts b/packages/common/locales/extra/ro-MD.ts deleted file mode 100644 index 354ebf6505..0000000000 --- a/packages/common/locales/extra/ro-MD.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['miezul nopții', 'amiază', 'dimineață', 'după-amiază', 'seară', 'noapte'], - ['miezul nopții', 'amiază', 'dimineața', 'după-amiaza', 'seara', 'noaptea'], u - ], - u, - ['00:00', '12:00', ['05:00', '12:00'], ['12:00', '18:00'], ['18:00', '22:00'], ['22:00', '05:00']] -]; diff --git a/packages/common/locales/extra/ro.ts b/packages/common/locales/extra/ro.ts deleted file mode 100644 index c14ab78f59..0000000000 --- a/packages/common/locales/extra/ro.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['miezul nopții', 'la amiază', 'dimineața', 'după-amiaza', 'seara', 'noaptea'], - ['miezul nopții', 'amiază', 'dimineața', 'după-amiaza', 'seara', 'noaptea'], - ['la miezul nopții', 'la amiază', 'dimineața', 'după-amiaza', 'seara', 'noaptea'] - ], - [ - ['miezul nopții', 'amiază', 'dimineața', 'după-amiaza', 'seara', 'noaptea'], u, - ['la miezul nopții', 'la amiază', 'dimineața', 'după-amiaza', 'seara', 'noaptea'] - ], - ['00:00', '12:00', ['05:00', '12:00'], ['12:00', '18:00'], ['18:00', '22:00'], ['22:00', '05:00']] -]; diff --git a/packages/common/locales/extra/rof.ts b/packages/common/locales/extra/rof.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/rof.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/root.ts b/packages/common/locales/extra/root.ts deleted file mode 100644 index 3e6b437f93..0000000000 --- a/packages/common/locales/extra/root.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/ru-BY.ts b/packages/common/locales/extra/ru-BY.ts deleted file mode 100644 index 55dcebcbbf..0000000000 --- a/packages/common/locales/extra/ru-BY.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['полн.', 'полд.', 'утра', 'дня', 'веч.', 'ночи'], - ['полн.', 'полд.', 'утра', 'дня', 'вечера', 'ночи'], - ['полночь', 'полдень', 'утра', 'дня', 'вечера', 'ночи'] - ], - [ - ['полн.', 'полд.', 'утро', 'день', 'веч.', 'ночь'], u, - ['полночь', 'полдень', 'утро', 'день', 'вечер', 'ночь'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/ru-KG.ts b/packages/common/locales/extra/ru-KG.ts deleted file mode 100644 index 55dcebcbbf..0000000000 --- a/packages/common/locales/extra/ru-KG.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['полн.', 'полд.', 'утра', 'дня', 'веч.', 'ночи'], - ['полн.', 'полд.', 'утра', 'дня', 'вечера', 'ночи'], - ['полночь', 'полдень', 'утра', 'дня', 'вечера', 'ночи'] - ], - [ - ['полн.', 'полд.', 'утро', 'день', 'веч.', 'ночь'], u, - ['полночь', 'полдень', 'утро', 'день', 'вечер', 'ночь'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/ru-KZ.ts b/packages/common/locales/extra/ru-KZ.ts deleted file mode 100644 index 55dcebcbbf..0000000000 --- a/packages/common/locales/extra/ru-KZ.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['полн.', 'полд.', 'утра', 'дня', 'веч.', 'ночи'], - ['полн.', 'полд.', 'утра', 'дня', 'вечера', 'ночи'], - ['полночь', 'полдень', 'утра', 'дня', 'вечера', 'ночи'] - ], - [ - ['полн.', 'полд.', 'утро', 'день', 'веч.', 'ночь'], u, - ['полночь', 'полдень', 'утро', 'день', 'вечер', 'ночь'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/ru-MD.ts b/packages/common/locales/extra/ru-MD.ts deleted file mode 100644 index 55dcebcbbf..0000000000 --- a/packages/common/locales/extra/ru-MD.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['полн.', 'полд.', 'утра', 'дня', 'веч.', 'ночи'], - ['полн.', 'полд.', 'утра', 'дня', 'вечера', 'ночи'], - ['полночь', 'полдень', 'утра', 'дня', 'вечера', 'ночи'] - ], - [ - ['полн.', 'полд.', 'утро', 'день', 'веч.', 'ночь'], u, - ['полночь', 'полдень', 'утро', 'день', 'вечер', 'ночь'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/ru-UA.ts b/packages/common/locales/extra/ru-UA.ts deleted file mode 100644 index 55dcebcbbf..0000000000 --- a/packages/common/locales/extra/ru-UA.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['полн.', 'полд.', 'утра', 'дня', 'веч.', 'ночи'], - ['полн.', 'полд.', 'утра', 'дня', 'вечера', 'ночи'], - ['полночь', 'полдень', 'утра', 'дня', 'вечера', 'ночи'] - ], - [ - ['полн.', 'полд.', 'утро', 'день', 'веч.', 'ночь'], u, - ['полночь', 'полдень', 'утро', 'день', 'вечер', 'ночь'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/ru.ts b/packages/common/locales/extra/ru.ts deleted file mode 100644 index 55dcebcbbf..0000000000 --- a/packages/common/locales/extra/ru.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['полн.', 'полд.', 'утра', 'дня', 'веч.', 'ночи'], - ['полн.', 'полд.', 'утра', 'дня', 'вечера', 'ночи'], - ['полночь', 'полдень', 'утра', 'дня', 'вечера', 'ночи'] - ], - [ - ['полн.', 'полд.', 'утро', 'день', 'веч.', 'ночь'], u, - ['полночь', 'полдень', 'утро', 'день', 'вечер', 'ночь'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/rw.ts b/packages/common/locales/extra/rw.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/rw.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/rwk.ts b/packages/common/locales/extra/rwk.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/rwk.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/sah.ts b/packages/common/locales/extra/sah.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/sah.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/saq.ts b/packages/common/locales/extra/saq.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/saq.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/sbp.ts b/packages/common/locales/extra/sbp.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/sbp.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/sd.ts b/packages/common/locales/extra/sd.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/sd.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/se-FI.ts b/packages/common/locales/extra/se-FI.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/se-FI.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/se-SE.ts b/packages/common/locales/extra/se-SE.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/se-SE.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/se.ts b/packages/common/locales/extra/se.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/se.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/seh.ts b/packages/common/locales/extra/seh.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/seh.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ses.ts b/packages/common/locales/extra/ses.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ses.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/sg.ts b/packages/common/locales/extra/sg.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/sg.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/shi-Latn.ts b/packages/common/locales/extra/shi-Latn.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/shi-Latn.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/shi-Tfng.ts b/packages/common/locales/extra/shi-Tfng.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/shi-Tfng.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/shi.ts b/packages/common/locales/extra/shi.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/shi.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/si.ts b/packages/common/locales/extra/si.ts deleted file mode 100644 index 660a75c6d6..0000000000 --- a/packages/common/locales/extra/si.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['මැ', 'ම', 'පා', 'උ', 'ද', 'හ', 'රෑ', 'මැ'], - ['මැදියම', 'මධ්\u200dයාහ්නය', 'පාන්දර', 'උදේ', 'දවල්', 'හවස', 'රෑ', 'මැදියමට පසු'], u - ], - [['මැදියම', 'මධ්\u200dයාහ්නය', 'පාන්දර', 'උදේ', 'දවල්', 'හවස', 'රෑ', 'මැදියමට පසු'], u, u], - [ - '00:00', '12:00', ['01:00', '06:00'], ['06:00', '12:00'], ['12:00', '14:00'], - ['14:00', '18:00'], ['18:00', '24:00'], ['00:00', '01:00'] - ] -]; diff --git a/packages/common/locales/extra/sk.ts b/packages/common/locales/extra/sk.ts deleted file mode 100644 index 621cb31d83..0000000000 --- a/packages/common/locales/extra/sk.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['o poln.', 'nap.', 'ráno', 'dop.', 'pop.', 'več.', 'v n.'], - ['o poln.', 'napol.', 'ráno', 'dopol.', 'popol.', 'večer', 'v noci'], - ['o polnoci', 'napoludnie', 'ráno', 'dopoludnia', 'popoludní', 'večer', 'v noci'] - ], - [ - ['poln.', 'pol.', 'ráno', 'dop.', 'pop.', 'več.', 'noc'], - ['poln.', 'pol.', 'ráno', 'dopol.', 'popol.', 'večer', 'noc'], - ['polnoc', 'poludnie', 'ráno', 'dopoludnie', 'popoludnie', 'večer', 'noc'] - ], - [ - '00:00', '12:00', ['04:00', '09:00'], ['09:00', '12:00'], ['12:00', '18:00'], - ['18:00', '22:00'], ['22:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/sl.ts b/packages/common/locales/extra/sl.ts deleted file mode 100644 index f47b69627f..0000000000 --- a/packages/common/locales/extra/sl.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['24.00', '12.00', 'zj', 'd', 'p', 'zv', 'po'], - ['opoln.', 'opold.', 'zjut.', 'dop.', 'pop.', 'zveč.', 'ponoči'], - ['opolnoči', 'opoldne', 'zjutraj', 'dopoldan', 'popoldan', 'zvečer', 'ponoči'] - ], - [ - ['24.00', '12.00', 'j', 'd', 'p', 'v', 'n'], - ['poln.', 'pold.', 'jut.', 'dop.', 'pop.', 'zveč.', 'noč'], - ['polnoč', 'poldne', 'jutro', 'dopoldne', 'popoldne', 'večer', 'noč'] - ], - [ - '00:00', '12:00', ['06:00', '10:00'], ['10:00', '12:00'], ['12:00', '18:00'], - ['18:00', '22:00'], ['22:00', '06:00'] - ] -]; diff --git a/packages/common/locales/extra/smn.ts b/packages/common/locales/extra/smn.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/smn.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/sn.ts b/packages/common/locales/extra/sn.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/sn.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/so-DJ.ts b/packages/common/locales/extra/so-DJ.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/so-DJ.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/so-ET.ts b/packages/common/locales/extra/so-ET.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/so-ET.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/so-KE.ts b/packages/common/locales/extra/so-KE.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/so-KE.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/so.ts b/packages/common/locales/extra/so.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/so.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/sq-MK.ts b/packages/common/locales/extra/sq-MK.ts deleted file mode 100644 index 75bdce613d..0000000000 --- a/packages/common/locales/extra/sq-MK.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - [ - 'e mesnatës', 'e mesditës', 'e mëngjesit', 'e paradites', 'e pasdites', 'e mbrëmjes', - 'e natës' - ], - u, u - ], - [['mesnatë', 'mesditë', 'mëngjes', 'paradite', 'pasdite', 'mbrëmje', 'natë'], u, u], - [ - '00:00', '12:00', ['04:00', '09:00'], ['09:00', '12:00'], ['12:00', '18:00'], - ['18:00', '24:00'], ['00:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/sq-XK.ts b/packages/common/locales/extra/sq-XK.ts deleted file mode 100644 index 75bdce613d..0000000000 --- a/packages/common/locales/extra/sq-XK.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - [ - 'e mesnatës', 'e mesditës', 'e mëngjesit', 'e paradites', 'e pasdites', 'e mbrëmjes', - 'e natës' - ], - u, u - ], - [['mesnatë', 'mesditë', 'mëngjes', 'paradite', 'pasdite', 'mbrëmje', 'natë'], u, u], - [ - '00:00', '12:00', ['04:00', '09:00'], ['09:00', '12:00'], ['12:00', '18:00'], - ['18:00', '24:00'], ['00:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/sq.ts b/packages/common/locales/extra/sq.ts deleted file mode 100644 index 75bdce613d..0000000000 --- a/packages/common/locales/extra/sq.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - [ - 'e mesnatës', 'e mesditës', 'e mëngjesit', 'e paradites', 'e pasdites', 'e mbrëmjes', - 'e natës' - ], - u, u - ], - [['mesnatë', 'mesditë', 'mëngjes', 'paradite', 'pasdite', 'mbrëmje', 'natë'], u, u], - [ - '00:00', '12:00', ['04:00', '09:00'], ['09:00', '12:00'], ['12:00', '18:00'], - ['18:00', '24:00'], ['00:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/sr-Cyrl-BA.ts b/packages/common/locales/extra/sr-Cyrl-BA.ts deleted file mode 100644 index 9d24a7ae4f..0000000000 --- a/packages/common/locales/extra/sr-Cyrl-BA.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['поноћ', 'подне', 'јутро', 'по под.', 'вече', 'ноћ'], - ['поноћ', 'подне', 'јутро', 'по под.', 'вече', 'ноћу'], - ['поноћ', 'подне', 'ујутро', 'по подне', 'увече', 'ноћу'] - ], - [['поноћ', 'подне', 'јутро', 'поподне', 'вече', 'ноћ'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/sr-Cyrl-ME.ts b/packages/common/locales/extra/sr-Cyrl-ME.ts deleted file mode 100644 index 9d24a7ae4f..0000000000 --- a/packages/common/locales/extra/sr-Cyrl-ME.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['поноћ', 'подне', 'јутро', 'по под.', 'вече', 'ноћ'], - ['поноћ', 'подне', 'јутро', 'по под.', 'вече', 'ноћу'], - ['поноћ', 'подне', 'ујутро', 'по подне', 'увече', 'ноћу'] - ], - [['поноћ', 'подне', 'јутро', 'поподне', 'вече', 'ноћ'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/sr-Cyrl-XK.ts b/packages/common/locales/extra/sr-Cyrl-XK.ts deleted file mode 100644 index e8467eccb8..0000000000 --- a/packages/common/locales/extra/sr-Cyrl-XK.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['поноћ', 'подне', 'јутро', 'по под.', 'вече', 'ноћ'], - ['поноћ', 'подне', 'јутро', 'по под.', 'увече', 'ноћу'], - ['поноћ', 'подне', 'ујутро', 'по подне', 'увече', 'ноћу'] - ], - [['поноћ', 'подне', 'јутро', 'поподне', 'вече', 'ноћ'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/sr-Cyrl.ts b/packages/common/locales/extra/sr-Cyrl.ts deleted file mode 100644 index 0373359c2e..0000000000 --- a/packages/common/locales/extra/sr-Cyrl.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['поноћ', 'подне', 'ујутру', 'по подне', 'увече', 'ноћу'], - ['поноћ', 'подне', 'ујутро', 'по подне', 'увече', 'ноћу'], u - ], - [['поноћ', 'подне', 'јутро', 'поподне', 'вече', 'ноћ'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/sr-Latn-BA.ts b/packages/common/locales/extra/sr-Latn-BA.ts deleted file mode 100644 index 40ac480fbc..0000000000 --- a/packages/common/locales/extra/sr-Latn-BA.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['ponoć', 'podne', 'jutro', 'po pod.', 'veče', 'noć'], - ['ponoć', 'podne', 'jutro', 'po pod.', 'veče', 'noću'], - ['ponoć', 'podne', 'ujutro', 'po podne', 'uveče', 'noću'] - ], - [['ponoć', 'podne', 'jutro', 'popodne', 'veče', 'noć'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/sr-Latn-ME.ts b/packages/common/locales/extra/sr-Latn-ME.ts deleted file mode 100644 index 40ac480fbc..0000000000 --- a/packages/common/locales/extra/sr-Latn-ME.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['ponoć', 'podne', 'jutro', 'po pod.', 'veče', 'noć'], - ['ponoć', 'podne', 'jutro', 'po pod.', 'veče', 'noću'], - ['ponoć', 'podne', 'ujutro', 'po podne', 'uveče', 'noću'] - ], - [['ponoć', 'podne', 'jutro', 'popodne', 'veče', 'noć'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/sr-Latn-XK.ts b/packages/common/locales/extra/sr-Latn-XK.ts deleted file mode 100644 index 26b7589ffd..0000000000 --- a/packages/common/locales/extra/sr-Latn-XK.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['ponoć', 'podne', 'jutro', 'po pod.', 'veče', 'noć'], - ['ponoć', 'podne', 'jutro', 'po pod.', 'uveče', 'noću'], - ['ponoć', 'podne', 'ujutro', 'po podne', 'uveče', 'noću'] - ], - [['ponoć', 'podne', 'jutro', 'popodne', 'veče', 'noć'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/sr-Latn.ts b/packages/common/locales/extra/sr-Latn.ts deleted file mode 100644 index 8253e38400..0000000000 --- a/packages/common/locales/extra/sr-Latn.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['ponoć', 'podne', 'ujutru', 'po podne', 'uveče', 'noću'], - ['ponoć', 'podne', 'ujutro', 'po podne', 'uveče', 'noću'], u - ], - [['ponoć', 'podne', 'jutro', 'popodne', 'veče', 'noć'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/sr.ts b/packages/common/locales/extra/sr.ts deleted file mode 100644 index 0373359c2e..0000000000 --- a/packages/common/locales/extra/sr.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['поноћ', 'подне', 'ујутру', 'по подне', 'увече', 'ноћу'], - ['поноћ', 'подне', 'ујутро', 'по подне', 'увече', 'ноћу'], u - ], - [['поноћ', 'подне', 'јутро', 'поподне', 'вече', 'ноћ'], u, u], - ['00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/sv-AX.ts b/packages/common/locales/extra/sv-AX.ts deleted file mode 100644 index 3068edc57e..0000000000 --- a/packages/common/locales/extra/sv-AX.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['midn.', 'på morg.', 'på förm.', 'på efterm.', 'på kvällen', 'på natten'], - ['midnatt', 'på morg.', 'på förm.', 'på efterm.', 'på kvällen', 'på natten'], - ['midnatt', 'på morgonen', 'på förmiddagen', 'på eftermiddagen', 'på kvällen', 'på natten'] - ], - [ - ['midn.', 'morg.', 'förm.', 'efterm.', 'kväll', 'natt'], - ['midnatt', 'morgon', 'förm.', 'efterm.', 'kväll', 'natt'], - ['midnatt', 'morgon', 'förmiddag', 'eftermiddag', 'kväll', 'natt'] - ], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/sv-FI.ts b/packages/common/locales/extra/sv-FI.ts deleted file mode 100644 index 3068edc57e..0000000000 --- a/packages/common/locales/extra/sv-FI.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['midn.', 'på morg.', 'på förm.', 'på efterm.', 'på kvällen', 'på natten'], - ['midnatt', 'på morg.', 'på förm.', 'på efterm.', 'på kvällen', 'på natten'], - ['midnatt', 'på morgonen', 'på förmiddagen', 'på eftermiddagen', 'på kvällen', 'på natten'] - ], - [ - ['midn.', 'morg.', 'förm.', 'efterm.', 'kväll', 'natt'], - ['midnatt', 'morgon', 'förm.', 'efterm.', 'kväll', 'natt'], - ['midnatt', 'morgon', 'förmiddag', 'eftermiddag', 'kväll', 'natt'] - ], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/sv.ts b/packages/common/locales/extra/sv.ts deleted file mode 100644 index 3068edc57e..0000000000 --- a/packages/common/locales/extra/sv.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['midn.', 'på morg.', 'på förm.', 'på efterm.', 'på kvällen', 'på natten'], - ['midnatt', 'på morg.', 'på förm.', 'på efterm.', 'på kvällen', 'på natten'], - ['midnatt', 'på morgonen', 'på förmiddagen', 'på eftermiddagen', 'på kvällen', 'på natten'] - ], - [ - ['midn.', 'morg.', 'förm.', 'efterm.', 'kväll', 'natt'], - ['midnatt', 'morgon', 'förm.', 'efterm.', 'kväll', 'natt'], - ['midnatt', 'morgon', 'förmiddag', 'eftermiddag', 'kväll', 'natt'] - ], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/sw-CD.ts b/packages/common/locales/extra/sw-CD.ts deleted file mode 100644 index b3056a5fa5..0000000000 --- a/packages/common/locales/extra/sw-CD.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['usiku', 'mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'], - ['saa sita za usiku', 'adhuhuri', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'], - ['saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'] - ], - [ - ['saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'], - ['saa sita za usiku', 'adhuhuri', 'alfajiri', 'asubuhi', 'alasiri', 'jioni', 'usiku'], - ['saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'] - ], - [ - '00:00', '12:00', ['04:00', '07:00'], ['07:00', '12:00'], ['12:00', '16:00'], - ['16:00', '19:00'], ['19:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/sw-KE.ts b/packages/common/locales/extra/sw-KE.ts deleted file mode 100644 index b3056a5fa5..0000000000 --- a/packages/common/locales/extra/sw-KE.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['usiku', 'mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'], - ['saa sita za usiku', 'adhuhuri', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'], - ['saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'] - ], - [ - ['saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'], - ['saa sita za usiku', 'adhuhuri', 'alfajiri', 'asubuhi', 'alasiri', 'jioni', 'usiku'], - ['saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'] - ], - [ - '00:00', '12:00', ['04:00', '07:00'], ['07:00', '12:00'], ['12:00', '16:00'], - ['16:00', '19:00'], ['19:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/sw-UG.ts b/packages/common/locales/extra/sw-UG.ts deleted file mode 100644 index b3056a5fa5..0000000000 --- a/packages/common/locales/extra/sw-UG.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['usiku', 'mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'], - ['saa sita za usiku', 'adhuhuri', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'], - ['saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'] - ], - [ - ['saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'], - ['saa sita za usiku', 'adhuhuri', 'alfajiri', 'asubuhi', 'alasiri', 'jioni', 'usiku'], - ['saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'] - ], - [ - '00:00', '12:00', ['04:00', '07:00'], ['07:00', '12:00'], ['12:00', '16:00'], - ['16:00', '19:00'], ['19:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/sw.ts b/packages/common/locales/extra/sw.ts deleted file mode 100644 index b3056a5fa5..0000000000 --- a/packages/common/locales/extra/sw.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['usiku', 'mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'], - ['saa sita za usiku', 'adhuhuri', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'], - ['saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'] - ], - [ - ['saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'], - ['saa sita za usiku', 'adhuhuri', 'alfajiri', 'asubuhi', 'alasiri', 'jioni', 'usiku'], - ['saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'] - ], - [ - '00:00', '12:00', ['04:00', '07:00'], ['07:00', '12:00'], ['12:00', '16:00'], - ['16:00', '19:00'], ['19:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/ta-LK.ts b/packages/common/locales/extra/ta-LK.ts deleted file mode 100644 index 8259e6aa35..0000000000 --- a/packages/common/locales/extra/ta-LK.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['நள்.', 'நண்.', 'அதி.', 'கா.', 'மதி.', 'பிற்.', 'மா.', 'அந்தி மா.', 'இர.'], - ['நள்ளிரவு', 'நண்பகல்', 'அதிகாலை', 'காலை', 'மதியம்', 'பிற்பகல்', 'மாலை', 'அந்தி மாலை', 'இரவு'], u - ], - [ - ['நள்.', 'நண்.', 'அதி.', 'கா.', 'மதி.', 'பிற்.', 'மா.', 'அந்தி மா.', 'இ.'], - ['நள்ளிரவு', 'நண்பகல்', 'அதிகாலை', 'காலை', 'மதியம்', 'பிற்பகல்', 'மாலை', 'அந்தி மாலை', 'இரவு'], u - ], - [ - '00:00', '12:00', ['03:00', '05:00'], ['05:00', '12:00'], ['12:00', '14:00'], - ['14:00', '16:00'], ['16:00', '18:00'], ['18:00', '21:00'], ['21:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ta-MY.ts b/packages/common/locales/extra/ta-MY.ts deleted file mode 100644 index 8259e6aa35..0000000000 --- a/packages/common/locales/extra/ta-MY.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['நள்.', 'நண்.', 'அதி.', 'கா.', 'மதி.', 'பிற்.', 'மா.', 'அந்தி மா.', 'இர.'], - ['நள்ளிரவு', 'நண்பகல்', 'அதிகாலை', 'காலை', 'மதியம்', 'பிற்பகல்', 'மாலை', 'அந்தி மாலை', 'இரவு'], u - ], - [ - ['நள்.', 'நண்.', 'அதி.', 'கா.', 'மதி.', 'பிற்.', 'மா.', 'அந்தி மா.', 'இ.'], - ['நள்ளிரவு', 'நண்பகல்', 'அதிகாலை', 'காலை', 'மதியம்', 'பிற்பகல்', 'மாலை', 'அந்தி மாலை', 'இரவு'], u - ], - [ - '00:00', '12:00', ['03:00', '05:00'], ['05:00', '12:00'], ['12:00', '14:00'], - ['14:00', '16:00'], ['16:00', '18:00'], ['18:00', '21:00'], ['21:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ta-SG.ts b/packages/common/locales/extra/ta-SG.ts deleted file mode 100644 index 8259e6aa35..0000000000 --- a/packages/common/locales/extra/ta-SG.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['நள்.', 'நண்.', 'அதி.', 'கா.', 'மதி.', 'பிற்.', 'மா.', 'அந்தி மா.', 'இர.'], - ['நள்ளிரவு', 'நண்பகல்', 'அதிகாலை', 'காலை', 'மதியம்', 'பிற்பகல்', 'மாலை', 'அந்தி மாலை', 'இரவு'], u - ], - [ - ['நள்.', 'நண்.', 'அதி.', 'கா.', 'மதி.', 'பிற்.', 'மா.', 'அந்தி மா.', 'இ.'], - ['நள்ளிரவு', 'நண்பகல்', 'அதிகாலை', 'காலை', 'மதியம்', 'பிற்பகல்', 'மாலை', 'அந்தி மாலை', 'இரவு'], u - ], - [ - '00:00', '12:00', ['03:00', '05:00'], ['05:00', '12:00'], ['12:00', '14:00'], - ['14:00', '16:00'], ['16:00', '18:00'], ['18:00', '21:00'], ['21:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/ta.ts b/packages/common/locales/extra/ta.ts deleted file mode 100644 index 8259e6aa35..0000000000 --- a/packages/common/locales/extra/ta.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['நள்.', 'நண்.', 'அதி.', 'கா.', 'மதி.', 'பிற்.', 'மா.', 'அந்தி மா.', 'இர.'], - ['நள்ளிரவு', 'நண்பகல்', 'அதிகாலை', 'காலை', 'மதியம்', 'பிற்பகல்', 'மாலை', 'அந்தி மாலை', 'இரவு'], u - ], - [ - ['நள்.', 'நண்.', 'அதி.', 'கா.', 'மதி.', 'பிற்.', 'மா.', 'அந்தி மா.', 'இ.'], - ['நள்ளிரவு', 'நண்பகல்', 'அதிகாலை', 'காலை', 'மதியம்', 'பிற்பகல்', 'மாலை', 'அந்தி மாலை', 'இரவு'], u - ], - [ - '00:00', '12:00', ['03:00', '05:00'], ['05:00', '12:00'], ['12:00', '14:00'], - ['14:00', '16:00'], ['16:00', '18:00'], ['18:00', '21:00'], ['21:00', '03:00'] - ] -]; diff --git a/packages/common/locales/extra/te.ts b/packages/common/locales/extra/te.ts deleted file mode 100644 index e6ee55db54..0000000000 --- a/packages/common/locales/extra/te.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['అర్ధరాత్రి', 'ఉదయం', 'మధ్యాహ్నం', 'సాయంత్రం', 'రాత్రి'], u, u], u, - ['00:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] -]; diff --git a/packages/common/locales/extra/teo-KE.ts b/packages/common/locales/extra/teo-KE.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/teo-KE.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/teo.ts b/packages/common/locales/extra/teo.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/teo.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/tg.ts b/packages/common/locales/extra/tg.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/tg.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/th.ts b/packages/common/locales/extra/th.ts deleted file mode 100644 index 975e91f3aa..0000000000 --- a/packages/common/locales/extra/th.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['เที่ยงคืน', 'เที่ยง', 'เช้า', 'เที่ยง', 'บ่าย', 'เย็น', 'ค่ำ', 'กลางคืน'], - ['เที่ยงคืน', 'เที่ยง', 'ในตอนเช้า', 'ในตอนบ่าย', 'บ่าย', 'ในตอนเย็น', 'ค่ำ', 'กลางคืน'], u - ], - [ - ['เที่ยงคืน', 'เที่ยง', 'เช้า', 'ช่วงเที่ยง', 'บ่าย', 'เย็น', 'ค่ำ', 'กลางคืน'], - ['เที่ยงคืน', 'เที่ยง', 'ในตอนเช้า', 'ในตอนบ่าย', 'บ่าย', 'ในตอนเย็น', 'ค่ำ', 'กลางคืน'], u - ], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '16:00'], - ['16:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00'] - ] -]; diff --git a/packages/common/locales/extra/ti-ER.ts b/packages/common/locales/extra/ti-ER.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ti-ER.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ti.ts b/packages/common/locales/extra/ti.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ti.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/tk.ts b/packages/common/locales/extra/tk.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/tk.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/to.ts b/packages/common/locales/extra/to.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/to.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/tr-CY.ts b/packages/common/locales/extra/tr-CY.ts deleted file mode 100644 index 17977e0f5f..0000000000 --- a/packages/common/locales/extra/tr-CY.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['gece', 'ö', 'sabah', 'öğleden önce', 'öğleden sonra', 'akşamüstü', 'akşam', 'gece'], - ['gece yarısı', 'öğle', 'sabah', 'öğleden önce', 'öğleden sonra', 'akşamüstü', 'akşam', 'gece'], - u - ], - [ - ['gece yarısı', 'öğle', 'sabah', 'öğleden önce', 'öğleden sonra', 'akşamüstü', 'akşam', 'gece'], - u, u - ], - [ - '00:00', '12:00', ['06:00', '11:00'], ['11:00', '12:00'], ['12:00', '18:00'], - ['18:00', '19:00'], ['19:00', '21:00'], ['21:00', '06:00'] - ] -]; diff --git a/packages/common/locales/extra/tr.ts b/packages/common/locales/extra/tr.ts deleted file mode 100644 index 17977e0f5f..0000000000 --- a/packages/common/locales/extra/tr.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['gece', 'ö', 'sabah', 'öğleden önce', 'öğleden sonra', 'akşamüstü', 'akşam', 'gece'], - ['gece yarısı', 'öğle', 'sabah', 'öğleden önce', 'öğleden sonra', 'akşamüstü', 'akşam', 'gece'], - u - ], - [ - ['gece yarısı', 'öğle', 'sabah', 'öğleden önce', 'öğleden sonra', 'akşamüstü', 'akşam', 'gece'], - u, u - ], - [ - '00:00', '12:00', ['06:00', '11:00'], ['11:00', '12:00'], ['12:00', '18:00'], - ['18:00', '19:00'], ['19:00', '21:00'], ['21:00', '06:00'] - ] -]; diff --git a/packages/common/locales/extra/tt.ts b/packages/common/locales/extra/tt.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/tt.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/twq.ts b/packages/common/locales/extra/twq.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/twq.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/tzm.ts b/packages/common/locales/extra/tzm.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/tzm.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/ug.ts b/packages/common/locales/extra/ug.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/ug.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/uk.ts b/packages/common/locales/extra/uk.ts deleted file mode 100644 index ebb5c8b87b..0000000000 --- a/packages/common/locales/extra/uk.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['північ', 'п', 'ранку', 'дня', 'вечора', 'ночі'], - ['опівночі', 'пополудні', 'ранку', 'дня', 'вечора', 'ночі'], u - ], - [ - ['північ', 'полудень', 'ранок', 'день', 'вечір', 'ніч'], u, - ['опівніч', 'полудень', 'ранок', 'день', 'вечір', 'ніч'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '04:00']] -]; diff --git a/packages/common/locales/extra/ur-IN.ts b/packages/common/locales/extra/ur-IN.ts deleted file mode 100644 index c313f1f451..0000000000 --- a/packages/common/locales/extra/ur-IN.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['آدھی رات', 'صبح', 'دوپہر', 'سہ پہر', 'شام', 'رات'], u, - ['آدھی رات', 'صبح میں', 'دوپہر میں', 'سہ پہر', 'شام میں', 'رات میں'] - ], - [['آدھی رات', 'صبح', 'دوپہر', 'سہ پہر', 'شام', 'رات'], u, u], - [ - '00:00', ['04:00', '12:00'], ['12:00', '16:00'], ['16:00', '18:00'], ['18:00', '20:00'], - ['20:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/ur.ts b/packages/common/locales/extra/ur.ts deleted file mode 100644 index c313f1f451..0000000000 --- a/packages/common/locales/extra/ur.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['آدھی رات', 'صبح', 'دوپہر', 'سہ پہر', 'شام', 'رات'], u, - ['آدھی رات', 'صبح میں', 'دوپہر میں', 'سہ پہر', 'شام میں', 'رات میں'] - ], - [['آدھی رات', 'صبح', 'دوپہر', 'سہ پہر', 'شام', 'رات'], u, u], - [ - '00:00', ['04:00', '12:00'], ['12:00', '16:00'], ['16:00', '18:00'], ['18:00', '20:00'], - ['20:00', '04:00'] - ] -]; diff --git a/packages/common/locales/extra/uz-Arab.ts b/packages/common/locales/extra/uz-Arab.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/uz-Arab.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/uz-Cyrl.ts b/packages/common/locales/extra/uz-Cyrl.ts deleted file mode 100644 index f6236a1329..0000000000 --- a/packages/common/locales/extra/uz-Cyrl.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['ярим тун', 'туш пайти', 'эрталаб', 'кундузи', 'кечқурун', 'кечаси'], u, u], u, - ['00:00', '12:00', ['06:00', '11:00'], ['11:00', '18:00'], ['18:00', '22:00'], ['22:00', '06:00']] -]; diff --git a/packages/common/locales/extra/uz-Latn.ts b/packages/common/locales/extra/uz-Latn.ts deleted file mode 100644 index a2faf872a4..0000000000 --- a/packages/common/locales/extra/uz-Latn.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['yarim tun', 'tush payti', 'ertalab', 'kunduzi', 'kechqurun', 'kechasi'], u, u], u, - ['00:00', '12:00', ['06:00', '11:00'], ['11:00', '18:00'], ['18:00', '22:00'], ['22:00', '06:00']] -]; diff --git a/packages/common/locales/extra/uz.ts b/packages/common/locales/extra/uz.ts deleted file mode 100644 index a2faf872a4..0000000000 --- a/packages/common/locales/extra/uz.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['yarim tun', 'tush payti', 'ertalab', 'kunduzi', 'kechqurun', 'kechasi'], u, u], u, - ['00:00', '12:00', ['06:00', '11:00'], ['11:00', '18:00'], ['18:00', '22:00'], ['22:00', '06:00']] -]; diff --git a/packages/common/locales/extra/vai-Latn.ts b/packages/common/locales/extra/vai-Latn.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/vai-Latn.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/vai-Vaii.ts b/packages/common/locales/extra/vai-Vaii.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/vai-Vaii.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/vai.ts b/packages/common/locales/extra/vai.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/vai.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/vi.ts b/packages/common/locales/extra/vi.ts deleted file mode 100644 index 6668616b00..0000000000 --- a/packages/common/locales/extra/vi.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['nửa đêm', 'tr', 'sáng', 'chiều', 'tối', 'đêm'], - ['nửa đêm', 'TR', 'sáng', 'chiều', 'tối', 'đêm'], u - ], - [ - ['nửa đêm', 'trưa', 'sáng', 'chiều', 'tối', 'đêm'], - ['nửa đêm', 'TR', 'sáng', 'chiều', 'tối', 'đêm'], - ['nửa đêm', 'trưa', 'sáng', 'chiều', 'tối', 'đêm'] - ], - ['00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '04:00']] -]; diff --git a/packages/common/locales/extra/vo.ts b/packages/common/locales/extra/vo.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/vo.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/vun.ts b/packages/common/locales/extra/vun.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/vun.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/wae.ts b/packages/common/locales/extra/wae.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/wae.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/wo.ts b/packages/common/locales/extra/wo.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/wo.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/xh.ts b/packages/common/locales/extra/xh.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/xh.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/xog.ts b/packages/common/locales/extra/xog.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/xog.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/yav.ts b/packages/common/locales/extra/yav.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/yav.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/yi.ts b/packages/common/locales/extra/yi.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/yi.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/yo-BJ.ts b/packages/common/locales/extra/yo-BJ.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/yo-BJ.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/yo.ts b/packages/common/locales/extra/yo.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/yo.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/yue-Hans.ts b/packages/common/locales/extra/yue-Hans.ts deleted file mode 100644 index 2d84d9b188..0000000000 --- a/packages/common/locales/extra/yue-Hans.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['午夜', '清晨', '朝早', '中午', '下昼', '夜晚', '凌晨'], u, u], u, - [ - '00:00', ['05:00', '08:00'], ['08:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/yue-Hant.ts b/packages/common/locales/extra/yue-Hant.ts deleted file mode 100644 index 2da6fd4f1e..0000000000 --- a/packages/common/locales/extra/yue-Hant.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['午夜', '清晨', '朝早', '中午', '下晝', '夜晚', '凌晨'], u, u], u, - [ - '00:00', ['05:00', '08:00'], ['08:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/yue.ts b/packages/common/locales/extra/yue.ts deleted file mode 100644 index 2da6fd4f1e..0000000000 --- a/packages/common/locales/extra/yue.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['午夜', '清晨', '朝早', '中午', '下晝', '夜晚', '凌晨'], u, u], u, - [ - '00:00', ['05:00', '08:00'], ['08:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/zgh.ts b/packages/common/locales/extra/zgh.ts deleted file mode 100644 index 460d1c15ee..0000000000 --- a/packages/common/locales/extra/zgh.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default []; diff --git a/packages/common/locales/extra/zh-Hans-HK.ts b/packages/common/locales/extra/zh-Hans-HK.ts deleted file mode 100644 index c7eb64f5a4..0000000000 --- a/packages/common/locales/extra/zh-Hans-HK.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, - ['午夜', '清晨', '上午', '中午', '下午', '晚上', '凌晨'] - ], - [['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, u], - [ - '00:00', ['05:00', '08:00'], ['08:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/zh-Hans-MO.ts b/packages/common/locales/extra/zh-Hans-MO.ts deleted file mode 100644 index c7eb64f5a4..0000000000 --- a/packages/common/locales/extra/zh-Hans-MO.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, - ['午夜', '清晨', '上午', '中午', '下午', '晚上', '凌晨'] - ], - [['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, u], - [ - '00:00', ['05:00', '08:00'], ['08:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/zh-Hans-SG.ts b/packages/common/locales/extra/zh-Hans-SG.ts deleted file mode 100644 index c7eb64f5a4..0000000000 --- a/packages/common/locales/extra/zh-Hans-SG.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, - ['午夜', '清晨', '上午', '中午', '下午', '晚上', '凌晨'] - ], - [['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, u], - [ - '00:00', ['05:00', '08:00'], ['08:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/zh-Hans.ts b/packages/common/locales/extra/zh-Hans.ts deleted file mode 100644 index c7eb64f5a4..0000000000 --- a/packages/common/locales/extra/zh-Hans.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, - ['午夜', '清晨', '上午', '中午', '下午', '晚上', '凌晨'] - ], - [['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, u], - [ - '00:00', ['05:00', '08:00'], ['08:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/zh-Hant-HK.ts b/packages/common/locales/extra/zh-Hant-HK.ts deleted file mode 100644 index 1459a936ea..0000000000 --- a/packages/common/locales/extra/zh-Hant-HK.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, u], u, - [ - '00:00', ['05:00', '08:00'], ['08:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/zh-Hant-MO.ts b/packages/common/locales/extra/zh-Hant-MO.ts deleted file mode 100644 index 1459a936ea..0000000000 --- a/packages/common/locales/extra/zh-Hant-MO.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, u], u, - [ - '00:00', ['05:00', '08:00'], ['08:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/zh-Hant.ts b/packages/common/locales/extra/zh-Hant.ts deleted file mode 100644 index c8a7f59121..0000000000 --- a/packages/common/locales/extra/zh-Hant.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['午夜', '清晨', '上午', '中午', '下午', '晚上', '凌晨'], u, u], u, - [ - '00:00', ['05:00', '08:00'], ['08:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/zh.ts b/packages/common/locales/extra/zh.ts deleted file mode 100644 index c7eb64f5a4..0000000000 --- a/packages/common/locales/extra/zh.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [ - ['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, - ['午夜', '清晨', '上午', '中午', '下午', '晚上', '凌晨'] - ], - [['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, u], - [ - '00:00', ['05:00', '08:00'], ['08:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '05:00'] - ] -]; diff --git a/packages/common/locales/extra/zu.ts b/packages/common/locales/extra/zu.ts deleted file mode 100644 index e527922006..0000000000 --- a/packages/common/locales/extra/zu.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -export default [ - [['entathakusa', 'ekuseni', 'emini', 'ntambama', 'ebusuku'], u, u], u, - [ - ['00:00', '06:00'], ['06:00', '10:00'], ['10:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'] - ] -]; diff --git a/packages/common/locales/fa-AF.ts b/packages/common/locales/fa-AF.ts deleted file mode 100644 index ec103b1510..0000000000 --- a/packages/common/locales/fa-AF.ts +++ /dev/null @@ -1,73 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} - -export default [ - 'fa-AF', - [['ق', 'ب'], ['ق.ظ.', 'ب.ظ.'], ['قبل\u200cازظهر', 'بعدازظهر']], - u, - [ - ['ی', 'د', 'س', 'چ', 'پ', 'ج', 'ش'], - ['یکشنبه', 'دوشنبه', 'سه\u200cشنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'], u, - ['۱ش', '۲ش', '۳ش', '۴ش', '۵ش', 'ج', 'ش'] - ], - u, - [ - ['ج', 'ف', 'م', 'ا', 'م', 'ج', 'ج', 'ا', 'س', 'ا', 'ن', 'د'], - [ - 'جنو', 'فبروری', 'مارچ', 'اپریل', 'می', 'جون', 'جول', 'اگست', 'سپتمبر', 'اکتوبر', 'نومبر', - 'دسم' - ], - [ - 'جنوری', 'فبروری', 'مارچ', 'اپریل', 'می', 'جون', 'جولای', 'اگست', 'سپتمبر', 'اکتوبر', 'نومبر', - 'دسمبر' - ] - ], - [ - ['ج', 'ف', 'م', 'ا', 'م', 'ج', 'ج', 'ا', 'س', 'ا', 'ن', 'د'], - [ - 'جنوری', 'فبروری', 'مارچ', 'اپریل', 'می', 'جون', 'جولای', 'اگست', 'سپتمبر', 'اکتوبر', 'نومبر', - 'دسمبر' - ], - u - ], - [['ق', 'م'], ['ق.م.', 'م.'], ['قبل از میلاد', 'میلادی']], - 6, - [4, 5], - ['y/M/d', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss (z)', 'H:mm:ss (zzzz)'], - ['{1}،\u200f {0}', u, '{1}، ساعت {0}', u], - ['.', ',', ';', '%', '\u200e+', '\u200e−', 'E', '×', '‰', '∞', 'ناعدد', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'AFN', - '؋', - 'افغانی افغانستان', - { - 'AFN': ['؋'], - 'CAD': ['$CA', '$'], - 'CNY': ['¥CN', '¥'], - 'HKD': ['$HK', '$'], - 'IRR': ['ریال'], - 'MXN': ['$MX', '$'], - 'NZD': ['$NZ', '$'], - 'THB': ['฿'], - 'XCD': ['$EC', '$'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/fa.ts b/packages/common/locales/fa.ts deleted file mode 100644 index 72c7f74669..0000000000 --- a/packages/common/locales/fa.ts +++ /dev/null @@ -1,70 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} - -export default [ - 'fa', - [['ق', 'ب'], ['ق.ظ.', 'ب.ظ.'], ['قبل\u200cازظهر', 'بعدازظهر']], - u, - [ - ['ی', 'د', 'س', 'چ', 'پ', 'ج', 'ش'], - ['یکشنبه', 'دوشنبه', 'سه\u200cشنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'], u, - ['۱ش', '۲ش', '۳ش', '۴ش', '۵ش', 'ج', 'ش'] - ], - u, - [ - ['ژ', 'ف', 'م', 'آ', 'م', 'ژ', 'ژ', 'ا', 'س', 'ا', 'ن', 'د'], - [ - 'ژانویهٔ', 'فوریهٔ', 'مارس', 'آوریل', 'مهٔ', 'ژوئن', 'ژوئیهٔ', 'اوت', 'سپتامبر', 'اکتبر', - 'نوامبر', 'دسامبر' - ], - u - ], - [ - ['ژ', 'ف', 'م', 'آ', 'م', 'ژ', 'ژ', 'ا', 'س', 'ا', 'ن', 'د'], - [ - 'ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن', 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', - 'نوامبر', 'دسامبر' - ], - u - ], - [['ق', 'م'], ['ق.م.', 'م.'], ['قبل از میلاد', 'میلادی']], - 6, - [5, 5], - ['y/M/d', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss (z)', 'H:mm:ss (zzzz)'], - ['{1}،\u200f {0}', u, '{1}، ساعت {0}', u], - ['.', ',', ';', '%', '\u200e+', '\u200e−', 'E', '×', '‰', '∞', 'ناعدد', ':'], - ['#,##0.###', '#,##0%', '\u200e¤ #,##0.00', '#E0'], - 'IRR', - 'ریال', - 'ریال ایران', - { - 'AFN': ['؋'], - 'CAD': ['$CA', '$'], - 'CNY': ['¥CN', '¥'], - 'HKD': ['$HK', '$'], - 'IRR': ['ریال'], - 'MXN': ['$MX', '$'], - 'NZD': ['$NZ', '$'], - 'THB': ['฿'], - 'XCD': ['$EC', '$'] - }, - 'rtl', - plural -]; diff --git a/packages/common/locales/ff-CM.ts b/packages/common/locales/ff-CM.ts index fb98451eb9..ac1d7c8575 100644 --- a/packages/common/locales/ff-CM.ts +++ b/packages/common/locales/ff-CM.ts @@ -6,8 +6,12 @@ * found in the LICENSE file at https://angular.io/license */ -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js +// **Note**: Locale files are generated through Bazel and never part of the sources. This is an +// exception for backwards compatibility. With the Gulp setup we never deleted old locale files +// when updating CLDR, so older locale files which have been removed, or renamed in the CLDR +// data remained in the repository. We keep these files checked-in until the next major to avoid +// potential breaking changes. It's worth noting that the locale data for such files is outdated +// anyway. e.g. the data is missing the directionality, throwing off the indices. const u = undefined; diff --git a/packages/common/locales/ff-GN.ts b/packages/common/locales/ff-GN.ts index 528d4427f5..34a1f19404 100644 --- a/packages/common/locales/ff-GN.ts +++ b/packages/common/locales/ff-GN.ts @@ -6,8 +6,12 @@ * found in the LICENSE file at https://angular.io/license */ -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js +// **Note**: Locale files are generated through Bazel and never part of the sources. This is an +// exception for backwards compatibility. With the Gulp setup we never deleted old locale files +// when updating CLDR, so older locale files which have been removed, or renamed in the CLDR +// data remained in the repository. We keep these files checked-in until the next major to avoid +// potential breaking changes. It's worth noting that the locale data for such files is outdated +// anyway. e.g. the data is missing the directionality, throwing off the indices. const u = undefined; diff --git a/packages/common/locales/ff-Latn-BF.ts b/packages/common/locales/ff-Latn-BF.ts deleted file mode 100644 index 13779adf5d..0000000000 --- a/packages/common/locales/ff-Latn-BF.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'ff-Latn-BF', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'Mbuuɗu Seefaa BCEAO', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ff-Latn-CM.ts b/packages/common/locales/ff-Latn-CM.ts deleted file mode 100644 index 29b1488d6c..0000000000 --- a/packages/common/locales/ff-Latn-CM.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'ff-Latn-CM', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'Mbuuɗi Seefaa BEAC', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ff-Latn-GH.ts b/packages/common/locales/ff-Latn-GH.ts deleted file mode 100644 index f44541fece..0000000000 --- a/packages/common/locales/ff-Latn-GH.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'ff-Latn-GH', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'GHS', - 'GH₵', - 'GHS', - {'GHS': ['GH₵'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ff-Latn-GM.ts b/packages/common/locales/ff-Latn-GM.ts deleted file mode 100644 index 05db8bef58..0000000000 --- a/packages/common/locales/ff-Latn-GM.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'ff-Latn-GM', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'GMD', - 'D', - 'Dalasi Gammbi', - {'GMD': ['D'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ff-Latn-GN.ts b/packages/common/locales/ff-Latn-GN.ts deleted file mode 100644 index 37e5f5b776..0000000000 --- a/packages/common/locales/ff-Latn-GN.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'ff-Latn-GN', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'GNF', - 'FG', - 'GNF', - {'GNF': ['FG'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ff-Latn-GW.ts b/packages/common/locales/ff-Latn-GW.ts deleted file mode 100644 index da62a54872..0000000000 --- a/packages/common/locales/ff-Latn-GW.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'ff-Latn-GW', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'Mbuuɗu Seefaa BCEAO', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ff-Latn-LR.ts b/packages/common/locales/ff-Latn-LR.ts deleted file mode 100644 index b29a084f98..0000000000 --- a/packages/common/locales/ff-Latn-LR.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'ff-Latn-LR', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'LRD', - '$', - 'Dolaar Liberiyaa', - {'JPY': ['JP¥', '¥'], 'LRD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ff-Latn-MR.ts b/packages/common/locales/ff-Latn-MR.ts deleted file mode 100644 index 7946cb5362..0000000000 --- a/packages/common/locales/ff-Latn-MR.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'ff-Latn-MR', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'MRU', - 'UM', - 'Ugiyya Muritani', - {'JPY': ['JP¥', '¥'], 'MRU': ['UM'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ff-Latn-NE.ts b/packages/common/locales/ff-Latn-NE.ts deleted file mode 100644 index b4174c2c60..0000000000 --- a/packages/common/locales/ff-Latn-NE.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'ff-Latn-NE', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'Mbuuɗu Seefaa BCEAO', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ff-Latn-NG.ts b/packages/common/locales/ff-Latn-NG.ts deleted file mode 100644 index 762f155309..0000000000 --- a/packages/common/locales/ff-Latn-NG.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'ff-Latn-NG', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'NGN', - '₦', - 'Nayraa Nijeriyaa', - {'JPY': ['JP¥', '¥'], 'NGN': ['₦'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ff-Latn-SL.ts b/packages/common/locales/ff-Latn-SL.ts deleted file mode 100644 index 4bfe18fc7f..0000000000 --- a/packages/common/locales/ff-Latn-SL.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'ff-Latn-SL', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'SLL', - 'Le', - 'Lewoon Seraa Liyon', - {'JPY': ['JP¥', '¥'], 'SLL': ['Le'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ff-Latn.ts b/packages/common/locales/ff-Latn.ts deleted file mode 100644 index c37cfd0047..0000000000 --- a/packages/common/locales/ff-Latn.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'ff-Latn', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'Mbuuɗu Seefaa BCEAO', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ff-MR.ts b/packages/common/locales/ff-MR.ts index 89c154e85e..eea6778b51 100644 --- a/packages/common/locales/ff-MR.ts +++ b/packages/common/locales/ff-MR.ts @@ -6,8 +6,12 @@ * found in the LICENSE file at https://angular.io/license */ -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js +// **Note**: Locale files are generated through Bazel and never part of the sources. This is an +// exception for backwards compatibility. With the Gulp setup we never deleted old locale files +// when updating CLDR, so older locale files which have been removed, or renamed in the CLDR +// data remained in the repository. We keep these files checked-in until the next major to avoid +// potential breaking changes. It's worth noting that the locale data for such files is outdated +// anyway. e.g. the data is missing the directionality, throwing off the indices. const u = undefined; diff --git a/packages/common/locales/ff.ts b/packages/common/locales/ff.ts deleted file mode 100644 index df2085052f..0000000000 --- a/packages/common/locales/ff.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'ff', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'Mbuuɗu Seefaa BCEAO', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/fi.ts b/packages/common/locales/fi.ts deleted file mode 100644 index 79ec7332f6..0000000000 --- a/packages/common/locales/fi.ts +++ /dev/null @@ -1,170 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'fi', - [['ap.', 'ip.'], u, u], - u, - [ - ['S', 'M', 'T', 'K', 'T', 'P', 'L'], ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'], - [ - 'sunnuntaina', 'maanantaina', 'tiistaina', 'keskiviikkona', 'torstaina', 'perjantaina', - 'lauantaina' - ], - ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'] - ], - [ - ['S', 'M', 'T', 'K', 'T', 'P', 'L'], ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'], - ['sunnuntai', 'maanantai', 'tiistai', 'keskiviikko', 'torstai', 'perjantai', 'lauantai'], - ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'] - ], - [ - ['T', 'H', 'M', 'H', 'T', 'K', 'H', 'E', 'S', 'L', 'M', 'J'], - [ - 'tammik.', 'helmik.', 'maalisk.', 'huhtik.', 'toukok.', 'kesäk.', 'heinäk.', 'elok.', - 'syysk.', 'lokak.', 'marrask.', 'jouluk.' - ], - [ - 'tammikuuta', 'helmikuuta', 'maaliskuuta', 'huhtikuuta', 'toukokuuta', 'kesäkuuta', - 'heinäkuuta', 'elokuuta', 'syyskuuta', 'lokakuuta', 'marraskuuta', 'joulukuuta' - ] - ], - [ - ['T', 'H', 'M', 'H', 'T', 'K', 'H', 'E', 'S', 'L', 'M', 'J'], - [ - 'tammi', 'helmi', 'maalis', 'huhti', 'touko', 'kesä', 'heinä', 'elo', 'syys', 'loka', - 'marras', 'joulu' - ], - [ - 'tammikuu', 'helmikuu', 'maaliskuu', 'huhtikuu', 'toukokuu', 'kesäkuu', 'heinäkuu', 'elokuu', - 'syyskuu', 'lokakuu', 'marraskuu', 'joulukuu' - ] - ], - [['eKr', 'jKr'], ['eKr.', 'jKr.'], ['ennen Kristuksen syntymää', 'jälkeen Kristuksen syntymän']], - 1, - [6, 0], - ['d.M.y', u, 'd. MMMM y', 'cccc d. MMMM y'], - ['H.mm', 'H.mm.ss', 'H.mm.ss z', 'H.mm.ss zzzz'], - ['{1} {0}', '{1} \'klo\' {0}', u, u], - [',', ' ', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'epäluku', '.'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AOA': [], - 'ARS': [], - 'AUD': [], - 'BAM': [], - 'BBD': [], - 'BDT': [], - 'BMD': [], - 'BND': [], - 'BOB': [], - 'BRL': [], - 'BSD': [], - 'BWP': [], - 'BYN': [], - 'BZD': [], - 'CAD': [], - 'CLP': [], - 'CNY': [], - 'COP': [], - 'CRC': [], - 'CUC': [], - 'CUP': [], - 'CZK': [], - 'DKK': [], - 'DOP': [], - 'EGP': [], - 'ESP': [], - 'FIM': ['mk'], - 'FJD': [], - 'FKP': [], - 'GEL': [], - 'GIP': [], - 'GNF': [], - 'GTQ': [], - 'GYD': [], - 'HKD': [], - 'HNL': [], - 'HRK': [], - 'HUF': [], - 'IDR': [], - 'ILS': [], - 'INR': [], - 'ISK': [], - 'JMD': [], - 'KHR': [], - 'KMF': [], - 'KPW': [], - 'KRW': [], - 'KYD': [], - 'KZT': [], - 'LAK': [], - 'LBP': [], - 'LKR': [], - 'LRD': [], - 'LTL': [], - 'LVL': [], - 'MGA': [], - 'MMK': [], - 'MNT': [], - 'MUR': [], - 'MXN': [], - 'MYR': [], - 'NAD': [], - 'NGN': [], - 'NIO': [], - 'NOK': [], - 'NPR': [], - 'NZD': [], - 'PHP': [], - 'PKR': [], - 'PLN': [], - 'PYG': [], - 'RON': [], - 'RUR': [], - 'RWF': [], - 'SBD': [], - 'SEK': [], - 'SGD': [], - 'SHP': [], - 'SRD': [], - 'SSP': [], - 'STN': [u, 'STD'], - 'SYP': [], - 'THB': [], - 'TOP': [], - 'TRY': [], - 'TTD': [], - 'TWD': [], - 'UAH': [], - 'UYU': [], - 'VEF': [], - 'VND': [], - 'XCD': [], - 'XPF': [], - 'XXX': [], - 'ZAR': [], - 'ZMW': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fil.ts b/packages/common/locales/fil.ts deleted file mode 100644 index bb0602c5b9..0000000000 --- a/packages/common/locales/fil.ts +++ /dev/null @@ -1,63 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && (i === 1 || i === 2 || i === 3) || - v === 0 && !(i % 10 === 4 || i % 10 === 6 || i % 10 === 9) || - !(v === 0) && !(f % 10 === 4 || f % 10 === 6 || f % 10 === 9)) - return 1; - return 5; -} - -export default [ - 'fil', - [['am', 'pm'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['Lin', 'Lun', 'Mar', 'Miy', 'Huw', 'Biy', 'Sab'], u, - ['Linggo', 'Lunes', 'Martes', 'Miyerkules', 'Huwebes', 'Biyernes', 'Sabado'], - ['Li', 'Lu', 'Ma', 'Mi', 'Hu', 'Bi', 'Sa'] - ], - u, - [ - ['Ene', 'Peb', 'Mar', 'Abr', 'May', 'Hun', 'Hul', 'Ago', 'Set', 'Okt', 'Nob', 'Dis'], u, - [ - 'Enero', 'Pebrero', 'Marso', 'Abril', 'Mayo', 'Hunyo', 'Hulyo', 'Agosto', 'Setyembre', - 'Oktubre', 'Nobyembre', 'Disyembre' - ] - ], - [ - ['E', 'P', 'M', 'A', 'M', 'Hun', 'Hul', 'Ago', 'Set', 'Okt', 'Nob', 'Dis'], - ['Ene', 'Peb', 'Mar', 'Abr', 'May', 'Hun', 'Hul', 'Ago', 'Set', 'Okt', 'Nob', 'Dis'], - [ - 'Enero', 'Pebrero', 'Marso', 'Abril', 'Mayo', 'Hunyo', 'Hulyo', 'Agosto', 'Setyembre', - 'Oktubre', 'Nobyembre', 'Disyembre' - ] - ], - [['BC', 'AD'], u, ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'nang\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'PHP', - '₱', - 'Piso ng Pilipinas', - {'PHP': ['₱'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/fo-DK.ts b/packages/common/locales/fo-DK.ts deleted file mode 100644 index 8ce0252c1f..0000000000 --- a/packages/common/locales/fo-DK.ts +++ /dev/null @@ -1,63 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'fo-DK', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'T', 'M', 'H', 'F', 'L'], ['sun.', 'mán.', 'týs.', 'mik.', 'hós.', 'frí.', 'ley.'], - ['sunnudagur', 'mánadagur', 'týsdagur', 'mikudagur', 'hósdagur', 'fríggjadagur', 'leygardagur'], - ['su.', 'má.', 'tý.', 'mi.', 'hó.', 'fr.', 'le.'] - ], - [ - ['S', 'M', 'T', 'M', 'H', 'F', 'L'], ['sun', 'mán', 'týs', 'mik', 'hós', 'frí', 'ley'], - ['sunnudagur', 'mánadagur', 'týsdagur', 'mikudagur', 'hósdagur', 'fríggjadagur', 'leygardagur'], - ['su', 'má', 'tý', 'mi', 'hó', 'fr', 'le'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mar.', 'apr.', 'mai', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'des.'], - [ - 'januar', 'februar', 'mars', 'apríl', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', - 'november', 'desember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'], - [ - 'januar', 'februar', 'mars', 'apríl', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', - 'november', 'desember' - ] - ], - [['fKr', 'eKr'], ['f.Kr.', 'e.Kr.'], ['fyri Krist', 'eftir Krist']], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'kl\'. {0}', u], - [',', '.', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'DKK', - 'kr.', - 'donsk króna', - {'DKK': ['kr.', 'kr'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/fo.ts b/packages/common/locales/fo.ts deleted file mode 100644 index 3c38f5ad6f..0000000000 --- a/packages/common/locales/fo.ts +++ /dev/null @@ -1,63 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'fo', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'T', 'M', 'H', 'F', 'L'], ['sun.', 'mán.', 'týs.', 'mik.', 'hós.', 'frí.', 'ley.'], - ['sunnudagur', 'mánadagur', 'týsdagur', 'mikudagur', 'hósdagur', 'fríggjadagur', 'leygardagur'], - ['su.', 'má.', 'tý.', 'mi.', 'hó.', 'fr.', 'le.'] - ], - [ - ['S', 'M', 'T', 'M', 'H', 'F', 'L'], ['sun', 'mán', 'týs', 'mik', 'hós', 'frí', 'ley'], - ['sunnudagur', 'mánadagur', 'týsdagur', 'mikudagur', 'hósdagur', 'fríggjadagur', 'leygardagur'], - ['su', 'má', 'tý', 'mi', 'hó', 'fr', 'le'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mar.', 'apr.', 'mai', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'des.'], - [ - 'januar', 'februar', 'mars', 'apríl', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', - 'november', 'desember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'], - [ - 'januar', 'februar', 'mars', 'apríl', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', - 'november', 'desember' - ] - ], - [['fKr', 'eKr'], ['f.Kr.', 'e.Kr.'], ['fyri Krist', 'eftir Krist']], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'kl\'. {0}', u], - [',', '.', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'DKK', - 'kr', - 'donsk króna', - {'DKK': ['kr'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-BE.ts b/packages/common/locales/fr-BE.ts deleted file mode 100644 index 94882f1ae8..0000000000 --- a/packages/common/locales/fr-BE.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-BE', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['d/MM/yy', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'H \'h\' mm \'min\' ss \'s\' zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-BF.ts b/packages/common/locales/fr-BF.ts deleted file mode 100644 index d81ee6388c..0000000000 --- a/packages/common/locales/fr-BF.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-BF', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'franc CFA (BCEAO)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-BI.ts b/packages/common/locales/fr-BI.ts deleted file mode 100644 index 3dcb3bc94f..0000000000 --- a/packages/common/locales/fr-BI.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-BI', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'BIF', - 'FBu', - 'franc burundais', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BIF': ['FBu'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-BJ.ts b/packages/common/locales/fr-BJ.ts deleted file mode 100644 index 1cfe84e213..0000000000 --- a/packages/common/locales/fr-BJ.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-BJ', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'franc CFA (BCEAO)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-BL.ts b/packages/common/locales/fr-BL.ts deleted file mode 100644 index 513cbcc4f8..0000000000 --- a/packages/common/locales/fr-BL.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-BL', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-CA.ts b/packages/common/locales/fr-CA.ts deleted file mode 100644 index 1c809457c4..0000000000 --- a/packages/common/locales/fr-CA.ts +++ /dev/null @@ -1,91 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-CA', - [['a', 'p'], ['a.m.', 'p.m.'], u], - [['a.m.', 'p.m.'], u, u], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juill.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 0, - [6, 0], - ['y-MM-dd', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - [ - 'HH \'h\' mm', 'HH \'h\' mm \'min\' ss \'s\'', 'HH \'h\' mm \'min\' ss \'s\' z', - 'HH \'h\' mm \'min\' ss \'s\' zzzz' - ], - ['{1} {0}', u, '{1} \'à\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'CAD', - '$', - 'dollar canadien', - { - 'AUD': ['$ AU', '$'], - 'BEF': ['FB'], - 'BYN': [u, 'Br'], - 'CAD': ['$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FRF': ['F'], - 'GEL': [], - 'HKD': ['$ HK', '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'ITL': ['₤IT'], - 'KRW': [u, '₩'], - 'LBP': [u, '£L'], - 'MTP': ['£MT'], - 'MXN': [u, '$'], - 'NZD': ['$ NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SGD': ['$ SG', '$'], - 'TOP': [u, '$T'], - 'TWD': [u, 'NT$'], - 'USD': ['$ US', '$'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [], - 'XPF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-CD.ts b/packages/common/locales/fr-CD.ts deleted file mode 100644 index 850d7bb8bf..0000000000 --- a/packages/common/locales/fr-CD.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-CD', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'CDF', - 'FC', - 'franc congolais', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CDF': ['FC'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-CF.ts b/packages/common/locales/fr-CF.ts deleted file mode 100644 index 99a1308cd6..0000000000 --- a/packages/common/locales/fr-CF.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-CF', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'franc CFA (BEAC)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-CG.ts b/packages/common/locales/fr-CG.ts deleted file mode 100644 index c3ceacf5b0..0000000000 --- a/packages/common/locales/fr-CG.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-CG', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'franc CFA (BEAC)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-CH.ts b/packages/common/locales/fr-CH.ts deleted file mode 100644 index 16caeddff4..0000000000 --- a/packages/common/locales/fr-CH.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-CH', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd.MM.yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH.mm:ss \'h\' zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':', '.'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'CHF', - 'CHF', - 'franc suisse', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-CI.ts b/packages/common/locales/fr-CI.ts deleted file mode 100644 index 18600492bd..0000000000 --- a/packages/common/locales/fr-CI.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-CI', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'franc CFA (BCEAO)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-CM.ts b/packages/common/locales/fr-CM.ts deleted file mode 100644 index dce6ba0508..0000000000 --- a/packages/common/locales/fr-CM.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-CM', - [['mat.', 'soir'], u, ['matin', 'soir']], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'franc CFA (BEAC)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-DJ.ts b/packages/common/locales/fr-DJ.ts deleted file mode 100644 index f64724c56c..0000000000 --- a/packages/common/locales/fr-DJ.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-DJ', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 6, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'DJF', - 'Fdj', - 'franc djiboutien', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'DJF': ['Fdj'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-DZ.ts b/packages/common/locales/fr-DZ.ts deleted file mode 100644 index 839ee9427b..0000000000 --- a/packages/common/locales/fr-DZ.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-DZ', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 6, - [5, 6], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'DZD', - 'DA', - 'dinar algérien', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'DZD': ['DA'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-GA.ts b/packages/common/locales/fr-GA.ts deleted file mode 100644 index c441eb38f0..0000000000 --- a/packages/common/locales/fr-GA.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-GA', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'franc CFA (BEAC)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-GF.ts b/packages/common/locales/fr-GF.ts deleted file mode 100644 index 2db3eba6bb..0000000000 --- a/packages/common/locales/fr-GF.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-GF', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-GN.ts b/packages/common/locales/fr-GN.ts deleted file mode 100644 index a37ebd795a..0000000000 --- a/packages/common/locales/fr-GN.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-GN', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'GNF', - 'FG', - 'franc guinéen', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'GNF': ['FG'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-GP.ts b/packages/common/locales/fr-GP.ts deleted file mode 100644 index 79182b0321..0000000000 --- a/packages/common/locales/fr-GP.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-GP', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-GQ.ts b/packages/common/locales/fr-GQ.ts deleted file mode 100644 index 39edbf51b2..0000000000 --- a/packages/common/locales/fr-GQ.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-GQ', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'franc CFA (BEAC)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-HT.ts b/packages/common/locales/fr-HT.ts deleted file mode 100644 index cb448397e8..0000000000 --- a/packages/common/locales/fr-HT.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-HT', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'HTG', - 'G', - 'gourde haïtienne', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'HTG': ['G'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-KM.ts b/packages/common/locales/fr-KM.ts deleted file mode 100644 index 39722fb2bf..0000000000 --- a/packages/common/locales/fr-KM.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-KM', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'KMF', - 'CF', - 'franc comorien', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': ['CF', 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-LU.ts b/packages/common/locales/fr-LU.ts deleted file mode 100644 index 19bf04cdb7..0000000000 --- a/packages/common/locales/fr-LU.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-LU', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'LUF': ['F'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-MA.ts b/packages/common/locales/fr-MA.ts deleted file mode 100644 index 49e8f5a752..0000000000 --- a/packages/common/locales/fr-MA.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-MA', - [['AM', 'PM'], u, ['a.m.', 'p.m.']], - [['AM', 'PM'], u, u], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fév.', 'mar.', 'avr.', 'mai', 'jui.', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'MAD', - 'MAD', - 'dirham marocain', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-MC.ts b/packages/common/locales/fr-MC.ts deleted file mode 100644 index 970eff1630..0000000000 --- a/packages/common/locales/fr-MC.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-MC', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-MF.ts b/packages/common/locales/fr-MF.ts deleted file mode 100644 index e8cf6746d2..0000000000 --- a/packages/common/locales/fr-MF.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-MF', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-MG.ts b/packages/common/locales/fr-MG.ts deleted file mode 100644 index c123ed762e..0000000000 --- a/packages/common/locales/fr-MG.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-MG', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'MGA', - 'Ar', - 'ariary malgache', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MGA': ['Ar'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-ML.ts b/packages/common/locales/fr-ML.ts deleted file mode 100644 index 9774015263..0000000000 --- a/packages/common/locales/fr-ML.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-ML', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'à\' {0}', u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'franc CFA (BCEAO)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-MQ.ts b/packages/common/locales/fr-MQ.ts deleted file mode 100644 index 16dcf512c8..0000000000 --- a/packages/common/locales/fr-MQ.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-MQ', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-MR.ts b/packages/common/locales/fr-MR.ts deleted file mode 100644 index 528f699bab..0000000000 --- a/packages/common/locales/fr-MR.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-MR', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'MRU', - 'UM', - 'ouguiya mauritanien', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MRU': ['UM'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-MU.ts b/packages/common/locales/fr-MU.ts deleted file mode 100644 index d6a46ecaa7..0000000000 --- a/packages/common/locales/fr-MU.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-MU', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'MUR', - 'Rs', - 'roupie mauricienne', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MUR': ['Rs'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-NC.ts b/packages/common/locales/fr-NC.ts deleted file mode 100644 index e7ed16e0c3..0000000000 --- a/packages/common/locales/fr-NC.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-NC', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XPF', - 'FCFP', - 'franc CFP', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-NE.ts b/packages/common/locales/fr-NE.ts deleted file mode 100644 index 8c23b9bf1a..0000000000 --- a/packages/common/locales/fr-NE.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-NE', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'franc CFA (BCEAO)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-PF.ts b/packages/common/locales/fr-PF.ts deleted file mode 100644 index 9163da9994..0000000000 --- a/packages/common/locales/fr-PF.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-PF', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XPF', - 'FCFP', - 'franc CFP', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-PM.ts b/packages/common/locales/fr-PM.ts deleted file mode 100644 index 554e17cd35..0000000000 --- a/packages/common/locales/fr-PM.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-PM', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-RE.ts b/packages/common/locales/fr-RE.ts deleted file mode 100644 index adbcbc16c1..0000000000 --- a/packages/common/locales/fr-RE.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-RE', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-RW.ts b/packages/common/locales/fr-RW.ts deleted file mode 100644 index af744c8c51..0000000000 --- a/packages/common/locales/fr-RW.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-RW', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'RWF', - 'RF', - 'franc rwandais', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': ['RF', 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-SC.ts b/packages/common/locales/fr-SC.ts deleted file mode 100644 index 73207e2c6b..0000000000 --- a/packages/common/locales/fr-SC.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-SC', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'SCR', - 'SR', - 'roupie des Seychelles', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SCR': ['SR'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-SN.ts b/packages/common/locales/fr-SN.ts deleted file mode 100644 index 25b757a84b..0000000000 --- a/packages/common/locales/fr-SN.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-SN', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'franc CFA (BCEAO)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-SY.ts b/packages/common/locales/fr-SY.ts deleted file mode 100644 index 6b274ff889..0000000000 --- a/packages/common/locales/fr-SY.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-SY', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 6, - [5, 6], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'SYP', - 'LS', - 'livre syrienne', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'SYP': ['LS', '£'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-TD.ts b/packages/common/locales/fr-TD.ts deleted file mode 100644 index 019547d232..0000000000 --- a/packages/common/locales/fr-TD.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-TD', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'franc CFA (BEAC)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-TG.ts b/packages/common/locales/fr-TG.ts deleted file mode 100644 index 2557713cac..0000000000 --- a/packages/common/locales/fr-TG.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-TG', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'franc CFA (BCEAO)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-TN.ts b/packages/common/locales/fr-TN.ts deleted file mode 100644 index 2e91893bd6..0000000000 --- a/packages/common/locales/fr-TN.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-TN', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'TND', - 'DT', - 'dinar tunisien', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TND': ['DT'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-VU.ts b/packages/common/locales/fr-VU.ts deleted file mode 100644 index 2b46979109..0000000000 --- a/packages/common/locales/fr-VU.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-VU', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'VUV', - 'VT', - 'vatu vanuatuan', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'VUV': ['VT'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-WF.ts b/packages/common/locales/fr-WF.ts deleted file mode 100644 index c6ae98deb9..0000000000 --- a/packages/common/locales/fr-WF.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-WF', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XPF', - 'FCFP', - 'franc CFP', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr-YT.ts b/packages/common/locales/fr-YT.ts deleted file mode 100644 index 47bd817ff1..0000000000 --- a/packages/common/locales/fr-YT.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr-YT', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fr.ts b/packages/common/locales/fr.ts deleted file mode 100644 index be7a9a13ac..0000000000 --- a/packages/common/locales/fr.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'fr', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/fur.ts b/packages/common/locales/fur.ts deleted file mode 100644 index 5e4537668a..0000000000 --- a/packages/common/locales/fur.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'fur', - [['a.', 'p.'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom', 'lun', 'mar', 'mie', 'joi', 'vin', 'sab'], - ['domenie', 'lunis', 'martars', 'miercus', 'joibe', 'vinars', 'sabide'], - ['dom', 'lun', 'mar', 'mie', 'joi', 'vin', 'sab'] - ], - u, - [ - ['Z', 'F', 'M', 'A', 'M', 'J', 'L', 'A', 'S', 'O', 'N', 'D'], - ['Zen', 'Fev', 'Mar', 'Avr', 'Mai', 'Jug', 'Lui', 'Avo', 'Set', 'Otu', 'Nov', 'Dic'], - [ - 'Zenâr', 'Fevrâr', 'Març', 'Avrîl', 'Mai', 'Jugn', 'Lui', 'Avost', 'Setembar', 'Otubar', - 'Novembar', 'Dicembar' - ] - ], - u, - [['pdC', 'ddC'], u, u], - 1, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'di\' MMMM \'dal\' y', 'EEEE d \'di\' MMMM \'dal\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'EUR', - '€', - 'euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/fy.ts b/packages/common/locales/fy.ts deleted file mode 100644 index e58f8470d4..0000000000 --- a/packages/common/locales/fy.ts +++ /dev/null @@ -1,62 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'fy', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['si', 'mo', 'ti', 'wo', 'to', 'fr', 'so'], - ['snein', 'moandei', 'tiisdei', 'woansdei', 'tongersdei', 'freed', 'sneon'], - ['si', 'mo', 'ti', 'wo', 'to', 'fr', 'so'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mrt', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Jannewaris', 'Febrewaris', 'Maart', 'April', 'Maaie', 'Juny', 'July', 'Augustus', - 'Septimber', 'Oktober', 'Novimber', 'Desimber' - ] - ], - u, - [['f.K.', 'n.K.'], ['f.Kr.', 'n.Kr.'], ['Foar Kristus', 'nei Kristus']], - 1, - [6, 0], - ['dd-MM-yy', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'om\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤ #,##0.00-', '#E0'], - 'EUR', - '€', - 'Euro', - { - 'AUD': ['AU$', '$'], - 'CAD': ['C$', '$'], - 'FJD': ['FJ$', '$'], - 'JPY': ['JP¥', '¥'], - 'SBD': ['SI$', '$'], - 'THB': ['฿'], - 'USD': ['US$', '$'], - 'XPF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ga-GB.ts b/packages/common/locales/ga-GB.ts deleted file mode 100644 index edc973cb9b..0000000000 --- a/packages/common/locales/ga-GB.ts +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - if (n === 2) return 2; - if (n === Math.floor(n) && n >= 3 && n <= 6) return 3; - if (n === Math.floor(n) && n >= 7 && n <= 10) return 4; - return 5; -} - -export default [ - 'ga-GB', - [['r.n.', 'i.n.'], u, u], - u, - [ - ['D', 'L', 'M', 'C', 'D', 'A', 'S'], ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'], - [ - 'Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Sathairn' - ], - ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'Ao', 'Sa'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'B', 'M', 'I', 'L', 'M', 'D', 'S', 'N'], - [ - 'Ean', 'Feabh', 'Márta', 'Aib', 'Beal', 'Meith', 'Iúil', 'Lún', 'MFómh', 'DFómh', 'Samh', - 'Noll' - ], - [ - 'Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Meitheamh', 'Iúil', 'Lúnasa', - 'Meán Fómhair', 'Deireadh Fómhair', 'Samhain', 'Nollaig' - ] - ], - u, - [['RC', 'AD'], u, ['Roimh Chríost', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GBP', - '£', - 'Punt Steirling', - {'THB': ['฿'], 'TWD': ['NT$'], 'XXX': []}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ga.ts b/packages/common/locales/ga.ts deleted file mode 100644 index 53508e1ddb..0000000000 --- a/packages/common/locales/ga.ts +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - if (n === 2) return 2; - if (n === Math.floor(n) && n >= 3 && n <= 6) return 3; - if (n === Math.floor(n) && n >= 7 && n <= 10) return 4; - return 5; -} - -export default [ - 'ga', - [['r.n.', 'i.n.'], u, u], - u, - [ - ['D', 'L', 'M', 'C', 'D', 'A', 'S'], ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'], - [ - 'Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Sathairn' - ], - ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'Ao', 'Sa'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'B', 'M', 'I', 'L', 'M', 'D', 'S', 'N'], - [ - 'Ean', 'Feabh', 'Márta', 'Aib', 'Beal', 'Meith', 'Iúil', 'Lún', 'MFómh', 'DFómh', 'Samh', - 'Noll' - ], - [ - 'Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Meitheamh', 'Iúil', 'Lúnasa', - 'Meán Fómhair', 'Deireadh Fómhair', 'Samhain', 'Nollaig' - ] - ], - u, - [['RC', 'AD'], u, ['Roimh Chríost', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - {'THB': ['฿'], 'TWD': ['NT$'], 'XXX': []}, - 'ltr', - plural -]; diff --git a/packages/common/locales/gd.ts b/packages/common/locales/gd.ts deleted file mode 100644 index 7e5075e18c..0000000000 --- a/packages/common/locales/gd.ts +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1 || n === 11) return 1; - if (n === 2 || n === 12) return 2; - if (n === Math.floor(n) && (n >= 3 && n <= 10 || n >= 13 && n <= 19)) return 3; - return 5; -} - -export default [ - 'gd', - [['m', 'f'], u, u], - u, - [ - ['D', 'L', 'M', 'C', 'A', 'H', 'S'], ['DiD', 'DiL', 'DiM', 'DiC', 'Dia', 'Dih', 'DiS'], - ['DiDòmhnaich', 'DiLuain', 'DiMàirt', 'DiCiadain', 'DiarDaoin', 'DihAoine', 'DiSathairne'], - ['Dò', 'Lu', 'Mà', 'Ci', 'Da', 'hA', 'Sa'] - ], - u, - [ - ['F', 'G', 'M', 'G', 'C', 'Ò', 'I', 'L', 'S', 'D', 'S', 'D'], - [ - 'Faoi', 'Gearr', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùna', 'Sult', 'Dàmh', 'Samh', - 'Dùbh' - ], - [ - 'dhen Fhaoilleach', 'dhen Ghearran', 'dhen Mhàrt', 'dhen Ghiblean', 'dhen Chèitean', - 'dhen Ògmhios', 'dhen Iuchar', 'dhen Lùnastal', 'dhen t-Sultain', 'dhen Dàmhair', - 'dhen t-Samhain', 'dhen Dùbhlachd' - ] - ], - [ - ['F', 'G', 'M', 'G', 'C', 'Ò', 'I', 'L', 'S', 'D', 'S', 'D'], - [ - 'Faoi', 'Gearr', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùna', 'Sult', 'Dàmh', 'Samh', - 'Dùbh' - ], - [ - 'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', - 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd' - ] - ], - [['R', 'A'], ['RC', 'AD'], ['Ro Chrìosta', 'An dèidh Chrìosta']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd\'mh\' MMMM y', 'EEEE, d\'mh\' MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GBP', - '£', - 'Punnd Sasannach', - {'JPY': ['JP¥', '¥'], 'RON': [u, 'leu'], 'THB': ['฿'], 'TWD': ['NT$'], 'XXX': []}, - 'ltr', - plural -]; diff --git a/packages/common/locales/generate-locales-tool/BUILD.bazel b/packages/common/locales/generate-locales-tool/BUILD.bazel new file mode 100644 index 0000000000..c795b94d5a --- /dev/null +++ b/packages/common/locales/generate-locales-tool/BUILD.bazel @@ -0,0 +1,17 @@ +load("//tools:defaults.bzl", "ts_library") + +package(default_visibility = ["//visibility:public"]) + +ts_library( + name = "generate-locales-tool", + srcs = glob(["*.ts"]), + deps = [ + "@npm//@bazel/runfiles", + "@npm//@types/cldrjs", + "@npm//@types/glob", + "@npm//@types/node", + "@npm//cldr", + "@npm//cldrjs", + "@npm//glob", + ], +) diff --git a/packages/common/locales/generate-locales-tool/README.md b/packages/common/locales/generate-locales-tool/README.md new file mode 100644 index 0000000000..7a18aa406a --- /dev/null +++ b/packages/common/locales/generate-locales-tool/README.md @@ -0,0 +1,64 @@ +# generate-locales-tool + +Angular relies on CLDR for internationalization. The locale data is split up into the following filesets: + +1. A default locale used within `@angular/core`. This is the `locale_en.ts` file. +2. Information about currencies with their symbols and fraction digits (based on the default locale). The base currency information resides in `@angular/common/src/i18n`. +3. Locale files containing date, plural, currency information and more. + +This is a high-level overview of the tool and how it organizes/optimizes the locale data within Angular. In the following section the individual filesets are described in detail. + +### Default locale file in `@angular/core` + +The default locale file resides within `@angular/core` and provides locale information for the `en` locale. The `en` locale is commonly used for local development. This default locale file does not differ from other locale files generated within `@angular/common/locales`, so the details are discussed below. + +### Base currency information within `@angular/common` + +The `@angular/core` package is not providing directives or syntax for dealing with currencies. This is part of the `@angular/common` package and its i18n features (such as the `currency` pipe). Due to this separation of concerns, the default locale in `core` does not contain any information about currencies, and the currency information is stored as a separate file within `@angular/common/src/i18n`. + +The currency information is stored within an object that maps each currency code (like `USD`) to an array describing the symbol, narrow symbol and number of digits to display for fractions. e.g. + +```ts +const baseCurrencies = { + 'CAD': ['CA$', '$', 2], + 'NZD': ['NZ$', '$'], + 'USD': ['$'], +} +``` + +In the snippet above, you might wonder why values for `NZD` or `USD` are missing. This is intentional as for `USD` there is no narrow symbol (given `$` already being the symbol). The tool does not set an explicit value for byte savings. Same applies for the fraction digits. + +### Locale files + +Aside from the default locale (`en`) which is generated separately, this tool generates locale files for all other locales the CLDR package provides data for. Locale files currently provide the following locale data: + +* Date time settings (describes how dates are formatted, e.g. the locale-based label for Monday) +* Number settings (describing how numbers are formatted, e.g. what the plus symbol is) +* Currency settings (describing how to format currencies for current locale) +* Currency symbols based on the given locale. e.g. in `en-AU` `USD` is the currency symbol. +* Directionality of the locale (i.e. whether text is displayed in RTL or LTR) + +All the data is stored in an array where the Angular framework can read specific data using the corresponding index (see `LocaleDataIndex` for details on how data is read). + +**Performance optimizations** + +Given we already have currency symbols for the default locale within `@angular/common/src/i18n`, we do not need to capture currencies that aren't different within a given locale. We just omit the data for such currencies and let the Angular framework fall back to the currency symbols from the default locale (this avoids unnecessary duplication). + +Additionally, if locale data is equal to locale data at a previous index, then the generation tool will not repeat the data but instead set `undefined`. The Angular framework will look for the previous value in that case. This reduces the payload size for locales even further. For example: + +```ts +[ + // ... + labelsForDayPeriodsNarrow, + labelsForDayPeriodsAbbreviated +] +``` + +If `labelsForDayPeriodsAbbreviated` for example is equal to `labelsForDayPeriodsNarrow`, then the tool will not set a value for the abbreviated labels. Instead, it will set `undefined` as that minifies to: `[labelsForDayPeriodsNarrow, undefined]`. + + +### Where are the CLDR data files stored? + +The CLDR data is fetched through a Bazel repository. See the project-level `WORKSPACE` file for more information. The generation tool resolves all locale data through the `@cldr_data` Bazel repository. + +Locale files, or the default currencies file are not source files that would end up in the Git repository. This is different to the old Gulp setup where such files were added as part of the repository. The benefit of no longer adding such files to the Git repository is that updating CLDR is no longer resulting in large diffs. Another significant benefit is that files cannot be modified manually. Previously, developers could have manually made changes within locale files and no tooling would complain. This could result in locale files which are not in sync with CLDR / or files which are broken. \ No newline at end of file diff --git a/packages/common/locales/generate-locales-tool/array-deduplication.ts b/packages/common/locales/generate-locales-tool/array-deduplication.ts new file mode 100644 index 0000000000..03a7cb4b43 --- /dev/null +++ b/packages/common/locales/generate-locales-tool/array-deduplication.ts @@ -0,0 +1,35 @@ +/** + * @license + * 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 + */ + +/** + * To create smaller locale files, we remove duplicated data. + * To make this work we store the data in arrays, where `undefined` indicates that the + * value is a duplicate of the previous value in the array. + * e.g. consider an array like: [x, y, undefined, z, undefined, undefined] + * The first `undefined` is equivalent to y, the second and third are equivalent to z + * Note that the first value in an array is always defined. + * + * Also since we need to know which data is assumed similar, it is important that we store those + * similar data in arrays to mark the delimitation between values that have different meanings + * (e.g. months and days). + * + * For further size improvements, "undefined" values will be replaced by a constant in the arrays + * as the last step of the file generation (in generateLocale and generateLocaleExtra). + * e.g.: [x, y, undefined, z, undefined, undefined] will be [x, y, u, z, u, u] + */ +export function removeDuplicates(data: unknown[]) { + const dedup = [data[0]]; + for (let i = 1; i < data.length; i++) { + if (JSON.stringify(data[i]) !== JSON.stringify(data[i - 1])) { + dedup.push(data[i]); + } else { + dedup.push(undefined); + } + } + return dedup; +} diff --git a/packages/common/locales/generate-locales-tool/bin/BUILD.bazel b/packages/common/locales/generate-locales-tool/bin/BUILD.bazel new file mode 100644 index 0000000000..302190b3f1 --- /dev/null +++ b/packages/common/locales/generate-locales-tool/bin/BUILD.bazel @@ -0,0 +1,33 @@ +load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary") +load("//tools:defaults.bzl", "ts_library") + +package(default_visibility = ["//visibility:public"]) + +BIN_ENTRYPOINTS = [ + "get-base-currencies-file", + "get-base-locale-file", + "get-closure-locale-file", + "write-locale-files-to-dist", +] + +ts_library( + name = "bin", + srcs = glob(["*.ts"]), + deps = [ + "//packages/common/locales/generate-locales-tool", + "@npm//@types/node", + ], +) + +[nodejs_binary( + name = entrypoint, + data = [ + ":bin", + "@cldr_data//:all_json", + ], + entry_point = ":%s.ts" % entrypoint, + # We need to patch the NodeJS module resolution as this binary runs as + # part of a genrule where the linker does not work as expected. + # See: https://github.com/bazelbuild/rules_nodejs/issues/2600. + templated_args = ["--bazel_patch_module_resolver"], +) for entrypoint in BIN_ENTRYPOINTS] diff --git a/packages/common/locales/generate-locales-tool/bin/base-locale.ts b/packages/common/locales/generate-locales-tool/bin/base-locale.ts new file mode 100644 index 0000000000..8398497afc --- /dev/null +++ b/packages/common/locales/generate-locales-tool/bin/base-locale.ts @@ -0,0 +1,17 @@ +/** + * @license + * 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 + */ + + +/** + * Base locale used as foundation for other locales. For example: A base locale allows + * generation of a file containing all currencies with their corresponding symbols. If we + * generate other locales, they can override currency symbols which are different in the base + * locale. This means that we do not need re-generate all currencies w/ symbols multiple times, + * and allows us to reduce the locale data payload as the base locale is always included. + * */ +export const BASE_LOCALE = 'en'; diff --git a/packages/common/locales/generate-locales-tool/bin/get-base-currencies-file.ts b/packages/common/locales/generate-locales-tool/bin/get-base-currencies-file.ts new file mode 100644 index 0000000000..94aa782ada --- /dev/null +++ b/packages/common/locales/generate-locales-tool/bin/get-base-currencies-file.ts @@ -0,0 +1,23 @@ +/** + * @license + * 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 + */ +import {CldrData} from '../cldr-data'; +import {generateBaseCurrenciesFile} from '../locale-base-currencies'; + +import {BASE_LOCALE} from './base-locale'; + +/** Generates the base currencies file and prints it to the stdout. */ +function main() { + const cldrData = new CldrData(); + const baseLocaleData = cldrData.getLocaleData(BASE_LOCALE)!; + + process.stdout.write(generateBaseCurrenciesFile(baseLocaleData)); +} + +if (require.main === module) { + main(); +} diff --git a/packages/common/locales/generate-locales-tool/bin/get-base-locale-file.ts b/packages/common/locales/generate-locales-tool/bin/get-base-locale-file.ts new file mode 100644 index 0000000000..97089a509b --- /dev/null +++ b/packages/common/locales/generate-locales-tool/bin/get-base-locale-file.ts @@ -0,0 +1,25 @@ +/** + * @license + * 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 + */ +import {CldrData} from '../cldr-data'; +import {generateBaseCurrencies} from '../locale-base-currencies'; +import {generateLocale} from '../locale-file'; + +import {BASE_LOCALE} from './base-locale'; + +/** Generates the base locale file and prints it to the stdout. */ +function main() { + const cldrData = new CldrData(); + const baseLocaleData = cldrData.getLocaleData(BASE_LOCALE)!; + const baseCurrencies = generateBaseCurrencies(baseLocaleData); + + process.stdout.write(generateLocale(BASE_LOCALE, baseLocaleData, baseCurrencies)); +} + +if (require.main === module) { + main(); +} diff --git a/packages/common/locales/generate-locales-tool/bin/get-closure-locale-file.ts b/packages/common/locales/generate-locales-tool/bin/get-closure-locale-file.ts new file mode 100644 index 0000000000..0f597fd891 --- /dev/null +++ b/packages/common/locales/generate-locales-tool/bin/get-closure-locale-file.ts @@ -0,0 +1,25 @@ +/** + * @license + * 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 + */ +import {CldrData} from '../cldr-data'; +import {generateClosureLocaleFile} from '../closure-locale-file'; +import {generateBaseCurrencies} from '../locale-base-currencies'; + +import {BASE_LOCALE} from './base-locale'; + +/** Generates the Google3 closure-locale file and prints it to the stdout. */ +function main() { + const cldrData = new CldrData(); + const baseLocaleData = cldrData.getLocaleData(BASE_LOCALE)!; + const baseCurrencies = generateBaseCurrencies(baseLocaleData); + + process.stdout.write(generateClosureLocaleFile(cldrData, baseCurrencies)); +} + +if (require.main === module) { + main(); +} diff --git a/packages/common/locales/generate-locales-tool/bin/write-locale-files-to-dist.ts b/packages/common/locales/generate-locales-tool/bin/write-locale-files-to-dist.ts new file mode 100644 index 0000000000..6fd7759aa5 --- /dev/null +++ b/packages/common/locales/generate-locales-tool/bin/write-locale-files-to-dist.ts @@ -0,0 +1,57 @@ +/** + * @license + * 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 + */ + +import {writeFileSync} from 'fs'; +import {join} from 'path'; + +import {CldrData} from '../cldr-data'; +import {generateBaseCurrencies} from '../locale-base-currencies'; +import {generateLocaleExtra} from '../locale-extra-file'; +import {generateLocale} from '../locale-file'; +import {generateLocaleGlobalFile} from '../locale-global-file'; + +import {BASE_LOCALE} from './base-locale'; + +/** + * Generates locale files for each available CLDR locale and writes it to the + * specified directory. + */ +function main(outputDir: string) { + const cldrData = new CldrData(); + const baseLocaleData = cldrData.getLocaleData(BASE_LOCALE)!; + const baseCurrencies = generateBaseCurrencies(baseLocaleData); + const extraLocaleDir = join(outputDir, 'extra'); + const globalLocaleDir = join(outputDir, 'global'); + + console.info(`Writing locales to: ${outputDir}`); + + // Generate locale files for all locales we have data for. + cldrData.availableLocales.forEach(localeData => { + const locale = localeData.locale; + const localeFile = generateLocale(locale, localeData, baseCurrencies); + const localeExtraFile = generateLocaleExtra(locale, localeData); + const localeGlobalFile = generateLocaleGlobalFile(locale, localeData, baseCurrencies); + + writeFileSync(join(outputDir, `${locale}.ts`), localeFile); + writeFileSync(join(extraLocaleDir, `${locale}.ts`), localeExtraFile); + writeFileSync(join(globalLocaleDir, `${locale}.js`), localeGlobalFile); + }); +} + + +if (require.main === module) { + // The first argument is expected to be a path resolving to a directory + // where all locales should be generated into. + const outputDir = process.argv[2]; + + if (outputDir === undefined) { + throw Error('No output directory specified.'); + } + + main(outputDir); +} diff --git a/packages/common/locales/generate-locales-tool/cldr-data.bzl b/packages/common/locales/generate-locales-tool/cldr-data.bzl new file mode 100644 index 0000000000..3346c118d8 --- /dev/null +++ b/packages/common/locales/generate-locales-tool/cldr-data.bzl @@ -0,0 +1,48 @@ +def _cldr_data_repository_impl(ctx): + for url, sha256 in ctx.attr.urls.items(): + ctx.report_progress("Downloading CLDR data from: %s" % url) + ctx.download_and_extract( + url = url, + sha256 = sha256, + ) + + ctx.report_progress("Extracting available locales from: %s" % ctx.attr.available_locales_path) + locales_json = ctx.read(ctx.attr.available_locales_path) + locales = json.decode(locales_json)["availableLocales"]["full"] + ctx.report_progress("Extracted %s locales from CLDR" % len(locales)) + + ctx.file("index.bzl", content = """ +LOCALES=%s + """ % locales) + + ctx.file("BUILD.bazel", content = """ +filegroup( + name = "all_json", + srcs = glob(["**/*.json"]), + visibility = ["//visibility:public"], +) + """) + +""" + Repository rule that downloads CLDR data from the specified repository and generates a + `BUILD.bazel` file that exposes all data files. Additionally, an `index.bzl` file is generated + that exposes a constant for all locales the repository contains data for. This can be used to + generate pre-declared outputs. +""" +cldr_data_repository = repository_rule( + implementation = _cldr_data_repository_impl, + attrs = { + "urls": attr.string_dict(doc = """ + Dictionary of URLs that resolve to archives containing CLDR JSON data. These archives + will be downloaded and extracted at root of the repository. Each key can specify + a SHA256 checksum for hermetic builds. + """, mandatory = True), + "available_locales_path": attr.string( + doc = """ + Relative path to the JSON data file describing all available locales. + This file usually resides within the `cldr-core` package + """, + default = "cldr-core/availableLocales.json", + ), + }, +) diff --git a/packages/common/locales/generate-locales-tool/cldr-data.ts b/packages/common/locales/generate-locales-tool/cldr-data.ts new file mode 100644 index 0000000000..d865ceb652 --- /dev/null +++ b/packages/common/locales/generate-locales-tool/cldr-data.ts @@ -0,0 +1,160 @@ +/** + * @license + * 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 + */ + +import {runfiles} from '@bazel/runfiles'; +import {CldrStatic} from 'cldrjs'; +import {sync as globSync} from 'glob'; + +// TypeScript doesn't allow us to import the default export without the `esModuleInterop`. We use +// the NodeJS require function instead as specifying a custom tsconfig complicates the setup +// unnecessarily. +// TODO: See if we can improve this by having better types for `cldrjs`. +const cldrjs: typeof import('cldrjs') = require('cldrjs'); + +/** + * Globs that match CLDR JSON data files that should be fetched. We limit these intentionally + * as loading unused data results in significant slow-down of the generation + * (noticeable in local development if locale data is re-generated). + */ +const CLDR_DATA_GLOBS = [ + 'cldr-core-37.0.0/scriptMetadata.json', + 'cldr-core-37.0.0/supplemental/**/*.json', + 'cldr-dates-full-37.0.0/main/**/*.json', + 'cldr-numbers-full-37.0.0/main/**/*.json', +]; + +/** Path to the CLDR available locales file. */ +const CLDR_AVAILABLE_LOCALES_PATH = 'cldr-core-37.0.0/availableLocales.json'; + +/** Path to the CLDR locale aliases file. */ +const CLDR_LOCALE_ALIASES_PATH = 'cldr-core-37.0.0/supplemental/aliases.json'; + +/** + * Instance providing access to a locale's CLDR data. This type extends the `cldrjs` + * instance type with the missing `bundle` attribute property. + */ +export type CldrLocaleData = CldrStatic&{ + attributes: { + /** + * Resolved bundle name for the locale. + * More details: http://www.unicode.org/reports/tr35/#Bundle_vs_Item_Lookup + */ + bundle: string; + } +}; + +/** + * Possible reasons for an alias in the CLDR supplemental data. See: + * https://unicode.org/reports/tr35/tr35-info.html#Appendix_Supplemental_Metadata. + */ +export type CldrLocaleAliasReason = + 'deprecated'|'overlong'|'macrolanguage'|'legacy'|'bibliographic'; + +/** + * Class that provides access to the CLDR data downloaded as part of + * the `@cldr_data` Bazel repository. + */ +export class CldrData { + /** Path to the CLDR data Bazel repository. i.e. `@cldr_data//`. */ + readonly cldrDataDir = runfiles.resolve('cldr_data'); + + /** List of all available locales CLDR provides data for. */ + readonly availableLocales: readonly CldrLocaleData[]; + + constructor() { + this._loadAndPopulateCldrData(); + this.availableLocales = this._getAvailableLocales(); + } + + /** Gets the CLDR data for the specified locale. */ + getLocaleData(localeName: string): CldrLocaleData|null { + // Cast to `CldrLocaleData` because the default `cldrjs` types from `DefinitelyTyped` + // are outdated and do not capture the `bundle` attribute. See: + // https://github.com/rxaviers/cldrjs#instantiate-a-locale-and-get-it-normalized. + const localeData = new cldrjs(localeName) as CldrLocaleData; + + // In case a locale has been requested for which no data is available, we return + // `null` immediately instead of returning an empty `CldrStatic` instance. + if (localeData.attributes.bundle === null) { + return null; + } + + return localeData; + } + + /** + * Gets the CLDR language aliases. + * http://cldr.unicode.org/index/cldr-spec/language-tag-equivalences. + */ + getLanguageAliases(): + {[localeName: string]: {_reason: CldrLocaleAliasReason, _replacement: string}} { + return require(`${this.cldrDataDir}/${CLDR_LOCALE_ALIASES_PATH}`) + .supplemental.metadata.alias.languageAlias; + } + + /** Gets a list of all locales CLDR provides data for. */ + private _getAvailableLocales(): CldrLocaleData[] { + const allLocales = + require(`${this.cldrDataDir}/${CLDR_AVAILABLE_LOCALES_PATH}`).availableLocales.full; + const localesWithData: CldrLocaleData[] = []; + + for (const localeName of allLocales) { + const localeData = this.getLocaleData(localeName); + + // If `cldrjs` is unable to resolve a `bundle` for the current locale, then there is no data + // for this locale, and it should not be generated. This can happen as with older versions of + // CLDR where `availableLocales.json` specifies locales for which no data is available + // (even within the `full` tier packages). See: + // http://cldr.unicode.org/development/development-process/design-proposals/json-packaging. + // TODO(devversion): Remove if we update to CLDR v39 where this seems fixed. Note that this + // worked before in the Gulp tooling without such a check because the `cldr-data-downloader` + // overwrote the `availableLocales` to only capture locales with data. + if (localeData !== null) { + localesWithData.push(localeData); + } + } + + return localesWithData; + } + + /** Loads the CLDR data and populates the `cldrjs` library with it. */ + private _loadAndPopulateCldrData() { + const localeData = this._readCldrDataFromRepository(); + + if (localeData.length === 0) { + throw Error('No CLDR data could be found.'); + } + + // Populate the `cldrjs` library with the locale data. Note that we need this type cast + // to satisfy the first `cldrjs.load` parameter which cannot be undefined. + cldrjs.load(...localeData as [object, ...object[]]); + } + + /** + * Reads the CLDR JSON data from the Bazel repository. + * @returns a list of read JSON objects representing the CLDR data. + */ + private _readCldrDataFromRepository(): object[] { + const jsonFiles = + CLDR_DATA_GLOBS.map(pattern => globSync(pattern, {cwd: this.cldrDataDir, absolute: true})) + .reduce((acc, dataFiles) => [...acc, ...dataFiles], []); + + // Read the JSON for all determined CLDR json files. + return jsonFiles.map(filePath => { + const parsed = require(filePath); + + // Guards against cases where non-CLDR data files are accidentally picked up + // by the glob above and would throw-off the bundle lookup in `cldrjs`. + if (parsed.main !== undefined && typeof parsed.main !== 'object') { + throw Error('Unexpected CLDR json file with "main" field which is not an object.'); + } + + return parsed; + }); + } +} diff --git a/packages/common/locales/generate-locales-tool/closure-locale-file.ts b/packages/common/locales/generate-locales-tool/closure-locale-file.ts new file mode 100644 index 0000000000..bcf72ea82a --- /dev/null +++ b/packages/common/locales/generate-locales-tool/closure-locale-file.ts @@ -0,0 +1,163 @@ +/** + * @license + * 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 + */ + +import {CldrData, CldrLocaleData} from './cldr-data'; +import {fileHeader} from './file-header'; +import {BaseCurrencies} from './locale-base-currencies'; +import {generateLocale} from './locale-file'; + +interface ClosureLocale { + /** Closure-supported locale names that resolve to this locale. */ + closureLocaleNames: string[]; + /** Canonical locale name that is used to resolve the CLDR data. */ + canonicalLocaleName: string; + /** Locale data. Can have a different locale name if this captures an aliased locale. */ + data: CldrLocaleData; +} + +/** + * Locales used by closure that need to be captured within the Closure Locale file. Extracted from: + * https://github.com/google/closure-library/blob/c7445058af72f679ef3273274e936d5d5f40b55a/closure/goog/i18n/datetimepatterns.js#L2450 + */ +const closureLibraryLocales = [ + 'af', 'am', 'ar', 'ar-DZ', 'az', 'be', 'bg', 'bn', 'br', 'bs', + 'ca', 'chr', 'cs', 'cy', 'da', 'de', 'de-AT', 'de-CH', 'el', 'en-AU', + 'en-CA', 'en-GB', 'en-IE', 'en-IN', 'en-SG', 'en-ZA', 'es', 'es-419', 'es-MX', 'es-US', + 'et', 'eu', 'fa', 'fi', 'fr', 'fr-CA', 'ga', 'gl', 'gsw', 'gu', + 'haw', 'hi', 'hr', 'hu', 'hy', 'id', 'is', 'it', 'he', 'ja', + 'ka', 'kk', 'km', 'kn', 'ko', 'ky', 'ln', 'lo', 'lt', 'lv', + 'mk', 'ml', 'mn', 'ro-MD', 'mr', 'ms', 'mt', 'my', 'ne', 'nl', + 'nb', 'or', 'pa', 'pl', 'pt', 'pt-PT', 'ro', 'ru', 'sr-Latn', 'si', + 'sk', 'sl', 'sq', 'sr', 'sv', 'sw', 'ta', 'te', 'th', 'fil', + 'tr', 'uk', 'ur', 'uz', 'vi', 'zh', 'zh-Hans', 'zh-Hant-HK', 'zh-Hant', 'zu' +] as const; + +/** Union type matching possible Closure Library locales. */ +type ClosureLibraryLocaleName = typeof closureLibraryLocales[number]; + +/** + * Locale ID aliases to support deprecated locale ids used by Closure. Maps locales supported + * by Closure library to a list of aliases that match the same locale data. + */ +const closureLibraryAliases: {[l in ClosureLibraryLocaleName]?: string[]} = { + 'id': ['in'], + 'he': ['iw'], + 'ro-MD': ['mo'], + 'nb': ['no', 'no-NO'], + 'sr-Latn': ['sh'], + 'fil': ['tl'], + 'pt': ['pt-BR'], + 'zh-Hans': ['zh-Hans-CN', 'zh-CN'], + 'zh-Hant-HK': ['zh-HK'], + 'zh-Hant': ['zh-Hant-TW', 'zh-TW'], +}; + + +/** + * Generate a file that contains all locale to import for closure. + * Tree shaking will only keep the data for the `goog.LOCALE` locale. + */ +export function generateClosureLocaleFile(cldrData: CldrData, baseCurrencies: BaseCurrencies) { + const locales: ClosureLocale[] = closureLibraryLocales.map(localeName => { + const data = cldrData.getLocaleData(localeName); + + if (data === null) { + throw Error(`Missing locale data for Closure locale: ${localeName}`); + } + + return { + data, + canonicalLocaleName: localeName, + closureLocaleNames: computeEquivalentLocaleNames(localeName), + }; + }); + + return `${fileHeader} + +import {registerLocaleData} from '../src/i18n/locale_data'; + +const u = undefined; + +${locales.map(locale => generateLocaleConstants(locale)).join('\n')} + +let l: any; +let locales: string[] = []; + +switch (goog.LOCALE) { +${locales.map(locale => generateCase(locale)).join('')}} + +if (l) { + locales.forEach(locale => registerLocaleData(l, locale)); +} +`; + + /** + * Generates locale data constants for all locale names within the specified + * Closure Library locale. + */ + function generateLocaleConstants(locale: ClosureLocale): string { + // Closure Locale names contain both the dashed and underscore variant. We filter out + // the dashed variant as otherwise we would end up with the same constant twice. e.g. + // https://github.com/google/closure-library/blob/c7445058af72f679ef3273274e936d5d5f40b55a/closure/goog/i18n/datetimepatternsext.js#L11659-L11660. + const localeConstantNames = locale.closureLocaleNames.filter(d => !d.includes('-')) + .map(d => `locale_${formatLocale(d)}`); + const dataConstantName = localeConstantNames[0]; + const otherAliasConstantNames = localeConstantNames.slice(1); + + // We only generate the locale data once. All other constants just refer to the + // first constant with the actual locale data. This reduces the Closure Locale file + // size and potentially speeds up compilation with Closure Compiler. + return ` +${generateLocaleConstant(locale, dataConstantName)} +${otherAliasConstantNames.map(d => `export const ${d} = ${dataConstantName};`).join('\n')}`; + } + + /** Generates a locale data constant for the specified locale. */ + function generateLocaleConstant(locale: ClosureLocale, constantName: string): string { + return generateLocale(locale.canonicalLocaleName, locale.data, baseCurrencies) + .replace(`${fileHeader}\n`, '') + .replace('export default ', `export const ${constantName} = `) + .replace('function plural', `function plural_${constantName}`) + .replace(/,\s+plural/, `, plural_${constantName}`) + .replace(/\s*const u = undefined;\s*/, ''); + } + + /** Generates a TypeScript `switch` case for the specified locale. */ + function generateCase(locale: ClosureLocale): string { + return ` +${locale.closureLocaleNames.map(l => `case '${l}':`).join('\n')} + l = locale_${formatLocale(locale.canonicalLocaleName)}; + locales = [${locale.closureLocaleNames.map(n => `"${n}"`).join(', ')}]; + break;`; + } +} + +function computeEquivalentLocaleNames(localeName: ClosureLibraryLocaleName): string[] { + const equivalents = new Set([localeName]); + + if (localeName.includes('-')) { + equivalents.add(localeName.replace(/-/g, '_')); + } + + const aliases = closureLibraryAliases[localeName]; + if (aliases !== undefined) { + aliases.forEach(aliasName => { + equivalents.add(aliasName); + + if (aliasName.includes('-')) { + equivalents.add(aliasName.replace(/-/g, '_')); + } + }); + } + + return Array.from(equivalents); +} + +function formatLocale(locale: string): string { + return locale.replace(/-/g, '_'); +} diff --git a/packages/common/locales/generate-locales-tool/day-periods.ts b/packages/common/locales/generate-locales-tool/day-periods.ts new file mode 100644 index 0000000000..f2c9a1df07 --- /dev/null +++ b/packages/common/locales/generate-locales-tool/day-periods.ts @@ -0,0 +1,75 @@ +/** + * @license + * 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 + */ + +import {CldrLocaleData} from './cldr-data'; + +/** + * Returns data for the chosen day periods + */ +export function getDayPeriods(localeData: CldrLocaleData, dayPeriodsList: string[]): { + format: {narrow: string[], abbreviated: string[], wide: string[]}, + 'stand-alone': {narrow: string[], abbreviated: string[], wide: string[]} +} { + const dayPeriods = localeData.main(`dates/calendars/gregorian/dayPeriods`); + const result: any = {}; + // cleaning up unused keys + Object.keys(dayPeriods).forEach(key1 => { // format / stand-alone + result[key1] = {}; + Object.keys(dayPeriods[key1]).forEach(key2 => { // narrow / abbreviated / wide + result[key1][key2] = {}; + Object.keys(dayPeriods[key1][key2]).forEach(key3 => { + if (dayPeriodsList.indexOf(key3) !== -1) { + result[key1][key2][key3] = dayPeriods[key1][key2][key3]; + } + }); + }); + }); + + return result as any; +} + + +/** + * Returns day period rules for a locale + * @returns string[] + */ +export function getDayPeriodRules(localeData: CldrLocaleData): {[key: string]: []} { + const dayPeriodRules = + localeData.get(`supplemental/dayPeriodRuleSet/${localeData.attributes.language}`); + const rules: any = {}; + + if (dayPeriodRules) { + Object.keys(dayPeriodRules).forEach(key => { + if (dayPeriodRules[key]._at) { + rules[key] = dayPeriodRules[key]._at; + } else { + rules[key] = [dayPeriodRules[key]._from, dayPeriodRules[key]._before]; + } + }); + } + + return rules; +} + + +/** + * Returns the basic day periods (am/pm) + */ +export function getDayPeriodsAmPm(localeData: CldrLocaleData) { + return getDayPeriods(localeData, ['am', 'pm']); +} + +/** + * Returns the extra day periods (without am/pm) + */ +export function getDayPeriodsNoAmPm(localeData: CldrLocaleData) { + return getDayPeriods(localeData, [ + 'noon', 'midnight', 'morning1', 'morning2', 'afternoon1', 'afternoon2', 'evening1', 'evening2', + 'night1', 'night2' + ]); +} diff --git a/packages/common/locales/generate-locales-tool/file-header.ts b/packages/common/locales/generate-locales-tool/file-header.ts new file mode 100644 index 0000000000..a631cb1cf0 --- /dev/null +++ b/packages/common/locales/generate-locales-tool/file-header.ts @@ -0,0 +1,17 @@ +/** + * @license + * 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 + */ + +export const fileHeader = `/** + * @license + * 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 + */ + +// THIS CODE IS GENERATED - DO NOT MODIFY.`; diff --git a/packages/common/locales/generate-locales-tool/locale-base-currencies.ts b/packages/common/locales/generate-locales-tool/locale-base-currencies.ts new file mode 100644 index 0000000000..fc3cc19dac --- /dev/null +++ b/packages/common/locales/generate-locales-tool/locale-base-currencies.ts @@ -0,0 +1,74 @@ +/** + * @license + * 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 + */ + +import {CldrLocaleData} from './cldr-data'; +import {fileHeader} from './file-header'; +import {stringify} from './object-stringify'; + +export type BaseCurrencySymbols = [ + string +]|[string | undefined, string]|[string, undefined, number]|[string | undefined, string, number]; + +export type BaseCurrencies = { + [code: string]: BaseCurrencySymbols|undefined; +}; + +/** + * Generate a file that contains the list of currencies, their symbols and digits. + */ +export function generateBaseCurrenciesFile(baseLocaleData: CldrLocaleData) { + const baseCurrencies = generateBaseCurrencies(baseLocaleData); + + return `${fileHeader} +export type CurrenciesSymbols = [string] | [string | undefined, string]; + +/** @internal */ +export const CURRENCIES_EN: {[code: string]: CurrenciesSymbols | [string | undefined, string | undefined, number]} = ${ + stringify(baseCurrencies)}; +`; +} + +/** + * Generate a list of currencies to be used as a base for other currencies + * e.g.: {'ARS': [, '$'], 'AUD': ['A$', '$'], ...} + */ +export function generateBaseCurrencies(localeData: CldrLocaleData) { + const currenciesData = localeData.main('numbers/currencies'); + const fractions = localeData.get(`supplemental/currencyData/fractions`); + const currencies: BaseCurrencies = {}; + + Object.keys(currenciesData).forEach(key => { + let symbolsArray = []; + const symbol = currenciesData[key].symbol; + const symbolNarrow = currenciesData[key]['symbol-alt-narrow']; + if (symbol && symbol !== key) { + symbolsArray.push(symbol); + } + if (symbolNarrow && symbolNarrow !== symbol) { + if (symbolsArray.length > 0) { + symbolsArray.push(symbolNarrow); + } else { + symbolsArray = [undefined, symbolNarrow]; + } + } + if (fractions[key] && fractions[key]['_digits']) { + const digits = parseInt(fractions[key]['_digits'], 10); + if (symbolsArray.length === 2) { + symbolsArray.push(digits); + } else if (symbolsArray.length === 1) { + symbolsArray = [...symbolsArray, undefined, digits]; + } else { + symbolsArray = [undefined, undefined, digits]; + } + } + if (symbolsArray.length > 0) { + currencies[key] = symbolsArray as BaseCurrencySymbols; + } + }); + return currencies; +} diff --git a/packages/common/locales/generate-locales-tool/locale-currencies.ts b/packages/common/locales/generate-locales-tool/locale-currencies.ts new file mode 100644 index 0000000000..34fbae370b --- /dev/null +++ b/packages/common/locales/generate-locales-tool/locale-currencies.ts @@ -0,0 +1,87 @@ +/** + * @license + * 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 + */ + +import {CldrLocaleData} from './cldr-data'; +import {BaseCurrencies} from './locale-base-currencies'; + +/** + * To minimize the file even more, we only output the differences compared to the base currency + */ +export function generateLocaleCurrencies( + localeData: CldrLocaleData, baseCurrencies: BaseCurrencies) { + const currenciesData = localeData.main('numbers/currencies'); + const currencies: any = {}; + + Object.keys(currenciesData).forEach(code => { + let symbolsArray = []; + const symbol = currenciesData[code].symbol; + const symbolNarrow = currenciesData[code]['symbol-alt-narrow']; + if (symbol && symbol !== code) { + symbolsArray.push(symbol); + } + if (symbolNarrow && symbolNarrow !== symbol) { + if (symbolsArray.length > 0) { + symbolsArray.push(symbolNarrow); + } else { + symbolsArray = [undefined, symbolNarrow]; + } + } + + const baseCurrencySymbols = baseCurrencies[code] || []; + + // Jf locale data is equal to the one in the base currencies, skip this currency to + // avoid unnecessary locale data that could be inferred from the base currency. + if (baseCurrencySymbols && baseCurrencySymbols[0] === symbolsArray[0] && + baseCurrencySymbols[1] === symbolsArray[1]) { + return; + } + + currencies[code] = symbolsArray; + }); + return currencies; +} + +/** + * Returns the currency code, symbol and name for a locale + */ +export function getCurrencySettings(localeName: string, localeData: CldrLocaleData) { + const currencyInfo = localeData.main(`numbers/currencies`); + let currentCurrency = ''; + + // find the currency currently used in this country + const currencies: any[] = + localeData.get(`supplemental/currencyData/region/${localeData.attributes.territory}`) || + localeData.get( + `supplemental/currencyData/region/${localeData.attributes.language.toUpperCase()}`); + + if (currencies) { + currencies.some(currency => { + const keys = Object.keys(currency); + return keys.some(key => { + if (currency[key]._from && !currency[key]._to) { + return currentCurrency = key; + } + }); + }); + + if (!currentCurrency) { + throw new Error(`Unable to find currency for locale "${localeName}"`); + } + } + + let currencySettings = [undefined, undefined, undefined]; + + if (currentCurrency) { + currencySettings = [ + currentCurrency, currencyInfo[currentCurrency].symbol, + currencyInfo[currentCurrency].displayName + ]; + } + + return currencySettings; +} diff --git a/packages/common/locales/generate-locales-tool/locale-extra-file.ts b/packages/common/locales/generate-locales-tool/locale-extra-file.ts new file mode 100644 index 0000000000..48f2b20091 --- /dev/null +++ b/packages/common/locales/generate-locales-tool/locale-extra-file.ts @@ -0,0 +1,57 @@ +/** + * @license + * 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 + */ + +import {removeDuplicates} from './array-deduplication'; +import {CldrLocaleData} from './cldr-data'; +import {getDayPeriodRules, getDayPeriodsNoAmPm} from './day-periods'; +import {fileHeader} from './file-header'; +import {stringify} from './object-stringify'; + +/** + * Generate the contents for the extra data file + */ +export function generateLocaleExtra(locale: string, localeData: CldrLocaleData) { + return `${fileHeader} +const u = undefined; + +export default ${generateDayPeriodsSupplementalString(locale, localeData)}; +`; +} + + +/** + * Collect up the day period rules, and extended day period data. + */ +export function generateDayPeriodsSupplementalString(locale: string, localeData: CldrLocaleData) { + const dayPeriods = getDayPeriodsNoAmPm(localeData); + const dayPeriodRules = getDayPeriodRules(localeData); + + let dayPeriodsSupplemental: any[] = []; + if (Object.keys(dayPeriods.format.narrow).length) { + const keys = Object.keys(dayPeriods.format.narrow); + + if (keys.length !== Object.keys(dayPeriodRules).length) { + throw new Error(`Error: locale ${locale} has not the correct number of day period rules`); + } + + const dayPeriodsFormat = removeDuplicates([ + Object.values(dayPeriods.format.narrow), Object.values(dayPeriods.format.abbreviated), + Object.values(dayPeriods.format.wide) + ]); + + const dayPeriodsStandalone = removeDuplicates([ + Object.values(dayPeriods['stand-alone'].narrow), + Object.values(dayPeriods['stand-alone'].abbreviated), + Object.values(dayPeriods['stand-alone'].wide) + ]); + + const rules = keys.map(key => dayPeriodRules[key]); + dayPeriodsSupplemental = [...removeDuplicates([dayPeriodsFormat, dayPeriodsStandalone]), rules]; + } + return stringify(dayPeriodsSupplemental).replace(/undefined/g, 'u'); +} diff --git a/packages/common/locales/generate-locales-tool/locale-file.ts b/packages/common/locales/generate-locales-tool/locale-file.ts new file mode 100644 index 0000000000..459f37660d --- /dev/null +++ b/packages/common/locales/generate-locales-tool/locale-file.ts @@ -0,0 +1,225 @@ +/** + * @license + * 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 + */ + +import {removeDuplicates} from './array-deduplication'; +import {CldrLocaleData} from './cldr-data'; +import {getDayPeriodsAmPm} from './day-periods'; +import {fileHeader} from './file-header'; +import {BaseCurrencies} from './locale-base-currencies'; +import {generateLocaleCurrencies, getCurrencySettings} from './locale-currencies'; +import {stringify} from './object-stringify'; +import {getPluralFunction} from './plural-function'; + +const WEEK_DAYS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']; + +/** Generate contents for the basic locale data file */ +export function generateLocale( + locale: string, localeData: CldrLocaleData, baseCurrencies: BaseCurrencies) { + return `${fileHeader} +const u = undefined; + +${getPluralFunction(localeData)} + +export default ${generateBasicLocaleString(locale, localeData, baseCurrencies)}; +`; +} + + +/** + * Collect up the basic locale data [ localeId, dateTime, number, currency, directionality, + * pluralCase ]. + */ +export function generateBasicLocaleString( + locale: string, localeData: CldrLocaleData, baseCurrencies: BaseCurrencies) { + let data = stringify([ + locale, + ...getDateTimeTranslations(localeData), + ...getDateTimeSettings(localeData), + ...getNumberSettings(localeData), + ...getCurrencySettings(locale, localeData), + generateLocaleCurrencies(localeData, baseCurrencies), + getDirectionality(localeData), + ]) + // We remove "undefined" added by spreading arrays when there is no value + .replace(/undefined/g, 'u'); + + // adding plural function after, because we don't want it as a string. The function named `plural` + // is expected to be available in the file. See `generateLocale` above. + data = data.replace(/\]$/, ', plural]'); + return data; +} + +/** + * Returns the writing direction for a locale + * @returns 'rtl' | 'ltr' + */ +function getDirectionality(localeData: CldrLocaleData): 'rtl'|'ltr' { + const rtl = localeData.get('scriptMetadata/{script}/rtl'); + return rtl === 'YES' ? 'rtl' : 'ltr'; +} + + +/** + * Returns dateTime data for a locale + * @returns [ firstDayOfWeek, weekendRange, formats ] + */ +function getDateTimeSettings(localeData: CldrLocaleData) { + return [ + getFirstDayOfWeek(localeData), getWeekendRange(localeData), ...getDateTimeFormats(localeData) + ]; +} + + + +/** + * Returns the number symbols and formats for a locale + * @returns [ symbols, formats ] + * symbols: [ decimal, group, list, percentSign, plusSign, minusSign, exponential, + * superscriptingExponent, perMille, infinity, nan, timeSeparator, currencyDecimal?, currencyGroup? + * ] + * formats: [ currency, decimal, percent, scientific ] + */ +function getNumberSettings(localeData: CldrLocaleData) { + const decimalFormat = localeData.main('numbers/decimalFormats-numberSystem-latn/standard'); + const percentFormat = localeData.main('numbers/percentFormats-numberSystem-latn/standard'); + const scientificFormat = localeData.main('numbers/scientificFormats-numberSystem-latn/standard'); + const currencyFormat = localeData.main('numbers/currencyFormats-numberSystem-latn/standard'); + const symbols = localeData.main('numbers/symbols-numberSystem-latn'); + const symbolValues = [ + symbols.decimal, + symbols.group, + symbols.list, + symbols.percentSign, + symbols.plusSign, + symbols.minusSign, + symbols.exponential, + symbols.superscriptingExponent, + symbols.perMille, + symbols.infinity, + symbols.nan, + symbols.timeSeparator, + ]; + + if (symbols.currencyDecimal || symbols.currencyGroup) { + symbolValues.push(symbols.currencyDecimal); + } + + if (symbols.currencyGroup) { + symbolValues.push(symbols.currencyGroup); + } + + return [symbolValues, [decimalFormat, percentFormat, currencyFormat, scientificFormat]]; +} + +/** + * Returns week-end range for a locale, based on US week days + * @returns [number, number] + */ +function getWeekendRange(localeData: CldrLocaleData) { + const startDay = + localeData.get(`supplemental/weekData/weekendStart/${localeData.attributes.territory}`) || + localeData.get('supplemental/weekData/weekendStart/001'); + const endDay = + localeData.get(`supplemental/weekData/weekendEnd/${localeData.attributes.territory}`) || + localeData.get('supplemental/weekData/weekendEnd/001'); + return [WEEK_DAYS.indexOf(startDay), WEEK_DAYS.indexOf(endDay)]; +} + + + +/** + * Returns date-related translations for a locale + * @returns [ dayPeriodsFormat, dayPeriodsStandalone, daysFormat, dayStandalone, monthsFormat, + * monthsStandalone, eras ] + * each value: [ narrow, abbreviated, wide, short? ] + */ +function getDateTimeTranslations(localeData: CldrLocaleData) { + const dayNames = localeData.main(`dates/calendars/gregorian/days`); + const monthNames = localeData.main(`dates/calendars/gregorian/months`); + const erasNames = localeData.main(`dates/calendars/gregorian/eras`); + const dayPeriods = getDayPeriodsAmPm(localeData); + + const dayPeriodsFormat = removeDuplicates([ + Object.values(dayPeriods.format.narrow), Object.values(dayPeriods.format.abbreviated), + Object.values(dayPeriods.format.wide) + ]); + + const dayPeriodsStandalone = removeDuplicates([ + Object.values(dayPeriods['stand-alone'].narrow), + Object.values(dayPeriods['stand-alone'].abbreviated), + Object.values(dayPeriods['stand-alone'].wide) + ]); + + const daysFormat = removeDuplicates([ + Object.values(dayNames.format.narrow), Object.values(dayNames.format.abbreviated), + Object.values(dayNames.format.wide), Object.values(dayNames.format.short) + ]); + + const daysStandalone = removeDuplicates([ + Object.values(dayNames['stand-alone'].narrow), + Object.values(dayNames['stand-alone'].abbreviated), Object.values(dayNames['stand-alone'].wide), + Object.values(dayNames['stand-alone'].short) + ]); + + const monthsFormat = removeDuplicates([ + Object.values(monthNames.format.narrow), Object.values(monthNames.format.abbreviated), + Object.values(monthNames.format.wide) + ]); + + const monthsStandalone = removeDuplicates([ + Object.values(monthNames['stand-alone'].narrow), + Object.values(monthNames['stand-alone'].abbreviated), + Object.values(monthNames['stand-alone'].wide) + ]); + + const eras = removeDuplicates([ + [erasNames.eraNarrow['0'], erasNames.eraNarrow['1']], + [erasNames.eraAbbr['0'], erasNames.eraAbbr['1']], + [erasNames.eraNames['0'], erasNames.eraNames['1']] + ]); + + const dateTimeTranslations = [ + ...removeDuplicates([dayPeriodsFormat, dayPeriodsStandalone]), + ...removeDuplicates([daysFormat, daysStandalone]), + ...removeDuplicates([monthsFormat, monthsStandalone]), eras + ]; + + return dateTimeTranslations; +} + + +/** + * Returns date, time and dateTime formats for a locale + * @returns [dateFormats, timeFormats, dateTimeFormats] + * each format: [ short, medium, long, full ] + */ +function getDateTimeFormats(localeData: CldrLocaleData) { + function getFormats(data: any) { + return removeDuplicates([ + data.short._value || data.short, data.medium._value || data.medium, + data.long._value || data.long, data.full._value || data.full + ]); + } + + const dateFormats = localeData.main('dates/calendars/gregorian/dateFormats'); + const timeFormats = localeData.main('dates/calendars/gregorian/timeFormats'); + const dateTimeFormats = localeData.main('dates/calendars/gregorian/dateTimeFormats'); + + return [getFormats(dateFormats), getFormats(timeFormats), getFormats(dateTimeFormats)]; +} + + +/** + * Returns the first day of the week, based on US week days + * @returns number + */ +function getFirstDayOfWeek(localeData: CldrLocaleData) { + // The `cldrjs` package does not provide proper types for `supplemental`. The + // types are part of the package but embedded incorrectly and not usable. + return WEEK_DAYS.indexOf((localeData as any).supplemental.weekData.firstDay()); +} diff --git a/packages/common/locales/generate-locales-tool/locale-global-file.ts b/packages/common/locales/generate-locales-tool/locale-global-file.ts new file mode 100644 index 0000000000..03bf212586 --- /dev/null +++ b/packages/common/locales/generate-locales-tool/locale-global-file.ts @@ -0,0 +1,42 @@ +/** + * @license + * 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 + */ + +import {CldrLocaleData} from './cldr-data'; +import {fileHeader} from './file-header'; +import {BaseCurrencies} from './locale-base-currencies'; +import {generateDayPeriodsSupplementalString} from './locale-extra-file'; +import {generateBasicLocaleString} from './locale-file'; +import {getPluralFunction} from './plural-function'; + +/** + * Generated the contents for the global locale file + */ +export function generateLocaleGlobalFile( + locale: string, localeData: CldrLocaleData, baseCurrencies: BaseCurrencies) { + const basicLocaleData = generateBasicLocaleString(locale, localeData, baseCurrencies); + const extraLocaleData = generateDayPeriodsSupplementalString(locale, localeData); + const data = basicLocaleData.replace(/\]$/, `, ${extraLocaleData}]`); + return `${fileHeader} + (function(global) { + global.ng = global.ng || {}; + global.ng.common = global.ng.common || {}; + global.ng.common.locales = global.ng.common.locales || {}; + const u = undefined; + ${getPluralFunction(localeData, false)} + global.ng.common.locales['${normalizeLocale(locale)}'] = ${data}; + })(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || typeof window !== 'undefined' && window); + `; +} + + +/** + * In Angular the locale is referenced by a "normalized" form. + */ +function normalizeLocale(locale: string): string { + return locale.toLowerCase().replace(/_/g, '-'); +} diff --git a/packages/common/locales/generate-locales-tool/object-stringify.ts b/packages/common/locales/generate-locales-tool/object-stringify.ts new file mode 100644 index 0000000000..2dcc9fc394 --- /dev/null +++ b/packages/common/locales/generate-locales-tool/object-stringify.ts @@ -0,0 +1,30 @@ +/** + * @license + * 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 + */ + +const UNDEFINED_PLACEHOLDER = `ɵɵUNDEFINED_PLACEHOLDER_JSON`; +const UNDEFINED_PLACEHOLDER_REGEX = new RegExp(`["']${UNDEFINED_PLACEHOLDER}["']`, 'g'); + +/** + * Stringifies the given object while preserving `undefined` values which would usually + * be transformed into `null` with JSON5. We want to preserve `undefined` because in generated + * JavaScript, the `undefined` values are separate from `null`, and `undefined` can be minified + * more efficiently. For example in arrays: `[, , someValue]`. + * + * Note that we do not use `JSON5` or similar formats where properties are not explicitly + * wrapped in quotes. Quotes are necessary so that Closure compiler does not accidentally + * rename properties. See an example where the currency symbols will be incorrect: + * https://closure-compiler.appspot.com/home#code%3D%252F%252F%2520%253D%253DClosureCompiler%253D%253D%250A%252F%252F%2520%2540output_file_name%2520default.js%250A%252F%252F%2520%2540compilation_level%2520ADVANCED_OPTIMIZATIONS%250A%252F%252F%2520%253D%253D%252FClosureCompiler%253D%253D%250A%250Aconst%2520base_currencies%2520%253D%2520%257B%250A%2520%2520ABC%253A%2520'd'%252C%250A%2509USD%253A%2520'x'%252C%250A%257D%253B%250A%250Aconst%2520current_locale_currencies%2520%253D%2520%257B%257D%250A%250Afunction%2520getCurrencySymbol(l)%2520%257B%250A%2520%2520return%2520current_locale_currencies%255Bl%255D%2520%257C%257C%2520base_currencies%255Bl%255D%2520%257C%257C%2520l%250A%257D%250A%250Aconsole.log(getCurrencySymbol('de'))%253B + */ +export function stringify(value: any) { + const result = + JSON.stringify(value, ((_, value) => value === undefined ? UNDEFINED_PLACEHOLDER : value)); + + UNDEFINED_PLACEHOLDER_REGEX.lastIndex = 0; + + return result.replace(UNDEFINED_PLACEHOLDER_REGEX, 'undefined'); +} diff --git a/packages/common/locales/generate-locales-tool/plural-function.ts b/packages/common/locales/generate-locales-tool/plural-function.ts new file mode 100644 index 0000000000..07c6189574 --- /dev/null +++ b/packages/common/locales/generate-locales-tool/plural-function.ts @@ -0,0 +1,42 @@ +/** + * @license + * 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 + */ +import {CldrLocaleData} from './cldr-data'; + +// There are no types available for `cldr`. +const cldr = require('cldr'); + +/** + * Returns the plural function for a locale + * TODO(ocombe): replace "cldr" extractPluralRuleFunction with our own extraction using "CldrJS" + * because the 2 libs can become out of sync if they use different versions of the cldr database + */ +export function getPluralFunction(localeData: CldrLocaleData, withTypes = true) { + // We use the resolved bundle for extracting the plural function. This matches with the + // lookup logic used by other extractions in the tool (using `cldrjs`), and also ensures + // we follow the CLDR-specified bundle lookup algorithm. A language does not necessarily + // resolve directly to a bundle CLDR provides data for. + const bundleName = localeData.attributes.bundle; + let fn = cldr.extractPluralRuleFunction(bundleName).toString(); + + const numberType = withTypes ? ': number' : ''; + fn = + fn.replace(/function anonymous\(n[^}]+{/g, `function plural(n${numberType})${numberType} {`) + // Since our generated plural functions only take numbers, we can eliminate some of + // the logic generated by the `cldr` package (to reduce payload size). + .replace(/var/g, /let/) + .replace(/if\s+\(typeof\s+n\s+===\s+["']string["']\)\s+n\s+=\s+parseInt\(n,\s+10\);/, ''); + + // The replacement values must match the `Plural` enum from common. + // We do not use the enum directly to avoid depending on that package. + return fn.replace(/["']zero["']/, '0') + .replace(/["']one["']/, '1') + .replace(/["']two["']/, '2') + .replace(/["']few["']/, '3') + .replace(/["']many["']/, '4') + .replace(/["']other["']/, '5'); +} diff --git a/packages/common/locales/gl.ts b/packages/common/locales/gl.ts deleted file mode 100644 index 4dbf3c45b2..0000000000 --- a/packages/common/locales/gl.ts +++ /dev/null @@ -1,79 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'gl', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['d.', 'l.', 'm.', 'm.', 'x.', 'v.', 's.'], - ['dom.', 'luns', 'mar.', 'mér.', 'xov.', 'ven.', 'sáb.'], - ['domingo', 'luns', 'martes', 'mércores', 'xoves', 'venres', 'sábado'], - ['do.', 'lu.', 'ma.', 'mé.', 'xo.', 've.', 'sá.'] - ], - [ - ['D', 'L', 'M', 'M', 'X', 'V', 'S'], ['Dom.', 'Luns', 'Mar.', 'Mér.', 'Xov.', 'Ven.', 'Sáb.'], - ['Domingo', 'Luns', 'Martes', 'Mércores', 'Xoves', 'Venres', 'Sábado'], - ['Do', 'Lu', 'Ma', 'Mé', 'Xo', 'Ve', 'Sá'] - ], - [ - ['x.', 'f.', 'm.', 'a.', 'm.', 'x.', 'x.', 'a.', 's.', 'o.', 'n.', 'd.'], - [ - 'xan.', 'feb.', 'mar.', 'abr.', 'maio', 'xuño', 'xul.', 'ago.', 'set.', 'out.', 'nov.', 'dec.' - ], - [ - 'xaneiro', 'febreiro', 'marzo', 'abril', 'maio', 'xuño', 'xullo', 'agosto', 'setembro', - 'outubro', 'novembro', 'decembro' - ] - ], - [ - ['X', 'F', 'M', 'A', 'M', 'X', 'X', 'A', 'S', 'O', 'N', 'D'], - [ - 'Xan.', 'Feb.', 'Mar.', 'Abr.', 'Maio', 'Xuño', 'Xul.', 'Ago.', 'Set.', 'Out.', 'Nov.', 'Dec.' - ], - [ - 'Xaneiro', 'Febreiro', 'Marzo', 'Abril', 'Maio', 'Xuño', 'Xullo', 'Agosto', 'Setembro', - 'Outubro', 'Novembro', 'Decembro' - ] - ], - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'despois de Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'd \'de\' MMM \'de\' y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{0}, {1}', u, '{0} \'do\' {1}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'BYN': [u, 'Br'], - 'ESP': ['₧'], - 'JPY': ['JP¥', '¥'], - 'KMF': [u, 'FC'], - 'MXN': ['$MX', '$'], - 'RUB': [u, 'руб'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XCD': [u, '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/global/af-NA.js b/packages/common/locales/global/af-NA.js deleted file mode 100644 index 8f486f29ab..0000000000 --- a/packages/common/locales/global/af-NA.js +++ /dev/null @@ -1,74 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['af-na'] = [ - 'af-NA', - [['v', 'n'], ['vm.', 'nm.'], u], - u, - [ - ['S', 'M', 'D', 'W', 'D', 'V', 'S'], ['So.', 'Ma.', 'Di.', 'Wo.', 'Do.', 'Vr.', 'Sa.'], - ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'], - ['So.', 'Ma.', 'Di.', 'Wo.', 'Do.', 'Vr.', 'Sa.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan.', 'Feb.', 'Mrt.', 'Apr.', 'Mei', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Des.'], - [ - 'Januarie', 'Februarie', 'Maart', 'April', 'Mei', 'Junie', 'Julie', 'Augustus', 'September', - 'Oktober', 'November', 'Desember' - ] - ], - u, - [['v.C.', 'n.C.'], u, ['voor Christus', 'na Christus']], - 1, - [6, 0], - ['y-MM-dd', 'dd MMM y', 'dd MMMM y', 'EEEE dd MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZAR', - 'R', - 'Suid-Afrikaanse rand', - { - 'CAD': [u, '$'], - 'JPY': ['JP¥', '¥'], - 'MXN': [u, '$'], - 'NAD': ['$'], - 'RON': [u, 'leu'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': [u, '$'], - 'ZAR': ['R'] - }, - 'ltr', - plural, - [ - [ - ['mn', 'o', 'm', 'a', 'n'], ['middernag', 'die oggend', 'die middag', 'die aand', 'die nag'], - u - ], - [['mn', 'o', 'm', 'a', 'n'], ['middernag', 'oggend', 'middag', 'aand', 'nag'], u], - ['00:00', ['05:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '05:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/af.js b/packages/common/locales/global/af.js deleted file mode 100644 index c7fd5908ea..0000000000 --- a/packages/common/locales/global/af.js +++ /dev/null @@ -1,73 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['af'] = [ - 'af', - [['v', 'n'], ['vm.', 'nm.'], u], - u, - [ - ['S', 'M', 'D', 'W', 'D', 'V', 'S'], ['So.', 'Ma.', 'Di.', 'Wo.', 'Do.', 'Vr.', 'Sa.'], - ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'], - ['So.', 'Ma.', 'Di.', 'Wo.', 'Do.', 'Vr.', 'Sa.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan.', 'Feb.', 'Mrt.', 'Apr.', 'Mei', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Des.'], - [ - 'Januarie', 'Februarie', 'Maart', 'April', 'Mei', 'Junie', 'Julie', 'Augustus', 'September', - 'Oktober', 'November', 'Desember' - ] - ], - u, - [['v.C.', 'n.C.'], u, ['voor Christus', 'na Christus']], - 0, - [6, 0], - ['y-MM-dd', 'dd MMM y', 'dd MMMM y', 'EEEE dd MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZAR', - 'R', - 'Suid-Afrikaanse rand', - { - 'CAD': [u, '$'], - 'JPY': ['JP¥', '¥'], - 'MXN': [u, '$'], - 'RON': [u, 'leu'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': [u, '$'], - 'ZAR': ['R'] - }, - 'ltr', - plural, - [ - [ - ['mn', 'o', 'm', 'a', 'n'], ['middernag', 'die oggend', 'die middag', 'die aand', 'die nag'], - u - ], - [['mn', 'o', 'm', 'a', 'n'], ['middernag', 'oggend', 'middag', 'aand', 'nag'], u], - ['00:00', ['05:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '05:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/agq.js b/packages/common/locales/global/agq.js deleted file mode 100644 index 5ecd8e50bb..0000000000 --- a/packages/common/locales/global/agq.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['agq'] = [ - 'agq', - [['a.g', 'a.k'], u, u], - u, - [ - ['n', 'k', 'g', 't', 'u', 'g', 'd'], ['nts', 'kpa', 'ghɔ', 'tɔm', 'ume', 'ghɨ', 'dzk'], - ['tsuʔntsɨ', 'tsuʔukpà', 'tsuʔughɔe', 'tsuʔutɔ̀mlò', 'tsuʔumè', 'tsuʔughɨ̂m', 'tsuʔndzɨkɔʔɔ'], - ['nts', 'kpa', 'ghɔ', 'tɔm', 'ume', 'ghɨ', 'dzk'] - ], - u, - [ - ['n', 'k', 't', 't', 's', 'z', 'k', 'f', 'd', 'l', 'c', 'f'], - ['nùm', 'kɨz', 'tɨd', 'taa', 'see', 'nzu', 'dum', 'fɔe', 'dzu', 'lɔm', 'kaa', 'fwo'], - [ - 'ndzɔ̀ŋɔ̀nùm', 'ndzɔ̀ŋɔ̀kƗ̀zùʔ', 'ndzɔ̀ŋɔ̀tƗ̀dʉ̀ghà', 'ndzɔ̀ŋɔ̀tǎafʉ̄ghā', 'ndzɔ̀ŋèsèe', 'ndzɔ̀ŋɔ̀nzùghò', - 'ndzɔ̀ŋɔ̀dùmlo', 'ndzɔ̀ŋɔ̀kwîfɔ̀e', 'ndzɔ̀ŋɔ̀tƗ̀fʉ̀ghàdzughù', 'ndzɔ̀ŋɔ̀ghǔuwelɔ̀m', 'ndzɔ̀ŋɔ̀chwaʔàkaa wo', - 'ndzɔ̀ŋèfwòo' - ] - ], - u, - [['SK', 'BK'], u, ['Sěe Kɨ̀lesto', 'Bǎa Kɨ̀lesto']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'XAF', - 'FCFA', - 'CFA Fàlâŋ BEAC', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ak.js b/packages/common/locales/global/ak.js deleted file mode 100644 index 944fc2cf6c..0000000000 --- a/packages/common/locales/global/ak.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === Math.floor(n) && n >= 0 && n <= 1) return 1; - return 5; -} -global.ng.common.locales['ak'] = [ - 'ak', - [['AN', 'EW'], u, u], - u, - [ - ['K', 'D', 'B', 'W', 'Y', 'F', 'M'], ['Kwe', 'Dwo', 'Ben', 'Wuk', 'Yaw', 'Fia', 'Mem'], - ['Kwesida', 'Dwowda', 'Benada', 'Wukuda', 'Yawda', 'Fida', 'Memeneda'], - ['Kwe', 'Dwo', 'Ben', 'Wuk', 'Yaw', 'Fia', 'Mem'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['S-Ɔ', 'K-Ɔ', 'E-Ɔ', 'E-O', 'E-K', 'O-A', 'A-K', 'D-Ɔ', 'F-Ɛ', 'Ɔ-A', 'Ɔ-O', 'M-Ɔ'], - [ - 'Sanda-Ɔpɛpɔn', 'Kwakwar-Ɔgyefuo', 'Ebɔw-Ɔbenem', 'Ebɔbira-Oforisuo', - 'Esusow Aketseaba-Kɔtɔnimba', 'Obirade-Ayɛwohomumu', 'Ayɛwoho-Kitawonsa', 'Difuu-Ɔsandaa', - 'Fankwa-Ɛbɔ', 'Ɔbɛsɛ-Ahinime', 'Ɔberɛfɛw-Obubuo', 'Mumu-Ɔpɛnimba' - ] - ], - u, - [['AK', 'KE'], u, ['Ansa Kristo', 'Kristo Ekyiri']], - 1, - [6, 0], - ['yy/MM/dd', 'y MMM d', 'y MMMM d', 'EEEE, y MMMM dd'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GHS', - 'GH₵', - 'Ghana Sidi', - {'GHS': ['GH₵'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/am.js b/packages/common/locales/global/am.js deleted file mode 100644 index 925950226a..0000000000 --- a/packages/common/locales/global/am.js +++ /dev/null @@ -1,79 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} -global.ng.common.locales['am'] = [ - 'am', - [['ጠ', 'ከ'], ['ጥዋት', 'ከሰዓት'], u], - u, - [ - ['እ', 'ሰ', 'ማ', 'ረ', 'ሐ', 'ዓ', 'ቅ'], ['እሑድ', 'ሰኞ', 'ማክሰ', 'ረቡዕ', 'ሐሙስ', 'ዓርብ', 'ቅዳሜ'], - ['እሑድ', 'ሰኞ', 'ማክሰኞ', 'ረቡዕ', 'ሐሙስ', 'ዓርብ', 'ቅዳሜ'], ['እ', 'ሰ', 'ማ', 'ረ', 'ሐ', 'ዓ', 'ቅ'] - ], - u, - [ - ['ጃ', 'ፌ', 'ማ', 'ኤ', 'ሜ', 'ጁ', 'ጁ', 'ኦ', 'ሴ', 'ኦ', 'ኖ', 'ዲ'], - ['ጃንዩ', 'ፌብሩ', 'ማርች', 'ኤፕሪ', 'ሜይ', 'ጁን', 'ጁላይ', 'ኦገስ', 'ሴፕቴ', 'ኦክቶ', 'ኖቬም', 'ዲሴም'], - [ - 'ጃንዩወሪ', 'ፌብሩወሪ', 'ማርች', 'ኤፕሪል', 'ሜይ', 'ጁን', 'ጁላይ', 'ኦገስት', 'ሴፕቴምበር', 'ኦክቶበር', 'ኖቬምበር', - 'ዲሴምበር' - ] - ], - u, - [['ዓ/ዓ', 'ዓ/ም'], u, ['ዓመተ ዓለም', 'ዓመተ ምሕረት']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'y MMMM d, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ETB', - 'ብር', - 'የኢትዮጵያ ብር', - { - 'AUD': ['AU$', '$'], - 'CNH': ['የቻይና ዩዋን'], - 'ETB': ['ብር'], - 'JPY': ['JP¥', '¥'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [ - ['እኩለ ሌሊት', 'ቀ', 'ጥዋት1', 'ከሰዓት1', 'ማታ1', 'ሌሊት1'], - ['እኩለ ሌሊት', 'ቀትር', 'ጥዋት1', 'ከሰዓት 7', 'ማታ1', 'ሌሊት1'], - ['እኩለ ሌሊት', 'ቀትር', 'ጥዋት1', 'ከሰዓት 7 ሰዓት', 'ማታ1', 'ሌሊት1'] - ], - [ - ['እኩለ ሌሊት', 'ቀትር', 'ጥዋት', 'ከሰዓት በኋላ', 'ማታ', 'ሌሊት'], - ['እኩለ ሌሊት', 'ቀትር', 'ጥዋት1', 'ከሰዓት በኋላ', 'ማታ', 'ሌሊት'], u - ], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-AE.js b/packages/common/locales/global/ar-AE.js deleted file mode 100644 index 13d285088d..0000000000 --- a/packages/common/locales/global/ar-AE.js +++ /dev/null @@ -1,123 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-ae'] = [ - 'ar-AE', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'AED', - 'د.إ.\u200f', - 'درهم إماراتي', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-BH.js b/packages/common/locales/global/ar-BH.js deleted file mode 100644 index 3f3616804c..0000000000 --- a/packages/common/locales/global/ar-BH.js +++ /dev/null @@ -1,124 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-bh'] = [ - 'ar-BH', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'BHD', - 'د.ب.\u200f', - 'دينار بحريني', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-DJ.js b/packages/common/locales/global/ar-DJ.js deleted file mode 100644 index 3d7530be90..0000000000 --- a/packages/common/locales/global/ar-DJ.js +++ /dev/null @@ -1,125 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-dj'] = [ - 'ar-DJ', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'DJF', - 'Fdj', - 'فرنك جيبوتي', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DJF': ['Fdj'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-DZ.js b/packages/common/locales/global/ar-DZ.js deleted file mode 100644 index 15aedd1ee4..0000000000 --- a/packages/common/locales/global/ar-DZ.js +++ /dev/null @@ -1,124 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-dz'] = [ - 'ar-DZ', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ج', 'ف', 'م', 'أ', 'م', 'ج', 'ج', 'أ', 'س', 'أ', 'ن', 'د'], - [ - 'جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان', 'جويلية', 'أوت', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'DZD', - 'د.ج.\u200f', - 'دينار جزائري', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-EG.js b/packages/common/locales/global/ar-EG.js deleted file mode 100644 index 798cfe79db..0000000000 --- a/packages/common/locales/global/ar-EG.js +++ /dev/null @@ -1,124 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-eg'] = [ - 'ar-EG', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'EGP', - 'ج.م.\u200f', - 'جنيه مصري', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-EH.js b/packages/common/locales/global/ar-EH.js deleted file mode 100644 index 1ede4bf6d6..0000000000 --- a/packages/common/locales/global/ar-EH.js +++ /dev/null @@ -1,124 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-eh'] = [ - 'ar-EH', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 1, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'MAD', - 'د.م.\u200f', - 'درهم مغربي', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-ER.js b/packages/common/locales/global/ar-ER.js deleted file mode 100644 index dba55ee7db..0000000000 --- a/packages/common/locales/global/ar-ER.js +++ /dev/null @@ -1,125 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-er'] = [ - 'ar-ER', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 1, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'ERN', - 'Nfk', - 'ناكفا أريتري', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'ERN': ['Nfk'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-IL.js b/packages/common/locales/global/ar-IL.js deleted file mode 100644 index 07ae65e21e..0000000000 --- a/packages/common/locales/global/ar-IL.js +++ /dev/null @@ -1,124 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-il'] = [ - 'ar-IL', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 0, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'ILS', - '₪', - 'شيكل إسرائيلي جديد', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-IQ.js b/packages/common/locales/global/ar-IQ.js deleted file mode 100644 index 68c0abe583..0000000000 --- a/packages/common/locales/global/ar-IQ.js +++ /dev/null @@ -1,134 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-iq'] = [ - 'ar-IQ', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ك', 'ش', 'آ', 'ن', 'أ', 'ح', 'ت', 'آ', 'أ', 'ت', 'ت', 'ك'], - [ - 'كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', - 'تشرين الأول', 'تشرين الثاني', 'كانون الأول' - ], - [ - 'كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', - 'تشرين الأول', 'تشرين الثاني', 'كانون الأول' - ] - ], - [ - ['ك', 'ش', 'آ', 'ن', 'أ', 'ح', 'ت', 'آ', 'أ', 'ت', 'ت', 'ك'], - [ - 'كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', - 'تشرين الأول', 'تشرين الثاني', 'كانون الأول' - ], - u - ], - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'IQD', - 'د.ع.\u200f', - 'دينار عراقي', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-JO.js b/packages/common/locales/global/ar-JO.js deleted file mode 100644 index 2c6c98c9e0..0000000000 --- a/packages/common/locales/global/ar-JO.js +++ /dev/null @@ -1,124 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-jo'] = [ - 'ar-JO', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ك', 'ش', 'آ', 'ن', 'أ', 'ح', 'ت', 'آ', 'أ', 'ت', 'ت', 'ك'], - [ - 'كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', - 'تشرين الأول', 'تشرين الثاني', 'كانون الأول' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'JOD', - 'د.أ.\u200f', - 'دينار أردني', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-KM.js b/packages/common/locales/global/ar-KM.js deleted file mode 100644 index 73fe106732..0000000000 --- a/packages/common/locales/global/ar-KM.js +++ /dev/null @@ -1,125 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-km'] = [ - 'ar-KM', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 1, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'KMF', - 'CF', - 'فرنك جزر القمر', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KMF': ['CF'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-KW.js b/packages/common/locales/global/ar-KW.js deleted file mode 100644 index c5ca0ee3fc..0000000000 --- a/packages/common/locales/global/ar-KW.js +++ /dev/null @@ -1,124 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-kw'] = [ - 'ar-KW', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'KWD', - 'د.ك.\u200f', - 'دينار كويتي', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-LB.js b/packages/common/locales/global/ar-LB.js deleted file mode 100644 index 43740981ee..0000000000 --- a/packages/common/locales/global/ar-LB.js +++ /dev/null @@ -1,123 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-lb'] = [ - 'ar-LB', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ك', 'ش', 'آ', 'ن', 'أ', 'ح', 'ت', 'آ', 'أ', 'ت', 'ت', 'ك'], - [ - 'كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', - 'تشرين الأول', 'تشرين الثاني', 'كانون الأول' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 1, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'LBP', - 'ل.ل.\u200f', - 'جنيه لبناني', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-LY.js b/packages/common/locales/global/ar-LY.js deleted file mode 100644 index a2bb200762..0000000000 --- a/packages/common/locales/global/ar-LY.js +++ /dev/null @@ -1,128 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-ly'] = [ - 'ar-LY', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'LYD', - 'د.ل.\u200f', - 'دينار ليبي', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ل'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-MA.js b/packages/common/locales/global/ar-MA.js deleted file mode 100644 index 78daf65932..0000000000 --- a/packages/common/locales/global/ar-MA.js +++ /dev/null @@ -1,124 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-ma'] = [ - 'ar-MA', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'م', 'ن', 'ل', 'غ', 'ش', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'ماي', 'يونيو', 'يوليوز', 'غشت', 'شتنبر', 'أكتوبر', - 'نونبر', 'دجنبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 1, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'MAD', - 'د.م.\u200f', - 'درهم مغربي', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-MR.js b/packages/common/locales/global/ar-MR.js deleted file mode 100644 index 7bc511fe15..0000000000 --- a/packages/common/locales/global/ar-MR.js +++ /dev/null @@ -1,124 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-mr'] = [ - 'ar-MR', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'إ', 'و', 'ن', 'ل', 'غ', 'ش', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'إبريل', 'مايو', 'يونيو', 'يوليو', 'أغشت', 'شتمبر', 'أكتوبر', - 'نوفمبر', 'دجمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 1, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'MRU', - 'أ.م.', - 'أوقية موريتانية', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-OM.js b/packages/common/locales/global/ar-OM.js deleted file mode 100644 index 414585fd08..0000000000 --- a/packages/common/locales/global/ar-OM.js +++ /dev/null @@ -1,124 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-om'] = [ - 'ar-OM', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'OMR', - 'ر.ع.\u200f', - 'ريال عماني', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-PS.js b/packages/common/locales/global/ar-PS.js deleted file mode 100644 index b8acec8c66..0000000000 --- a/packages/common/locales/global/ar-PS.js +++ /dev/null @@ -1,124 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-ps'] = [ - 'ar-PS', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ك', 'ش', 'آ', 'ن', 'أ', 'ح', 'ت', 'آ', 'أ', 'ت', 'ت', 'ك'], - [ - 'كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', - 'تشرين الأول', 'تشرين الثاني', 'كانون الأول' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 1, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'ILS', - '₪', - 'شيكل إسرائيلي جديد', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-QA.js b/packages/common/locales/global/ar-QA.js deleted file mode 100644 index ec0bb90a18..0000000000 --- a/packages/common/locales/global/ar-QA.js +++ /dev/null @@ -1,124 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-qa'] = [ - 'ar-QA', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'QAR', - 'ر.ق.\u200f', - 'ريال قطري', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-SA.js b/packages/common/locales/global/ar-SA.js deleted file mode 100644 index 21c7b1721b..0000000000 --- a/packages/common/locales/global/ar-SA.js +++ /dev/null @@ -1,128 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-sa'] = [ - 'ar-SA', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 0, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '٪', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'SAR', - 'ر.س.\u200f', - 'ريال سعودي', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ل'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-SD.js b/packages/common/locales/global/ar-SD.js deleted file mode 100644 index b6706f1616..0000000000 --- a/packages/common/locales/global/ar-SD.js +++ /dev/null @@ -1,124 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-sd'] = [ - 'ar-SD', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'SDG', - 'ج.س.', - 'جنيه سوداني', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-SO.js b/packages/common/locales/global/ar-SO.js deleted file mode 100644 index e9a88007b1..0000000000 --- a/packages/common/locales/global/ar-SO.js +++ /dev/null @@ -1,125 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-so'] = [ - 'ar-SO', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 1, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '٪', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'SOS', - 'S', - 'شلن صومالي', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SOS': ['S'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-SS.js b/packages/common/locales/global/ar-SS.js deleted file mode 100644 index d708a81cda..0000000000 --- a/packages/common/locales/global/ar-SS.js +++ /dev/null @@ -1,125 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-ss'] = [ - 'ar-SS', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 1, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'SSP', - '£', - 'جنيه جنوب السودان', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['GB£', 'UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SSP': ['£'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-SY.js b/packages/common/locales/global/ar-SY.js deleted file mode 100644 index 0adf776c93..0000000000 --- a/packages/common/locales/global/ar-SY.js +++ /dev/null @@ -1,124 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-sy'] = [ - 'ar-SY', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ك', 'ش', 'آ', 'ن', 'أ', 'ح', 'ت', 'آ', 'أ', 'ت', 'ت', 'ك'], - [ - 'كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', - 'تشرين الأول', 'تشرين الثاني', 'كانون الأول' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'SYP', - 'ل.س.\u200f', - 'ليرة سورية', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-TD.js b/packages/common/locales/global/ar-TD.js deleted file mode 100644 index a7a08c9da1..0000000000 --- a/packages/common/locales/global/ar-TD.js +++ /dev/null @@ -1,124 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-td'] = [ - 'ar-TD', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 1, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'XAF', - 'FCFA', - 'فرنك وسط أفريقي', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-TN.js b/packages/common/locales/global/ar-TN.js deleted file mode 100644 index 5cd7b79796..0000000000 --- a/packages/common/locales/global/ar-TN.js +++ /dev/null @@ -1,124 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-tn'] = [ - 'ar-TN', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ج', 'ف', 'م', 'أ', 'م', 'ج', 'ج', 'أ', 'س', 'أ', 'ن', 'د'], - [ - 'جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان', 'جويلية', 'أوت', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 1, - [6, 0], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'TND', - 'د.ت.\u200f', - 'دينار تونسي', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar-YE.js b/packages/common/locales/global/ar-YE.js deleted file mode 100644 index 685d0837f3..0000000000 --- a/packages/common/locales/global/ar-YE.js +++ /dev/null @@ -1,124 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar-ye'] = [ - 'ar-YE', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 0, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'YER', - 'ر.ي.\u200f', - 'ريال يمني', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ar.js b/packages/common/locales/global/ar.js deleted file mode 100644 index 09bcaf856e..0000000000 --- a/packages/common/locales/global/ar.js +++ /dev/null @@ -1,124 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 3 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 99) return 4; - return 5; -} -global.ng.common.locales['ar'] = [ - 'ar', - [['ص', 'م'], u, u], - [['ص', 'م'], u, ['صباحًا', 'مساءً']], - [ - ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], u, - ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'] - ], - u, - [ - ['ي', 'ف', 'م', 'أ', 'و', 'ن', 'ل', 'غ', 'س', 'ك', 'ب', 'د'], - [ - 'يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', - 'نوفمبر', 'ديسمبر' - ], - u - ], - u, - [['ق.م', 'م'], u, ['قبل الميلاد', 'ميلادي']], - 6, - [5, 6], - ['d\u200f/M\u200f/y', 'dd\u200f/MM\u200f/y', 'd MMMM y', 'EEEE، d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '\u200e%\u200e', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'ليس رقمًا', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'EGP', - 'ج.م.\u200f', - 'جنيه مصري', - { - 'AED': ['د.إ.\u200f'], - 'ARS': [u, 'AR$'], - 'AUD': ['AU$'], - 'BBD': [u, 'BB$'], - 'BHD': ['د.ب.\u200f'], - 'BMD': [u, 'BM$'], - 'BND': [u, 'BN$'], - 'BSD': [u, 'BS$'], - 'BZD': [u, 'BZ$'], - 'CAD': ['CA$'], - 'CLP': [u, 'CL$'], - 'CNY': ['CN¥'], - 'COP': [u, 'CO$'], - 'CUP': [u, 'CU$'], - 'DOP': [u, 'DO$'], - 'DZD': ['د.ج.\u200f'], - 'EGP': ['ج.م.\u200f', 'E£'], - 'FJD': [u, 'FJ$'], - 'GBP': ['UK£'], - 'GYD': [u, 'GY$'], - 'HKD': ['HK$'], - 'IQD': ['د.ع.\u200f'], - 'IRR': ['ر.إ.'], - 'JMD': [u, 'JM$'], - 'JOD': ['د.أ.\u200f'], - 'JPY': ['JP¥'], - 'KWD': ['د.ك.\u200f'], - 'KYD': [u, 'KY$'], - 'LBP': ['ل.ل.\u200f', 'L£'], - 'LRD': [u, '$LR'], - 'LYD': ['د.ل.\u200f'], - 'MAD': ['د.م.\u200f'], - 'MRU': ['أ.م.'], - 'MXN': ['MX$'], - 'NZD': ['NZ$'], - 'OMR': ['ر.ع.\u200f'], - 'QAR': ['ر.ق.\u200f'], - 'SAR': ['ر.س.\u200f'], - 'SBD': [u, 'SB$'], - 'SDD': ['د.س.\u200f'], - 'SDG': ['ج.س.'], - 'SRD': [u, 'SR$'], - 'SYP': ['ل.س.\u200f', '£'], - 'THB': ['฿'], - 'TND': ['د.ت.\u200f'], - 'TTD': [u, 'TT$'], - 'TWD': ['NT$'], - 'USD': ['US$'], - 'UYU': [u, 'UY$'], - 'XXX': ['***'], - 'YER': ['ر.ي.\u200f'] - }, - 'rtl', - plural, - [ - [ - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'ص', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'], - ['فجرًا', 'صباحًا', 'ظهرًا', 'بعد الظهر', 'مساءً', 'منتصف الليل', 'ليلاً'] - ], - u, - [ - ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '01:00'], ['01:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/as.js b/packages/common/locales/global/as.js deleted file mode 100644 index bf2bfd6b04..0000000000 --- a/packages/common/locales/global/as.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} -global.ng.common.locales['as'] = [ - 'as', - [['পূৰ্বাহ্ন', 'অপৰাহ্ন'], u, u], - u, - [ - ['দ', 'স', 'ম', 'ব', 'ব', 'শ', 'শ'], ['দেও', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহ', 'শুক্ৰ', 'শনি'], - ['দেওবাৰ', 'সোমবাৰ', 'মঙ্গলবাৰ', 'বুধবাৰ', 'বৃহস্পতিবাৰ', 'শুক্ৰবাৰ', 'শনিবাৰ'], - ['দেও', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহ', 'শুক্ৰ', 'শনি'] - ], - u, - [ - ['জ', 'ফ', 'ম', 'এ', 'ম', 'জ', 'জ', 'আ', 'ছ', 'অ', 'ন', 'ড'], - ['জানু', 'ফেব্ৰু', 'মাৰ্চ', 'এপ্ৰিল', 'মে’', 'জুন', 'জুলাই', 'আগ', 'ছেপ্তে', 'অক্টো', 'নৱে', 'ডিচে'], - [ - 'জানুৱাৰী', 'ফেব্ৰুৱাৰী', 'মাৰ্চ', 'এপ্ৰিল', 'মে’', 'জুন', 'জুলাই', 'আগষ্ট', 'ছেপ্তেম্বৰ', 'অক্টোবৰ', - 'নৱেম্বৰ', 'ডিচেম্বৰ' - ] - ], - u, - [['খ্ৰীঃ পূঃ', 'খ্ৰীঃ'], u, ['খ্ৰীষ্টপূৰ্ব', 'খ্ৰীষ্টাব্দ']], - 0, - [0, 0], - ['d-M-y', 'dd-MM-y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['a h.mm', 'a h.mm.ss', 'a h.mm.ss z', 'a h.mm.ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤ #,##,##0.00', '#E0'], - 'INR', - '₹', - 'ভাৰতীয় ৰুপী', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/asa.js b/packages/common/locales/global/asa.js deleted file mode 100644 index 96538ece70..0000000000 --- a/packages/common/locales/global/asa.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['asa'] = [ - 'asa', - [['icheheavo', 'ichamthi'], u, u], - u, - [ - ['J', 'J', 'J', 'J', 'A', 'I', 'J'], ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Ijm', 'Jmo'], - ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'], - ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Ijm', 'Jmo'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Dec'], - [ - 'Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', - 'Oktoba', 'Novemba', 'Desemba' - ] - ], - u, - [['KM', 'BM'], u, ['Kabla yakwe Yethu', 'Baada yakwe Yethu']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'TZS', - 'TSh', - 'shilingi ya Tandhania', - {'JPY': ['JP¥', '¥'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ast.js b/packages/common/locales/global/ast.js deleted file mode 100644 index cfd91bda37..0000000000 --- a/packages/common/locales/global/ast.js +++ /dev/null @@ -1,77 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['ast'] = [ - 'ast', - [['a', 'p'], ['AM', 'PM'], ['de la mañana', 'de la tarde']], - [['a', 'p'], ['AM', 'PM'], ['mañana', 'tarde']], - [ - ['D', 'L', 'M', 'M', 'X', 'V', 'S'], ['dom', 'llu', 'mar', 'mié', 'xue', 'vie', 'sáb'], - ['domingu', 'llunes', 'martes', 'miércoles', 'xueves', 'vienres', 'sábadu'], - ['do', 'll', 'ma', 'mi', 'xu', 'vi', 'sá'] - ], - u, - [ - ['X', 'F', 'M', 'A', 'M', 'X', 'X', 'A', 'S', 'O', 'P', 'A'], - ['xin', 'feb', 'mar', 'abr', 'may', 'xun', 'xnt', 'ago', 'set', 'och', 'pay', 'avi'], - [ - 'de xineru', 'de febreru', 'de marzu', 'd’abril', 'de mayu', 'de xunu', 'de xunetu', - 'd’agostu', 'de setiembre', 'd’ochobre', 'de payares', 'd’avientu' - ] - ], - [ - ['X', 'F', 'M', 'A', 'M', 'X', 'X', 'A', 'S', 'O', 'P', 'A'], - ['Xin', 'Feb', 'Mar', 'Abr', 'May', 'Xun', 'Xnt', 'Ago', 'Set', 'Och', 'Pay', 'Avi'], - [ - 'xineru', 'febreru', 'marzu', 'abril', 'mayu', 'xunu', 'xunetu', 'agostu', 'setiembre', - 'ochobre', 'payares', 'avientu' - ] - ], - [['e.C.', 'd.C.'], u, ['enantes de Cristu', 'después de Cristu']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM \'de\' y', 'EEEE, d MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1}, {0}', '{1} \'a\' \'les\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'ND', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'BYN': [], - 'DKK': [], - 'HRK': [], - 'ISK': [], - 'NOK': [], - 'PLN': [], - 'RUR': [], - 'SEK': [], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XXX': [] - }, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/az-Cyrl.js b/packages/common/locales/global/az-Cyrl.js deleted file mode 100644 index c71fc2add5..0000000000 --- a/packages/common/locales/global/az-Cyrl.js +++ /dev/null @@ -1,73 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['az-cyrl'] = [ - 'az-Cyrl', - [['а', 'п'], ['АМ', 'ПМ'], u], - [['АМ', 'ПМ'], u, u], - [ - ['7', '1', '2', '3', '4', '5', '6'], ['Б.', 'Б.Е.', 'Ч.А.', 'Ч.', 'Ҹ.А.', 'Ҹ.', 'Ш.'], - ['базар', 'базар ертәси', 'чәршәнбә ахшамы', 'чәршәнбә', 'ҹүмә ахшамы', 'ҹүмә', 'шәнбә'], - ['Б.', 'Б.Е.', 'Ч.А.', 'Ч.', 'Ҹ.А.', 'Ҹ.', 'Ш.'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['јан', 'фев', 'мар', 'апр', 'май', 'ијн', 'ијл', 'авг', 'сен', 'окт', 'ној', 'дек'], - [ - 'јанвар', 'феврал', 'март', 'апрел', 'май', 'ијун', 'ијул', 'август', 'сентјабр', 'октјабр', - 'нојабр', 'декабр' - ] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['јан', 'фев', 'мар', 'апр', 'май', 'ијн', 'ијл', 'авг', 'сен', 'окт', 'ној', 'дек'], - [ - 'Јанвар', 'Феврал', 'Март', 'Апрел', 'Май', 'Ијун', 'Ијул', 'Август', 'Сентјабр', 'Октјабр', - 'Нојабр', 'Декабр' - ] - ], - [['е.ә.', 'ј.е.'], u, ['ерамыздан әввәл', 'јени ера']], - 1, - [6, 0], - ['dd.MM.yy', 'd MMM y', 'd MMMM y', 'd MMMM y, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'AZN', - '₼', - 'AZN', - {'AZN': ['₼'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['ҝеҹәјары', 'ҝ', 'сүбһ', 'сәһәр', 'ҝүндүз', 'ахшамүстү', 'ахшам', 'ҝеҹә'], - ['ҝеҹәјары', 'ҝүнорта', 'сүбһ', 'сәһәр', 'ҝүндүз', 'ахшамүстү', 'ахшам', 'ҝеҹә'], u - ], - [['ҝеҹәјары', 'ҝүнорта', 'сүбһ', 'сәһәр', 'ҝүндүз', 'ахшамүстү', 'ахшам', 'ҝеҹә'], u, u], - [ - '00:00', '12:00', ['04:00', '06:00'], ['06:00', '12:00'], ['12:00', '17:00'], - ['17:00', '19:00'], ['19:00', '24:00'], ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/az-Latn.js b/packages/common/locales/global/az-Latn.js deleted file mode 100644 index e66077ed17..0000000000 --- a/packages/common/locales/global/az-Latn.js +++ /dev/null @@ -1,86 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['az-latn'] = [ - 'az-Latn', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['7', '1', '2', '3', '4', '5', '6'], ['B.', 'B.e.', 'Ç.a.', 'Ç.', 'C.a.', 'C.', 'Ş.'], - ['bazar', 'bazar ertəsi', 'çərşənbə axşamı', 'çərşənbə', 'cümə axşamı', 'cümə', 'şənbə'], - ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C.', 'Ş.'] - ], - [ - ['7', '1', '2', '3', '4', '5', '6'], ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C.', 'Ş.'], - ['bazar', 'bazar ertəsi', 'çərşənbə axşamı', 'çərşənbə', 'cümə axşamı', 'cümə', 'şənbə'], - ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C.', 'Ş.'] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avq', 'sen', 'okt', 'noy', 'dek'], - [ - 'yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avqust', 'sentyabr', 'oktyabr', - 'noyabr', 'dekabr' - ] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avq', 'sen', 'okt', 'noy', 'dek'], - [ - 'yanvar', 'Fevral', 'mart', 'Aprel', 'May', 'İyun', 'İyul', 'Avqust', 'Sentyabr', 'Oktyabr', - 'Noyabr', 'dekabr' - ] - ], - [['e.ə.', 'y.e.'], u, ['eramızdan əvvəl', 'yeni era']], - 1, - [6, 0], - ['dd.MM.yy', 'd MMM y', 'd MMMM y', 'd MMMM y, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'AZN', - '₼', - 'Azərbaycan Manatı', - { - 'AZN': ['₼'], - 'JPY': ['JP¥', '¥'], - 'RON': [u, 'ley'], - 'SYP': [u, 'S£'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [ - ['gecəyarı', 'g', 'sübh', 'səhər', 'gündüz', 'axşamüstü', 'axşam', 'gecə'], - ['gecəyarı', 'günorta', 'sübh', 'səhər', 'gündüz', 'axşamüstü', 'axşam', 'gecə'], u - ], - [['gecəyarı', 'günorta', 'sübh', 'səhər', 'gündüz', 'axşamüstü', 'axşam', 'gecə'], u, u], - [ - '00:00', '12:00', ['04:00', '06:00'], ['06:00', '12:00'], ['12:00', '17:00'], - ['17:00', '19:00'], ['19:00', '24:00'], ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/az.js b/packages/common/locales/global/az.js deleted file mode 100644 index ff0bc05095..0000000000 --- a/packages/common/locales/global/az.js +++ /dev/null @@ -1,86 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['az'] = [ - 'az', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['7', '1', '2', '3', '4', '5', '6'], ['B.', 'B.e.', 'Ç.a.', 'Ç.', 'C.a.', 'C.', 'Ş.'], - ['bazar', 'bazar ertəsi', 'çərşənbə axşamı', 'çərşənbə', 'cümə axşamı', 'cümə', 'şənbə'], - ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C.', 'Ş.'] - ], - [ - ['7', '1', '2', '3', '4', '5', '6'], ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C.', 'Ş.'], - ['bazar', 'bazar ertəsi', 'çərşənbə axşamı', 'çərşənbə', 'cümə axşamı', 'cümə', 'şənbə'], - ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C.', 'Ş.'] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avq', 'sen', 'okt', 'noy', 'dek'], - [ - 'yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avqust', 'sentyabr', 'oktyabr', - 'noyabr', 'dekabr' - ] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avq', 'sen', 'okt', 'noy', 'dek'], - [ - 'yanvar', 'Fevral', 'mart', 'Aprel', 'May', 'İyun', 'İyul', 'Avqust', 'Sentyabr', 'Oktyabr', - 'Noyabr', 'dekabr' - ] - ], - [['e.ə.', 'y.e.'], u, ['eramızdan əvvəl', 'yeni era']], - 1, - [6, 0], - ['dd.MM.yy', 'd MMM y', 'd MMMM y', 'd MMMM y, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'AZN', - '₼', - 'Azərbaycan Manatı', - { - 'AZN': ['₼'], - 'JPY': ['JP¥', '¥'], - 'RON': [u, 'ley'], - 'SYP': [u, 'S£'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [ - ['gecəyarı', 'g', 'sübh', 'səhər', 'gündüz', 'axşamüstü', 'axşam', 'gecə'], - ['gecəyarı', 'günorta', 'sübh', 'səhər', 'gündüz', 'axşamüstü', 'axşam', 'gecə'], u - ], - [['gecəyarı', 'günorta', 'sübh', 'səhər', 'gündüz', 'axşamüstü', 'axşam', 'gecə'], u, u], - [ - '00:00', '12:00', ['04:00', '06:00'], ['06:00', '12:00'], ['12:00', '17:00'], - ['17:00', '19:00'], ['19:00', '24:00'], ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/bas.js b/packages/common/locales/global/bas.js deleted file mode 100644 index 467032fe8b..0000000000 --- a/packages/common/locales/global/bas.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['bas'] = [ - 'bas', - [['I bikɛ̂glà', 'I ɓugajɔp'], u, u], - u, - [ - ['n', 'n', 'u', 'ŋ', 'm', 'k', 'j'], ['nɔy', 'nja', 'uum', 'ŋge', 'mbɔ', 'kɔɔ', 'jon'], - ['ŋgwà nɔ̂y', 'ŋgwà njaŋgumba', 'ŋgwà ûm', 'ŋgwà ŋgê', 'ŋgwà mbɔk', 'ŋgwà kɔɔ', 'ŋgwà jôn'], - ['nɔy', 'nja', 'uum', 'ŋge', 'mbɔ', 'kɔɔ', 'jon'] - ], - u, - [ - ['k', 'm', 'm', 'm', 'm', 'h', 'n', 'h', 'd', 'b', 'm', 'l'], - ['kɔn', 'mac', 'mat', 'mto', 'mpu', 'hil', 'nje', 'hik', 'dip', 'bio', 'may', 'liɓ'], - [ - 'Kɔndɔŋ', 'Màcɛ̂l', 'Màtùmb', 'Màtop', 'M̀puyɛ', 'Hìlòndɛ̀', 'Njèbà', 'Hìkaŋ', 'Dìpɔ̀s', 'Bìòôm', - 'Màyɛsèp', 'Lìbuy li ńyèe' - ] - ], - u, - [['b.Y.K', 'm.Y.K'], u, ['bisū bi Yesù Krǐstò', 'i mbūs Yesù Krǐstò']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'Frǎŋ CFA (BEAC)', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/be.js b/packages/common/locales/global/be.js deleted file mode 100644 index fd0132e83f..0000000000 --- a/packages/common/locales/global/be.js +++ /dev/null @@ -1,98 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n % 10 === 1 && !(n % 100 === 11)) return 1; - if (n % 10 === Math.floor(n % 10) && n % 10 >= 2 && n % 10 <= 4 && - !(n % 100 >= 12 && n % 100 <= 14)) - return 3; - if (n % 10 === 0 || n % 10 === Math.floor(n % 10) && n % 10 >= 5 && n % 10 <= 9 || - n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 14) - return 4; - return 5; -} -global.ng.common.locales['be'] = [ - 'be', - [['am', 'pm'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['н', 'п', 'а', 'с', 'ч', 'п', 'с'], ['нд', 'пн', 'аў', 'ср', 'чц', 'пт', 'сб'], - ['нядзеля', 'панядзелак', 'аўторак', 'серада', 'чацвер', 'пятніца', 'субота'], - ['нд', 'пн', 'аў', 'ср', 'чц', 'пт', 'сб'] - ], - u, - [ - ['с', 'л', 'с', 'к', 'м', 'ч', 'л', 'ж', 'в', 'к', 'л', 'с'], - ['сту', 'лют', 'сак', 'кра', 'мая', 'чэр', 'ліп', 'жні', 'вер', 'кас', 'ліс', 'сне'], - [ - 'студзеня', 'лютага', 'сакавіка', 'красавіка', 'мая', 'чэрвеня', 'ліпеня', 'жніўня', - 'верасня', 'кастрычніка', 'лістапада', 'снежня' - ] - ], - [ - ['с', 'л', 'с', 'к', 'м', 'ч', 'л', 'ж', 'в', 'к', 'л', 'с'], - ['сту', 'лют', 'сак', 'кра', 'май', 'чэр', 'ліп', 'жні', 'вер', 'кас', 'ліс', 'сне'], - [ - 'студзень', 'люты', 'сакавік', 'красавік', 'май', 'чэрвень', 'ліпень', 'жнівень', 'верасень', - 'кастрычнік', 'лістапад', 'снежань' - ] - ], - [['да н.э.', 'н.э.'], u, ['да нараджэння Хрыстова', 'ад нараджэння Хрыстова']], - 1, - [6, 0], - ['d.MM.yy', 'd.MM.y', 'd MMMM y \'г\'.', 'EEEE, d MMMM y \'г\'.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss, zzzz'], - ['{1}, {0}', u, '{1} \'у\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'BYN', - 'Br', - 'беларускі рубель', - { - 'AUD': ['A$'], - 'BBD': [u, 'Bds$'], - 'BMD': [u, 'BD$'], - 'BRL': [u, 'R$'], - 'BSD': [u, 'B$'], - 'BYN': ['Br'], - 'BZD': [u, 'BZ$'], - 'CAD': [u, 'CA$'], - 'CUC': [u, 'CUC$'], - 'CUP': [u, '$MN'], - 'DOP': [u, 'RD$'], - 'FJD': [u, 'FJ$'], - 'FKP': [u, 'FK£'], - 'GYD': [u, 'G$'], - 'ISK': [u, 'Íkr'], - 'JMD': [u, 'J$'], - 'KYD': [u, 'CI$'], - 'LRD': [u, 'L$'], - 'MXN': ['MX$'], - 'NAD': [u, 'N$'], - 'NZD': [u, 'NZ$'], - 'RUB': ['₽', 'руб.'], - 'SBD': [u, 'SI$'], - 'SGD': [u, 'S$'], - 'TTD': [u, 'TT$'], - 'UYU': [u, '$U'], - 'XCD': ['EC$'] - }, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/bem.js b/packages/common/locales/global/bem.js deleted file mode 100644 index 68925df516..0000000000 --- a/packages/common/locales/global/bem.js +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['bem'] = [ - 'bem', - [['uluchelo', 'akasuba'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - [ - 'Pa Mulungu', 'Palichimo', 'Palichibuli', 'Palichitatu', 'Palichine', 'Palichisano', - 'Pachibelushi' - ], - u, u - ], - u, - [ - ['J', 'F', 'M', 'E', 'M', 'J', 'J', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Epr', 'Mei', 'Jun', 'Jul', 'Oga', 'Sep', 'Okt', 'Nov', 'Dis'], - [ - 'Januari', 'Februari', 'Machi', 'Epreo', 'Mei', 'Juni', 'Julai', 'Ogasti', 'Septemba', - 'Oktoba', 'Novemba', 'Disemba' - ] - ], - u, - [['BC', 'AD'], u, ['Before Yesu', 'After Yesu']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZMW', - 'K', - 'ZMW', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'ZMW': ['K', 'ZK']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/bez.js b/packages/common/locales/global/bez.js deleted file mode 100644 index 84fd45a574..0000000000 --- a/packages/common/locales/global/bez.js +++ /dev/null @@ -1,62 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['bez'] = [ - 'bez', - [['pamilau', 'pamunyi'], u, u], - u, - [ - ['M', 'J', 'H', 'H', 'H', 'W', 'J'], ['Mul', 'Vil', 'Hiv', 'Hid', 'Hit', 'Hih', 'Lem'], - [ - 'pa mulungu', 'pa shahuviluha', 'pa hivili', 'pa hidatu', 'pa hitayi', 'pa hihanu', - 'pa shahulembela' - ], - ['Mul', 'Vil', 'Hiv', 'Hid', 'Hit', 'Hih', 'Lem'] - ], - u, - [ - ['H', 'V', 'D', 'T', 'H', 'S', 'S', 'N', 'T', 'K', 'K', 'K'], - ['Hut', 'Vil', 'Dat', 'Tai', 'Han', 'Sit', 'Sab', 'Nan', 'Tis', 'Kum', 'Kmj', 'Kmb'], - [ - 'pa mwedzi gwa hutala', 'pa mwedzi gwa wuvili', 'pa mwedzi gwa wudatu', 'pa mwedzi gwa wutai', - 'pa mwedzi gwa wuhanu', 'pa mwedzi gwa sita', 'pa mwedzi gwa saba', 'pa mwedzi gwa nane', - 'pa mwedzi gwa tisa', 'pa mwedzi gwa kumi', 'pa mwedzi gwa kumi na moja', - 'pa mwedzi gwa kumi na mbili' - ] - ], - u, - [['KM', 'BM'], u, ['Kabla ya Mtwaa', 'Baada ya Mtwaa']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'TZS', - 'TSh', - 'Shilingi ya Hutanzania', - {'JPY': ['JP¥', '¥'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/bg.js b/packages/common/locales/global/bg.js deleted file mode 100644 index 0bb752d059..0000000000 --- a/packages/common/locales/global/bg.js +++ /dev/null @@ -1,118 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['bg'] = [ - 'bg', - [['am', 'pm'], u, ['пр.об.', 'сл.об.']], - [['am', 'pm'], u, u], - [ - ['н', 'п', 'в', 'с', 'ч', 'п', 'с'], ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - ['неделя', 'понеделник', 'вторник', 'сряда', 'четвъртък', 'петък', 'събота'], - ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - u, - [ - ['я', 'ф', 'м', 'а', 'м', 'ю', 'ю', 'а', 'с', 'о', 'н', 'д'], - ['яну', 'фев', 'март', 'апр', 'май', 'юни', 'юли', 'авг', 'сеп', 'окт', 'ное', 'дек'], - [ - 'януари', 'февруари', 'март', 'април', 'май', 'юни', 'юли', 'август', 'септември', 'октомври', - 'ноември', 'декември' - ] - ], - u, - [['пр.Хр.', 'сл.Хр.'], u, ['преди Христа', 'след Христа']], - 1, - [6, 0], - ['d.MM.yy \'г\'.', 'd.MM.y \'г\'.', 'd MMMM y \'г\'.', 'EEEE, d MMMM y \'г\'.'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '0.00 ¤', '#E0'], - 'BGN', - 'лв.', - 'Български лев', - { - 'ARS': [], - 'AUD': [], - 'BBD': [], - 'BDT': [], - 'BGN': ['лв.'], - 'BMD': [], - 'BND': [], - 'BRL': [], - 'BSD': [], - 'BYN': [], - 'BZD': [], - 'CAD': [], - 'CLP': [], - 'CNY': [], - 'COP': [], - 'CRC': [], - 'CUP': [], - 'DOP': [], - 'FJD': [], - 'FKP': [], - 'GBP': [u, '£'], - 'GIP': [], - 'GYD': [], - 'HKD': [], - 'ILS': [], - 'INR': [], - 'JMD': [], - 'JPY': [u, '¥'], - 'KHR': [], - 'KRW': [], - 'KYD': [], - 'KZT': [], - 'LAK': [], - 'LRD': [], - 'MNT': [], - 'MXN': [], - 'NAD': [], - 'NGN': [], - 'NZD': [], - 'PHP': [], - 'PYG': [], - 'RON': [], - 'SBD': [], - 'SGD': [], - 'SRD': [], - 'SSP': [], - 'TRY': [], - 'TTD': [], - 'TWD': [], - 'UAH': [], - 'USD': ['щ.д.', '$'], - 'UYU': [], - 'VND': [], - 'XCD': [u, '$'] - }, - 'ltr', - plural, - [ - [['полунощ', 'сутринта', 'на обяд', 'следобед', 'вечерта', 'през нощта'], u, u], u, - [ - '00:00', ['04:00', '11:00'], ['11:00', '14:00'], ['14:00', '18:00'], ['18:00', '22:00'], - ['22:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/bm.js b/packages/common/locales/global/bm.js deleted file mode 100644 index b7375ec145..0000000000 --- a/packages/common/locales/global/bm.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['bm'] = [ - 'bm', - [['AM', 'PM'], u, u], - u, - [ - ['K', 'N', 'T', 'A', 'A', 'J', 'S'], ['kar', 'ntɛ', 'tar', 'ara', 'ala', 'jum', 'sib'], - ['kari', 'ntɛnɛ', 'tarata', 'araba', 'alamisa', 'juma', 'sibiri'], - ['kar', 'ntɛ', 'tar', 'ara', 'ala', 'jum', 'sib'] - ], - u, - [ - ['Z', 'F', 'M', 'A', 'M', 'Z', 'Z', 'U', 'S', 'Ɔ', 'N', 'D'], - ['zan', 'feb', 'mar', 'awi', 'mɛ', 'zuw', 'zul', 'uti', 'sɛt', 'ɔku', 'now', 'des'], - [ - 'zanwuye', 'feburuye', 'marisi', 'awirili', 'mɛ', 'zuwɛn', 'zuluye', 'uti', 'sɛtanburu', - 'ɔkutɔburu', 'nowanburu', 'desanburu' - ] - ], - u, - [['J.-C. ɲɛ', 'ni J.-C.'], u, ['jezu krisiti ɲɛ', 'jezu krisiti minkɛ']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XOF', - 'CFA', - 'sefa Fraŋ (BCEAO)', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/bn-IN.js b/packages/common/locales/global/bn-IN.js deleted file mode 100644 index 14e5787c0a..0000000000 --- a/packages/common/locales/global/bn-IN.js +++ /dev/null @@ -1,78 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} -global.ng.common.locales['bn-in'] = [ - 'bn-IN', - [['AM', 'PM'], u, u], - u, - [ - ['র', 'সো', 'ম', 'বু', 'বৃ', 'শু', 'শ'], ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহস্পতি', 'শুক্র', 'শনি'], - ['রবিবার', 'সোমবার', 'মঙ্গলবার', 'বুধবার', 'বৃহস্পতিবার', 'শুক্রবার', 'শনিবার'], - ['রঃ', 'সোঃ', 'মঃ', 'বুঃ', 'বৃঃ', 'শুঃ', 'শনি'] - ], - u, - [ - ['জা', 'ফে', 'মা', 'এ', 'মে', 'জুন', 'জু', 'আ', 'সে', 'অ', 'ন', 'ডি'], - [ - 'জানু', 'ফেব', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', - 'ডিসেম্বর' - ], - [ - 'জানুয়ারী', 'ফেব্রুয়ারী', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', - 'নভেম্বর', 'ডিসেম্বর' - ] - ], - [ - ['জা', 'ফে', 'মা', 'এ', 'মে', 'জুন', 'জু', 'আ', 'সে', 'অ', 'ন', 'ডি'], - [ - 'জানুয়ারী', 'ফেব্রুয়ারী', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', - 'নভেম্বর', 'ডিসেম্বর' - ], - u - ], - [['খ্রিস্টপূর্ব', 'খৃষ্টাব্দ'], u, ['খ্রিস্টপূর্ব', 'খ্রীষ্টাব্দ']], - 0, - [0, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '#,##,##0.00¤', '#E0'], - 'INR', - '₹', - 'ভারতীয় রুপি', - {'BDT': ['৳'], 'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['ভোর', 'সকাল', 'দুপুর', 'বিকাল', 'সন্ধ্যা', 'রাত্রি'], u, - ['ভোর', 'সকাল', 'দুপুর', 'বিকাল', 'সন্ধ্যা', 'রাত্রিতে'] - ], - [['ভোর', 'সকাল', 'দুপুর', 'বিকাল', 'সন্ধ্যা', 'রাত্রি'], u, u], - [ - ['04:00', '06:00'], ['06:00', '12:00'], ['12:00', '16:00'], ['16:00', '18:00'], - ['18:00', '20:00'], ['20:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/bn.js b/packages/common/locales/global/bn.js deleted file mode 100644 index 04c9ac6b43..0000000000 --- a/packages/common/locales/global/bn.js +++ /dev/null @@ -1,78 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} -global.ng.common.locales['bn'] = [ - 'bn', - [['AM', 'PM'], u, u], - u, - [ - ['র', 'সো', 'ম', 'বু', 'বৃ', 'শু', 'শ'], ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহস্পতি', 'শুক্র', 'শনি'], - ['রবিবার', 'সোমবার', 'মঙ্গলবার', 'বুধবার', 'বৃহস্পতিবার', 'শুক্রবার', 'শনিবার'], - ['রঃ', 'সোঃ', 'মঃ', 'বুঃ', 'বৃঃ', 'শুঃ', 'শনি'] - ], - u, - [ - ['জা', 'ফে', 'মা', 'এ', 'মে', 'জুন', 'জু', 'আ', 'সে', 'অ', 'ন', 'ডি'], - [ - 'জানু', 'ফেব', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', - 'ডিসেম্বর' - ], - [ - 'জানুয়ারী', 'ফেব্রুয়ারী', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', - 'নভেম্বর', 'ডিসেম্বর' - ] - ], - [ - ['জা', 'ফে', 'মা', 'এ', 'মে', 'জুন', 'জু', 'আ', 'সে', 'অ', 'ন', 'ডি'], - [ - 'জানুয়ারী', 'ফেব্রুয়ারী', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', - 'নভেম্বর', 'ডিসেম্বর' - ], - u - ], - [['খ্রিস্টপূর্ব', 'খৃষ্টাব্দ'], u, ['খ্রিস্টপূর্ব', 'খ্রীষ্টাব্দ']], - 0, - [6, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '#,##,##0.00¤', '#E0'], - 'BDT', - '৳', - 'বাংলাদেশী টাকা', - {'BDT': ['৳'], 'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['ভোর', 'সকাল', 'দুপুর', 'বিকাল', 'সন্ধ্যা', 'রাত্রি'], u, - ['ভোর', 'সকাল', 'দুপুর', 'বিকাল', 'সন্ধ্যা', 'রাত্রিতে'] - ], - [['ভোর', 'সকাল', 'দুপুর', 'বিকাল', 'সন্ধ্যা', 'রাত্রি'], u, u], - [ - ['04:00', '06:00'], ['06:00', '12:00'], ['12:00', '16:00'], ['16:00', '18:00'], - ['18:00', '20:00'], ['20:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/bo-IN.js b/packages/common/locales/global/bo-IN.js deleted file mode 100644 index dea603af34..0000000000 --- a/packages/common/locales/global/bo-IN.js +++ /dev/null @@ -1,64 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['bo-in'] = [ - 'bo-IN', - [['སྔ་དྲོ་', 'ཕྱི་དྲོ་'], u, u], - u, - [ - ['ཉི', 'ཟླ', 'མིག', 'ལྷག', 'ཕུར', 'སངས', 'སྤེན'], - ['ཉི་མ་', 'ཟླ་བ་', 'མིག་དམར་', 'ལྷག་པ་', 'ཕུར་བུ་', 'པ་སངས་', 'སྤེན་པ་'], - ['གཟའ་ཉི་མ་', 'གཟའ་ཟླ་བ་', 'གཟའ་མིག་དམར་', 'གཟའ་ལྷག་པ་', 'གཟའ་ཕུར་བུ་', 'གཟའ་པ་སངས་', 'གཟའ་སྤེན་པ་'], - ['ཉི་མ་', 'ཟླ་བ་', 'མིག་དམར་', 'ལྷག་པ་', 'ཕུར་བུ་', 'པ་སངས་', 'སྤེན་པ་'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['ཟླ་༡', 'ཟླ་༢', 'ཟླ་༣', 'ཟླ་༤', 'ཟླ་༥', 'ཟླ་༦', 'ཟླ་༧', 'ཟླ་༨', 'ཟླ་༩', 'ཟླ་༡༠', 'ཟླ་༡༡', 'ཟླ་༡༢'], - [ - 'ཟླ་བ་དང་པོ', 'ཟླ་བ་གཉིས་པ', 'ཟླ་བ་གསུམ་པ', 'ཟླ་བ་བཞི་པ', 'ཟླ་བ་ལྔ་པ', 'ཟླ་བ་དྲུག་པ', 'ཟླ་བ་བདུན་པ', - 'ཟླ་བ་བརྒྱད་པ', 'ཟླ་བ་དགུ་པ', 'ཟླ་བ་བཅུ་པ', 'ཟླ་བ་བཅུ་གཅིག་པ', 'ཟླ་བ་བཅུ་གཉིས་པ' - ] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['ཟླ་༡', 'ཟླ་༢', 'ཟླ་༣', 'ཟླ་༤', 'ཟླ་༥', 'ཟླ་༦', 'ཟླ་༧', 'ཟླ་༨', 'ཟླ་༩', 'ཟླ་༡༠', 'ཟླ་༡༡', 'ཟླ་༡༢'], - [ - 'ཟླ་བ་དང་པོ་', 'ཟླ་བ་གཉིས་པ་', 'ཟླ་བ་གསུམ་པ་', 'ཟླ་བ་བཞི་པ་', 'ཟླ་བ་ལྔ་པ་', 'ཟླ་བ་དྲུག་པ་', 'ཟླ་བ་བདུན་པ་', - 'ཟླ་བ་བརྒྱད་པ་', 'ཟླ་བ་དགུ་པ་', 'ཟླ་བ་བཅུ་པ་', 'ཟླ་བ་བཅུ་གཅིག་པ་', 'ཟླ་བ་བཅུ་གཉིས་པ་' - ] - ], - [['སྤྱི་ལོ་སྔོན་', 'སྤྱི་ལོ་'], u, u], - 0, - [0, 0], - ['y-MM-dd', 'y ལོའི་MMMཚེས་d', 'སྤྱི་ལོ་y MMMMའི་ཚེས་d', 'y MMMMའི་ཚེས་d, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'INR', - '₹', - 'རྒྱ་གར་སྒོར་', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/bo.js b/packages/common/locales/global/bo.js deleted file mode 100644 index e4417a95af..0000000000 --- a/packages/common/locales/global/bo.js +++ /dev/null @@ -1,64 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['bo'] = [ - 'bo', - [['སྔ་དྲོ་', 'ཕྱི་དྲོ་'], u, u], - u, - [ - ['ཉི', 'ཟླ', 'མིག', 'ལྷག', 'ཕུར', 'སངས', 'སྤེན'], - ['ཉི་མ་', 'ཟླ་བ་', 'མིག་དམར་', 'ལྷག་པ་', 'ཕུར་བུ་', 'པ་སངས་', 'སྤེན་པ་'], - ['གཟའ་ཉི་མ་', 'གཟའ་ཟླ་བ་', 'གཟའ་མིག་དམར་', 'གཟའ་ལྷག་པ་', 'གཟའ་ཕུར་བུ་', 'གཟའ་པ་སངས་', 'གཟའ་སྤེན་པ་'], - ['ཉི་མ་', 'ཟླ་བ་', 'མིག་དམར་', 'ལྷག་པ་', 'ཕུར་བུ་', 'པ་སངས་', 'སྤེན་པ་'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['ཟླ་༡', 'ཟླ་༢', 'ཟླ་༣', 'ཟླ་༤', 'ཟླ་༥', 'ཟླ་༦', 'ཟླ་༧', 'ཟླ་༨', 'ཟླ་༩', 'ཟླ་༡༠', 'ཟླ་༡༡', 'ཟླ་༡༢'], - [ - 'ཟླ་བ་དང་པོ', 'ཟླ་བ་གཉིས་པ', 'ཟླ་བ་གསུམ་པ', 'ཟླ་བ་བཞི་པ', 'ཟླ་བ་ལྔ་པ', 'ཟླ་བ་དྲུག་པ', 'ཟླ་བ་བདུན་པ', - 'ཟླ་བ་བརྒྱད་པ', 'ཟླ་བ་དགུ་པ', 'ཟླ་བ་བཅུ་པ', 'ཟླ་བ་བཅུ་གཅིག་པ', 'ཟླ་བ་བཅུ་གཉིས་པ' - ] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['ཟླ་༡', 'ཟླ་༢', 'ཟླ་༣', 'ཟླ་༤', 'ཟླ་༥', 'ཟླ་༦', 'ཟླ་༧', 'ཟླ་༨', 'ཟླ་༩', 'ཟླ་༡༠', 'ཟླ་༡༡', 'ཟླ་༡༢'], - [ - 'ཟླ་བ་དང་པོ་', 'ཟླ་བ་གཉིས་པ་', 'ཟླ་བ་གསུམ་པ་', 'ཟླ་བ་བཞི་པ་', 'ཟླ་བ་ལྔ་པ་', 'ཟླ་བ་དྲུག་པ་', 'ཟླ་བ་བདུན་པ་', - 'ཟླ་བ་བརྒྱད་པ་', 'ཟླ་བ་དགུ་པ་', 'ཟླ་བ་བཅུ་པ་', 'ཟླ་བ་བཅུ་གཅིག་པ་', 'ཟླ་བ་བཅུ་གཉིས་པ་' - ] - ], - [['སྤྱི་ལོ་སྔོན་', 'སྤྱི་ལོ་'], u, u], - 0, - [6, 0], - ['y-MM-dd', 'y ལོའི་MMMཚེས་d', 'སྤྱི་ལོ་y MMMMའི་ཚེས་d', 'y MMMMའི་ཚེས་d, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'CNY', - '¥', - 'ཡུ་ཨན་', - {'CNY': ['¥'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/br.js b/packages/common/locales/global/br.js deleted file mode 100644 index 360519f801..0000000000 --- a/packages/common/locales/global/br.js +++ /dev/null @@ -1,85 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n % 10 === 1 && !(n % 100 === 11 || n % 100 === 71 || n % 100 === 91)) return 1; - if (n % 10 === 2 && !(n % 100 === 12 || n % 100 === 72 || n % 100 === 92)) return 2; - if (n % 10 === Math.floor(n % 10) && (n % 10 >= 3 && n % 10 <= 4 || n % 10 === 9) && - !(n % 100 >= 10 && n % 100 <= 19 || n % 100 >= 70 && n % 100 <= 79 || - n % 100 >= 90 && n % 100 <= 99)) - return 3; - if (!(n === 0) && n % 1e6 === 0) return 4; - return 5; -} -global.ng.common.locales['br'] = [ - 'br', - [['am', 'gm'], ['A.M.', 'G.M.'], u], - [['A.M.', 'G.M.'], u, u], - [ - ['Su', 'L', 'Mz', 'Mc', 'Y', 'G', 'Sa'], ['Sul', 'Lun', 'Meu.', 'Mer.', 'Yaou', 'Gwe.', 'Sad.'], - ['Sul', 'Lun', 'Meurzh', 'Mercʼher', 'Yaou', 'Gwener', 'Sadorn'], - ['Sul', 'Lun', 'Meu.', 'Mer.', 'Yaou', 'Gwe.', 'Sad.'] - ], - u, - [ - ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'], - [ - 'Gen.', 'Cʼhwe.', 'Meur.', 'Ebr.', 'Mae', 'Mezh.', 'Goue.', 'Eost', 'Gwen.', 'Here', 'Du', - 'Kzu.' - ], - [ - 'Genver', 'Cʼhwevrer', 'Meurzh', 'Ebrel', 'Mae', 'Mezheven', 'Gouere', 'Eost', 'Gwengolo', - 'Here', 'Du', 'Kerzu' - ] - ], - u, - [['a-raok J.K.', 'goude J.K.'], u, ['a-raok Jezuz-Krist', 'goude Jezuz-Krist']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1}, {0}', '{1} \'da\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': ['$A', '$'], - 'BRL': [u, 'R$'], - 'CAD': ['$CA', '$'], - 'CNY': [u, '¥'], - 'EGP': [u, '£ E'], - 'GBP': ['£ RU', '£'], - 'HKD': ['$ HK', '$'], - 'ILS': [u, '₪'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'LBP': [u, '£L'], - 'NZD': ['$ ZN', '$'], - 'TOP': [u, '$ T'], - 'TWD': [u, '$'], - 'USD': ['$ SU', '$'], - 'VND': [u, '₫'], - 'XCD': [u, '$'], - 'XXX': [] - }, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/brx.js b/packages/common/locales/global/brx.js deleted file mode 100644 index 6cc04b3c04..0000000000 --- a/packages/common/locales/global/brx.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['brx'] = [ - 'brx', - [['फुं', 'बेलासे'], u, u], - u, - [ - ['र', 'स', 'मं', 'बु', 'बि', 'सु', 'सु'], ['रबि', 'सम', 'मंगल', 'बुद', 'बिसथि', 'सुखुर', 'सुनि'], - ['रबिबार', 'समबार', 'मंगलबार', 'बुदबार', 'बिसथिबार', 'सुखुरबार', 'सुनिबार'], - ['रबि', 'सम', 'मंगल', 'बुद', 'बिसथि', 'सुखुर', 'सुनि'] - ], - u, - [ - ['ज', 'फे', 'मा', 'ए', 'मे', 'जु', 'जु', 'आ', 'से', 'अ', 'न', 'दि'], - [ - 'जानुवारी', 'फेब्रुवारी', 'मार्स', 'एफ्रिल', 'मे', 'जुन', 'जुलाइ', 'आगस्थ', 'सेबथेज्ब़र', 'अखथबर', 'नबेज्ब़र', - 'दिसेज्ब़र' - ], - u - ], - u, - [['ईसा.पूर्व', 'सन'], u, u], - 0, - [0, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤ #,##,##0.00', '#E0'], - 'INR', - '₹', - 'रां', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/bs-Cyrl.js b/packages/common/locales/global/bs-Cyrl.js deleted file mode 100644 index 37a5f9ae02..0000000000 --- a/packages/common/locales/global/bs-Cyrl.js +++ /dev/null @@ -1,70 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['bs-cyrl'] = [ - 'bs-Cyrl', - [['пре подне', 'поподне'], u, ['прије подне', 'послије подне']], - u, - [ - ['н', 'п', 'у', 'с', 'ч', 'п', 'с'], ['нед', 'пон', 'уто', 'сри', 'чет', 'пет', 'суб'], - ['недјеља', 'понедјељак', 'уторак', 'сриједа', 'четвртак', 'петак', 'субота'], - ['нед', 'пон', 'уто', 'сри', 'чет', 'пет', 'суб'] - ], - u, - [ - ['ј', 'ф', 'м', 'а', 'м', 'ј', 'ј', 'а', 'с', 'о', 'н', 'д'], - ['јан', 'феб', 'мар', 'апр', 'мај', 'јун', 'јул', 'ауг', 'сеп', 'окт', 'нов', 'дец'], - [ - 'јануар', 'фебруар', 'март', 'април', 'мај', 'јуни', 'јули', 'аугуст', 'септембар', 'октобар', - 'новембар', 'децембар' - ] - ], - u, - [['п.н.е.', 'н.е.'], ['п. н. е.', 'н. е.'], ['прије нове ере', 'нове ере']], - 1, - [6, 0], - ['d.M.yy.', 'dd.MM.y.', 'dd. MMMM y.', 'EEEE, dd. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'BAM', - 'КМ', - 'Конвертибилна марка', - { - 'BAM': ['КМ', 'KM'], - 'CZK': ['Кч', 'Kč'], - 'PLN': ['зл', 'zł'], - 'RSD': ['дин.'], - 'TRY': ['Тл', '₺'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [['поноћ', 'подне', 'ујутру', 'у подне', 'увече', 'ноћу'], u, u], - [['поноћ', 'подне', 'јутро', 'послийеподне', 'вече', 'ноћ'], u, u], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/bs-Latn.js b/packages/common/locales/global/bs-Latn.js deleted file mode 100644 index 569b4be23c..0000000000 --- a/packages/common/locales/global/bs-Latn.js +++ /dev/null @@ -1,92 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14) || - f % 10 === Math.floor(f % 10) && f % 10 >= 2 && f % 10 <= 4 && - !(f % 100 >= 12 && f % 100 <= 14)) - return 3; - return 5; -} -global.ng.common.locales['bs-latn'] = [ - 'bs-Latn', - [['prijepodne', 'popodne'], ['AM', 'PM'], ['prijepodne', 'popodne']], - u, - [ - ['N', 'P', 'U', 'S', 'Č', 'P', 'S'], ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'], - ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'] - ], - [ - ['n', 'p', 'u', 's', 'č', 'p', 's'], ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'], - ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'] - ], - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], - [ - 'januar', 'februar', 'mart', 'april', 'maj', 'juni', 'juli', 'august', 'septembar', 'oktobar', - 'novembar', 'decembar' - ] - ], - u, - [['p.n.e.', 'n.e.'], ['p. n. e.', 'n. e.'], ['prije nove ere', 'nove ere']], - 1, - [6, 0], - ['d. M. y.', 'd. MMM y.', 'd. MMMM y.', 'EEEE, d. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'u\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'BAM', - 'KM', - 'Bosanskohercegovačka konvertibilna marka', - { - 'AUD': [u, '$'], - 'BAM': ['KM'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'HRK': ['kn'], - 'ILS': [u, '₪'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RSD': ['din.'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': [u, '$'], - 'XCD': [u, '$'], - 'XPF': [] - }, - 'ltr', - plural, - [ - [['ponoć', 'podne', 'ujutro', 'poslijepodne', 'navečer', 'po noći'], u, u], u, - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/bs.js b/packages/common/locales/global/bs.js deleted file mode 100644 index 6078fd53dc..0000000000 --- a/packages/common/locales/global/bs.js +++ /dev/null @@ -1,92 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14) || - f % 10 === Math.floor(f % 10) && f % 10 >= 2 && f % 10 <= 4 && - !(f % 100 >= 12 && f % 100 <= 14)) - return 3; - return 5; -} -global.ng.common.locales['bs'] = [ - 'bs', - [['prijepodne', 'popodne'], ['AM', 'PM'], ['prijepodne', 'popodne']], - u, - [ - ['N', 'P', 'U', 'S', 'Č', 'P', 'S'], ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'], - ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'] - ], - [ - ['n', 'p', 'u', 's', 'č', 'p', 's'], ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'], - ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'] - ], - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], - [ - 'januar', 'februar', 'mart', 'april', 'maj', 'juni', 'juli', 'august', 'septembar', 'oktobar', - 'novembar', 'decembar' - ] - ], - u, - [['p.n.e.', 'n.e.'], ['p. n. e.', 'n. e.'], ['prije nove ere', 'nove ere']], - 1, - [6, 0], - ['d. M. y.', 'd. MMM y.', 'd. MMMM y.', 'EEEE, d. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'u\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'BAM', - 'KM', - 'Bosanskohercegovačka konvertibilna marka', - { - 'AUD': [u, '$'], - 'BAM': ['KM'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'HRK': ['kn'], - 'ILS': [u, '₪'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RSD': ['din.'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': [u, '$'], - 'XCD': [u, '$'], - 'XPF': [] - }, - 'ltr', - plural, - [ - [['ponoć', 'podne', 'ujutro', 'poslijepodne', 'navečer', 'po noći'], u, u], u, - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ca-AD.js b/packages/common/locales/global/ca-AD.js deleted file mode 100644 index c0c8da0ced..0000000000 --- a/packages/common/locales/global/ca-AD.js +++ /dev/null @@ -1,92 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['ca-ad'] = [ - 'ca-AD', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['dg', 'dl', 'dt', 'dc', 'dj', 'dv', 'ds'], ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'], - ['diumenge', 'dilluns', 'dimarts', 'dimecres', 'dijous', 'divendres', 'dissabte'], - ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'] - ], - u, - [ - ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'], - [ - 'de gen.', 'de febr.', 'de març', 'd’abr.', 'de maig', 'de juny', 'de jul.', 'd’ag.', - 'de set.', 'd’oct.', 'de nov.', 'de des.' - ], - [ - 'de gener', 'de febrer', 'de març', 'd’abril', 'de maig', 'de juny', 'de juliol', 'd’agost', - 'de setembre', 'd’octubre', 'de novembre', 'de desembre' - ] - ], - [ - ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'], - [ - 'gen.', 'febr.', 'març', 'abr.', 'maig', 'juny', 'jul.', 'ag.', 'set.', 'oct.', 'nov.', 'des.' - ], - [ - 'gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'agost', 'setembre', 'octubre', - 'novembre', 'desembre' - ] - ], - [['aC', 'dC'], u, ['abans de Crist', 'després de Crist']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM \'de\' y', 'EEEE, d MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', '{1}, {0}', '{1} \'a\' \'les\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': ['AU$', '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'MXN': [u, '$'], - 'THB': ['฿'], - 'USD': [u, '$'], - 'VEF': [u, 'Bs F'], - 'XCD': [u, '$'], - 'XXX': [] - }, - 'ltr', - plural, - [ - [ - ['mitjanit', 'mat.', 'matí', 'md', 'tarda', 'vespre', 'nit'], - ['mitjanit', 'matinada', 'matí', 'migdia', 'tarda', 'vespre', 'nit'], u - ], - [['mitjanit', 'matinada', 'matí', 'migdia', 'tarda', 'vespre', 'nit'], u, u], - [ - '00:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '21:00'], ['21:00', '24:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ca-ES-VALENCIA.js b/packages/common/locales/global/ca-ES-VALENCIA.js deleted file mode 100644 index 8271eccbd9..0000000000 --- a/packages/common/locales/global/ca-ES-VALENCIA.js +++ /dev/null @@ -1,92 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['ca-es-valencia'] = [ - 'ca-ES-VALENCIA', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['dg', 'dl', 'dt', 'dc', 'dj', 'dv', 'ds'], ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'], - ['diumenge', 'dilluns', 'dimarts', 'dimecres', 'dijous', 'divendres', 'dissabte'], - ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'] - ], - u, - [ - ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'], - [ - 'de gen.', 'de febr.', 'de març', 'd’abr.', 'de maig', 'de juny', 'de jul.', 'd’ag.', - 'de set.', 'd’oct.', 'de nov.', 'de des.' - ], - [ - 'de gener', 'de febrer', 'de març', 'd’abril', 'de maig', 'de juny', 'de juliol', 'd’agost', - 'de setembre', 'd’octubre', 'de novembre', 'de desembre' - ] - ], - [ - ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'], - [ - 'gen.', 'febr.', 'març', 'abr.', 'maig', 'juny', 'jul.', 'ag.', 'set.', 'oct.', 'nov.', 'des.' - ], - [ - 'gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'agost', 'setembre', 'octubre', - 'novembre', 'desembre' - ] - ], - [['aC', 'dC'], u, ['abans de Crist', 'després de Crist']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM \'de\' y', 'EEEE, d MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', '{1}, {0}', '{1} \'a\' \'les\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': ['AU$', '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'MXN': [u, '$'], - 'THB': ['฿'], - 'USD': [u, '$'], - 'VEF': [u, 'Bs F'], - 'XCD': [u, '$'], - 'XXX': [] - }, - 'ltr', - plural, - [ - [ - ['mitjanit', 'mat.', 'matí', 'md', 'tarda', 'vespre', 'nit'], - ['mitjanit', 'matinada', 'matí', 'migdia', 'tarda', 'vespre', 'nit'], u - ], - [['mitjanit', 'matinada', 'matí', 'migdia', 'tarda', 'vespre', 'nit'], u, u], - [ - '00:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '21:00'], ['21:00', '24:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ca-FR.js b/packages/common/locales/global/ca-FR.js deleted file mode 100644 index c0ee04fbee..0000000000 --- a/packages/common/locales/global/ca-FR.js +++ /dev/null @@ -1,93 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['ca-fr'] = [ - 'ca-FR', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['dg', 'dl', 'dt', 'dc', 'dj', 'dv', 'ds'], ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'], - ['diumenge', 'dilluns', 'dimarts', 'dimecres', 'dijous', 'divendres', 'dissabte'], - ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'] - ], - u, - [ - ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'], - [ - 'de gen.', 'de febr.', 'de març', 'd’abr.', 'de maig', 'de juny', 'de jul.', 'd’ag.', - 'de set.', 'd’oct.', 'de nov.', 'de des.' - ], - [ - 'de gener', 'de febrer', 'de març', 'd’abril', 'de maig', 'de juny', 'de juliol', 'd’agost', - 'de setembre', 'd’octubre', 'de novembre', 'de desembre' - ] - ], - [ - ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'], - [ - 'gen.', 'febr.', 'març', 'abr.', 'maig', 'juny', 'jul.', 'ag.', 'set.', 'oct.', 'nov.', 'des.' - ], - [ - 'gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'agost', 'setembre', 'octubre', - 'novembre', 'desembre' - ] - ], - [['aC', 'dC'], u, ['abans de Crist', 'després de Crist']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM \'de\' y', 'EEEE, d MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', '{1}, {0}', '{1} \'a\' \'les\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': ['AU$', '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'FRF': ['F'], - 'MXN': [u, '$'], - 'THB': ['฿'], - 'USD': [u, '$'], - 'VEF': [u, 'Bs F'], - 'XCD': [u, '$'], - 'XXX': [] - }, - 'ltr', - plural, - [ - [ - ['mitjanit', 'mat.', 'matí', 'md', 'tarda', 'vespre', 'nit'], - ['mitjanit', 'matinada', 'matí', 'migdia', 'tarda', 'vespre', 'nit'], u - ], - [['mitjanit', 'matinada', 'matí', 'migdia', 'tarda', 'vespre', 'nit'], u, u], - [ - '00:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '21:00'], ['21:00', '24:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ca-IT.js b/packages/common/locales/global/ca-IT.js deleted file mode 100644 index 54802d85b1..0000000000 --- a/packages/common/locales/global/ca-IT.js +++ /dev/null @@ -1,92 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['ca-it'] = [ - 'ca-IT', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['dg', 'dl', 'dt', 'dc', 'dj', 'dv', 'ds'], ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'], - ['diumenge', 'dilluns', 'dimarts', 'dimecres', 'dijous', 'divendres', 'dissabte'], - ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'] - ], - u, - [ - ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'], - [ - 'de gen.', 'de febr.', 'de març', 'd’abr.', 'de maig', 'de juny', 'de jul.', 'd’ag.', - 'de set.', 'd’oct.', 'de nov.', 'de des.' - ], - [ - 'de gener', 'de febrer', 'de març', 'd’abril', 'de maig', 'de juny', 'de juliol', 'd’agost', - 'de setembre', 'd’octubre', 'de novembre', 'de desembre' - ] - ], - [ - ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'], - [ - 'gen.', 'febr.', 'març', 'abr.', 'maig', 'juny', 'jul.', 'ag.', 'set.', 'oct.', 'nov.', 'des.' - ], - [ - 'gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'agost', 'setembre', 'octubre', - 'novembre', 'desembre' - ] - ], - [['aC', 'dC'], u, ['abans de Crist', 'després de Crist']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM \'de\' y', 'EEEE, d MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', '{1}, {0}', '{1} \'a\' \'les\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': ['AU$', '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'MXN': [u, '$'], - 'THB': ['฿'], - 'USD': [u, '$'], - 'VEF': [u, 'Bs F'], - 'XCD': [u, '$'], - 'XXX': [] - }, - 'ltr', - plural, - [ - [ - ['mitjanit', 'mat.', 'matí', 'md', 'tarda', 'vespre', 'nit'], - ['mitjanit', 'matinada', 'matí', 'migdia', 'tarda', 'vespre', 'nit'], u - ], - [['mitjanit', 'matinada', 'matí', 'migdia', 'tarda', 'vespre', 'nit'], u, u], - [ - '00:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '21:00'], ['21:00', '24:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ca.js b/packages/common/locales/global/ca.js deleted file mode 100644 index 6aa49ec29a..0000000000 --- a/packages/common/locales/global/ca.js +++ /dev/null @@ -1,92 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['ca'] = [ - 'ca', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['dg', 'dl', 'dt', 'dc', 'dj', 'dv', 'ds'], ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'], - ['diumenge', 'dilluns', 'dimarts', 'dimecres', 'dijous', 'divendres', 'dissabte'], - ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'] - ], - u, - [ - ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'], - [ - 'de gen.', 'de febr.', 'de març', 'd’abr.', 'de maig', 'de juny', 'de jul.', 'd’ag.', - 'de set.', 'd’oct.', 'de nov.', 'de des.' - ], - [ - 'de gener', 'de febrer', 'de març', 'd’abril', 'de maig', 'de juny', 'de juliol', 'd’agost', - 'de setembre', 'd’octubre', 'de novembre', 'de desembre' - ] - ], - [ - ['GN', 'FB', 'MÇ', 'AB', 'MG', 'JN', 'JL', 'AG', 'ST', 'OC', 'NV', 'DS'], - [ - 'gen.', 'febr.', 'març', 'abr.', 'maig', 'juny', 'jul.', 'ag.', 'set.', 'oct.', 'nov.', 'des.' - ], - [ - 'gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'agost', 'setembre', 'octubre', - 'novembre', 'desembre' - ] - ], - [['aC', 'dC'], u, ['abans de Crist', 'després de Crist']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM \'de\' y', 'EEEE, d MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', '{1}, {0}', '{1} \'a\' \'les\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': ['AU$', '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'MXN': [u, '$'], - 'THB': ['฿'], - 'USD': [u, '$'], - 'VEF': [u, 'Bs F'], - 'XCD': [u, '$'], - 'XXX': [] - }, - 'ltr', - plural, - [ - [ - ['mitjanit', 'mat.', 'matí', 'md', 'tarda', 'vespre', 'nit'], - ['mitjanit', 'matinada', 'matí', 'migdia', 'tarda', 'vespre', 'nit'], u - ], - [['mitjanit', 'matinada', 'matí', 'migdia', 'tarda', 'vespre', 'nit'], u, u], - [ - '00:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '21:00'], ['21:00', '24:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ccp-IN.js b/packages/common/locales/global/ccp-IN.js deleted file mode 100644 index 1c4bf80448..0000000000 --- a/packages/common/locales/global/ccp-IN.js +++ /dev/null @@ -1,78 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['ccp-in'] = [ - 'ccp-IN', - [['AM', 'PM'], u, u], - u, - [ - ['𑄢𑄧', '𑄥𑄧', '𑄟𑄧', '𑄝𑄪', '𑄝𑄳𑄢𑄨', '𑄥𑄪', '𑄥𑄧'], ['𑄢𑄧𑄝𑄨', '𑄥𑄧𑄟𑄴', '𑄟𑄧𑄁𑄉𑄧𑄣𑄴', '𑄝𑄪𑄖𑄴', '𑄝𑄳𑄢𑄨𑄥𑄪𑄛𑄴', '𑄥𑄪𑄇𑄴𑄇𑄮𑄢𑄴', '𑄥𑄧𑄚𑄨'], - ['𑄢𑄧𑄝𑄨𑄝𑄢𑄴', '𑄥𑄧𑄟𑄴𑄝𑄢𑄴', '𑄟𑄧𑄁𑄉𑄧𑄣𑄴𑄝𑄢𑄴', '𑄝𑄪𑄖𑄴𑄝𑄢𑄴', '𑄝𑄳𑄢𑄨𑄥𑄪𑄛𑄴𑄝𑄢𑄴', '𑄥𑄪𑄇𑄴𑄇𑄮𑄢𑄴𑄝𑄢𑄴', '𑄥𑄧𑄚𑄨𑄝𑄢𑄴'], - ['𑄢𑄧𑄝𑄨', '𑄥𑄧𑄟𑄴', '𑄟𑄧𑄁𑄉𑄧𑄣𑄴', '𑄝𑄪𑄖𑄴', '𑄝𑄳𑄢𑄨𑄥𑄪𑄛𑄴', '𑄥𑄪𑄇𑄴𑄇𑄮𑄢𑄴', '𑄥𑄧𑄚𑄨'] - ], - u, - [ - ['𑄎', '𑄜𑄬', '𑄟', '𑄃𑄬', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪', '𑄃', '𑄥𑄬', '𑄃𑄧', '𑄚𑄧', '𑄓𑄨'], - [ - '𑄎𑄚𑄪', '𑄜𑄬𑄛𑄴', '𑄟𑄢𑄴𑄌𑄧', '𑄃𑄬𑄛𑄳𑄢𑄨𑄣𑄴', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪𑄣𑄭', '𑄃𑄉𑄧𑄌𑄴𑄑𑄴', '𑄥𑄬𑄛𑄴𑄑𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄃𑄧𑄇𑄴𑄑𑄮𑄝𑄧𑄢𑄴', '𑄚𑄧𑄞𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄓𑄨𑄥𑄬𑄟𑄴𑄝𑄢𑄴' - ], - [ - '𑄎𑄚𑄪𑄠𑄢𑄨', '𑄜𑄬𑄛𑄴𑄝𑄳𑄢𑄪𑄠𑄢𑄨', '𑄟𑄢𑄴𑄌𑄧', '𑄃𑄬𑄛𑄳𑄢𑄨𑄣𑄴', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪𑄣𑄭', '𑄃𑄉𑄧𑄌𑄴𑄑𑄴', '𑄥𑄬𑄛𑄴𑄑𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄃𑄧𑄇𑄴𑄑𑄬𑄝𑄧𑄢𑄴', '𑄚𑄧𑄞𑄬𑄟𑄴𑄝𑄧𑄢𑄴', - '𑄓𑄨𑄥𑄬𑄟𑄴𑄝𑄧𑄢𑄴' - ] - ], - [ - ['𑄎', '𑄜𑄬', '𑄟', '𑄃𑄬', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪', '𑄃', '𑄥𑄬', '𑄃𑄧', '𑄚𑄧', '𑄓𑄨'], - [ - '𑄎𑄚𑄪𑄠𑄢𑄨', '𑄜𑄬𑄛𑄴𑄝𑄳𑄢𑄪𑄠𑄢𑄨', '𑄟𑄢𑄴𑄌𑄧', '𑄃𑄬𑄛𑄳𑄢𑄨𑄣𑄴', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪𑄣𑄭', '𑄃𑄉𑄧𑄌𑄴𑄑𑄴', '𑄥𑄬𑄛𑄴𑄑𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄃𑄧𑄇𑄴𑄑𑄮𑄝𑄧𑄢𑄴', '𑄚𑄧𑄞𑄬𑄟𑄴𑄝𑄧𑄢𑄴', - '𑄓𑄨𑄥𑄬𑄟𑄴𑄝𑄧𑄢𑄴' - ], - u - ], - [['𑄈𑄳𑄢𑄨𑄌𑄴𑄑𑄴𑄛𑄫𑄢𑄴𑄝𑄧', '𑄈𑄳𑄢𑄨𑄌𑄴𑄑𑄛𑄴𑄘𑄧'], u, u], - 0, - [0, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '#,##,##0.00¤', '#E0'], - 'INR', - '₹', - '𑄃𑄨𑄚𑄴𑄘𑄨𑄠𑄚𑄴 𑄢𑄪𑄛𑄨', - { - 'BDT': ['৳'], - 'JPY': ['JP¥', '¥'], - 'STD': [u, 'Db'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [['𑄛𑄧𑄖𑄳𑄠𑄃𑄟𑄧𑄣𑄳𑄠𑄬', '𑄝𑄬𑄚𑄳𑄠𑄬', '𑄘𑄨𑄝𑄪𑄎𑄳𑄠', '𑄝𑄬𑄣𑄳𑄠𑄬', '𑄥𑄎𑄧𑄚𑄳𑄠', '𑄢𑄬𑄖𑄴'], u, u], u, - [ - ['04:00', '06:00'], ['06:00', '12:00'], ['12:00', '16:00'], ['16:00', '18:00'], - ['18:00', '20:00'], ['20:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ccp.js b/packages/common/locales/global/ccp.js deleted file mode 100644 index 0e81600299..0000000000 --- a/packages/common/locales/global/ccp.js +++ /dev/null @@ -1,78 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['ccp'] = [ - 'ccp', - [['AM', 'PM'], u, u], - u, - [ - ['𑄢𑄧', '𑄥𑄧', '𑄟𑄧', '𑄝𑄪', '𑄝𑄳𑄢𑄨', '𑄥𑄪', '𑄥𑄧'], ['𑄢𑄧𑄝𑄨', '𑄥𑄧𑄟𑄴', '𑄟𑄧𑄁𑄉𑄧𑄣𑄴', '𑄝𑄪𑄖𑄴', '𑄝𑄳𑄢𑄨𑄥𑄪𑄛𑄴', '𑄥𑄪𑄇𑄴𑄇𑄮𑄢𑄴', '𑄥𑄧𑄚𑄨'], - ['𑄢𑄧𑄝𑄨𑄝𑄢𑄴', '𑄥𑄧𑄟𑄴𑄝𑄢𑄴', '𑄟𑄧𑄁𑄉𑄧𑄣𑄴𑄝𑄢𑄴', '𑄝𑄪𑄖𑄴𑄝𑄢𑄴', '𑄝𑄳𑄢𑄨𑄥𑄪𑄛𑄴𑄝𑄢𑄴', '𑄥𑄪𑄇𑄴𑄇𑄮𑄢𑄴𑄝𑄢𑄴', '𑄥𑄧𑄚𑄨𑄝𑄢𑄴'], - ['𑄢𑄧𑄝𑄨', '𑄥𑄧𑄟𑄴', '𑄟𑄧𑄁𑄉𑄧𑄣𑄴', '𑄝𑄪𑄖𑄴', '𑄝𑄳𑄢𑄨𑄥𑄪𑄛𑄴', '𑄥𑄪𑄇𑄴𑄇𑄮𑄢𑄴', '𑄥𑄧𑄚𑄨'] - ], - u, - [ - ['𑄎', '𑄜𑄬', '𑄟', '𑄃𑄬', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪', '𑄃', '𑄥𑄬', '𑄃𑄧', '𑄚𑄧', '𑄓𑄨'], - [ - '𑄎𑄚𑄪', '𑄜𑄬𑄛𑄴', '𑄟𑄢𑄴𑄌𑄧', '𑄃𑄬𑄛𑄳𑄢𑄨𑄣𑄴', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪𑄣𑄭', '𑄃𑄉𑄧𑄌𑄴𑄑𑄴', '𑄥𑄬𑄛𑄴𑄑𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄃𑄧𑄇𑄴𑄑𑄮𑄝𑄧𑄢𑄴', '𑄚𑄧𑄞𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄓𑄨𑄥𑄬𑄟𑄴𑄝𑄢𑄴' - ], - [ - '𑄎𑄚𑄪𑄠𑄢𑄨', '𑄜𑄬𑄛𑄴𑄝𑄳𑄢𑄪𑄠𑄢𑄨', '𑄟𑄢𑄴𑄌𑄧', '𑄃𑄬𑄛𑄳𑄢𑄨𑄣𑄴', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪𑄣𑄭', '𑄃𑄉𑄧𑄌𑄴𑄑𑄴', '𑄥𑄬𑄛𑄴𑄑𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄃𑄧𑄇𑄴𑄑𑄬𑄝𑄧𑄢𑄴', '𑄚𑄧𑄞𑄬𑄟𑄴𑄝𑄧𑄢𑄴', - '𑄓𑄨𑄥𑄬𑄟𑄴𑄝𑄧𑄢𑄴' - ] - ], - [ - ['𑄎', '𑄜𑄬', '𑄟', '𑄃𑄬', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪', '𑄃', '𑄥𑄬', '𑄃𑄧', '𑄚𑄧', '𑄓𑄨'], - [ - '𑄎𑄚𑄪𑄠𑄢𑄨', '𑄜𑄬𑄛𑄴𑄝𑄳𑄢𑄪𑄠𑄢𑄨', '𑄟𑄢𑄴𑄌𑄧', '𑄃𑄬𑄛𑄳𑄢𑄨𑄣𑄴', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪𑄣𑄭', '𑄃𑄉𑄧𑄌𑄴𑄑𑄴', '𑄥𑄬𑄛𑄴𑄑𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄃𑄧𑄇𑄴𑄑𑄮𑄝𑄧𑄢𑄴', '𑄚𑄧𑄞𑄬𑄟𑄴𑄝𑄧𑄢𑄴', - '𑄓𑄨𑄥𑄬𑄟𑄴𑄝𑄧𑄢𑄴' - ], - u - ], - [['𑄈𑄳𑄢𑄨𑄌𑄴𑄑𑄴𑄛𑄫𑄢𑄴𑄝𑄧', '𑄈𑄳𑄢𑄨𑄌𑄴𑄑𑄛𑄴𑄘𑄧'], u, u], - 0, - [6, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '#,##,##0.00¤', '#E0'], - 'BDT', - '৳', - '𑄝𑄁𑄣𑄘𑄬𑄥𑄨 𑄑𑄬𑄋', - { - 'BDT': ['৳'], - 'JPY': ['JP¥', '¥'], - 'STD': [u, 'Db'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [['𑄛𑄧𑄖𑄳𑄠𑄃𑄟𑄧𑄣𑄳𑄠𑄬', '𑄝𑄬𑄚𑄳𑄠𑄬', '𑄘𑄨𑄝𑄪𑄎𑄳𑄠', '𑄝𑄬𑄣𑄳𑄠𑄬', '𑄥𑄎𑄧𑄚𑄳𑄠', '𑄢𑄬𑄖𑄴'], u, u], u, - [ - ['04:00', '06:00'], ['06:00', '12:00'], ['12:00', '16:00'], ['16:00', '18:00'], - ['18:00', '20:00'], ['20:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ce.js b/packages/common/locales/global/ce.js deleted file mode 100644 index 7382f0d4fc..0000000000 --- a/packages/common/locales/global/ce.js +++ /dev/null @@ -1,64 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ce'] = [ - 'ce', - [['AM', 'PM'], u, u], - u, - [ - ['кӀи', 'ор', 'ши', 'кха', 'еа', 'пӀе', 'шуо'], u, - ['кӀира', 'оршот', 'шинара', 'кхаара', 'еара', 'пӀераска', 'шуот'], - ['кӀи', 'ор', 'ши', 'кха', 'еа', 'пӀе', 'шуо'] - ], - [ - ['кӀ', 'о', 'ш', 'кх', 'е', 'пӀ', 'ш'], ['кӀи', 'ор', 'ши', 'кха', 'еа', 'пӀе', 'шуо'], - ['кӀира', 'оршот', 'шинара', 'кхаара', 'еара', 'пӀераска', 'шуот'], - ['кӀи', 'ор', 'ши', 'кха', 'еа', 'пӀе', 'шуо'] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'], - [ - 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', - 'ноябрь', 'декабрь' - ] - ], - u, - [ - ['в. э. тӀ. я', 'в. э'], u, - ['Ӏийса пайхамар вина де кхачале', 'Ӏийса пайхамар вина дийнахь дуьйна'] - ], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'Терхьаш дац', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'RUB', - '₽', - 'Российн сом', - {'JPY': ['JP¥', '¥'], 'RON': [u, 'лей'], 'RUB': ['₽'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ceb.js b/packages/common/locales/global/ceb.js deleted file mode 100644 index af23158f37..0000000000 --- a/packages/common/locales/global/ceb.js +++ /dev/null @@ -1,63 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['ceb'] = [ - 'ceb', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['D', 'L', 'M', 'M', 'H', 'B', 'S'], ['Dom', 'Lun', 'Mar', 'Miy', 'Huw', 'Biy', 'Sab'], - ['Domingo', 'Lunes', 'Martes', 'Miyerkules', 'Huwebes', 'Biyernes', 'Sabado'], - ['Dom', 'Lun', 'Mar', 'Miy', 'Huw', 'Biy', 'Sab'] - ], - u, - [ - ['E', 'P', 'M', 'A', 'M', 'H', 'H', 'A', 'S', 'O', 'N', 'D'], - ['En', 'Peb', 'Mar', 'Apr', 'May', 'Hun', 'Hul', 'Ag', 'Set', 'Okt', 'Nob', 'Dis'], - [ - 'Enero', 'Pebrero', 'Marso', 'Abril', 'Mayo', 'Hunyo', 'Hulyo', 'Agosto', 'Setyembre', - 'Oktubre', 'Nobyembre', 'Disyembre' - ] - ], - [ - ['E', 'P', 'M', 'A', 'M', 'H', 'H', 'A', 'S', 'O', 'N', 'D'], - ['Ene', 'Peb', 'Mar', 'Abr', 'May', 'Hun', 'Hul', 'Ago', 'Set', 'Okt', 'Nob', 'Dis'], - [ - 'Enero', 'Pebrero', 'Marso', 'Abril', 'Mayo', 'Hunyo', 'Hulyo', 'Agosto', 'Setyembre', - 'Oktubre', 'Nobyembre', 'Disyembre' - ] - ], - [['BC', 'KP'], u, ['Sa Wala Pa Si Kristo', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'sa\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,#0%', '¤#,##0.00', '#E0'], - 'PHP', - '₱', - 'Philippine Piso', - {'JPY': ['JP¥', '¥'], 'PHP': ['₱'], 'USD': ['US $', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/cgg.js b/packages/common/locales/global/cgg.js deleted file mode 100644 index c8352cac5b..0000000000 --- a/packages/common/locales/global/cgg.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['cgg'] = [ - 'cgg', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'K', 'R', 'S', 'N', 'T', 'M'], ['SAN', 'ORK', 'OKB', 'OKS', 'OKN', 'OKT', 'OMK'], - ['Sande', 'Orwokubanza', 'Orwakabiri', 'Orwakashatu', 'Orwakana', 'Orwakataano', 'Orwamukaaga'], - ['SAN', 'ORK', 'OKB', 'OKS', 'OKN', 'OKT', 'OMK'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['KBZ', 'KBR', 'KST', 'KKN', 'KTN', 'KMK', 'KMS', 'KMN', 'KMW', 'KKM', 'KNK', 'KNB'], - [ - 'Okwokubanza', 'Okwakabiri', 'Okwakashatu', 'Okwakana', 'Okwakataana', 'Okwamukaaga', - 'Okwamushanju', 'Okwamunaana', 'Okwamwenda', 'Okwaikumi', 'Okwaikumi na kumwe', - 'Okwaikumi na ibiri' - ] - ], - u, - [['BC', 'AD'], u, ['Kurisito Atakaijire', 'Kurisito Yaijire']], - 1, - [0, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'UGX', - 'USh', - 'Eshiringi ya Uganda', - {'JPY': ['JP¥', '¥'], 'UGX': ['USh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/chr.js b/packages/common/locales/global/chr.js deleted file mode 100644 index e18120606b..0000000000 --- a/packages/common/locales/global/chr.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['chr'] = [ - 'chr', - [['Ꮜ', 'Ꮢ'], ['ᏌᎾᎴ', 'ᏒᎯᏱᎢ'], ['ᏌᎾᎴ', 'ᏒᎯᏱᎢᏗᏢ']], - [['ᏌᎾᎴ', 'ᏒᎯᏱᎢ'], u, ['ᏌᎾᎴ', 'ᏒᎯᏱᎢᏗᏢ']], - [ - ['Ꮖ', 'Ꮙ', 'Ꮤ', 'Ꮶ', 'Ꮕ', 'Ꮷ', 'Ꭴ'], ['ᏆᏍᎬ', 'ᏉᏅᎯ', 'ᏔᎵᏁ', 'ᏦᎢᏁ', 'ᏅᎩᏁ', 'ᏧᎾᎩ', 'ᏈᏕᎾ'], - ['ᎤᎾᏙᏓᏆᏍᎬ', 'ᎤᎾᏙᏓᏉᏅᎯ', 'ᏔᎵᏁᎢᎦ', 'ᏦᎢᏁᎢᎦ', 'ᏅᎩᏁᎢᎦ', 'ᏧᎾᎩᎶᏍᏗ', 'ᎤᎾᏙᏓᏈᏕᎾ'], - ['ᏍᎬ', 'ᏅᎯ', 'ᏔᎵ', 'ᏦᎢ', 'ᏅᎩ', 'ᏧᎾ', 'ᏕᎾ'] - ], - u, - [ - ['Ꭴ', 'Ꭷ', 'Ꭰ', 'Ꭷ', 'Ꭰ', 'Ꮥ', 'Ꭻ', 'Ꭶ', 'Ꮪ', 'Ꮪ', 'Ꮕ', 'Ꭵ'], - ['ᎤᏃ', 'ᎧᎦ', 'ᎠᏅ', 'ᎧᏬ', 'ᎠᏂ', 'ᏕᎭ', 'ᎫᏰ', 'ᎦᎶ', 'ᏚᎵ', 'ᏚᏂ', 'ᏅᏓ', 'ᎥᏍ'], - ['ᎤᏃᎸᏔᏅ', 'ᎧᎦᎵ', 'ᎠᏅᏱ', 'ᎧᏬᏂ', 'ᎠᏂᏍᎬᏘ', 'ᏕᎭᎷᏱ', 'ᎫᏰᏉᏂ', 'ᎦᎶᏂ', 'ᏚᎵᏍᏗ', 'ᏚᏂᏅᏗ', 'ᏅᏓᏕᏆ', 'ᎥᏍᎩᏱ'] - ], - u, - [['BC', 'AD'], u, ['ᏧᏓᎷᎸ ᎤᎷᎯᏍᏗ ᎦᎶᏁᏛ', 'ᎠᏃ ᏙᎻᏂ']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} ᎤᎾᎢ {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'US ᎠᏕᎳ', - {'JPY': ['JP¥', '¥']}, - 'ltr', - plural, - [ - [['Ꭲ', 'ᏌᎾᎴ', 'ᏒᎯᏱᎢᏗᏢ'], ['ᎢᎦ', 'ᏌᎾᎴ', 'ᏒᎯᏱᎢᏗᏢ'], u], [['ᎢᎦ', 'ᏌᎾᎴ', 'ᏒᎯᏱᎢᏗᏢ'], u, u], - ['12:00', ['00:00', '12:00'], ['12:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ckb-IR.js b/packages/common/locales/global/ckb-IR.js deleted file mode 100644 index c163620f9c..0000000000 --- a/packages/common/locales/global/ckb-IR.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ckb-ir'] = [ - 'ckb-IR', - [['ب.ن', 'د.ن'], u, u], - u, - [ - ['ی', 'د', 'س', 'چ', 'پ', 'ھ', 'ش'], - ['یەکشەممە', 'دووشەممە', 'سێشەممە', 'چوارشەممە', 'پێنجشەممە', 'ھەینی', 'شەممە'], u, - ['١ش', '٢ش', '٣ش', '٤ش', '٥ش', 'ھ', 'ش'] - ], - u, - [ - ['ک', 'ش', 'ئ', 'ن', 'ئ', 'ح', 'ت', 'ئ', 'ئ', 'ت', 'ت', 'ک'], - [ - 'کانوونی دووەم', 'شوبات', 'ئازار', 'نیسان', 'ئایار', 'حوزەیران', 'تەمووز', 'ئاب', 'ئەیلوول', - 'تشرینی یەکەم', 'تشرینی دووەم', 'کانونی یەکەم' - ], - u - ], - u, - [['پێش زایین', 'زایینی'], u, u], - 6, - [5, 5], - ['y-MM-dd', 'y MMM d', 'dی MMMMی y', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '\u200e+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'IRR', - 'IRR', - 'IRR', - {'IQD': ['د.ع.\u200f'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'rtl', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ckb.js b/packages/common/locales/global/ckb.js deleted file mode 100644 index 2451fdd995..0000000000 --- a/packages/common/locales/global/ckb.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ckb'] = [ - 'ckb', - [['ب.ن', 'د.ن'], u, u], - u, - [ - ['ی', 'د', 'س', 'چ', 'پ', 'ھ', 'ش'], - ['یەکشەممە', 'دووشەممە', 'سێشەممە', 'چوارشەممە', 'پێنجشەممە', 'ھەینی', 'شەممە'], u, - ['١ش', '٢ش', '٣ش', '٤ش', '٥ش', 'ھ', 'ش'] - ], - u, - [ - ['ک', 'ش', 'ئ', 'ن', 'ئ', 'ح', 'ت', 'ئ', 'ئ', 'ت', 'ت', 'ک'], - [ - 'کانوونی دووەم', 'شوبات', 'ئازار', 'نیسان', 'ئایار', 'حوزەیران', 'تەمووز', 'ئاب', 'ئەیلوول', - 'تشرینی یەکەم', 'تشرینی دووەم', 'کانونی یەکەم' - ], - u - ], - u, - [['پێش زایین', 'زایینی'], u, u], - 6, - [5, 6], - ['y-MM-dd', 'y MMM d', 'dی MMMMی y', 'y MMMM d, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '\u200e+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'IQD', - 'د.ع.\u200f', - 'IQD', - {'IQD': ['د.ع.\u200f'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'rtl', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/cs.js b/packages/common/locales/global/cs.js deleted file mode 100644 index c9684f7f65..0000000000 --- a/packages/common/locales/global/cs.js +++ /dev/null @@ -1,94 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - if (i === Math.floor(i) && i >= 2 && i <= 4 && v === 0) return 3; - if (!(v === 0)) return 4; - return 5; -} -global.ng.common.locales['cs'] = [ - 'cs', - [['dop.', 'odp.'], u, u], - u, - [ - ['N', 'P', 'Ú', 'S', 'Č', 'P', 'S'], ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'], - ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'], - ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['led', 'úno', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro'], - [ - 'ledna', 'února', 'března', 'dubna', 'května', 'června', 'července', 'srpna', 'září', 'října', - 'listopadu', 'prosince' - ] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['led', 'úno', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro'], - [ - 'leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen', 'září', 'říjen', - 'listopad', 'prosinec' - ] - ], - [['př.n.l.', 'n.l.'], ['př. n. l.', 'n. l.'], ['před naším letopočtem', 'našeho letopočtu']], - 1, - [6, 0], - ['dd.MM.yy', 'd. M. y', 'd. MMMM y', 'EEEE d. MMMM y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'CZK', - 'Kč', - 'česká koruna', - { - 'AUD': ['AU$', '$'], - 'CSK': ['Kčs'], - 'CZK': ['Kč'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': ['JP¥', '¥'], - 'RON': [u, 'L'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'], - 'XEU': ['ECU'], - 'XXX': [] - }, - 'ltr', - plural, - [ - [ - ['půl.', 'pol.', 'r.', 'd.', 'o.', 'v.', 'n.'], - ['půln.', 'pol.', 'r.', 'dop.', 'odp.', 'več.', 'v n.'], - ['půlnoc', 'poledne', 'ráno', 'dopoledne', 'odpoledne', 'večer', 'v noci'] - ], - [ - ['půl.', 'pol.', 'ráno', 'dop.', 'odp.', 'več.', 'noc'], - ['půlnoc', 'poledne', 'ráno', 'dopoledne', 'odpoledne', 'večer', 'noc'], u - ], - [ - '00:00', '12:00', ['04:00', '09:00'], ['09:00', '12:00'], ['12:00', '18:00'], - ['18:00', '22:00'], ['22:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/cu.js b/packages/common/locales/global/cu.js deleted file mode 100644 index 343d145048..0000000000 --- a/packages/common/locales/global/cu.js +++ /dev/null @@ -1,48 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['cu'] = [ - 'cu', - [['AM', 'PM'], u, u], - u, - [['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], u, u], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'], u - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'RUB', - '₽', - 'RUB', - {'JPY': ['JP¥', '¥'], 'RUB': ['₽'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/cy.js b/packages/common/locales/global/cy.js deleted file mode 100644 index 154a191e26..0000000000 --- a/packages/common/locales/global/cy.js +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - if (n === 2) return 2; - if (n === 3) return 3; - if (n === 6) return 4; - return 5; -} -global.ng.common.locales['cy'] = [ - 'cy', - [['b', 'h'], ['AM', 'PM'], ['yb', 'yh']], - [['AM', 'PM'], u, u], - [ - ['S', 'Ll', 'M', 'M', 'I', 'G', 'S'], ['Sul', 'Llun', 'Maw', 'Mer', 'Iau', 'Gwen', 'Sad'], - [ - 'Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', - 'Dydd Sadwrn' - ], - ['Su', 'Ll', 'Ma', 'Me', 'Ia', 'Gw', 'Sa'] - ], - [ - ['S', 'Ll', 'M', 'M', 'I', 'G', 'S'], ['Sul', 'Llun', 'Maw', 'Mer', 'Iau', 'Gwe', 'Sad'], - [ - 'Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', - 'Dydd Sadwrn' - ], - ['Su', 'Ll', 'Ma', 'Me', 'Ia', 'Gw', 'Sa'] - ], - [ - ['I', 'Ch', 'M', 'E', 'M', 'M', 'G', 'A', 'M', 'H', 'T', 'Rh'], - ['Ion', 'Chwef', 'Maw', 'Ebr', 'Mai', 'Meh', 'Gorff', 'Awst', 'Medi', 'Hyd', 'Tach', 'Rhag'], - [ - 'Ionawr', 'Chwefror', 'Mawrth', 'Ebrill', 'Mai', 'Mehefin', 'Gorffennaf', 'Awst', 'Medi', - 'Hydref', 'Tachwedd', 'Rhagfyr' - ] - ], - [ - ['I', 'Ch', 'M', 'E', 'M', 'M', 'G', 'A', 'M', 'H', 'T', 'Rh'], - ['Ion', 'Chw', 'Maw', 'Ebr', 'Mai', 'Meh', 'Gor', 'Awst', 'Medi', 'Hyd', 'Tach', 'Rhag'], - [ - 'Ionawr', 'Chwefror', 'Mawrth', 'Ebrill', 'Mai', 'Mehefin', 'Gorffennaf', 'Awst', 'Medi', - 'Hydref', 'Tachwedd', 'Rhagfyr' - ] - ], - [['C', 'O'], ['CC', 'OC'], ['Cyn Crist', 'Oed Crist']], - 1, - [6, 0], - ['dd/MM/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'am\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GBP', - '£', - 'Punt Prydain', - { - 'BDT': [u, 'TK'], - 'BWP': [], - 'HKD': ['HK$'], - 'JPY': ['JP¥', '¥'], - 'KRW': [u, '₩'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XXX': [], - 'ZAR': [], - 'ZMW': [] - }, - 'ltr', - plural, - [ - [ - ['canol nos', 'canol dydd', 'yn y bore', 'yn y prynhawn', 'min nos'], - ['canol nos', 'canol dydd', 'y bore', 'y prynhawn', 'yr hwyr'], u - ], - [ - ['canol nos', 'canol dydd', 'bore', 'prynhawn', 'min nos'], - ['canol nos', 'canol dydd', 'bore', 'prynhawn', 'yr hwyr'], - ['canol nos', 'canol dydd', 'y bore', 'y prynhawn', 'yr hwyr'] - ], - ['00:00', '12:00', ['00:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/da-GL.js b/packages/common/locales/global/da-GL.js deleted file mode 100644 index 72a79787fc..0000000000 --- a/packages/common/locales/global/da-GL.js +++ /dev/null @@ -1,84 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), - t = parseInt(n.toString().replace(/^[^.]*\.?|0+$/g, ''), 10) || 0; - if (n === 1 || !(t === 0) && (i === 0 || i === 1)) return 1; - return 5; -} -global.ng.common.locales['da-gl'] = [ - 'da-GL', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['søn.', 'man.', 'tir.', 'ons.', 'tor.', 'fre.', 'lør.'], - ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'], - ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'] - ], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['søn', 'man', 'tir', 'ons', 'tor', 'fre', 'lør'], - ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'], - ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januar', 'februar', 'marts', 'april', 'maj', 'juni', 'juli', 'august', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['fKr', 'eKr'], ['f.Kr.', 'e.Kr.'], u], - 1, - [6, 0], - ['dd.MM.y', 'd. MMM y', 'd. MMMM y', 'EEEE \'den\' d. MMMM y'], - ['HH.mm', 'HH.mm.ss', 'HH.mm.ss z', 'HH.mm.ss zzzz'], - ['{1} {0}', u, '{1} \'kl\'. {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', '.'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'DKK', - 'kr.', - 'dansk krone', - { - 'AUD': ['AU$', '$'], - 'DKK': ['kr.'], - 'ISK': [u, 'kr.'], - 'JPY': ['JP¥', '¥'], - 'NOK': [u, 'kr.'], - 'RON': [u, 'L'], - 'SEK': [u, 'kr.'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [ - ['midnat', 'om morgenen', 'om formiddagen', 'om eftermiddagen', 'om aftenen', 'om natten'], u, - u - ], - [['midnat', 'morgen', 'formiddag', 'eftermiddag', 'aften', 'nat'], u, u], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/da.js b/packages/common/locales/global/da.js deleted file mode 100644 index d18f3bf0a2..0000000000 --- a/packages/common/locales/global/da.js +++ /dev/null @@ -1,84 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), - t = parseInt(n.toString().replace(/^[^.]*\.?|0+$/g, ''), 10) || 0; - if (n === 1 || !(t === 0) && (i === 0 || i === 1)) return 1; - return 5; -} -global.ng.common.locales['da'] = [ - 'da', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['søn.', 'man.', 'tir.', 'ons.', 'tor.', 'fre.', 'lør.'], - ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'], - ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'] - ], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['søn', 'man', 'tir', 'ons', 'tor', 'fre', 'lør'], - ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'], - ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januar', 'februar', 'marts', 'april', 'maj', 'juni', 'juli', 'august', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['fKr', 'eKr'], ['f.Kr.', 'e.Kr.'], u], - 1, - [6, 0], - ['dd.MM.y', 'd. MMM y', 'd. MMMM y', 'EEEE \'den\' d. MMMM y'], - ['HH.mm', 'HH.mm.ss', 'HH.mm.ss z', 'HH.mm.ss zzzz'], - ['{1} {0}', u, '{1} \'kl\'. {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', '.'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'DKK', - 'kr.', - 'dansk krone', - { - 'AUD': ['AU$', '$'], - 'DKK': ['kr.'], - 'ISK': [u, 'kr.'], - 'JPY': ['JP¥', '¥'], - 'NOK': [u, 'kr.'], - 'RON': [u, 'L'], - 'SEK': [u, 'kr.'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [ - ['midnat', 'om morgenen', 'om formiddagen', 'om eftermiddagen', 'om aftenen', 'om natten'], u, - u - ], - [['midnat', 'morgen', 'formiddag', 'eftermiddag', 'aften', 'nat'], u, u], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/dav.js b/packages/common/locales/global/dav.js deleted file mode 100644 index 9fe38e24e0..0000000000 --- a/packages/common/locales/global/dav.js +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['dav'] = [ - 'dav', - [['Luma lwa K', 'luma lwa p'], u, u], - u, - [ - ['J', 'J', 'K', 'K', 'K', 'K', 'N'], ['Jum', 'Jim', 'Kaw', 'Kad', 'Kan', 'Kas', 'Ngu'], - [ - 'Ituku ja jumwa', 'Kuramuka jimweri', 'Kuramuka kawi', 'Kuramuka kadadu', 'Kuramuka kana', - 'Kuramuka kasanu', 'Kifula nguwo' - ], - ['Jum', 'Jim', 'Kaw', 'Kad', 'Kan', 'Kas', 'Ngu'] - ], - u, - [ - ['I', 'K', 'K', 'K', 'K', 'K', 'M', 'W', 'I', 'I', 'I', 'I'], - ['Imb', 'Kaw', 'Kad', 'Kan', 'Kas', 'Kar', 'Mfu', 'Wun', 'Ike', 'Iku', 'Imw', 'Iwi'], - [ - 'Mori ghwa imbiri', 'Mori ghwa kawi', 'Mori ghwa kadadu', 'Mori ghwa kana', - 'Mori ghwa kasanu', 'Mori ghwa karandadu', 'Mori ghwa mfungade', 'Mori ghwa wunyanya', - 'Mori ghwa ikenda', 'Mori ghwa ikumi', 'Mori ghwa ikumi na imweri', 'Mori ghwa ikumi na iwi' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Kristo', 'Baada ya Kristo']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Shilingi ya Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/de-AT.js b/packages/common/locales/global/de-AT.js deleted file mode 100644 index b2e672bb18..0000000000 --- a/packages/common/locales/global/de-AT.js +++ /dev/null @@ -1,99 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['de-at'] = [ - 'de-AT', - [['AM', 'PM'], u, u], - [['vm.', 'nm.'], ['AM', 'PM'], u], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jän.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Dez.'], - [ - 'Jänner', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jän', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Jänner', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'um\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':', u, '.'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - { - 'ATS': ['öS'], - 'AUD': ['AU$', '$'], - 'BGM': ['BGK'], - 'BGO': ['BGJ'], - 'CUC': [u, 'Cub$'], - 'DEM': ['DM'], - 'FKP': [u, 'Fl£'], - 'GNF': [u, 'F.G.'], - 'KMF': [u, 'FC'], - 'RON': [u, 'L'], - 'RWF': [u, 'F.Rw'], - 'SYP': [], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XXX': [], - 'ZMW': [u, 'K'] - }, - 'ltr', - plural, - [ - [ - ['Mitternacht', 'morgens', 'vorm.', 'mittags', 'nachm.', 'abends', 'nachts'], u, - ['Mitternacht', 'morgens', 'vormittags', 'mittags', 'nachmittags', 'abends', 'nachts'] - ], - [ - ['Mitternacht', 'Morgen', 'Vorm.', 'Mittag', 'Nachm.', 'Abend', 'Nacht'], u, - ['Mitternacht', 'Morgen', 'Vormittag', 'Mittag', 'Nachmittag', 'Abend', 'Nacht'] - ], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/de-BE.js b/packages/common/locales/global/de-BE.js deleted file mode 100644 index 5e562447d5..0000000000 --- a/packages/common/locales/global/de-BE.js +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['de-be'] = [ - 'de-BE', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sept.', 'Okt.', 'Nov.', 'Dez.' - ], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'um\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - { - 'ATS': ['öS'], - 'AUD': ['AU$', '$'], - 'BGM': ['BGK'], - 'BGO': ['BGJ'], - 'CUC': [u, 'Cub$'], - 'DEM': ['DM'], - 'FKP': [u, 'Fl£'], - 'GNF': [u, 'F.G.'], - 'KMF': [u, 'FC'], - 'RON': [u, 'L'], - 'RWF': [u, 'F.Rw'], - 'SYP': [], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XXX': [], - 'ZMW': [u, 'K'] - }, - 'ltr', - plural, - [ - [ - ['Mitternacht', 'morgens', 'vorm.', 'mittags', 'nachm.', 'abends', 'nachts'], u, - ['Mitternacht', 'morgens', 'vormittags', 'mittags', 'nachmittags', 'abends', 'nachts'] - ], - [ - ['Mitternacht', 'Morgen', 'Vorm.', 'Mittag', 'Nachm.', 'Abend', 'Nacht'], u, - ['Mitternacht', 'Morgen', 'Vormittag', 'Mittag', 'Nachmittag', 'Abend', 'Nacht'] - ], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/de-CH.js b/packages/common/locales/global/de-CH.js deleted file mode 100644 index aba2ec95ce..0000000000 --- a/packages/common/locales/global/de-CH.js +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['de-ch'] = [ - 'de-CH', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'] - ], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sept.', 'Okt.', 'Nov.', 'Dez.' - ], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'um\' {0}', u], - ['.', '’', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤-#,##0.00', '#E0'], - 'CHF', - 'CHF', - 'Schweizer Franken', - { - 'ATS': ['öS'], - 'AUD': ['AU$', '$'], - 'BGM': ['BGK'], - 'BGO': ['BGJ'], - 'CUC': [u, 'Cub$'], - 'DEM': ['DM'], - 'EUR': [], - 'FKP': [u, 'Fl£'], - 'GNF': [u, 'F.G.'], - 'KMF': [u, 'FC'], - 'RON': [u, 'L'], - 'RWF': [u, 'F.Rw'], - 'SYP': [], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XXX': [], - 'ZMW': [u, 'K'] - }, - 'ltr', - plural, - [ - [ - ['Mitternacht', 'morgens', 'vorm.', 'mittags', 'nachm.', 'abends', 'nachts'], u, - ['Mitternacht', 'morgens', 'vormittags', 'mittags', 'nachmittags', 'abends', 'nachts'] - ], - [ - ['Mitternacht', 'Morgen', 'Vorm.', 'Mittag', 'Nachm.', 'Abend', 'Nacht'], u, - ['Mitternacht', 'Morgen', 'Vormittag', 'Mittag', 'Nachmittag', 'Abend', 'Nacht'] - ], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/de-IT.js b/packages/common/locales/global/de-IT.js deleted file mode 100644 index 5c074a0882..0000000000 --- a/packages/common/locales/global/de-IT.js +++ /dev/null @@ -1,99 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['de-it'] = [ - 'de-IT', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jän.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Dez.'], - [ - 'Jänner', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jän', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Jänner', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'um\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - { - 'ATS': ['öS'], - 'AUD': ['AU$', '$'], - 'BGM': ['BGK'], - 'BGO': ['BGJ'], - 'CUC': [u, 'Cub$'], - 'DEM': ['DM'], - 'FKP': [u, 'Fl£'], - 'GNF': [u, 'F.G.'], - 'KMF': [u, 'FC'], - 'RON': [u, 'L'], - 'RWF': [u, 'F.Rw'], - 'SYP': [], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XXX': [], - 'ZMW': [u, 'K'] - }, - 'ltr', - plural, - [ - [ - ['Mitternacht', 'morgens', 'vorm.', 'mittags', 'nachm.', 'abends', 'nachts'], u, - ['Mitternacht', 'morgens', 'vormittags', 'mittags', 'nachmittags', 'abends', 'nachts'] - ], - [ - ['Mitternacht', 'Morgen', 'Vorm.', 'Mittag', 'Nachm.', 'Abend', 'Nacht'], u, - ['Mitternacht', 'Morgen', 'Vormittag', 'Mittag', 'Nachmittag', 'Abend', 'Nacht'] - ], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/de-LI.js b/packages/common/locales/global/de-LI.js deleted file mode 100644 index 855cc1eb38..0000000000 --- a/packages/common/locales/global/de-LI.js +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['de-li'] = [ - 'de-LI', - [['AM', 'PM'], u, u], - [['vm.', 'nm.'], ['AM', 'PM'], u], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sept.', 'Okt.', 'Nov.', 'Dez.' - ], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'um\' {0}', u], - ['.', '’', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'CHF', - 'CHF', - 'Schweizer Franken', - { - 'ATS': ['öS'], - 'AUD': ['AU$', '$'], - 'BGM': ['BGK'], - 'BGO': ['BGJ'], - 'CUC': [u, 'Cub$'], - 'DEM': ['DM'], - 'EUR': [u, '€'], - 'FKP': [u, 'Fl£'], - 'GNF': [u, 'F.G.'], - 'KMF': [u, 'FC'], - 'RON': [u, 'L'], - 'RWF': [u, 'F.Rw'], - 'SYP': [], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XXX': [], - 'ZMW': [u, 'K'] - }, - 'ltr', - plural, - [ - [ - ['Mitternacht', 'morgens', 'vorm.', 'mittags', 'nachm.', 'abends', 'nachts'], u, - ['Mitternacht', 'morgens', 'vormittags', 'mittags', 'nachmittags', 'abends', 'nachts'] - ], - [ - ['Mitternacht', 'Morgen', 'Vorm.', 'Mittag', 'Nachm.', 'Abend', 'Nacht'], u, - ['Mitternacht', 'Morgen', 'Vormittag', 'Mittag', 'Nachmittag', 'Abend', 'Nacht'] - ], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/de-LU.js b/packages/common/locales/global/de-LU.js deleted file mode 100644 index a846067d29..0000000000 --- a/packages/common/locales/global/de-LU.js +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['de-lu'] = [ - 'de-LU', - [['vorm.', 'nachm.'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sept.', 'Okt.', 'Nov.', 'Dez.' - ], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'um\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - { - 'ATS': ['öS'], - 'AUD': ['AU$', '$'], - 'BGM': ['BGK'], - 'BGO': ['BGJ'], - 'CUC': [u, 'Cub$'], - 'DEM': ['DM'], - 'FKP': [u, 'Fl£'], - 'GNF': [u, 'F.G.'], - 'KMF': [u, 'FC'], - 'LUF': ['F'], - 'RON': [u, 'L'], - 'RWF': [u, 'F.Rw'], - 'SYP': [], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XXX': [], - 'ZMW': [u, 'K'] - }, - 'ltr', - plural, - [ - [ - ['Mitternacht', 'morgens', 'vorm.', 'mittags', 'nachm.', 'abends', 'nachts'], u, - ['Mitternacht', 'morgens', 'vormittags', 'mittags', 'nachmittags', 'abends', 'nachts'] - ], - [ - ['Mitternacht', 'Morgen', 'Vorm.', 'Mittag', 'Nachm.', 'Abend', 'Nacht'], u, - ['Mitternacht', 'Morgen', 'Vormittag', 'Mittag', 'Nachmittag', 'Abend', 'Nacht'] - ], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/de.js b/packages/common/locales/global/de.js deleted file mode 100644 index 3b76e41d95..0000000000 --- a/packages/common/locales/global/de.js +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['de'] = [ - 'de', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], - ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sept.', 'Okt.', 'Nov.', 'Dez.' - ], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', - 'November', 'Dezember' - ] - ], - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'um\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - { - 'ATS': ['öS'], - 'AUD': ['AU$', '$'], - 'BGM': ['BGK'], - 'BGO': ['BGJ'], - 'CUC': [u, 'Cub$'], - 'DEM': ['DM'], - 'FKP': [u, 'Fl£'], - 'GNF': [u, 'F.G.'], - 'KMF': [u, 'FC'], - 'RON': [u, 'L'], - 'RWF': [u, 'F.Rw'], - 'SYP': [], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XXX': [], - 'ZMW': [u, 'K'] - }, - 'ltr', - plural, - [ - [ - ['Mitternacht', 'morgens', 'vorm.', 'mittags', 'nachm.', 'abends', 'nachts'], u, - ['Mitternacht', 'morgens', 'vormittags', 'mittags', 'nachmittags', 'abends', 'nachts'] - ], - [ - ['Mitternacht', 'Morgen', 'Vorm.', 'Mittag', 'Nachm.', 'Abend', 'Nacht'], u, - ['Mitternacht', 'Morgen', 'Vormittag', 'Mittag', 'Nachmittag', 'Abend', 'Nacht'] - ], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '13:00'], ['13:00', '18:00'], - ['18:00', '24:00'], ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/dje.js b/packages/common/locales/global/dje.js deleted file mode 100644 index edad141104..0000000000 --- a/packages/common/locales/global/dje.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['dje'] = [ - 'dje', - [['Subbaahi', 'Zaarikay b'], u, u], - u, - [ - ['H', 'T', 'T', 'L', 'M', 'Z', 'S'], ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'], - ['Alhadi', 'Atinni', 'Atalaata', 'Alarba', 'Alhamisi', 'Alzuma', 'Asibti'], - ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'] - ], - u, - [ - ['Ž', 'F', 'M', 'A', 'M', 'Ž', 'Ž', 'U', 'S', 'O', 'N', 'D'], - ['Žan', 'Fee', 'Mar', 'Awi', 'Me', 'Žuw', 'Žuy', 'Ut', 'Sek', 'Okt', 'Noo', 'Dee'], - [ - 'Žanwiye', 'Feewiriye', 'Marsi', 'Awiril', 'Me', 'Žuweŋ', 'Žuyye', 'Ut', 'Sektanbur', - 'Oktoobur', 'Noowanbur', 'Deesanbur' - ] - ], - u, - [['IJ', 'IZ'], u, ['Isaa jine', 'Isaa zamanoo']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'XOF', - 'CFA', - 'CFA Fraŋ (BCEAO)', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/dsb.js b/packages/common/locales/global/dsb.js deleted file mode 100644 index ecb952135d..0000000000 --- a/packages/common/locales/global/dsb.js +++ /dev/null @@ -1,72 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 100 === 1 || f % 100 === 1) return 1; - if (v === 0 && i % 100 === 2 || f % 100 === 2) return 2; - if (v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 3 && i % 100 <= 4 || - f % 100 === Math.floor(f % 100) && f % 100 >= 3 && f % 100 <= 4) - return 3; - return 5; -} -global.ng.common.locales['dsb'] = [ - 'dsb', - [['dop.', 'wótp.'], ['dopołdnja', 'wótpołdnja'], u], - [['dopołdnja', 'wótpołdnja'], u, u], - [ - ['n', 'p', 'w', 's', 's', 'p', 's'], ['nje', 'pón', 'wał', 'srj', 'stw', 'pět', 'sob'], - ['njeźela', 'pónjeźele', 'wałtora', 'srjoda', 'stwórtk', 'pětk', 'sobota'], - ['nj', 'pó', 'wa', 'sr', 'st', 'pě', 'so'] - ], - u, - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - [ - 'jan.', 'feb.', 'měr.', 'apr.', 'maj.', 'jun.', 'jul.', 'awg.', 'sep.', 'okt.', 'now.', 'dec.' - ], - [ - 'januara', 'februara', 'měrca', 'apryla', 'maja', 'junija', 'julija', 'awgusta', 'septembra', - 'oktobra', 'nowembra', 'decembra' - ] - ], - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'měr', 'apr', 'maj', 'jun', 'jul', 'awg', 'sep', 'okt', 'now', 'dec'], - [ - 'januar', 'februar', 'měrc', 'apryl', 'maj', 'junij', 'julij', 'awgust', 'september', - 'oktober', 'nowember', 'december' - ] - ], - [['pś.Chr.n.', 'pó Chr.n.'], u, ['pśed Kristusowym naroźenim', 'pó Kristusowem naroźenju']], - 1, - [6, 0], - ['d.M.yy', 'd.M.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - {'AUD': [u, '$'], 'PLN': ['zł'], 'THB': ['฿']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/dua.js b/packages/common/locales/global/dua.js deleted file mode 100644 index 3a3260d591..0000000000 --- a/packages/common/locales/global/dua.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['dua'] = [ - 'dua', - [['idiɓa', 'ebyámu'], u, u], - u, - [ - ['e', 'm', 'k', 'm', 'ŋ', 'ɗ', 'e'], ['ét', 'mɔ́s', 'kwa', 'muk', 'ŋgi', 'ɗón', 'esa'], - ['éti', 'mɔ́sú', 'kwasú', 'mukɔ́sú', 'ŋgisú', 'ɗónɛsú', 'esaɓasú'], - ['ét', 'mɔ́s', 'kwa', 'muk', 'ŋgi', 'ɗón', 'esa'] - ], - u, - [ - ['d', 'ŋ', 's', 'd', 'e', 'e', 'm', 'd', 'n', 'm', 't', 'e'], - ['di', 'ŋgɔn', 'sɔŋ', 'diɓ', 'emi', 'esɔ', 'mad', 'diŋ', 'nyɛt', 'may', 'tin', 'elá'], - [ - 'dimɔ́di', 'ŋgɔndɛ', 'sɔŋɛ', 'diɓáɓá', 'emiasele', 'esɔpɛsɔpɛ', 'madiɓɛ́díɓɛ́', 'diŋgindi', - 'nyɛtɛki', 'mayésɛ́', 'tiníní', 'eláŋgɛ́' - ] - ], - u, - [['ɓ.Ys', 'mb.Ys'], u, ['ɓoso ɓwá yáɓe lá', 'mbúsa kwédi a Yés']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'XAF', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/dyo.js b/packages/common/locales/global/dyo.js deleted file mode 100644 index 08f1a21b3a..0000000000 --- a/packages/common/locales/global/dyo.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['dyo'] = [ - 'dyo', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'T', 'T', 'A', 'A', 'A', 'S'], ['Dim', 'Ten', 'Tal', 'Ala', 'Ara', 'Arj', 'Sib'], - ['Dimas', 'Teneŋ', 'Talata', 'Alarbay', 'Aramisay', 'Arjuma', 'Sibiti'], - ['Dim', 'Ten', 'Tal', 'Ala', 'Ara', 'Arj', 'Sib'] - ], - u, - [ - ['S', 'F', 'M', 'A', 'M', 'S', 'S', 'U', 'S', 'O', 'N', 'D'], - ['Sa', 'Fe', 'Ma', 'Ab', 'Me', 'Su', 'Sú', 'Ut', 'Se', 'Ok', 'No', 'De'], - [ - 'Sanvie', 'Fébirie', 'Mars', 'Aburil', 'Mee', 'Sueŋ', 'Súuyee', 'Ut', 'Settembar', 'Oktobar', - 'Novembar', 'Disambar' - ] - ], - u, - [['ArY', 'AtY'], u, ['Ariŋuu Yeesu', 'Atooŋe Yeesu']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'seefa yati BCEAO', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/dz.js b/packages/common/locales/global/dz.js deleted file mode 100644 index 968c06f503..0000000000 --- a/packages/common/locales/global/dz.js +++ /dev/null @@ -1,72 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['dz'] = [ - 'dz', - [['སྔ་ཆ་', 'ཕྱི་ཆ་'], u, u], - u, - [ - ['ཟླ', 'མིར', 'ལྷག', 'ཕུར', 'སངྶ', 'སྤེན', 'ཉི'], ['ཟླ་', 'མིར་', 'ལྷག་', 'ཕུར་', 'སངས་', 'སྤེན་', 'ཉི་'], - ['གཟའ་ཟླ་བ་', 'གཟའ་མིག་དམར་', 'གཟའ་ལྷག་པ་', 'གཟའ་ཕུར་བུ་', 'གཟའ་པ་སངས་', 'གཟའ་སྤེན་པ་', 'གཟའ་ཉི་མ་'], - ['ཟླ་', 'མིར་', 'ལྷག་', 'ཕུར་', 'སངས་', 'སྤེན་', 'ཉི་'] - ], - u, - [ - ['༡', '༢', '༣', '4', '༥', '༦', '༧', '༨', '9', '༡༠', '༡༡', '༡༢'], - ['༡', '༢', '༣', '༤', '༥', '༦', '༧', '༨', '༩', '༡༠', '༡༡', '12'], - [ - 'ཟླ་དངཔ་', 'ཟླ་གཉིས་པ་', 'ཟླ་གསུམ་པ་', 'ཟླ་བཞི་པ་', 'ཟླ་ལྔ་པ་', 'ཟླ་དྲུག་པ', 'ཟླ་བདུན་པ་', 'ཟླ་བརྒྱད་པ་', - 'ཟླ་དགུ་པ་', 'ཟླ་བཅུ་པ་', 'ཟླ་བཅུ་གཅིག་པ་', 'ཟླ་བཅུ་གཉིས་པ་' - ] - ], - [ - ['༡', '༢', '༣', '༤', '༥', '༦', '༧', '༨', '༩', '༡༠', '༡༡', '༡༢'], - ['ཟླ་༡', 'ཟླ་༢', 'ཟླ་༣', 'ཟླ་༤', 'ཟླ་༥', 'ཟླ་༦', 'ཟླ་༧', 'ཟླ་༨', 'ཟླ་༩', 'ཟླ་༡༠', 'ཟླ་༡༡', 'ཟླ་༡༢'], - [ - 'སྤྱི་ཟླ་དངཔ་', 'སྤྱི་ཟླ་གཉིས་པ་', 'སྤྱི་ཟླ་གསུམ་པ་', 'སྤྱི་ཟླ་བཞི་པ', 'སྤྱི་ཟླ་ལྔ་པ་', 'སྤྱི་ཟླ་དྲུག་པ', 'སྤྱི་ཟླ་བདུན་པ་', - 'སྤྱི་ཟླ་བརྒྱད་པ་', 'སྤྱི་ཟླ་དགུ་པ་', 'སྤྱི་ཟླ་བཅུ་པ་', 'སྤྱི་ཟླ་བཅུ་གཅིག་པ་', 'སྤྱི་ཟླ་བཅུ་གཉིས་པ་' - ] - ], - [['BCE', 'CE'], u, u], - 0, - [6, 0], - ['y-MM-dd', 'སྤྱི་ལོ་y ཟླ་MMM ཚེས་dd', 'སྤྱི་ལོ་y MMMM ཚེས་ dd', 'EEEE, སྤྱི་ལོ་y MMMM ཚེས་dd'], - ['ཆུ་ཚོད་ h སྐར་མ་ mm a', 'ཆུ་ཚོད་h:mm:ss a', 'ཆུ་ཚོད་ h སྐར་མ་ mm:ss a z', 'ཆུ་ཚོད་ h སྐར་མ་ mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0 %', '¤#,##,##0.00', '#E0'], - 'INR', - '₹', - 'རྒྱ་གར་གྱི་དངུལ་ རུ་པི', - { - 'AUD': ['AU$', '$'], - 'BTN': ['Nu.'], - 'ILS': [u, '₪'], - 'JPY': ['JP¥', '¥'], - 'KRW': ['KR₩', '₩'], - 'THB': ['TH฿', '฿'], - 'USD': ['US$', '$'], - 'XAF': [] - }, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ebu.js b/packages/common/locales/global/ebu.js deleted file mode 100644 index 6aa2dbf6c8..0000000000 --- a/packages/common/locales/global/ebu.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['ebu'] = [ - 'ebu', - [['KI', 'UT'], u, u], - u, - [ - ['K', 'N', 'N', 'N', 'A', 'M', 'N'], ['Kma', 'Tat', 'Ine', 'Tan', 'Arm', 'Maa', 'NMM'], - ['Kiumia', 'Njumatatu', 'Njumaine', 'Njumatano', 'Aramithi', 'Njumaa', 'NJumamothii'], - ['Kma', 'Tat', 'Ine', 'Tan', 'Arm', 'Maa', 'NMM'] - ], - u, - [ - ['M', 'K', 'K', 'K', 'G', 'G', 'M', 'K', 'K', 'I', 'I', 'I'], - ['Mbe', 'Kai', 'Kat', 'Kan', 'Gat', 'Gan', 'Mug', 'Knn', 'Ken', 'Iku', 'Imw', 'Igi'], - [ - 'Mweri wa mbere', 'Mweri wa kaĩri', 'Mweri wa kathatũ', 'Mweri wa kana', 'Mweri wa gatano', - 'Mweri wa gatantatũ', 'Mweri wa mũgwanja', 'Mweri wa kanana', 'Mweri wa kenda', - 'Mweri wa ikũmi', 'Mweri wa ikũmi na ũmwe', 'Mweri wa ikũmi na Kaĩrĩ' - ] - ], - u, - [['MK', 'TK'], u, ['Mbere ya Kristo', 'Thutha wa Kristo']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Shilingi ya Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ee-TG.js b/packages/common/locales/global/ee-TG.js deleted file mode 100644 index f0301bb783..0000000000 --- a/packages/common/locales/global/ee-TG.js +++ /dev/null @@ -1,63 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ee-tg'] = [ - 'ee-TG', - [['ŋ', 'ɣ'], ['ŋdi', 'ɣetrɔ'], u], - u, - [ - ['k', 'd', 'b', 'k', 'y', 'f', 'm'], ['kɔs', 'dzo', 'bla', 'kuɖ', 'yaw', 'fiɖ', 'mem'], - ['kɔsiɖa', 'dzoɖa', 'blaɖa', 'kuɖa', 'yawoɖa', 'fiɖa', 'memleɖa'], - ['kɔs', 'dzo', 'bla', 'kuɖ', 'yaw', 'fiɖ', 'mem'] - ], - u, - [ - ['d', 'd', 't', 'a', 'd', 'm', 's', 'd', 'a', 'k', 'a', 'd'], - ['dzv', 'dzd', 'ted', 'afɔ', 'dam', 'mas', 'sia', 'dea', 'any', 'kel', 'ade', 'dzm'], - [ - 'dzove', 'dzodze', 'tedoxe', 'afɔfĩe', 'dama', 'masa', 'siamlɔm', 'deasiamime', 'anyɔnyɔ', - 'kele', 'adeɛmekpɔxe', 'dzome' - ] - ], - u, - [['HYV', 'Yŋ'], u, ['Hafi Yesu Va', 'Yesu ŋɔli']], - 1, - [6, 0], - ['M/d/yy', 'MMM d \'lia\', y', 'MMMM d \'lia\' y', 'EEEE, MMMM d \'lia\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{0} {1}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'mnn', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XOF', - 'CFA', - 'ɣetoɖofe afrikaga CFA franc BCEAO', - {'AUD': ['AU$', '$'], 'GHS': ['GH₵'], 'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [['fɔŋli', 'ŋdi', 'ŋdɔ', 'ɣetrɔ', 'fiẽ', 'zã'], u, u], u, - [ - ['04:00', '05:00'], ['05:00', '12:00'], ['12:00', '14:00'], ['14:00', '18:00'], - ['18:00', '21:00'], ['21:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ee.js b/packages/common/locales/global/ee.js deleted file mode 100644 index 7fc5d354c3..0000000000 --- a/packages/common/locales/global/ee.js +++ /dev/null @@ -1,63 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ee'] = [ - 'ee', - [['ŋ', 'ɣ'], ['ŋdi', 'ɣetrɔ'], u], - u, - [ - ['k', 'd', 'b', 'k', 'y', 'f', 'm'], ['kɔs', 'dzo', 'bla', 'kuɖ', 'yaw', 'fiɖ', 'mem'], - ['kɔsiɖa', 'dzoɖa', 'blaɖa', 'kuɖa', 'yawoɖa', 'fiɖa', 'memleɖa'], - ['kɔs', 'dzo', 'bla', 'kuɖ', 'yaw', 'fiɖ', 'mem'] - ], - u, - [ - ['d', 'd', 't', 'a', 'd', 'm', 's', 'd', 'a', 'k', 'a', 'd'], - ['dzv', 'dzd', 'ted', 'afɔ', 'dam', 'mas', 'sia', 'dea', 'any', 'kel', 'ade', 'dzm'], - [ - 'dzove', 'dzodze', 'tedoxe', 'afɔfĩe', 'dama', 'masa', 'siamlɔm', 'deasiamime', 'anyɔnyɔ', - 'kele', 'adeɛmekpɔxe', 'dzome' - ] - ], - u, - [['HYV', 'Yŋ'], u, ['Hafi Yesu Va', 'Yesu ŋɔli']], - 1, - [6, 0], - ['M/d/yy', 'MMM d \'lia\', y', 'MMMM d \'lia\' y', 'EEEE, MMMM d \'lia\' y'], - ['a \'ga\' h:mm', 'a \'ga\' h:mm:ss', 'a \'ga\' h:mm:ss z', 'a \'ga\' h:mm:ss zzzz'], - ['{0} {1}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'mnn', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GHS', - 'GH₵', - 'ghana siɖi', - {'AUD': ['AU$', '$'], 'GHS': ['GH₵'], 'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [['fɔŋli', 'ŋdi', 'ŋdɔ', 'ɣetrɔ', 'fiẽ', 'zã'], u, u], u, - [ - ['04:00', '05:00'], ['05:00', '12:00'], ['12:00', '14:00'], ['14:00', '18:00'], - ['18:00', '21:00'], ['21:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/el-CY.js b/packages/common/locales/global/el-CY.js deleted file mode 100644 index 3c767f590a..0000000000 --- a/packages/common/locales/global/el-CY.js +++ /dev/null @@ -1,70 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['el-cy'] = [ - 'el-CY', - [['πμ', 'μμ'], ['π.μ.', 'μ.μ.'], u], - u, - [ - ['Κ', 'Δ', 'Τ', 'Τ', 'Π', 'Π', 'Σ'], ['Κυρ', 'Δευ', 'Τρί', 'Τετ', 'Πέμ', 'Παρ', 'Σάβ'], - ['Κυριακή', 'Δευτέρα', 'Τρίτη', 'Τετάρτη', 'Πέμπτη', 'Παρασκευή', 'Σάββατο'], - ['Κυ', 'Δε', 'Τρ', 'Τε', 'Πέ', 'Πα', 'Σά'] - ], - u, - [ - ['Ι', 'Φ', 'Μ', 'Α', 'Μ', 'Ι', 'Ι', 'Α', 'Σ', 'Ο', 'Ν', 'Δ'], - ['Ιαν', 'Φεβ', 'Μαρ', 'Απρ', 'Μαΐ', 'Ιουν', 'Ιουλ', 'Αυγ', 'Σεπ', 'Οκτ', 'Νοε', 'Δεκ'], - [ - 'Ιανουαρίου', 'Φεβρουαρίου', 'Μαρτίου', 'Απριλίου', 'Μαΐου', 'Ιουνίου', 'Ιουλίου', - 'Αυγούστου', 'Σεπτεμβρίου', 'Οκτωβρίου', 'Νοεμβρίου', 'Δεκεμβρίου' - ] - ], - [ - ['Ι', 'Φ', 'Μ', 'Α', 'Μ', 'Ι', 'Ι', 'Α', 'Σ', 'Ο', 'Ν', 'Δ'], - ['Ιαν', 'Φεβ', 'Μάρ', 'Απρ', 'Μάι', 'Ιούν', 'Ιούλ', 'Αύγ', 'Σεπ', 'Οκτ', 'Νοέ', 'Δεκ'], - [ - 'Ιανουάριος', 'Φεβρουάριος', 'Μάρτιος', 'Απρίλιος', 'Μάιος', 'Ιούνιος', 'Ιούλιος', - 'Αύγουστος', 'Σεπτέμβριος', 'Οκτώβριος', 'Νοέμβριος', 'Δεκέμβριος' - ] - ], - [['π.Χ.', 'μ.Χ.'], u, ['προ Χριστού', 'μετά Χριστόν']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} - {0}', u], - [',', '.', ';', '%', '+', '-', 'e', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Ευρώ', - {'GRD': ['Δρχ'], 'JPY': ['JP¥', '¥'], 'THB': ['฿']}, - 'ltr', - plural, - [ - [ - ['πρωί', 'μεσημ.', 'απόγ.', 'βράδυ'], u, ['το πρωί', 'το μεσημέρι', 'το απόγευμα', 'το βράδυ'] - ], - [['πρωί', 'μεσημ.', 'απόγ.', 'βράδυ'], u, ['πρωί', 'μεσημέρι', 'απόγευμα', 'βράδυ']], - [['04:00', '12:00'], ['12:00', '17:00'], ['17:00', '20:00'], ['20:00', '04:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/el.js b/packages/common/locales/global/el.js deleted file mode 100644 index 5ddd1bb5ec..0000000000 --- a/packages/common/locales/global/el.js +++ /dev/null @@ -1,70 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['el'] = [ - 'el', - [['πμ', 'μμ'], ['π.μ.', 'μ.μ.'], u], - u, - [ - ['Κ', 'Δ', 'Τ', 'Τ', 'Π', 'Π', 'Σ'], ['Κυρ', 'Δευ', 'Τρί', 'Τετ', 'Πέμ', 'Παρ', 'Σάβ'], - ['Κυριακή', 'Δευτέρα', 'Τρίτη', 'Τετάρτη', 'Πέμπτη', 'Παρασκευή', 'Σάββατο'], - ['Κυ', 'Δε', 'Τρ', 'Τε', 'Πέ', 'Πα', 'Σά'] - ], - u, - [ - ['Ι', 'Φ', 'Μ', 'Α', 'Μ', 'Ι', 'Ι', 'Α', 'Σ', 'Ο', 'Ν', 'Δ'], - ['Ιαν', 'Φεβ', 'Μαρ', 'Απρ', 'Μαΐ', 'Ιουν', 'Ιουλ', 'Αυγ', 'Σεπ', 'Οκτ', 'Νοε', 'Δεκ'], - [ - 'Ιανουαρίου', 'Φεβρουαρίου', 'Μαρτίου', 'Απριλίου', 'Μαΐου', 'Ιουνίου', 'Ιουλίου', - 'Αυγούστου', 'Σεπτεμβρίου', 'Οκτωβρίου', 'Νοεμβρίου', 'Δεκεμβρίου' - ] - ], - [ - ['Ι', 'Φ', 'Μ', 'Α', 'Μ', 'Ι', 'Ι', 'Α', 'Σ', 'Ο', 'Ν', 'Δ'], - ['Ιαν', 'Φεβ', 'Μάρ', 'Απρ', 'Μάι', 'Ιούν', 'Ιούλ', 'Αύγ', 'Σεπ', 'Οκτ', 'Νοέ', 'Δεκ'], - [ - 'Ιανουάριος', 'Φεβρουάριος', 'Μάρτιος', 'Απρίλιος', 'Μάιος', 'Ιούνιος', 'Ιούλιος', - 'Αύγουστος', 'Σεπτέμβριος', 'Οκτώβριος', 'Νοέμβριος', 'Δεκέμβριος' - ] - ], - [['π.Χ.', 'μ.Χ.'], u, ['προ Χριστού', 'μετά Χριστόν']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} - {0}', u], - [',', '.', ';', '%', '+', '-', 'e', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Ευρώ', - {'GRD': ['Δρχ'], 'JPY': ['JP¥', '¥'], 'THB': ['฿']}, - 'ltr', - plural, - [ - [ - ['πρωί', 'μεσημ.', 'απόγ.', 'βράδυ'], u, ['το πρωί', 'το μεσημέρι', 'το απόγευμα', 'το βράδυ'] - ], - [['πρωί', 'μεσημ.', 'απόγ.', 'βράδυ'], u, ['πρωί', 'μεσημέρι', 'απόγευμα', 'βράδυ']], - [['04:00', '12:00'], ['12:00', '17:00'], ['17:00', '20:00'], ['20:00', '04:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-001.js b/packages/common/locales/global/en-001.js deleted file mode 100644 index d18575d15d..0000000000 --- a/packages/common/locales/global/en-001.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-001'] = [ - 'en-001', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - u, - u, - u, - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-150.js b/packages/common/locales/global/en-150.js deleted file mode 100644 index 93367b480a..0000000000 --- a/packages/common/locales/global/en-150.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-150'] = [ - 'en-150', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - u, - u, - u, - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-AE.js b/packages/common/locales/global/en-AE.js deleted file mode 100644 index b633fd7d06..0000000000 --- a/packages/common/locales/global/en-AE.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-ae'] = [ - 'en-AE', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 6, - [5, 6], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'AED', - 'AED', - 'United Arab Emirates Dirham', - {}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-AG.js b/packages/common/locales/global/en-AG.js deleted file mode 100644 index cda575a586..0000000000 --- a/packages/common/locales/global/en-AG.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-ag'] = [ - 'en-AG', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XCD', - '$', - 'East Caribbean Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'XCD': ['$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-AI.js b/packages/common/locales/global/en-AI.js deleted file mode 100644 index b8282765fd..0000000000 --- a/packages/common/locales/global/en-AI.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-ai'] = [ - 'en-AI', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XCD', - '$', - 'East Caribbean Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'XCD': ['$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-AS.js b/packages/common/locales/global/en-AS.js deleted file mode 100644 index 689c033776..0000000000 --- a/packages/common/locales/global/en-AS.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-as'] = [ - 'en-AS', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'US Dollar', - {}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-AT.js b/packages/common/locales/global/en-AT.js deleted file mode 100644 index 7ea41cf1a3..0000000000 --- a/packages/common/locales/global/en-AT.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-at'] = [ - 'en-AT', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-AU.js b/packages/common/locales/global/en-AU.js deleted file mode 100644 index 370a3d9de0..0000000000 --- a/packages/common/locales/global/en-AU.js +++ /dev/null @@ -1,99 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-au'] = [ - 'en-AU', - [['am', 'pm'], u, u], - u, - [ - ['Su.', 'M.', 'Tu.', 'W.', 'Th.', 'F.', 'Sa.'], - ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mon', 'Tu', 'Wed', 'Th', 'Fri', 'Sat'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'e', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'AUD', - '$', - 'Australian Dollar', - { - 'AUD': ['$'], - 'BDT': [u, 'Tk'], - 'BOB': [u, '$b'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'CUP': [u, '₱'], - 'EGP': [u, '£'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'ISK': [u, 'Kr'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'PYG': [u, 'Gs'], - 'SCR': ['Rs'], - 'SEK': [u, 'Kr'], - 'TWD': [u, '$'], - 'USD': [u, '$'], - 'UYU': [u, '$U'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [], - 'XPF': ['CFP'] - }, - 'ltr', - plural, - [ - [ - ['midnight', 'midday', 'morning', 'afternoon', 'evening', 'night'], u, - ['midnight', 'midday', 'in the morning', 'in the afternoon', 'in the evening', 'at night'] - ], - [['midnight', 'midday', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-BB.js b/packages/common/locales/global/en-BB.js deleted file mode 100644 index 5db43b3482..0000000000 --- a/packages/common/locales/global/en-BB.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-bb'] = [ - 'en-BB', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'BBD', - '$', - 'Barbadian Dollar', - {'BBD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-BE.js b/packages/common/locales/global/en-BE.js deleted file mode 100644 index 8bdea3331c..0000000000 --- a/packages/common/locales/global/en-BE.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-be'] = [ - 'en-BE', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/yy', 'dd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-BI.js b/packages/common/locales/global/en-BI.js deleted file mode 100644 index 9668ee7e1b..0000000000 --- a/packages/common/locales/global/en-BI.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-bi'] = [ - 'en-BI', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'BIF', - 'FBu', - 'Burundian Franc', - {'BIF': ['FBu']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-BM.js b/packages/common/locales/global/en-BM.js deleted file mode 100644 index f2e880c023..0000000000 --- a/packages/common/locales/global/en-BM.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-bm'] = [ - 'en-BM', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'BMD', - '$', - 'Bermudan Dollar', - {'BMD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-BS.js b/packages/common/locales/global/en-BS.js deleted file mode 100644 index 0d773dfe52..0000000000 --- a/packages/common/locales/global/en-BS.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-bs'] = [ - 'en-BS', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'BSD', - '$', - 'Bahamian Dollar', - {'BSD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-BW.js b/packages/common/locales/global/en-BW.js deleted file mode 100644 index b36e02238b..0000000000 --- a/packages/common/locales/global/en-BW.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-bw'] = [ - 'en-BW', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/yy', 'dd MMM y', 'dd MMMM y', 'EEEE, dd MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'BWP', - 'P', - 'Botswanan Pula', - {'BWP': ['P'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-BZ.js b/packages/common/locales/global/en-BZ.js deleted file mode 100644 index ae7eeb5ac2..0000000000 --- a/packages/common/locales/global/en-BZ.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-bz'] = [ - 'en-BZ', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/yy', 'dd-MMM-y', 'dd MMMM y', 'EEEE, dd MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'BZD', - '$', - 'Belize Dollar', - {'BZD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-CA.js b/packages/common/locales/global/en-CA.js deleted file mode 100644 index 02a16243a2..0000000000 --- a/packages/common/locales/global/en-CA.js +++ /dev/null @@ -1,71 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-ca'] = [ - 'en-CA', - [['am', 'pm'], ['a.m.', 'p.m.'], u], - [['a.m.', 'pm'], ['a.m.', 'p.m.'], u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['y-MM-dd', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'e', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'CAD', - '$', - 'Canadian Dollar', - {'CAD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mid', 'n', 'mor', 'aft', 'eve', 'night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [ - ['mid', 'noon', 'mor', 'aft', 'eve', 'night'], - ['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u - ], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-CC.js b/packages/common/locales/global/en-CC.js deleted file mode 100644 index f966866439..0000000000 --- a/packages/common/locales/global/en-CC.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-cc'] = [ - 'en-CC', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'AUD', - '$', - 'Australian Dollar', - {'AUD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-CH.js b/packages/common/locales/global/en-CH.js deleted file mode 100644 index da9f5a2291..0000000000 --- a/packages/common/locales/global/en-CH.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-ch'] = [ - 'en-CH', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', '’', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤-#,##0.00', '#E0'], - 'CHF', - 'CHF', - 'Swiss Franc', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-CK.js b/packages/common/locales/global/en-CK.js deleted file mode 100644 index c973cf1d41..0000000000 --- a/packages/common/locales/global/en-CK.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-ck'] = [ - 'en-CK', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'NZD', - '$', - 'New Zealand Dollar', - {'JPY': ['JP¥', '¥'], 'NZD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-CM.js b/packages/common/locales/global/en-CM.js deleted file mode 100644 index 3b1692b512..0000000000 --- a/packages/common/locales/global/en-CM.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-cm'] = [ - 'en-CM', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XAF', - 'FCFA', - 'Central African CFA Franc', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-CX.js b/packages/common/locales/global/en-CX.js deleted file mode 100644 index fe5c860fce..0000000000 --- a/packages/common/locales/global/en-CX.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-cx'] = [ - 'en-CX', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'AUD', - '$', - 'Australian Dollar', - {'AUD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-CY.js b/packages/common/locales/global/en-CY.js deleted file mode 100644 index 1fd756b6f8..0000000000 --- a/packages/common/locales/global/en-CY.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-cy'] = [ - 'en-CY', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-DE.js b/packages/common/locales/global/en-DE.js deleted file mode 100644 index 6e3a29ad23..0000000000 --- a/packages/common/locales/global/en-DE.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-de'] = [ - 'en-DE', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-DG.js b/packages/common/locales/global/en-DG.js deleted file mode 100644 index d82126e939..0000000000 --- a/packages/common/locales/global/en-DG.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-dg'] = [ - 'en-DG', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - 'US$', - 'US Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-DK.js b/packages/common/locales/global/en-DK.js deleted file mode 100644 index f423aca90f..0000000000 --- a/packages/common/locales/global/en-DK.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-dk'] = [ - 'en-DK', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH.mm', 'HH.mm.ss', 'HH.mm.ss z', 'HH.mm.ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', '.'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'DKK', - 'kr.', - 'Danish Krone', - {'DKK': ['kr.', 'kr'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-DM.js b/packages/common/locales/global/en-DM.js deleted file mode 100644 index 5cba71a536..0000000000 --- a/packages/common/locales/global/en-DM.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-dm'] = [ - 'en-DM', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XCD', - '$', - 'East Caribbean Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'XCD': ['$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-ER.js b/packages/common/locales/global/en-ER.js deleted file mode 100644 index 8a255a2beb..0000000000 --- a/packages/common/locales/global/en-ER.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-er'] = [ - 'en-ER', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ERN', - 'Nfk', - 'Eritrean Nakfa', - {'ERN': ['Nfk'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-FI.js b/packages/common/locales/global/en-FI.js deleted file mode 100644 index bed5d19db8..0000000000 --- a/packages/common/locales/global/en-FI.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-fi'] = [ - 'en-FI', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['H.mm', 'H.mm.ss', 'H.mm.ss z', 'H.mm.ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', '.'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-FJ.js b/packages/common/locales/global/en-FJ.js deleted file mode 100644 index 6fe0772a5a..0000000000 --- a/packages/common/locales/global/en-FJ.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-fj'] = [ - 'en-FJ', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'FJD', - '$', - 'Fijian Dollar', - {'FJD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-FK.js b/packages/common/locales/global/en-FK.js deleted file mode 100644 index 148a43a314..0000000000 --- a/packages/common/locales/global/en-FK.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-fk'] = [ - 'en-FK', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'FKP', - '£', - 'Falkland Islands Pound', - {'FKP': ['£'], 'GBP': ['GB£', '£'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-FM.js b/packages/common/locales/global/en-FM.js deleted file mode 100644 index 771d4c6964..0000000000 --- a/packages/common/locales/global/en-FM.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-fm'] = [ - 'en-FM', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - 'US$', - 'US Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-GB.js b/packages/common/locales/global/en-GB.js deleted file mode 100644 index 7bd58291d2..0000000000 --- a/packages/common/locales/global/en-GB.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-gb'] = [ - 'en-GB', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GBP', - '£', - 'British Pound', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-GD.js b/packages/common/locales/global/en-GD.js deleted file mode 100644 index 4ac78bab48..0000000000 --- a/packages/common/locales/global/en-GD.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-gd'] = [ - 'en-GD', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XCD', - '$', - 'East Caribbean Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'XCD': ['$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-GG.js b/packages/common/locales/global/en-GG.js deleted file mode 100644 index 597024454f..0000000000 --- a/packages/common/locales/global/en-GG.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-gg'] = [ - 'en-GG', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GBP', - '£', - 'UK Pound', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-GH.js b/packages/common/locales/global/en-GH.js deleted file mode 100644 index 0b788195e9..0000000000 --- a/packages/common/locales/global/en-GH.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-gh'] = [ - 'en-GH', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GHS', - 'GH₵', - 'Ghanaian Cedi', - {'GHS': ['GH₵'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-GI.js b/packages/common/locales/global/en-GI.js deleted file mode 100644 index 49ba38c2a3..0000000000 --- a/packages/common/locales/global/en-GI.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-gi'] = [ - 'en-GI', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GIP', - '£', - 'Gibraltar Pound', - {'GBP': ['GB£', '£'], 'GIP': ['£'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-GM.js b/packages/common/locales/global/en-GM.js deleted file mode 100644 index 32a03b9d8c..0000000000 --- a/packages/common/locales/global/en-GM.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-gm'] = [ - 'en-GM', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GMD', - 'D', - 'Gambian Dalasi', - {'GMD': ['D'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-GU.js b/packages/common/locales/global/en-GU.js deleted file mode 100644 index 756f81d510..0000000000 --- a/packages/common/locales/global/en-GU.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-gu'] = [ - 'en-GU', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'US Dollar', - {}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-GY.js b/packages/common/locales/global/en-GY.js deleted file mode 100644 index cec18f71c8..0000000000 --- a/packages/common/locales/global/en-GY.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-gy'] = [ - 'en-GY', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GYD', - '$', - 'Guyanaese Dollar', - {'GYD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-HK.js b/packages/common/locales/global/en-HK.js deleted file mode 100644 index 36282f39e8..0000000000 --- a/packages/common/locales/global/en-HK.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-hk'] = [ - 'en-HK', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'HKD', - 'HK$', - 'Hong Kong Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-IE.js b/packages/common/locales/global/en-IE.js deleted file mode 100644 index d6df7574d2..0000000000 --- a/packages/common/locales/global/en-IE.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-ie'] = [ - 'en-IE', - [['a', 'p'], ['am', 'pm'], ['a.m.', 'p.m.']], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-IL.js b/packages/common/locales/global/en-IL.js deleted file mode 100644 index ebb2b79b8a..0000000000 --- a/packages/common/locales/global/en-IL.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-il'] = [ - 'en-IL', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [5, 6], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ILS', - '₪', - 'Israeli New Shekel', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-IM.js b/packages/common/locales/global/en-IM.js deleted file mode 100644 index 52adb802b4..0000000000 --- a/packages/common/locales/global/en-IM.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-im'] = [ - 'en-IM', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GBP', - '£', - 'UK Pound', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-IN.js b/packages/common/locales/global/en-IN.js deleted file mode 100644 index 562e4a2c35..0000000000 --- a/packages/common/locales/global/en-IN.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-in'] = [ - 'en-IN', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [0, 0], - ['dd/MM/yy', 'dd-MMM-y', 'd MMMM y', 'EEEE, d MMMM, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤#,##,##0.00', '#E0'], - 'INR', - '₹', - 'Indian Rupee', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-IO.js b/packages/common/locales/global/en-IO.js deleted file mode 100644 index c812618bb3..0000000000 --- a/packages/common/locales/global/en-IO.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-io'] = [ - 'en-IO', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - 'US$', - 'US Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-JE.js b/packages/common/locales/global/en-JE.js deleted file mode 100644 index 94336dbe0a..0000000000 --- a/packages/common/locales/global/en-JE.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-je'] = [ - 'en-JE', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GBP', - '£', - 'UK Pound', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-JM.js b/packages/common/locales/global/en-JM.js deleted file mode 100644 index 44fe556b5a..0000000000 --- a/packages/common/locales/global/en-JM.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-jm'] = [ - 'en-JM', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'JMD', - '$', - 'Jamaican Dollar', - {'JMD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-KE.js b/packages/common/locales/global/en-KE.js deleted file mode 100644 index 2c2459c909..0000000000 --- a/packages/common/locales/global/en-KE.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-ke'] = [ - 'en-KE', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Kenyan Shilling', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-KI.js b/packages/common/locales/global/en-KI.js deleted file mode 100644 index 039bfeb6ec..0000000000 --- a/packages/common/locales/global/en-KI.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-ki'] = [ - 'en-KI', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'AUD', - '$', - 'Australian Dollar', - {'AUD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-KN.js b/packages/common/locales/global/en-KN.js deleted file mode 100644 index 89e1f509b1..0000000000 --- a/packages/common/locales/global/en-KN.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-kn'] = [ - 'en-KN', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XCD', - '$', - 'East Caribbean Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'XCD': ['$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-KY.js b/packages/common/locales/global/en-KY.js deleted file mode 100644 index 602751b93d..0000000000 --- a/packages/common/locales/global/en-KY.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-ky'] = [ - 'en-KY', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KYD', - '$', - 'Cayman Islands Dollar', - {'JPY': ['JP¥', '¥'], 'KYD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-LC.js b/packages/common/locales/global/en-LC.js deleted file mode 100644 index 7edca24dd9..0000000000 --- a/packages/common/locales/global/en-LC.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-lc'] = [ - 'en-LC', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XCD', - '$', - 'East Caribbean Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'XCD': ['$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-LR.js b/packages/common/locales/global/en-LR.js deleted file mode 100644 index af9c8f9a93..0000000000 --- a/packages/common/locales/global/en-LR.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-lr'] = [ - 'en-LR', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'LRD', - '$', - 'Liberian Dollar', - {'JPY': ['JP¥', '¥'], 'LRD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-LS.js b/packages/common/locales/global/en-LS.js deleted file mode 100644 index 193703e32c..0000000000 --- a/packages/common/locales/global/en-LS.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-ls'] = [ - 'en-LS', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZAR', - 'R', - 'South African Rand', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'ZAR': ['R']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-MG.js b/packages/common/locales/global/en-MG.js deleted file mode 100644 index 026853642f..0000000000 --- a/packages/common/locales/global/en-MG.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-mg'] = [ - 'en-MG', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'MGA', - 'Ar', - 'Malagasy Ariary', - {'JPY': ['JP¥', '¥'], 'MGA': ['Ar'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-MH.js b/packages/common/locales/global/en-MH.js deleted file mode 100644 index 2a3d638bc6..0000000000 --- a/packages/common/locales/global/en-MH.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-mh'] = [ - 'en-MH', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'US Dollar', - {}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-MO.js b/packages/common/locales/global/en-MO.js deleted file mode 100644 index 7154698e2a..0000000000 --- a/packages/common/locales/global/en-MO.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-mo'] = [ - 'en-MO', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'MOP', - 'MOP$', - 'Macanese Pataca', - {'JPY': ['JP¥', '¥'], 'MOP': ['MOP$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-MP.js b/packages/common/locales/global/en-MP.js deleted file mode 100644 index 147df1bb5c..0000000000 --- a/packages/common/locales/global/en-MP.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-mp'] = [ - 'en-MP', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'US Dollar', - {}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-MS.js b/packages/common/locales/global/en-MS.js deleted file mode 100644 index 69dff52f55..0000000000 --- a/packages/common/locales/global/en-MS.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-ms'] = [ - 'en-MS', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XCD', - '$', - 'East Caribbean Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'XCD': ['$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-MT.js b/packages/common/locales/global/en-MT.js deleted file mode 100644 index 1fd26fb2a6..0000000000 --- a/packages/common/locales/global/en-MT.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-mt'] = [ - 'en-MT', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/y', 'dd MMM y', 'dd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - {'GBP': ['GB£', '£'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-MU.js b/packages/common/locales/global/en-MU.js deleted file mode 100644 index fdc0fd1683..0000000000 --- a/packages/common/locales/global/en-MU.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-mu'] = [ - 'en-MU', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'MUR', - 'Rs', - 'Mauritian Rupee', - {'JPY': ['JP¥', '¥'], 'MUR': ['Rs'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-MW.js b/packages/common/locales/global/en-MW.js deleted file mode 100644 index c8b1a552f0..0000000000 --- a/packages/common/locales/global/en-MW.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-mw'] = [ - 'en-MW', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'MWK', - 'MK', - 'Malawian Kwacha', - {'JPY': ['JP¥', '¥'], 'MWK': ['MK'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-MY.js b/packages/common/locales/global/en-MY.js deleted file mode 100644 index 83391bdb92..0000000000 --- a/packages/common/locales/global/en-MY.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-my'] = [ - 'en-MY', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'MYR', - 'RM', - 'Malaysian Ringgit', - {'JPY': ['JP¥', '¥'], 'MYR': ['RM'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-NA.js b/packages/common/locales/global/en-NA.js deleted file mode 100644 index 2a33e9f12f..0000000000 --- a/packages/common/locales/global/en-NA.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-na'] = [ - 'en-NA', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZAR', - 'ZAR', - 'South African Rand', - {'JPY': ['JP¥', '¥'], 'NAD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-NF.js b/packages/common/locales/global/en-NF.js deleted file mode 100644 index a590cc312a..0000000000 --- a/packages/common/locales/global/en-NF.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-nf'] = [ - 'en-NF', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'AUD', - '$', - 'Australian Dollar', - {'AUD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-NG.js b/packages/common/locales/global/en-NG.js deleted file mode 100644 index 4364bad3f4..0000000000 --- a/packages/common/locales/global/en-NG.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-ng'] = [ - 'en-NG', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'NGN', - '₦', - 'Nigerian Naira', - {'JPY': ['JP¥', '¥'], 'NGN': ['₦'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-NL.js b/packages/common/locales/global/en-NL.js deleted file mode 100644 index 1e33ce09c3..0000000000 --- a/packages/common/locales/global/en-NL.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-nl'] = [ - 'en-NL', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤ -#,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-NR.js b/packages/common/locales/global/en-NR.js deleted file mode 100644 index 6d27b0a215..0000000000 --- a/packages/common/locales/global/en-NR.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-nr'] = [ - 'en-NR', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'AUD', - '$', - 'Australian Dollar', - {'AUD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-NU.js b/packages/common/locales/global/en-NU.js deleted file mode 100644 index b6d566c25a..0000000000 --- a/packages/common/locales/global/en-NU.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-nu'] = [ - 'en-NU', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'NZD', - '$', - 'New Zealand Dollar', - {'JPY': ['JP¥', '¥'], 'NZD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-NZ.js b/packages/common/locales/global/en-NZ.js deleted file mode 100644 index 4b69ee2394..0000000000 --- a/packages/common/locales/global/en-NZ.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-nz'] = [ - 'en-NZ', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['d/MM/yy', 'd/MM/y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'NZD', - '$', - 'New Zealand Dollar', - {'JPY': ['JP¥', '¥'], 'NZD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-PG.js b/packages/common/locales/global/en-PG.js deleted file mode 100644 index fb56361965..0000000000 --- a/packages/common/locales/global/en-PG.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-pg'] = [ - 'en-PG', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'PGK', - 'K', - 'Papua New Guinean Kina', - {'JPY': ['JP¥', '¥'], 'PGK': ['K'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-PH.js b/packages/common/locales/global/en-PH.js deleted file mode 100644 index 3c7c5e83de..0000000000 --- a/packages/common/locales/global/en-PH.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-ph'] = [ - 'en-PH', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'PHP', - '₱', - 'Philippine Piso', - {'JPY': ['JP¥', '¥'], 'PHP': ['₱'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-PK.js b/packages/common/locales/global/en-PK.js deleted file mode 100644 index e318f122e9..0000000000 --- a/packages/common/locales/global/en-PK.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-pk'] = [ - 'en-PK', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/y', 'dd-MMM-y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'PKR', - 'Rs', - 'Pakistani Rupee', - {'JPY': ['JP¥', '¥'], 'PKR': ['Rs'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-PN.js b/packages/common/locales/global/en-PN.js deleted file mode 100644 index 7650234263..0000000000 --- a/packages/common/locales/global/en-PN.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-pn'] = [ - 'en-PN', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'NZD', - '$', - 'New Zealand Dollar', - {'JPY': ['JP¥', '¥'], 'NZD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-PR.js b/packages/common/locales/global/en-PR.js deleted file mode 100644 index d7cbf45bbb..0000000000 --- a/packages/common/locales/global/en-PR.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-pr'] = [ - 'en-PR', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'US Dollar', - {}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-PW.js b/packages/common/locales/global/en-PW.js deleted file mode 100644 index 313ed44535..0000000000 --- a/packages/common/locales/global/en-PW.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-pw'] = [ - 'en-PW', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - 'US$', - 'US Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-RW.js b/packages/common/locales/global/en-RW.js deleted file mode 100644 index 6a27dcb30d..0000000000 --- a/packages/common/locales/global/en-RW.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-rw'] = [ - 'en-RW', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'RWF', - 'RF', - 'Rwandan Franc', - {'JPY': ['JP¥', '¥'], 'RWF': ['RF'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-SB.js b/packages/common/locales/global/en-SB.js deleted file mode 100644 index 7cacb15bba..0000000000 --- a/packages/common/locales/global/en-SB.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-sb'] = [ - 'en-SB', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SBD', - '$', - 'Solomon Islands Dollar', - {'JPY': ['JP¥', '¥'], 'SBD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-SC.js b/packages/common/locales/global/en-SC.js deleted file mode 100644 index f7c9551503..0000000000 --- a/packages/common/locales/global/en-SC.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-sc'] = [ - 'en-SC', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SCR', - 'SR', - 'Seychellois Rupee', - {'JPY': ['JP¥', '¥'], 'SCR': ['SR'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-SD.js b/packages/common/locales/global/en-SD.js deleted file mode 100644 index 0e269bc38d..0000000000 --- a/packages/common/locales/global/en-SD.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-sd'] = [ - 'en-SD', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 6, - [5, 6], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SDG', - 'SDG', - 'Sudanese Pound', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-SE.js b/packages/common/locales/global/en-SE.js deleted file mode 100644 index 85843d300a..0000000000 --- a/packages/common/locales/global/en-SE.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-se'] = [ - 'en-SE', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['y-MM-dd', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - [',', ' ', ';', '%', '+', '-', '×10^', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'SEK', - 'kr', - 'Swedish Krona', - {'JPY': ['JP¥', '¥'], 'SEK': ['kr'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-SG.js b/packages/common/locales/global/en-SG.js deleted file mode 100644 index 96fdb2a9b0..0000000000 --- a/packages/common/locales/global/en-SG.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-sg'] = [ - 'en-SG', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SGD', - '$', - 'Singapore Dollar', - {'JPY': ['JP¥', '¥'], 'SGD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-SH.js b/packages/common/locales/global/en-SH.js deleted file mode 100644 index d2a85aa343..0000000000 --- a/packages/common/locales/global/en-SH.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-sh'] = [ - 'en-SH', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SHP', - '£', - 'St Helena Pound', - {'GBP': ['GB£', '£'], 'JPY': ['JP¥', '¥'], 'SHP': ['£'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-SI.js b/packages/common/locales/global/en-SI.js deleted file mode 100644 index 9d68b36c3e..0000000000 --- a/packages/common/locales/global/en-SI.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-si'] = [ - 'en-SI', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - [',', '.', ';', '%', '+', '-', 'e', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-SL.js b/packages/common/locales/global/en-SL.js deleted file mode 100644 index 3cddf56088..0000000000 --- a/packages/common/locales/global/en-SL.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-sl'] = [ - 'en-SL', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SLL', - 'Le', - 'Sierra Leonean Leone', - {'JPY': ['JP¥', '¥'], 'SLL': ['Le'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-SS.js b/packages/common/locales/global/en-SS.js deleted file mode 100644 index 8d28b543f5..0000000000 --- a/packages/common/locales/global/en-SS.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-ss'] = [ - 'en-SS', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SSP', - '£', - 'South Sudanese Pound', - {'GBP': ['GB£', '£'], 'JPY': ['JP¥', '¥'], 'SSP': ['£'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-SX.js b/packages/common/locales/global/en-SX.js deleted file mode 100644 index 7001caf140..0000000000 --- a/packages/common/locales/global/en-SX.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-sx'] = [ - 'en-SX', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ANG', - 'NAf.', - 'Netherlands Antillean Guilder', - {'ANG': ['NAf.'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-SZ.js b/packages/common/locales/global/en-SZ.js deleted file mode 100644 index 240ef7dfd3..0000000000 --- a/packages/common/locales/global/en-SZ.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-sz'] = [ - 'en-SZ', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SZL', - 'E', - 'Swazi Lilangeni', - {'JPY': ['JP¥', '¥'], 'SZL': ['E'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-TC.js b/packages/common/locales/global/en-TC.js deleted file mode 100644 index eba6e75403..0000000000 --- a/packages/common/locales/global/en-TC.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-tc'] = [ - 'en-TC', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - 'US$', - 'US Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-TK.js b/packages/common/locales/global/en-TK.js deleted file mode 100644 index dd8493d9de..0000000000 --- a/packages/common/locales/global/en-TK.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-tk'] = [ - 'en-TK', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'NZD', - '$', - 'New Zealand Dollar', - {'JPY': ['JP¥', '¥'], 'NZD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-TO.js b/packages/common/locales/global/en-TO.js deleted file mode 100644 index 5e4b7c742f..0000000000 --- a/packages/common/locales/global/en-TO.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-to'] = [ - 'en-TO', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'TOP', - 'T$', - 'Tongan Paʻanga', - {'JPY': ['JP¥', '¥'], 'TOP': ['T$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-TT.js b/packages/common/locales/global/en-TT.js deleted file mode 100644 index 4d3035750a..0000000000 --- a/packages/common/locales/global/en-TT.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-tt'] = [ - 'en-TT', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'TTD', - '$', - 'Trinidad & Tobago Dollar', - {'JPY': ['JP¥', '¥'], 'TTD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-TV.js b/packages/common/locales/global/en-TV.js deleted file mode 100644 index bf0aa7cc1c..0000000000 --- a/packages/common/locales/global/en-TV.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-tv'] = [ - 'en-TV', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'AUD', - '$', - 'Australian Dollar', - {'AUD': ['$'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-TZ.js b/packages/common/locales/global/en-TZ.js deleted file mode 100644 index 9fbf7b7ea5..0000000000 --- a/packages/common/locales/global/en-TZ.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-tz'] = [ - 'en-TZ', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'TZS', - 'TSh', - 'Tanzanian Shilling', - {'JPY': ['JP¥', '¥'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-UG.js b/packages/common/locales/global/en-UG.js deleted file mode 100644 index 47decde25c..0000000000 --- a/packages/common/locales/global/en-UG.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-ug'] = [ - 'en-UG', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [0, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'UGX', - 'USh', - 'Ugandan Shilling', - {'JPY': ['JP¥', '¥'], 'UGX': ['USh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-UM.js b/packages/common/locales/global/en-UM.js deleted file mode 100644 index b14f7a813d..0000000000 --- a/packages/common/locales/global/en-UM.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-um'] = [ - 'en-UM', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'US Dollar', - {}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-US-POSIX.js b/packages/common/locales/global/en-US-POSIX.js deleted file mode 100644 index cf0e40f7d8..0000000000 --- a/packages/common/locales/global/en-US-POSIX.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-us-posix'] = [ - 'en-US-POSIX', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '0/00', 'INF', 'NaN', ':'], - ['0.######', '0%', '¤ 0.00', '0.000000E+000'], - 'USD', - '$', - 'US Dollar', - {}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-VC.js b/packages/common/locales/global/en-VC.js deleted file mode 100644 index f1be293ba0..0000000000 --- a/packages/common/locales/global/en-VC.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-vc'] = [ - 'en-VC', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XCD', - '$', - 'East Caribbean Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'XCD': ['$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-VG.js b/packages/common/locales/global/en-VG.js deleted file mode 100644 index b79af9e572..0000000000 --- a/packages/common/locales/global/en-VG.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-vg'] = [ - 'en-VG', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - 'US$', - 'US Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-VI.js b/packages/common/locales/global/en-VI.js deleted file mode 100644 index c318d013f2..0000000000 --- a/packages/common/locales/global/en-VI.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-vi'] = [ - 'en-VI', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'US Dollar', - {}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-VU.js b/packages/common/locales/global/en-VU.js deleted file mode 100644 index ea4e8b15f9..0000000000 --- a/packages/common/locales/global/en-VU.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-vu'] = [ - 'en-VU', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'VUV', - 'VT', - 'Vanuatu Vatu', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'VUV': ['VT']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-WS.js b/packages/common/locales/global/en-WS.js deleted file mode 100644 index 285121e489..0000000000 --- a/packages/common/locales/global/en-WS.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-ws'] = [ - 'en-WS', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'WST', - 'WS$', - 'Samoan Tala', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'WST': ['WS$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-ZA.js b/packages/common/locales/global/en-ZA.js deleted file mode 100644 index cf886c3632..0000000000 --- a/packages/common/locales/global/en-ZA.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-za'] = [ - 'en-ZA', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['y/MM/dd', 'dd MMM y', 'dd MMMM y', 'EEEE, dd MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZAR', - 'R', - 'South African Rand', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'ZAR': ['R']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-ZM.js b/packages/common/locales/global/en-ZM.js deleted file mode 100644 index ab0382e9c9..0000000000 --- a/packages/common/locales/global/en-ZM.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-zm'] = [ - 'en-ZM', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZMW', - 'K', - 'Zambian Kwacha', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'ZMW': ['K', 'ZK']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en-ZW.js b/packages/common/locales/global/en-ZW.js deleted file mode 100644 index 176703d3b2..0000000000 --- a/packages/common/locales/global/en-ZW.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en-zw'] = [ - 'en-ZW', - [['a', 'p'], ['am', 'pm'], u], - [['am', 'pm'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['d/M/y', 'dd MMM,y', 'dd MMMM y', 'EEEE, dd MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - 'US$', - 'US Dollar', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/en.js b/packages/common/locales/global/en.js deleted file mode 100644 index 4753e8cbf4..0000000000 --- a/packages/common/locales/global/en.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['en'] = [ - 'en', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'US Dollar', - {}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/eo.js b/packages/common/locales/global/eo.js deleted file mode 100644 index 6e5fa70f6f..0000000000 --- a/packages/common/locales/global/eo.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['eo'] = [ - 'eo', - [['atm', 'ptm'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['di', 'lu', 'ma', 'me', 'ĵa', 've', 'sa'], - ['dimanĉo', 'lundo', 'mardo', 'merkredo', 'ĵaŭdo', 'vendredo', 'sabato'], - ['di', 'lu', 'ma', 'me', 'ĵa', 've', 'sa'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aŭg', 'sep', 'okt', 'nov', 'dec'], - [ - 'januaro', 'februaro', 'marto', 'aprilo', 'majo', 'junio', 'julio', 'aŭgusto', 'septembro', - 'oktobro', 'novembro', 'decembro' - ] - ], - u, - [['aK', 'pK'], u, u], - 1, - [6, 0], - ['yy-MM-dd', 'y-MMM-dd', 'y-MMMM-dd', 'EEEE, d-\'a\' \'de\' MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'H-\'a\' \'horo\' \'kaj\' m:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - u, - u, - u, - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-419.js b/packages/common/locales/global/es-419.js deleted file mode 100644 index 54119d841f..0000000000 --- a/packages/common/locales/global/es-419.js +++ /dev/null @@ -1,93 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-419'] = [ - 'es-419', - [['a. m.', 'p. m.'], ['a.m.', 'p.m.'], u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'EUR', - 'EUR', - 'euro', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-AR.js b/packages/common/locales/global/es-AR.js deleted file mode 100644 index 729f6fcc5d..0000000000 --- a/packages/common/locales/global/es-AR.js +++ /dev/null @@ -1,96 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-ar'] = [ - 'es-AR', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'ARS', - '$', - 'peso argentino', - { - 'ARS': ['$'], - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [ - ['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], - ['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u - ], - [ - ['m.', 'madrugada', 'mañana', 'tarde', 'noche'], - ['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u - ], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-BO.js b/packages/common/locales/global/es-BO.js deleted file mode 100644 index b845d9ca6f..0000000000 --- a/packages/common/locales/global/es-BO.js +++ /dev/null @@ -1,94 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-bo'] = [ - 'es-BO', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM \'de\' y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'BOB', - 'Bs', - 'boliviano', - { - 'AUD': [u, '$'], - 'BOB': ['Bs'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-BR.js b/packages/common/locales/global/es-BR.js deleted file mode 100644 index 2c612f8ebf..0000000000 --- a/packages/common/locales/global/es-BR.js +++ /dev/null @@ -1,92 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-br'] = [ - 'es-BR', - [['a. m.', 'p. m.'], ['a.m.', 'p.m.'], u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'BRL', - 'R$', - 'real brasileño', - { - 'AUD': [u, '$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-BZ.js b/packages/common/locales/global/es-BZ.js deleted file mode 100644 index 90dee103e0..0000000000 --- a/packages/common/locales/global/es-BZ.js +++ /dev/null @@ -1,94 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-bz'] = [ - 'es-BZ', - [['a. m.', 'p. m.'], ['a.m.', 'p.m.'], u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'BZD', - '$', - 'dólar beliceño', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'BZD': ['$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-CL.js b/packages/common/locales/global/es-CL.js deleted file mode 100644 index 92b1f6156e..0000000000 --- a/packages/common/locales/global/es-CL.js +++ /dev/null @@ -1,104 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-cl'] = [ - 'es-CL', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['do', 'lu', 'ma', 'mi', 'ju', 'vi', 'sá'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sept.', 'oct.', 'nov.', - 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['dd-MM-yy', 'dd-MM-y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00;¤-#,##0.00', '#E0'], - 'CLP', - '$', - 'Peso chileno', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CLP': ['$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-CO.js b/packages/common/locales/global/es-CO.js deleted file mode 100644 index e8ea625a46..0000000000 --- a/packages/common/locales/global/es-CO.js +++ /dev/null @@ -1,111 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-co'] = [ - 'es-CO', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sept.', 'oct.', 'nov.', - 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/MM/yy', 'd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'a\' \'las\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'COP', - '$', - 'peso colombiano', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'COP': ['$'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [ - ['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], - ['m.', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], - ['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'] - ], - [ - ['m.', 'madrugada', 'mañana', 'tarde', 'noche'], u, - ['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'] - ], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-CR.js b/packages/common/locales/global/es-CR.js deleted file mode 100644 index 5e4e0e7c76..0000000000 --- a/packages/common/locales/global/es-CR.js +++ /dev/null @@ -1,94 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-cr'] = [ - 'es-CR', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'CRC', - '₡', - 'colón costarricense', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'CRC': ['₡'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-CU.js b/packages/common/locales/global/es-CU.js deleted file mode 100644 index 16343b3244..0000000000 --- a/packages/common/locales/global/es-CU.js +++ /dev/null @@ -1,94 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-cu'] = [ - 'es-CU', - [['a. m.', 'p. m.'], ['a.m.', 'p.m.'], u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'CUP', - '$', - 'peso cubano', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'CUP': ['$'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-DO.js b/packages/common/locales/global/es-DO.js deleted file mode 100644 index 3f8b8f326d..0000000000 --- a/packages/common/locales/global/es-DO.js +++ /dev/null @@ -1,96 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-do'] = [ - 'es-DO', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'DOP', - 'RD$', - 'peso dominicano', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'DOP': ['RD$', '$'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [ - ['mediodía', 'día', 'mañana', 'tarde', 'noche'], - ['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u - ], - [ - ['m.', 'madrugada', 'mañana', 'tarde', 'noche'], - ['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u - ], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-EA.js b/packages/common/locales/global/es-EA.js deleted file mode 100644 index 71511065cd..0000000000 --- a/packages/common/locales/global/es-EA.js +++ /dev/null @@ -1,85 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-ea'] = [ - 'es-EA', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'X', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sept.', 'oct.', 'nov.', - 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss (zzzz)'], - ['{1} {0}', u, '{1}, {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CNY': [u, '¥'], - 'EGP': [], - 'ESP': ['₧'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-EC.js b/packages/common/locales/global/es-EC.js deleted file mode 100644 index a744d32ed0..0000000000 --- a/packages/common/locales/global/es-EC.js +++ /dev/null @@ -1,92 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-ec'] = [ - 'es-EC', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00;¤-#,##0.00', '#E0'], - 'USD', - '$', - 'dólar estadounidense', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-GQ.js b/packages/common/locales/global/es-GQ.js deleted file mode 100644 index 15a3e96e4c..0000000000 --- a/packages/common/locales/global/es-GQ.js +++ /dev/null @@ -1,84 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-gq'] = [ - 'es-GQ', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'X', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sept.', 'oct.', 'nov.', - 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss (zzzz)'], - ['{1} {0}', u, '{1}, {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'XAF', - 'FCFA', - 'franco CFA de África Central', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CNY': [u, '¥'], - 'EGP': [], - 'ESP': ['₧'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-GT.js b/packages/common/locales/global/es-GT.js deleted file mode 100644 index 5a1f51d73d..0000000000 --- a/packages/common/locales/global/es-GT.js +++ /dev/null @@ -1,94 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-gt'] = [ - 'es-GT', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/MM/yy', 'd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'GTQ', - 'Q', - 'quetzal', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'GTQ': ['Q'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-HN.js b/packages/common/locales/global/es-HN.js deleted file mode 100644 index 43e475abfa..0000000000 --- a/packages/common/locales/global/es-HN.js +++ /dev/null @@ -1,94 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-hn'] = [ - 'es-HN', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'dd \'de\' MMMM \'de\' y', 'EEEE dd \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'HNL', - 'L', - 'lempira hondureño', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'HNL': ['L'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-IC.js b/packages/common/locales/global/es-IC.js deleted file mode 100644 index ddd55552ac..0000000000 --- a/packages/common/locales/global/es-IC.js +++ /dev/null @@ -1,85 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-ic'] = [ - 'es-IC', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'X', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sept.', 'oct.', 'nov.', - 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss (zzzz)'], - ['{1} {0}', u, '{1}, {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CNY': [u, '¥'], - 'EGP': [], - 'ESP': ['₧'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-MX.js b/packages/common/locales/global/es-MX.js deleted file mode 100644 index cdf3c4f90d..0000000000 --- a/packages/common/locales/global/es-MX.js +++ /dev/null @@ -1,90 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-mx'] = [ - 'es-MX', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['dd/MM/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'MXN', - '$', - 'peso mexicano', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'BYN': [u, 'p.'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MRO': ['MRU'], - 'MRU': ['UM'], - 'MXN': ['$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [ - ['del mediodía', 'de la madrugada', 'mañana', 'de la tarde', 'de la noche'], - ['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u - ], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-NI.js b/packages/common/locales/global/es-NI.js deleted file mode 100644 index 55bd3665fa..0000000000 --- a/packages/common/locales/global/es-NI.js +++ /dev/null @@ -1,94 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-ni'] = [ - 'es-NI', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'NIO', - 'C$', - 'córdoba nicaragüense', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NIO': ['C$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-PA.js b/packages/common/locales/global/es-PA.js deleted file mode 100644 index c063550dcb..0000000000 --- a/packages/common/locales/global/es-PA.js +++ /dev/null @@ -1,97 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-pa'] = [ - 'es-PA', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['MM/dd/yy', 'MM/dd/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'PAB', - 'B/.', - 'balboa panameño', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'PAB': ['B/.'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [ - ['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], - ['mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u - ], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-PE.js b/packages/common/locales/global/es-PE.js deleted file mode 100644 index 9765cffc8c..0000000000 --- a/packages/common/locales/global/es-PE.js +++ /dev/null @@ -1,103 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-pe'] = [ - 'es-PE', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'set.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'setiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'Ene.', 'Feb.', 'Mar.', 'Abr.', 'May.', 'Jun.', 'Jul.', 'Ago.', 'Set.', 'Oct.', 'Nov.', 'Dic.' - ], - [ - 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Setiembre', - 'Octubre', 'Noviembre', 'Diciembre' - ] - ], - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/MM/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'PEN', - 'S/', - 'sol peruano', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'PEN': ['S/'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-PH.js b/packages/common/locales/global/es-PH.js deleted file mode 100644 index 691ea66424..0000000000 --- a/packages/common/locales/global/es-PH.js +++ /dev/null @@ -1,86 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-ph'] = [ - 'es-PH', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'X', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sept.', 'oct.', 'nov.', - 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, '{1}, {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'PHP', - '₱', - 'peso filipino', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CNY': [u, '¥'], - 'EGP': [], - 'ESP': ['₧'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'PHP': ['₱'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-PR.js b/packages/common/locales/global/es-PR.js deleted file mode 100644 index 0fdbb9a7d7..0000000000 --- a/packages/common/locales/global/es-PR.js +++ /dev/null @@ -1,92 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-pr'] = [ - 'es-PR', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['MM/dd/yy', 'MM/dd/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'dólar estadounidense', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-PY.js b/packages/common/locales/global/es-PY.js deleted file mode 100644 index 9c5ea31c54..0000000000 --- a/packages/common/locales/global/es-PY.js +++ /dev/null @@ -1,98 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-py'] = [ - 'es-PY', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['do', 'lu', 'ma', 'mi', 'ju', 'vi', 'sa'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sept.', 'oct.', 'nov.', - 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00;¤ -#,##0.00', '#E0'], - 'PYG', - 'Gs.', - 'guaraní paraguayo', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'PYG': ['Gs.', '₲'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [ - ['m.', 'madrugada', 'mañana', 'tarde', 'noche'], - ['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u - ], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-SV.js b/packages/common/locales/global/es-SV.js deleted file mode 100644 index 6bb9603c76..0000000000 --- a/packages/common/locales/global/es-SV.js +++ /dev/null @@ -1,92 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-sv'] = [ - 'es-SV', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'dólar estadounidense', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-US.js b/packages/common/locales/global/es-US.js deleted file mode 100644 index 0555d44de1..0000000000 --- a/packages/common/locales/global/es-US.js +++ /dev/null @@ -1,86 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-us'] = [ - 'es-US', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/M/y', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'dólar estadounidense', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'BYN': [u, 'p.'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [ - ['del mediodía', 'de la madrugada', 'mañana', 'de la tarde', 'de la noche'], - ['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u - ], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-UY.js b/packages/common/locales/global/es-UY.js deleted file mode 100644 index d5c1ae7461..0000000000 --- a/packages/common/locales/global/es-UY.js +++ /dev/null @@ -1,104 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-uy'] = [ - 'es-UY', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'set.', 'oct.', 'nov.', 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'setiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'Ene.', 'Feb.', 'Mar.', 'Abr.', 'May.', 'Jun.', 'Jul.', 'Ago.', 'Set.', 'Oct.', 'Nov.', 'Dic.' - ], - [ - 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Setiembre', - 'Octubre', 'Noviembre', 'Diciembre' - ] - ], - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'UYU', - '$', - 'peso uruguayo', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'UYU': ['$'], - 'UYW': ['UP'], - 'VEF': [u, 'BsF'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es-VE.js b/packages/common/locales/global/es-VE.js deleted file mode 100644 index acb47ebd75..0000000000 --- a/packages/common/locales/global/es-VE.js +++ /dev/null @@ -1,98 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es-ve'] = [ - 'es-VE', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'] - ], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'] - ], - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sept.', 'oct.', 'nov.', - 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, '{1} \'a\' \'las\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00;¤-#,##0.00', '#E0'], - 'VES', - 'Bs.S', - 'bolívar soberano', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'ESP': ['₧'], - 'EUR': [u, '€'], - 'FKP': [u, 'FK£'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SSP': [u, 'SD£'], - 'SYP': [u, 'S£'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VEF': ['Bs.'], - 'VES': ['Bs.S'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [ - ['m.', 'madrugada', 'mañana', 'tarde', 'noche'], - ['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u - ], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/es.js b/packages/common/locales/global/es.js deleted file mode 100644 index 3e69482f76..0000000000 --- a/packages/common/locales/global/es.js +++ /dev/null @@ -1,85 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['es'] = [ - 'es', - [['a. m.', 'p. m.'], u, u], - u, - [ - ['D', 'L', 'M', 'X', 'J', 'V', 'S'], ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - ['DO', 'LU', 'MA', 'MI', 'JU', 'VI', 'SA'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sept.', 'oct.', 'nov.', - 'dic.' - ], - [ - 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', - 'octubre', 'noviembre', 'diciembre' - ] - ], - u, - [['a. C.', 'd. C.'], u, ['antes de Cristo', 'después de Cristo']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss (zzzz)'], - ['{1} {0}', u, '{1}, {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CNY': [u, '¥'], - 'EGP': [], - 'ESP': ['₧'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [] - }, - 'ltr', - plural, - [ - [['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'], u, u], - [['mediodía', 'madrugada', 'mañana', 'tarde', 'noche'], u, u], - ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/et.js b/packages/common/locales/global/et.js deleted file mode 100644 index 2f09c1f41c..0000000000 --- a/packages/common/locales/global/et.js +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['et'] = [ - 'et', - [['AM', 'PM'], u, u], - u, - [ - ['P', 'E', 'T', 'K', 'N', 'R', 'L'], u, - ['pühapäev', 'esmaspäev', 'teisipäev', 'kolmapäev', 'neljapäev', 'reede', 'laupäev'], - ['P', 'E', 'T', 'K', 'N', 'R', 'L'] - ], - u, - [ - ['J', 'V', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jaan', 'veebr', 'märts', 'apr', 'mai', 'juuni', 'juuli', 'aug', 'sept', 'okt', 'nov', 'dets'], - [ - 'jaanuar', 'veebruar', 'märts', 'aprill', 'mai', 'juuni', 'juuli', 'august', 'september', - 'oktoober', 'november', 'detsember' - ] - ], - u, - [['eKr', 'pKr'], u, ['enne Kristust', 'pärast Kristust']], - 1, - [6, 0], - ['dd.MM.yy', 'd. MMM y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '−', '×10^', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - {'AUD': ['AU$', '$'], 'EEK': ['kr'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural, - [ - [['keskööl', 'keskpäeval', 'hommikul', 'pärastlõunal', 'õhtul', 'öösel'], u, u], - [['kesköö', 'keskpäev', 'hommik', 'pärastlõuna', 'õhtu', 'öö'], u, u], - [ - '00:00', '12:00', ['05:00', '12:00'], ['12:00', '18:00'], ['18:00', '23:00'], - ['23:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/eu.js b/packages/common/locales/global/eu.js deleted file mode 100644 index 379e13a4e2..0000000000 --- a/packages/common/locales/global/eu.js +++ /dev/null @@ -1,85 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['eu'] = [ - 'eu', - [['g', 'a'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['I', 'A', 'A', 'A', 'O', 'O', 'L'], ['ig.', 'al.', 'ar.', 'az.', 'og.', 'or.', 'lr.'], - ['igandea', 'astelehena', 'asteartea', 'asteazkena', 'osteguna', 'ostirala', 'larunbata'], - ['ig.', 'al.', 'ar.', 'az.', 'og.', 'or.', 'lr.'] - ], - u, - [ - ['U', 'O', 'M', 'A', 'M', 'E', 'U', 'A', 'I', 'U', 'A', 'A'], - [ - 'urt.', 'ots.', 'mar.', 'api.', 'mai.', 'eka.', 'uzt.', 'abu.', 'ira.', 'urr.', 'aza.', 'abe.' - ], - [ - 'urtarrilak', 'otsailak', 'martxoak', 'apirilak', 'maiatzak', 'ekainak', 'uztailak', - 'abuztuak', 'irailak', 'urriak', 'azaroak', 'abenduak' - ] - ], - [ - ['U', 'O', 'M', 'A', 'M', 'E', 'U', 'A', 'I', 'U', 'A', 'A'], - [ - 'urt.', 'ots.', 'mar.', 'api.', 'mai.', 'eka.', 'uzt.', 'abu.', 'ira.', 'urr.', 'aza.', 'abe.' - ], - [ - 'urtarrila', 'otsaila', 'martxoa', 'apirila', 'maiatza', 'ekaina', 'uztaila', 'abuztua', - 'iraila', 'urria', 'azaroa', 'abendua' - ] - ], - [['K.a.', 'K.o.'], u, ['K.a.', 'Kristo ondoren']], - 1, - [6, 0], - [ - 'yy/M/d', 'y(\'e\')\'ko\' MMM d(\'a\')', 'y(\'e\')\'ko\' MMMM\'ren\' d(\'a\')', - 'y(\'e\')\'ko\' MMMM\'ren\' d(\'a\'), EEEE' - ], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss (z)', 'HH:mm:ss (zzzz)'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '% #,##0', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euroa', - {'ESP': ['₧'], 'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['gauerdia', 'goizald.', 'goizeko', 'eguerd.', 'arrats.', 'iluntz.', 'gaueko'], u, - ['gauerdia', 'goizaldeko', 'goizeko', 'eguerdiko', 'arratsaldeko', 'iluntzeko', 'gaueko'] - ], - [ - ['gauerdia', 'goizald.', 'goiza', 'eguerd.', 'arrats.', 'iluntz.', 'gaua'], - ['gauerdia', 'goiz.', 'goiza', 'eguerd.', 'arrats.', 'iluntz.', 'gaua'], - ['gauerdia', 'goizaldea', 'goiza', 'eguerdia', 'arratsaldea', 'iluntzea', 'gaua'] - ], - [ - '00:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '14:00'], ['14:00', '19:00'], - ['19:00', '21:00'], ['21:00', '24:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ewo.js b/packages/common/locales/global/ewo.js deleted file mode 100644 index 3360a26f53..0000000000 --- a/packages/common/locales/global/ewo.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['ewo'] = [ - 'ewo', - [['kíkíríg', 'ngəgógəle'], u, u], - u, - [ - ['s', 'm', 's', 's', 's', 'f', 's'], ['sɔ́n', 'mɔ́n', 'smb', 'sml', 'smn', 'fúl', 'sér'], - [ - 'sɔ́ndɔ', 'mɔ́ndi', 'sɔ́ndɔ məlú mə́bɛ̌', 'sɔ́ndɔ məlú mə́lɛ́', 'sɔ́ndɔ məlú mə́nyi', 'fúladé', 'séradé' - ], - ['sɔ́n', 'mɔ́n', 'smb', 'sml', 'smn', 'fúl', 'sér'] - ], - u, - [ - ['o', 'b', 'l', 'n', 't', 's', 'z', 'm', 'e', 'a', 'd', 'b'], - ['ngo', 'ngb', 'ngl', 'ngn', 'ngt', 'ngs', 'ngz', 'ngm', 'nge', 'nga', 'ngad', 'ngab'], - [ - 'ngɔn osú', 'ngɔn bɛ̌', 'ngɔn lála', 'ngɔn nyina', 'ngɔn tána', 'ngɔn saməna', 'ngɔn zamgbála', - 'ngɔn mwom', 'ngɔn ebulú', 'ngɔn awóm', 'ngɔn awóm ai dziá', 'ngɔn awóm ai bɛ̌' - ] - ], - u, - [['oyk', 'ayk'], u, ['osúsúa Yésus kiri', 'ámvus Yésus Kirís']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'Fəláŋ CFA (BEAC)', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fa-AF.js b/packages/common/locales/global/fa-AF.js deleted file mode 100644 index 312dce4431..0000000000 --- a/packages/common/locales/global/fa-AF.js +++ /dev/null @@ -1,90 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} -global.ng.common.locales['fa-af'] = [ - 'fa-AF', - [['ق', 'ب'], ['ق.ظ.', 'ب.ظ.'], ['قبل\u200cازظهر', 'بعدازظهر']], - u, - [ - ['ی', 'د', 'س', 'چ', 'پ', 'ج', 'ش'], - ['یکشنبه', 'دوشنبه', 'سه\u200cشنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'], u, - ['۱ش', '۲ش', '۳ش', '۴ش', '۵ش', 'ج', 'ش'] - ], - u, - [ - ['ج', 'ف', 'م', 'ا', 'م', 'ج', 'ج', 'ا', 'س', 'ا', 'ن', 'د'], - [ - 'جنو', 'فبروری', 'مارچ', 'اپریل', 'می', 'جون', 'جول', 'اگست', 'سپتمبر', 'اکتوبر', 'نومبر', - 'دسم' - ], - [ - 'جنوری', 'فبروری', 'مارچ', 'اپریل', 'می', 'جون', 'جولای', 'اگست', 'سپتمبر', 'اکتوبر', 'نومبر', - 'دسمبر' - ] - ], - [ - ['ج', 'ف', 'م', 'ا', 'م', 'ج', 'ج', 'ا', 'س', 'ا', 'ن', 'د'], - [ - 'جنوری', 'فبروری', 'مارچ', 'اپریل', 'می', 'جون', 'جولای', 'اگست', 'سپتمبر', 'اکتوبر', 'نومبر', - 'دسمبر' - ], - u - ], - [['ق', 'م'], ['ق.م.', 'م.'], ['قبل از میلاد', 'میلادی']], - 6, - [4, 5], - ['y/M/d', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss (z)', 'H:mm:ss (zzzz)'], - ['{1}،\u200f {0}', u, '{1}، ساعت {0}', u], - ['.', ',', ';', '%', '\u200e+', '\u200e−', 'E', '×', '‰', '∞', 'ناعدد', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'AFN', - '؋', - 'افغانی افغانستان', - { - 'AFN': ['؋'], - 'CAD': ['$CA', '$'], - 'CNY': ['¥CN', '¥'], - 'HKD': ['$HK', '$'], - 'IRR': ['ریال'], - 'MXN': ['$MX', '$'], - 'NZD': ['$NZ', '$'], - 'THB': ['฿'], - 'XCD': ['$EC', '$'] - }, - 'rtl', - plural, - [ - [ - ['ب', 'ص', 'ظ', 'ع', 'ش', 'ن'], ['بامداد', 'صبح', 'ظهر', 'بعدازچاشت', 'شب', 'نیمه\u200cشب'], u - ], - [ - ['ب', 'ص', 'بعد از چاشت', 'ع', 'ش', 'ن'], - ['بامداد', 'صبح', 'ظهر', 'بعدازچاشت', 'شب', 'نیمه\u200cشب'], u - ], - [ - ['01:00', '04:00'], ['04:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '01:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fa.js b/packages/common/locales/global/fa.js deleted file mode 100644 index 1671e5aa41..0000000000 --- a/packages/common/locales/global/fa.js +++ /dev/null @@ -1,81 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} -global.ng.common.locales['fa'] = [ - 'fa', - [['ق', 'ب'], ['ق.ظ.', 'ب.ظ.'], ['قبل\u200cازظهر', 'بعدازظهر']], - u, - [ - ['ی', 'د', 'س', 'چ', 'پ', 'ج', 'ش'], - ['یکشنبه', 'دوشنبه', 'سه\u200cشنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'], u, - ['۱ش', '۲ش', '۳ش', '۴ش', '۵ش', 'ج', 'ش'] - ], - u, - [ - ['ژ', 'ف', 'م', 'آ', 'م', 'ژ', 'ژ', 'ا', 'س', 'ا', 'ن', 'د'], - [ - 'ژانویهٔ', 'فوریهٔ', 'مارس', 'آوریل', 'مهٔ', 'ژوئن', 'ژوئیهٔ', 'اوت', 'سپتامبر', 'اکتبر', - 'نوامبر', 'دسامبر' - ], - u - ], - [ - ['ژ', 'ف', 'م', 'آ', 'م', 'ژ', 'ژ', 'ا', 'س', 'ا', 'ن', 'د'], - [ - 'ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن', 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', - 'نوامبر', 'دسامبر' - ], - u - ], - [['ق', 'م'], ['ق.م.', 'م.'], ['قبل از میلاد', 'میلادی']], - 6, - [5, 5], - ['y/M/d', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss (z)', 'H:mm:ss (zzzz)'], - ['{1}،\u200f {0}', u, '{1}، ساعت {0}', u], - ['.', ',', ';', '%', '\u200e+', '\u200e−', 'E', '×', '‰', '∞', 'ناعدد', ':'], - ['#,##0.###', '#,##0%', '\u200e¤ #,##0.00', '#E0'], - 'IRR', - 'ریال', - 'ریال ایران', - { - 'AFN': ['؋'], - 'CAD': ['$CA', '$'], - 'CNY': ['¥CN', '¥'], - 'HKD': ['$HK', '$'], - 'IRR': ['ریال'], - 'MXN': ['$MX', '$'], - 'NZD': ['$NZ', '$'], - 'THB': ['฿'], - 'XCD': ['$EC', '$'] - }, - 'rtl', - plural, - [ - [['ب', 'ص', 'ظ', 'ع', 'ش', 'ن'], ['بامداد', 'صبح', 'ظهر', 'عصر', 'شب', 'نیمه\u200cشب'], u], u, - [ - ['01:00', '04:00'], ['04:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '01:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ff-CM.js b/packages/common/locales/global/ff-CM.js index a286b74c08..1bb38f0fa8 100644 --- a/packages/common/locales/global/ff-CM.js +++ b/packages/common/locales/global/ff-CM.js @@ -6,8 +6,12 @@ * found in the LICENSE file at https://angular.io/license */ -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js +// **Note**: Locale files are generated through Bazel and never part of the sources. This is an +// exception for backwards compatibility. With the Gulp setup we never deleted old locale files +// when updating CLDR, so older locale files which have been removed, or renamed in the CLDR +// data remained in the repository. We keep these files checked-in until the next major to avoid +// potential breaking changes. It's worth noting that the locale data for such files is outdated +// anyway. e.g. the data is missing the directionality, throwing off the indices. (function(global) { global.ng = global.ng || {}; diff --git a/packages/common/locales/global/ff-GN.js b/packages/common/locales/global/ff-GN.js index bbe69aaa05..926b6dca7a 100644 --- a/packages/common/locales/global/ff-GN.js +++ b/packages/common/locales/global/ff-GN.js @@ -6,8 +6,12 @@ * found in the LICENSE file at https://angular.io/license */ -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js +// **Note**: Locale files are generated through Bazel and never part of the sources. This is an +// exception for backwards compatibility. With the Gulp setup we never deleted old locale files +// when updating CLDR, so older locale files which have been removed, or renamed in the CLDR +// data remained in the repository. We keep these files checked-in until the next major to avoid +// potential breaking changes. It's worth noting that the locale data for such files is outdated +// anyway. e.g. the data is missing the directionality, throwing off the indices. (function(global) { global.ng = global.ng || {}; diff --git a/packages/common/locales/global/ff-Latn-BF.js b/packages/common/locales/global/ff-Latn-BF.js deleted file mode 100644 index b605a697f3..0000000000 --- a/packages/common/locales/global/ff-Latn-BF.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['ff-latn-bf'] = [ - 'ff-Latn-BF', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'Mbuuɗu Seefaa BCEAO', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ff-Latn-CM.js b/packages/common/locales/global/ff-Latn-CM.js deleted file mode 100644 index 4b55e71656..0000000000 --- a/packages/common/locales/global/ff-Latn-CM.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['ff-latn-cm'] = [ - 'ff-Latn-CM', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'Mbuuɗi Seefaa BEAC', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ff-Latn-GH.js b/packages/common/locales/global/ff-Latn-GH.js deleted file mode 100644 index 5732fa1cc4..0000000000 --- a/packages/common/locales/global/ff-Latn-GH.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['ff-latn-gh'] = [ - 'ff-Latn-GH', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'GHS', - 'GH₵', - 'GHS', - {'GHS': ['GH₵'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ff-Latn-GM.js b/packages/common/locales/global/ff-Latn-GM.js deleted file mode 100644 index f05003089b..0000000000 --- a/packages/common/locales/global/ff-Latn-GM.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['ff-latn-gm'] = [ - 'ff-Latn-GM', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'GMD', - 'D', - 'Dalasi Gammbi', - {'GMD': ['D'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ff-Latn-GN.js b/packages/common/locales/global/ff-Latn-GN.js deleted file mode 100644 index 40eafb511b..0000000000 --- a/packages/common/locales/global/ff-Latn-GN.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['ff-latn-gn'] = [ - 'ff-Latn-GN', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'GNF', - 'FG', - 'GNF', - {'GNF': ['FG'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ff-Latn-GW.js b/packages/common/locales/global/ff-Latn-GW.js deleted file mode 100644 index c03309b2c3..0000000000 --- a/packages/common/locales/global/ff-Latn-GW.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['ff-latn-gw'] = [ - 'ff-Latn-GW', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'Mbuuɗu Seefaa BCEAO', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ff-Latn-LR.js b/packages/common/locales/global/ff-Latn-LR.js deleted file mode 100644 index 5da45e7213..0000000000 --- a/packages/common/locales/global/ff-Latn-LR.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['ff-latn-lr'] = [ - 'ff-Latn-LR', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'LRD', - '$', - 'Dolaar Liberiyaa', - {'JPY': ['JP¥', '¥'], 'LRD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ff-Latn-MR.js b/packages/common/locales/global/ff-Latn-MR.js deleted file mode 100644 index b65b138c77..0000000000 --- a/packages/common/locales/global/ff-Latn-MR.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['ff-latn-mr'] = [ - 'ff-Latn-MR', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'MRU', - 'UM', - 'Ugiyya Muritani', - {'JPY': ['JP¥', '¥'], 'MRU': ['UM'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ff-Latn-NE.js b/packages/common/locales/global/ff-Latn-NE.js deleted file mode 100644 index 888780c3e8..0000000000 --- a/packages/common/locales/global/ff-Latn-NE.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['ff-latn-ne'] = [ - 'ff-Latn-NE', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'Mbuuɗu Seefaa BCEAO', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ff-Latn-NG.js b/packages/common/locales/global/ff-Latn-NG.js deleted file mode 100644 index 95d9a82f87..0000000000 --- a/packages/common/locales/global/ff-Latn-NG.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['ff-latn-ng'] = [ - 'ff-Latn-NG', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'NGN', - '₦', - 'Nayraa Nijeriyaa', - {'JPY': ['JP¥', '¥'], 'NGN': ['₦'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ff-Latn-SL.js b/packages/common/locales/global/ff-Latn-SL.js deleted file mode 100644 index d4ebb2544b..0000000000 --- a/packages/common/locales/global/ff-Latn-SL.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['ff-latn-sl'] = [ - 'ff-Latn-SL', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'SLL', - 'Le', - 'Lewoon Seraa Liyon', - {'JPY': ['JP¥', '¥'], 'SLL': ['Le'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ff-Latn.js b/packages/common/locales/global/ff-Latn.js deleted file mode 100644 index 29d6c0c397..0000000000 --- a/packages/common/locales/global/ff-Latn.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['ff-latn'] = [ - 'ff-Latn', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'Mbuuɗu Seefaa BCEAO', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ff-MR.js b/packages/common/locales/global/ff-MR.js index 14bfdae3df..a18798e47d 100644 --- a/packages/common/locales/global/ff-MR.js +++ b/packages/common/locales/global/ff-MR.js @@ -6,8 +6,12 @@ * found in the LICENSE file at https://angular.io/license */ -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js +// **Note**: Locale files are generated through Bazel and never part of the sources. This is an +// exception for backwards compatibility. With the Gulp setup we never deleted old locale files +// when updating CLDR, so older locale files which have been removed, or renamed in the CLDR +// data remained in the repository. We keep these files checked-in until the next major to avoid +// potential breaking changes. It's worth noting that the locale data for such files is outdated +// anyway. e.g. the data is missing the directionality, throwing off the indices. (function(global) { global.ng = global.ng || {}; diff --git a/packages/common/locales/global/ff.js b/packages/common/locales/global/ff.js deleted file mode 100644 index adc63bf365..0000000000 --- a/packages/common/locales/global/ff.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['ff'] = [ - 'ff', - [['subaka', 'kikiiɗe'], u, u], - u, - [ - ['d', 'a', 'm', 'n', 'n', 'm', 'h'], ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'] - ], - u, - [ - ['s', 'c', 'm', 's', 'd', 'k', 'm', 'j', 's', 'y', 'j', 'b'], - ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - [ - 'siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', - 'jolal', 'bowte' - ] - ], - u, - [['H-I', 'C-I'], u, ['Hade Iisa', 'Caggal Iisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'Mbuuɗu Seefaa BCEAO', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fi.js b/packages/common/locales/global/fi.js deleted file mode 100644 index 7f03b6eaf6..0000000000 --- a/packages/common/locales/global/fi.js +++ /dev/null @@ -1,190 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['fi'] = [ - 'fi', - [['ap.', 'ip.'], u, u], - u, - [ - ['S', 'M', 'T', 'K', 'T', 'P', 'L'], ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'], - [ - 'sunnuntaina', 'maanantaina', 'tiistaina', 'keskiviikkona', 'torstaina', 'perjantaina', - 'lauantaina' - ], - ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'] - ], - [ - ['S', 'M', 'T', 'K', 'T', 'P', 'L'], ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'], - ['sunnuntai', 'maanantai', 'tiistai', 'keskiviikko', 'torstai', 'perjantai', 'lauantai'], - ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'] - ], - [ - ['T', 'H', 'M', 'H', 'T', 'K', 'H', 'E', 'S', 'L', 'M', 'J'], - [ - 'tammik.', 'helmik.', 'maalisk.', 'huhtik.', 'toukok.', 'kesäk.', 'heinäk.', 'elok.', - 'syysk.', 'lokak.', 'marrask.', 'jouluk.' - ], - [ - 'tammikuuta', 'helmikuuta', 'maaliskuuta', 'huhtikuuta', 'toukokuuta', 'kesäkuuta', - 'heinäkuuta', 'elokuuta', 'syyskuuta', 'lokakuuta', 'marraskuuta', 'joulukuuta' - ] - ], - [ - ['T', 'H', 'M', 'H', 'T', 'K', 'H', 'E', 'S', 'L', 'M', 'J'], - [ - 'tammi', 'helmi', 'maalis', 'huhti', 'touko', 'kesä', 'heinä', 'elo', 'syys', 'loka', - 'marras', 'joulu' - ], - [ - 'tammikuu', 'helmikuu', 'maaliskuu', 'huhtikuu', 'toukokuu', 'kesäkuu', 'heinäkuu', 'elokuu', - 'syyskuu', 'lokakuu', 'marraskuu', 'joulukuu' - ] - ], - [['eKr', 'jKr'], ['eKr.', 'jKr.'], ['ennen Kristuksen syntymää', 'jälkeen Kristuksen syntymän']], - 1, - [6, 0], - ['d.M.y', u, 'd. MMMM y', 'cccc d. MMMM y'], - ['H.mm', 'H.mm.ss', 'H.mm.ss z', 'H.mm.ss zzzz'], - ['{1} {0}', '{1} \'klo\' {0}', u, u], - [',', ' ', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'epäluku', '.'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AOA': [], - 'ARS': [], - 'AUD': [], - 'BAM': [], - 'BBD': [], - 'BDT': [], - 'BMD': [], - 'BND': [], - 'BOB': [], - 'BRL': [], - 'BSD': [], - 'BWP': [], - 'BYN': [], - 'BZD': [], - 'CAD': [], - 'CLP': [], - 'CNY': [], - 'COP': [], - 'CRC': [], - 'CUC': [], - 'CUP': [], - 'CZK': [], - 'DKK': [], - 'DOP': [], - 'EGP': [], - 'ESP': [], - 'FIM': ['mk'], - 'FJD': [], - 'FKP': [], - 'GEL': [], - 'GIP': [], - 'GNF': [], - 'GTQ': [], - 'GYD': [], - 'HKD': [], - 'HNL': [], - 'HRK': [], - 'HUF': [], - 'IDR': [], - 'ILS': [], - 'INR': [], - 'ISK': [], - 'JMD': [], - 'KHR': [], - 'KMF': [], - 'KPW': [], - 'KRW': [], - 'KYD': [], - 'KZT': [], - 'LAK': [], - 'LBP': [], - 'LKR': [], - 'LRD': [], - 'LTL': [], - 'LVL': [], - 'MGA': [], - 'MMK': [], - 'MNT': [], - 'MUR': [], - 'MXN': [], - 'MYR': [], - 'NAD': [], - 'NGN': [], - 'NIO': [], - 'NOK': [], - 'NPR': [], - 'NZD': [], - 'PHP': [], - 'PKR': [], - 'PLN': [], - 'PYG': [], - 'RON': [], - 'RUR': [], - 'RWF': [], - 'SBD': [], - 'SEK': [], - 'SGD': [], - 'SHP': [], - 'SRD': [], - 'SSP': [], - 'STN': [u, 'STD'], - 'SYP': [], - 'THB': [], - 'TOP': [], - 'TRY': [], - 'TTD': [], - 'TWD': [], - 'UAH': [], - 'UYU': [], - 'VEF': [], - 'VND': [], - 'XCD': [], - 'XPF': [], - 'XXX': [], - 'ZAR': [], - 'ZMW': [] - }, - 'ltr', - plural, - [ - [ - ['ky.', 'kp.', 'aamulla', 'ap.', 'ip.', 'illalla', 'yöllä'], - ['keskiyöllä', 'keskip.', 'aamulla', 'aamup.', 'iltap.', 'illalla', 'yöllä'], - ['keskiyöllä', 'keskipäivällä', 'aamulla', 'aamupäivällä', 'iltapäivällä', 'illalla', 'yöllä'] - ], - [ - ['ky.', 'kp.', 'aamu', 'ap.', 'ip.', 'ilta', 'yö'], - ['keskiyö', 'keskip.', 'aamu', 'aamup.', 'iltap.', 'ilta', 'yö'], - ['keskiyö', 'keskipäivä', 'aamu', 'aamupäivä', 'iltapäivä', 'ilta', 'yö'] - ], - [ - '00:00', '12:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '18:00'], - ['18:00', '23:00'], ['23:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fil.js b/packages/common/locales/global/fil.js deleted file mode 100644 index 7f8169930a..0000000000 --- a/packages/common/locales/global/fil.js +++ /dev/null @@ -1,88 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && (i === 1 || i === 2 || i === 3) || - v === 0 && !(i % 10 === 4 || i % 10 === 6 || i % 10 === 9) || - !(v === 0) && !(f % 10 === 4 || f % 10 === 6 || f % 10 === 9)) - return 1; - return 5; -} -global.ng.common.locales['fil'] = [ - 'fil', - [['am', 'pm'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['Lin', 'Lun', 'Mar', 'Miy', 'Huw', 'Biy', 'Sab'], u, - ['Linggo', 'Lunes', 'Martes', 'Miyerkules', 'Huwebes', 'Biyernes', 'Sabado'], - ['Li', 'Lu', 'Ma', 'Mi', 'Hu', 'Bi', 'Sa'] - ], - u, - [ - ['Ene', 'Peb', 'Mar', 'Abr', 'May', 'Hun', 'Hul', 'Ago', 'Set', 'Okt', 'Nob', 'Dis'], u, - [ - 'Enero', 'Pebrero', 'Marso', 'Abril', 'Mayo', 'Hunyo', 'Hulyo', 'Agosto', 'Setyembre', - 'Oktubre', 'Nobyembre', 'Disyembre' - ] - ], - [ - ['E', 'P', 'M', 'A', 'M', 'Hun', 'Hul', 'Ago', 'Set', 'Okt', 'Nob', 'Dis'], - ['Ene', 'Peb', 'Mar', 'Abr', 'May', 'Hun', 'Hul', 'Ago', 'Set', 'Okt', 'Nob', 'Dis'], - [ - 'Enero', 'Pebrero', 'Marso', 'Abril', 'Mayo', 'Hunyo', 'Hulyo', 'Agosto', 'Setyembre', - 'Oktubre', 'Nobyembre', 'Disyembre' - ] - ], - [['BC', 'AD'], u, ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'nang\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'PHP', - '₱', - 'Piso ng Pilipinas', - {'PHP': ['₱'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural, - [ - [ - ['hatinggabi', 'tanghaling-tapat', 'umaga', 'madaling-araw', 'sa hapon', 'sa gabi', 'gabi'], - [ - 'hatinggabi', 'tanghaling-tapat', 'nang umaga', 'madaling-araw', 'tanghali', 'ng hapon', - 'gabi' - ], - [ - 'hatinggabi', 'tanghaling-tapat', 'nang umaga', 'madaling-araw', 'tanghali', 'ng hapon', - 'ng gabi' - ] - ], - [ - ['hatinggabi', 'tanghaling-tapat', 'umaga', 'madaling-araw', 'tanghali', 'gabi', 'gabi'], - ['hatinggabi', 'tanghaling-tapat', 'umaga', 'madaling-araw', 'tanghali', 'hapon', 'gabi'], u - ], - [ - '00:00', '12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '16:00'], - ['16:00', '18:00'], ['18:00', '24:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fo-DK.js b/packages/common/locales/global/fo-DK.js deleted file mode 100644 index 046627536d..0000000000 --- a/packages/common/locales/global/fo-DK.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['fo-dk'] = [ - 'fo-DK', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'T', 'M', 'H', 'F', 'L'], ['sun.', 'mán.', 'týs.', 'mik.', 'hós.', 'frí.', 'ley.'], - ['sunnudagur', 'mánadagur', 'týsdagur', 'mikudagur', 'hósdagur', 'fríggjadagur', 'leygardagur'], - ['su.', 'má.', 'tý.', 'mi.', 'hó.', 'fr.', 'le.'] - ], - [ - ['S', 'M', 'T', 'M', 'H', 'F', 'L'], ['sun', 'mán', 'týs', 'mik', 'hós', 'frí', 'ley'], - ['sunnudagur', 'mánadagur', 'týsdagur', 'mikudagur', 'hósdagur', 'fríggjadagur', 'leygardagur'], - ['su', 'má', 'tý', 'mi', 'hó', 'fr', 'le'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mar.', 'apr.', 'mai', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'des.'], - [ - 'januar', 'februar', 'mars', 'apríl', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', - 'november', 'desember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'], - [ - 'januar', 'februar', 'mars', 'apríl', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', - 'november', 'desember' - ] - ], - [['fKr', 'eKr'], ['f.Kr.', 'e.Kr.'], ['fyri Krist', 'eftir Krist']], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'kl\'. {0}', u], - [',', '.', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'DKK', - 'kr.', - 'donsk króna', - {'DKK': ['kr.', 'kr'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fo.js b/packages/common/locales/global/fo.js deleted file mode 100644 index 10e6e1df60..0000000000 --- a/packages/common/locales/global/fo.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['fo'] = [ - 'fo', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'T', 'M', 'H', 'F', 'L'], ['sun.', 'mán.', 'týs.', 'mik.', 'hós.', 'frí.', 'ley.'], - ['sunnudagur', 'mánadagur', 'týsdagur', 'mikudagur', 'hósdagur', 'fríggjadagur', 'leygardagur'], - ['su.', 'má.', 'tý.', 'mi.', 'hó.', 'fr.', 'le.'] - ], - [ - ['S', 'M', 'T', 'M', 'H', 'F', 'L'], ['sun', 'mán', 'týs', 'mik', 'hós', 'frí', 'ley'], - ['sunnudagur', 'mánadagur', 'týsdagur', 'mikudagur', 'hósdagur', 'fríggjadagur', 'leygardagur'], - ['su', 'má', 'tý', 'mi', 'hó', 'fr', 'le'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mar.', 'apr.', 'mai', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'des.'], - [ - 'januar', 'februar', 'mars', 'apríl', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', - 'november', 'desember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'], - [ - 'januar', 'februar', 'mars', 'apríl', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', - 'november', 'desember' - ] - ], - [['fKr', 'eKr'], ['f.Kr.', 'e.Kr.'], ['fyri Krist', 'eftir Krist']], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'kl\'. {0}', u], - [',', '.', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'DKK', - 'kr', - 'donsk króna', - {'DKK': ['kr'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-BE.js b/packages/common/locales/global/fr-BE.js deleted file mode 100644 index 8d37ae2939..0000000000 --- a/packages/common/locales/global/fr-BE.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-be'] = [ - 'fr-BE', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['d/MM/yy', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'H \'h\' mm \'min\' ss \'s\' zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-BF.js b/packages/common/locales/global/fr-BF.js deleted file mode 100644 index 883ac3ca1f..0000000000 --- a/packages/common/locales/global/fr-BF.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-bf'] = [ - 'fr-BF', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'franc CFA (BCEAO)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-BI.js b/packages/common/locales/global/fr-BI.js deleted file mode 100644 index f4dffa710b..0000000000 --- a/packages/common/locales/global/fr-BI.js +++ /dev/null @@ -1,120 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-bi'] = [ - 'fr-BI', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'BIF', - 'FBu', - 'franc burundais', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BIF': ['FBu'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-BJ.js b/packages/common/locales/global/fr-BJ.js deleted file mode 100644 index aecad61722..0000000000 --- a/packages/common/locales/global/fr-BJ.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-bj'] = [ - 'fr-BJ', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'franc CFA (BCEAO)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-BL.js b/packages/common/locales/global/fr-BL.js deleted file mode 100644 index f8c911dbb7..0000000000 --- a/packages/common/locales/global/fr-BL.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-bl'] = [ - 'fr-BL', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-CA.js b/packages/common/locales/global/fr-CA.js deleted file mode 100644 index 82c66acd21..0000000000 --- a/packages/common/locales/global/fr-CA.js +++ /dev/null @@ -1,111 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-ca'] = [ - 'fr-CA', - [['a', 'p'], ['a.m.', 'p.m.'], u], - [['a.m.', 'p.m.'], u, u], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juill.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 0, - [6, 0], - ['y-MM-dd', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - [ - 'HH \'h\' mm', 'HH \'h\' mm \'min\' ss \'s\'', 'HH \'h\' mm \'min\' ss \'s\' z', - 'HH \'h\' mm \'min\' ss \'s\' zzzz' - ], - ['{1} {0}', u, '{1} \'à\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'CAD', - '$', - 'dollar canadien', - { - 'AUD': ['$ AU', '$'], - 'BEF': ['FB'], - 'BYN': [u, 'Br'], - 'CAD': ['$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FRF': ['F'], - 'GEL': [], - 'HKD': ['$ HK', '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'ITL': ['₤IT'], - 'KRW': [u, '₩'], - 'LBP': [u, '£L'], - 'MTP': ['£MT'], - 'MXN': [u, '$'], - 'NZD': ['$ NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SGD': ['$ SG', '$'], - 'TOP': [u, '$T'], - 'TWD': [u, 'NT$'], - 'USD': ['$ US', '$'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [], - 'XPF': [] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'après-midi', 'soir', 'mat.'], - ['minuit', 'midi', 'du mat.', 'après-midi', 'du soir', 'du mat.'], - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'après-midi', 'soir', 'mat.'], - ['minuit', 'midi', 'mat.', 'après-midi', 'soir', 'nuit'], - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-CD.js b/packages/common/locales/global/fr-CD.js deleted file mode 100644 index ee4cae4e0b..0000000000 --- a/packages/common/locales/global/fr-CD.js +++ /dev/null @@ -1,122 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-cd'] = [ - 'fr-CD', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'CDF', - 'FC', - 'franc congolais', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CDF': ['FC'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['min.', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['min.', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-CF.js b/packages/common/locales/global/fr-CF.js deleted file mode 100644 index 67e27fff7e..0000000000 --- a/packages/common/locales/global/fr-CF.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-cf'] = [ - 'fr-CF', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'franc CFA (BEAC)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-CG.js b/packages/common/locales/global/fr-CG.js deleted file mode 100644 index e5313c8864..0000000000 --- a/packages/common/locales/global/fr-CG.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-cg'] = [ - 'fr-CG', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'franc CFA (BEAC)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-CH.js b/packages/common/locales/global/fr-CH.js deleted file mode 100644 index b88e3f3b52..0000000000 --- a/packages/common/locales/global/fr-CH.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-ch'] = [ - 'fr-CH', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd.MM.yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH.mm:ss \'h\' zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':', '.'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'CHF', - 'CHF', - 'franc suisse', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['min.', 'midi', 'du mat.', 'de l’ap.m.', 'du soir', 'du mat.'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['min.', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-CI.js b/packages/common/locales/global/fr-CI.js deleted file mode 100644 index 7527ea9c80..0000000000 --- a/packages/common/locales/global/fr-CI.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-ci'] = [ - 'fr-CI', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'franc CFA (BCEAO)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-CM.js b/packages/common/locales/global/fr-CM.js deleted file mode 100644 index 57efd173bb..0000000000 --- a/packages/common/locales/global/fr-CM.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-cm'] = [ - 'fr-CM', - [['mat.', 'soir'], u, ['matin', 'soir']], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'franc CFA (BEAC)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-DJ.js b/packages/common/locales/global/fr-DJ.js deleted file mode 100644 index d020a76888..0000000000 --- a/packages/common/locales/global/fr-DJ.js +++ /dev/null @@ -1,120 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-dj'] = [ - 'fr-DJ', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 6, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'DJF', - 'Fdj', - 'franc djiboutien', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'DJF': ['Fdj'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-DZ.js b/packages/common/locales/global/fr-DZ.js deleted file mode 100644 index a104157093..0000000000 --- a/packages/common/locales/global/fr-DZ.js +++ /dev/null @@ -1,120 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-dz'] = [ - 'fr-DZ', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 6, - [5, 6], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'DZD', - 'DA', - 'dinar algérien', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'DZD': ['DA'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-GA.js b/packages/common/locales/global/fr-GA.js deleted file mode 100644 index bda7409214..0000000000 --- a/packages/common/locales/global/fr-GA.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-ga'] = [ - 'fr-GA', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'franc CFA (BEAC)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-GF.js b/packages/common/locales/global/fr-GF.js deleted file mode 100644 index 49cd5d8274..0000000000 --- a/packages/common/locales/global/fr-GF.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-gf'] = [ - 'fr-GF', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-GN.js b/packages/common/locales/global/fr-GN.js deleted file mode 100644 index 7b7466cd4c..0000000000 --- a/packages/common/locales/global/fr-GN.js +++ /dev/null @@ -1,120 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-gn'] = [ - 'fr-GN', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'GNF', - 'FG', - 'franc guinéen', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'GNF': ['FG'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-GP.js b/packages/common/locales/global/fr-GP.js deleted file mode 100644 index 8d78aaf074..0000000000 --- a/packages/common/locales/global/fr-GP.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-gp'] = [ - 'fr-GP', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-GQ.js b/packages/common/locales/global/fr-GQ.js deleted file mode 100644 index 49297ebf26..0000000000 --- a/packages/common/locales/global/fr-GQ.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-gq'] = [ - 'fr-GQ', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'franc CFA (BEAC)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-HT.js b/packages/common/locales/global/fr-HT.js deleted file mode 100644 index 7f032c7626..0000000000 --- a/packages/common/locales/global/fr-HT.js +++ /dev/null @@ -1,120 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-ht'] = [ - 'fr-HT', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'HTG', - 'G', - 'gourde haïtienne', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'HTG': ['G'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'de la nuit'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-KM.js b/packages/common/locales/global/fr-KM.js deleted file mode 100644 index 40aa055577..0000000000 --- a/packages/common/locales/global/fr-KM.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-km'] = [ - 'fr-KM', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'KMF', - 'CF', - 'franc comorien', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': ['CF', 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-LU.js b/packages/common/locales/global/fr-LU.js deleted file mode 100644 index 28fa767c55..0000000000 --- a/packages/common/locales/global/fr-LU.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-lu'] = [ - 'fr-LU', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'LUF': ['F'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-MA.js b/packages/common/locales/global/fr-MA.js deleted file mode 100644 index e2fbec0992..0000000000 --- a/packages/common/locales/global/fr-MA.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-ma'] = [ - 'fr-MA', - [['AM', 'PM'], u, ['a.m.', 'p.m.']], - [['AM', 'PM'], u, u], - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fév.', 'mar.', 'avr.', 'mai', 'jui.', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'MAD', - 'MAD', - 'dirham marocain', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-MC.js b/packages/common/locales/global/fr-MC.js deleted file mode 100644 index 5791b4953a..0000000000 --- a/packages/common/locales/global/fr-MC.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-mc'] = [ - 'fr-MC', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-MF.js b/packages/common/locales/global/fr-MF.js deleted file mode 100644 index 14b1ade702..0000000000 --- a/packages/common/locales/global/fr-MF.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-mf'] = [ - 'fr-MF', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-MG.js b/packages/common/locales/global/fr-MG.js deleted file mode 100644 index 7998d4cdc7..0000000000 --- a/packages/common/locales/global/fr-MG.js +++ /dev/null @@ -1,120 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-mg'] = [ - 'fr-MG', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'MGA', - 'Ar', - 'ariary malgache', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MGA': ['Ar'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-ML.js b/packages/common/locales/global/fr-ML.js deleted file mode 100644 index f4b42c21b4..0000000000 --- a/packages/common/locales/global/fr-ML.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-ml'] = [ - 'fr-ML', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'à\' {0}', u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'franc CFA (BCEAO)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-MQ.js b/packages/common/locales/global/fr-MQ.js deleted file mode 100644 index 3fd53b1062..0000000000 --- a/packages/common/locales/global/fr-MQ.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-mq'] = [ - 'fr-MQ', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-MR.js b/packages/common/locales/global/fr-MR.js deleted file mode 100644 index 6b16b895c7..0000000000 --- a/packages/common/locales/global/fr-MR.js +++ /dev/null @@ -1,120 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-mr'] = [ - 'fr-MR', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'MRU', - 'UM', - 'ouguiya mauritanien', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MRU': ['UM'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-MU.js b/packages/common/locales/global/fr-MU.js deleted file mode 100644 index e1bdd3555b..0000000000 --- a/packages/common/locales/global/fr-MU.js +++ /dev/null @@ -1,120 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-mu'] = [ - 'fr-MU', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'MUR', - 'Rs', - 'roupie mauricienne', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MUR': ['Rs'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-NC.js b/packages/common/locales/global/fr-NC.js deleted file mode 100644 index f6955a92c2..0000000000 --- a/packages/common/locales/global/fr-NC.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-nc'] = [ - 'fr-NC', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XPF', - 'FCFP', - 'franc CFP', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-NE.js b/packages/common/locales/global/fr-NE.js deleted file mode 100644 index 58edca7deb..0000000000 --- a/packages/common/locales/global/fr-NE.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-ne'] = [ - 'fr-NE', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'franc CFA (BCEAO)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-PF.js b/packages/common/locales/global/fr-PF.js deleted file mode 100644 index e01779491a..0000000000 --- a/packages/common/locales/global/fr-PF.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-pf'] = [ - 'fr-PF', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XPF', - 'FCFP', - 'franc CFP', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-PM.js b/packages/common/locales/global/fr-PM.js deleted file mode 100644 index b8d7651f8f..0000000000 --- a/packages/common/locales/global/fr-PM.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-pm'] = [ - 'fr-PM', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-RE.js b/packages/common/locales/global/fr-RE.js deleted file mode 100644 index 2dd8fdf4ee..0000000000 --- a/packages/common/locales/global/fr-RE.js +++ /dev/null @@ -1,120 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-re'] = [ - 'fr-RE', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], - ['min.', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['min.', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-RW.js b/packages/common/locales/global/fr-RW.js deleted file mode 100644 index bd0e6dbf1d..0000000000 --- a/packages/common/locales/global/fr-RW.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-rw'] = [ - 'fr-RW', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'RWF', - 'RF', - 'franc rwandais', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': ['RF', 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-SC.js b/packages/common/locales/global/fr-SC.js deleted file mode 100644 index cf44f62d5b..0000000000 --- a/packages/common/locales/global/fr-SC.js +++ /dev/null @@ -1,120 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-sc'] = [ - 'fr-SC', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'SCR', - 'SR', - 'roupie des Seychelles', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SCR': ['SR'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-SN.js b/packages/common/locales/global/fr-SN.js deleted file mode 100644 index 269ff954a9..0000000000 --- a/packages/common/locales/global/fr-SN.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-sn'] = [ - 'fr-SN', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'franc CFA (BCEAO)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['min.', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['min.', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-SY.js b/packages/common/locales/global/fr-SY.js deleted file mode 100644 index da6903cf05..0000000000 --- a/packages/common/locales/global/fr-SY.js +++ /dev/null @@ -1,120 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-sy'] = [ - 'fr-SY', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 6, - [5, 6], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'SYP', - 'LS', - 'livre syrienne', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'SYP': ['LS', '£'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-TD.js b/packages/common/locales/global/fr-TD.js deleted file mode 100644 index 923c6065e4..0000000000 --- a/packages/common/locales/global/fr-TD.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-td'] = [ - 'fr-TD', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'franc CFA (BEAC)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-TG.js b/packages/common/locales/global/fr-TG.js deleted file mode 100644 index 278c29a155..0000000000 --- a/packages/common/locales/global/fr-TG.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-tg'] = [ - 'fr-TG', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'franc CFA (BCEAO)', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-TN.js b/packages/common/locales/global/fr-TN.js deleted file mode 100644 index 0abf8d55aa..0000000000 --- a/packages/common/locales/global/fr-TN.js +++ /dev/null @@ -1,120 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-tn'] = [ - 'fr-TN', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'TND', - 'DT', - 'dinar tunisien', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TND': ['DT'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-VU.js b/packages/common/locales/global/fr-VU.js deleted file mode 100644 index d5231d401c..0000000000 --- a/packages/common/locales/global/fr-VU.js +++ /dev/null @@ -1,120 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-vu'] = [ - 'fr-VU', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'VUV', - 'VT', - 'vatu vanuatuan', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'VUV': ['VT'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-WF.js b/packages/common/locales/global/fr-WF.js deleted file mode 100644 index 64e779a191..0000000000 --- a/packages/common/locales/global/fr-WF.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-wf'] = [ - 'fr-WF', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'XPF', - 'FCFP', - 'franc CFP', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr-YT.js b/packages/common/locales/global/fr-YT.js deleted file mode 100644 index 2628d8a8b3..0000000000 --- a/packages/common/locales/global/fr-YT.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr-yt'] = [ - 'fr-YT', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fr.js b/packages/common/locales/global/fr.js deleted file mode 100644 index ee22833e5d..0000000000 --- a/packages/common/locales/global/fr.js +++ /dev/null @@ -1,119 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['fr'] = [ - 'fr', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', - 'déc.' - ], - [ - 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', - 'octobre', 'novembre', 'décembre' - ] - ], - u, - [['av. J.-C.', 'ap. J.-C.'], u, ['avant Jésus-Christ', 'après Jésus-Christ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1} \'à\' {0}', u, u], - [',', '\u202f', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'ARS': ['$AR', '$'], - 'AUD': ['$AU', '$'], - 'BEF': ['FB'], - 'BMD': ['$BM', '$'], - 'BND': ['$BN', '$'], - 'BZD': ['$BZ', '$'], - 'CAD': ['$CA', '$'], - 'CLP': ['$CL', '$'], - 'CNY': [u, '¥'], - 'COP': ['$CO', '$'], - 'CYP': ['£CY'], - 'EGP': [u, '£E'], - 'FJD': ['$FJ', '$'], - 'FKP': ['£FK', '£'], - 'FRF': ['F'], - 'GBP': ['£GB', '£'], - 'GIP': ['£GI', '£'], - 'HKD': [u, '$'], - 'IEP': ['£IE'], - 'ILP': ['£IL'], - 'ITL': ['₤IT'], - 'JPY': [u, '¥'], - 'KMF': [u, 'FC'], - 'LBP': ['£LB', '£L'], - 'MTP': ['£MT'], - 'MXN': ['$MX', '$'], - 'NAD': ['$NA', '$'], - 'NIO': [u, '$C'], - 'NZD': ['$NZ', '$'], - 'RHD': ['$RH'], - 'RON': [u, 'L'], - 'RWF': [u, 'FR'], - 'SBD': ['$SB', '$'], - 'SGD': ['$SG', '$'], - 'SRD': ['$SR', '$'], - 'TOP': [u, '$T'], - 'TTD': ['$TT', '$'], - 'TWD': [u, 'NT$'], - 'USD': ['$US', '$'], - 'UYU': ['$UY', '$'], - 'WST': ['$WS'], - 'XCD': [u, '$'], - 'XPF': ['FCFP'], - 'ZMW': [u, 'Kw'] - }, - 'ltr', - plural, - [ - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'du matin', 'de l’après-midi', 'du soir', 'du matin'] - ], - [ - ['minuit', 'midi', 'mat.', 'ap.m.', 'soir', 'nuit'], u, - ['minuit', 'midi', 'matin', 'après-midi', 'soir', 'nuit'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fur.js b/packages/common/locales/global/fur.js deleted file mode 100644 index 07d2f3d679..0000000000 --- a/packages/common/locales/global/fur.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['fur'] = [ - 'fur', - [['a.', 'p.'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dom', 'lun', 'mar', 'mie', 'joi', 'vin', 'sab'], - ['domenie', 'lunis', 'martars', 'miercus', 'joibe', 'vinars', 'sabide'], - ['dom', 'lun', 'mar', 'mie', 'joi', 'vin', 'sab'] - ], - u, - [ - ['Z', 'F', 'M', 'A', 'M', 'J', 'L', 'A', 'S', 'O', 'N', 'D'], - ['Zen', 'Fev', 'Mar', 'Avr', 'Mai', 'Jug', 'Lui', 'Avo', 'Set', 'Otu', 'Nov', 'Dic'], - [ - 'Zenâr', 'Fevrâr', 'Març', 'Avrîl', 'Mai', 'Jugn', 'Lui', 'Avost', 'Setembar', 'Otubar', - 'Novembar', 'Dicembar' - ] - ], - u, - [['pdC', 'ddC'], u, u], - 1, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'di\' MMMM \'dal\' y', 'EEEE d \'di\' MMMM \'dal\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'EUR', - '€', - 'euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/fy.js b/packages/common/locales/global/fy.js deleted file mode 100644 index a23e49f078..0000000000 --- a/packages/common/locales/global/fy.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['fy'] = [ - 'fy', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['si', 'mo', 'ti', 'wo', 'to', 'fr', 'so'], - ['snein', 'moandei', 'tiisdei', 'woansdei', 'tongersdei', 'freed', 'sneon'], - ['si', 'mo', 'ti', 'wo', 'to', 'fr', 'so'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mrt', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Jannewaris', 'Febrewaris', 'Maart', 'April', 'Maaie', 'Juny', 'July', 'Augustus', - 'Septimber', 'Oktober', 'Novimber', 'Desimber' - ] - ], - u, - [['f.K.', 'n.K.'], ['f.Kr.', 'n.Kr.'], ['Foar Kristus', 'nei Kristus']], - 1, - [6, 0], - ['dd-MM-yy', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'om\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤ #,##0.00-', '#E0'], - 'EUR', - '€', - 'Euro', - { - 'AUD': ['AU$', '$'], - 'CAD': ['C$', '$'], - 'FJD': ['FJ$', '$'], - 'JPY': ['JP¥', '¥'], - 'SBD': ['SI$', '$'], - 'THB': ['฿'], - 'USD': ['US$', '$'], - 'XPF': [] - }, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ga-GB.js b/packages/common/locales/global/ga-GB.js deleted file mode 100644 index 879225b191..0000000000 --- a/packages/common/locales/global/ga-GB.js +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - if (n === 2) return 2; - if (n === Math.floor(n) && n >= 3 && n <= 6) return 3; - if (n === Math.floor(n) && n >= 7 && n <= 10) return 4; - return 5; -} -global.ng.common.locales['ga-gb'] = [ - 'ga-GB', - [['r.n.', 'i.n.'], u, u], - u, - [ - ['D', 'L', 'M', 'C', 'D', 'A', 'S'], ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'], - [ - 'Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Sathairn' - ], - ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'Ao', 'Sa'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'B', 'M', 'I', 'L', 'M', 'D', 'S', 'N'], - [ - 'Ean', 'Feabh', 'Márta', 'Aib', 'Beal', 'Meith', 'Iúil', 'Lún', 'MFómh', 'DFómh', 'Samh', - 'Noll' - ], - [ - 'Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Meitheamh', 'Iúil', 'Lúnasa', - 'Meán Fómhair', 'Deireadh Fómhair', 'Samhain', 'Nollaig' - ] - ], - u, - [['RC', 'AD'], u, ['Roimh Chríost', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GBP', - '£', - 'Punt Steirling', - {'THB': ['฿'], 'TWD': ['NT$'], 'XXX': []}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ga.js b/packages/common/locales/global/ga.js deleted file mode 100644 index e372070807..0000000000 --- a/packages/common/locales/global/ga.js +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - if (n === 2) return 2; - if (n === Math.floor(n) && n >= 3 && n <= 6) return 3; - if (n === Math.floor(n) && n >= 7 && n <= 10) return 4; - return 5; -} -global.ng.common.locales['ga'] = [ - 'ga', - [['r.n.', 'i.n.'], u, u], - u, - [ - ['D', 'L', 'M', 'C', 'D', 'A', 'S'], ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'], - [ - 'Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Sathairn' - ], - ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'Ao', 'Sa'] - ], - u, - [ - ['E', 'F', 'M', 'A', 'B', 'M', 'I', 'L', 'M', 'D', 'S', 'N'], - [ - 'Ean', 'Feabh', 'Márta', 'Aib', 'Beal', 'Meith', 'Iúil', 'Lún', 'MFómh', 'DFómh', 'Samh', - 'Noll' - ], - [ - 'Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Meitheamh', 'Iúil', 'Lúnasa', - 'Meán Fómhair', 'Deireadh Fómhair', 'Samhain', 'Nollaig' - ] - ], - u, - [['RC', 'AD'], u, ['Roimh Chríost', 'Anno Domini']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - {'THB': ['฿'], 'TWD': ['NT$'], 'XXX': []}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/gd.js b/packages/common/locales/global/gd.js deleted file mode 100644 index 068eed79f7..0000000000 --- a/packages/common/locales/global/gd.js +++ /dev/null @@ -1,73 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1 || n === 11) return 1; - if (n === 2 || n === 12) return 2; - if (n === Math.floor(n) && (n >= 3 && n <= 10 || n >= 13 && n <= 19)) return 3; - return 5; -} -global.ng.common.locales['gd'] = [ - 'gd', - [['m', 'f'], u, u], - u, - [ - ['D', 'L', 'M', 'C', 'A', 'H', 'S'], ['DiD', 'DiL', 'DiM', 'DiC', 'Dia', 'Dih', 'DiS'], - ['DiDòmhnaich', 'DiLuain', 'DiMàirt', 'DiCiadain', 'DiarDaoin', 'DihAoine', 'DiSathairne'], - ['Dò', 'Lu', 'Mà', 'Ci', 'Da', 'hA', 'Sa'] - ], - u, - [ - ['F', 'G', 'M', 'G', 'C', 'Ò', 'I', 'L', 'S', 'D', 'S', 'D'], - [ - 'Faoi', 'Gearr', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùna', 'Sult', 'Dàmh', 'Samh', - 'Dùbh' - ], - [ - 'dhen Fhaoilleach', 'dhen Ghearran', 'dhen Mhàrt', 'dhen Ghiblean', 'dhen Chèitean', - 'dhen Ògmhios', 'dhen Iuchar', 'dhen Lùnastal', 'dhen t-Sultain', 'dhen Dàmhair', - 'dhen t-Samhain', 'dhen Dùbhlachd' - ] - ], - [ - ['F', 'G', 'M', 'G', 'C', 'Ò', 'I', 'L', 'S', 'D', 'S', 'D'], - [ - 'Faoi', 'Gearr', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùna', 'Sult', 'Dàmh', 'Samh', - 'Dùbh' - ], - [ - 'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', - 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd' - ] - ], - [['R', 'A'], ['RC', 'AD'], ['Ro Chrìosta', 'An dèidh Chrìosta']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd\'mh\' MMMM y', 'EEEE, d\'mh\' MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GBP', - '£', - 'Punnd Sasannach', - {'JPY': ['JP¥', '¥'], 'RON': [u, 'leu'], 'THB': ['฿'], 'TWD': ['NT$'], 'XXX': []}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/gl.js b/packages/common/locales/global/gl.js deleted file mode 100644 index 0888338b94..0000000000 --- a/packages/common/locales/global/gl.js +++ /dev/null @@ -1,91 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['gl'] = [ - 'gl', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['d.', 'l.', 'm.', 'm.', 'x.', 'v.', 's.'], - ['dom.', 'luns', 'mar.', 'mér.', 'xov.', 'ven.', 'sáb.'], - ['domingo', 'luns', 'martes', 'mércores', 'xoves', 'venres', 'sábado'], - ['do.', 'lu.', 'ma.', 'mé.', 'xo.', 've.', 'sá.'] - ], - [ - ['D', 'L', 'M', 'M', 'X', 'V', 'S'], ['Dom.', 'Luns', 'Mar.', 'Mér.', 'Xov.', 'Ven.', 'Sáb.'], - ['Domingo', 'Luns', 'Martes', 'Mércores', 'Xoves', 'Venres', 'Sábado'], - ['Do', 'Lu', 'Ma', 'Mé', 'Xo', 'Ve', 'Sá'] - ], - [ - ['x.', 'f.', 'm.', 'a.', 'm.', 'x.', 'x.', 'a.', 's.', 'o.', 'n.', 'd.'], - [ - 'xan.', 'feb.', 'mar.', 'abr.', 'maio', 'xuño', 'xul.', 'ago.', 'set.', 'out.', 'nov.', 'dec.' - ], - [ - 'xaneiro', 'febreiro', 'marzo', 'abril', 'maio', 'xuño', 'xullo', 'agosto', 'setembro', - 'outubro', 'novembro', 'decembro' - ] - ], - [ - ['X', 'F', 'M', 'A', 'M', 'X', 'X', 'A', 'S', 'O', 'N', 'D'], - [ - 'Xan.', 'Feb.', 'Mar.', 'Abr.', 'Maio', 'Xuño', 'Xul.', 'Ago.', 'Set.', 'Out.', 'Nov.', 'Dec.' - ], - [ - 'Xaneiro', 'Febreiro', 'Marzo', 'Abril', 'Maio', 'Xuño', 'Xullo', 'Agosto', 'Setembro', - 'Outubro', 'Novembro', 'Decembro' - ] - ], - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'despois de Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'd \'de\' MMM \'de\' y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{0}, {1}', u, '{0} \'do\' {1}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'BYN': [u, 'Br'], - 'ESP': ['₧'], - 'JPY': ['JP¥', '¥'], - 'KMF': [u, 'FC'], - 'MXN': ['$MX', '$'], - 'RUB': [u, 'руб'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XCD': [u, '$'] - }, - 'ltr', - plural, - [ - [['da noite', 'da madrugada', 'da mañá', 'do mediodía', 'da tarde', 'da noite'], u, u], - [['medianoite', 'madrugada', 'mañá', 'mediodía', 'tarde', 'noite'], u, u], - [ - '00:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '21:00'], - ['21:00', '24:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/gsw-FR.js b/packages/common/locales/global/gsw-FR.js deleted file mode 100644 index 48692845f9..0000000000 --- a/packages/common/locales/global/gsw-FR.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['gsw-fr'] = [ - 'gsw-FR', - [['vorm.', 'nam.'], u, ['am Vormittag', 'am Namittag']], - [['vorm.', 'nam.'], u, ['Vormittag', 'Namittag']], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['Su.', 'Mä.', 'Zi.', 'Mi.', 'Du.', 'Fr.', 'Sa.'], - ['Sunntig', 'Määntig', 'Ziischtig', 'Mittwuch', 'Dunschtig', 'Friitig', 'Samschtig'], - ['Su.', 'Mä.', 'Zi.', 'Mi.', 'Du.', 'Fr.', 'Sa.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'Auguscht', 'Septämber', - 'Oktoober', 'Novämber', 'Dezämber' - ] - ], - u, - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', '’', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - {'ATS': ['öS']}, - 'ltr', - plural, - [ - [['Mitternacht', 'am Morge', 'zmittag', 'am Namittag', 'zaabig', 'znacht'], u, u], - [ - ['Mitternacht', 'am Morge', 'zmittag', 'am Namittag', 'zaabig', 'znacht'], u, - ['Mitternacht', 'Morge', 'Mittag', 'Namittag', 'Aabig', 'Nacht'] - ], - [ - '00:00', ['05:00', '12:00'], ['12:00', '14:00'], ['14:00', '18:00'], ['18:00', '24:00'], - ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/gsw-LI.js b/packages/common/locales/global/gsw-LI.js deleted file mode 100644 index 3404a63671..0000000000 --- a/packages/common/locales/global/gsw-LI.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['gsw-li'] = [ - 'gsw-LI', - [['vorm.', 'nam.'], u, ['am Vormittag', 'am Namittag']], - [['vorm.', 'nam.'], u, ['Vormittag', 'Namittag']], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['Su.', 'Mä.', 'Zi.', 'Mi.', 'Du.', 'Fr.', 'Sa.'], - ['Sunntig', 'Määntig', 'Ziischtig', 'Mittwuch', 'Dunschtig', 'Friitig', 'Samschtig'], - ['Su.', 'Mä.', 'Zi.', 'Mi.', 'Du.', 'Fr.', 'Sa.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'Auguscht', 'Septämber', - 'Oktoober', 'Novämber', 'Dezämber' - ] - ], - u, - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', '’', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'CHF', - 'CHF', - 'Schwiizer Franke', - {'ATS': ['öS']}, - 'ltr', - plural, - [ - [['Mitternacht', 'am Morge', 'zmittag', 'am Namittag', 'zaabig', 'znacht'], u, u], - [ - ['Mitternacht', 'am Morge', 'zmittag', 'am Namittag', 'zaabig', 'znacht'], u, - ['Mitternacht', 'Morge', 'Mittag', 'Namittag', 'Aabig', 'Nacht'] - ], - [ - '00:00', ['05:00', '12:00'], ['12:00', '14:00'], ['14:00', '18:00'], ['18:00', '24:00'], - ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/gsw.js b/packages/common/locales/global/gsw.js deleted file mode 100644 index 6c763907fa..0000000000 --- a/packages/common/locales/global/gsw.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['gsw'] = [ - 'gsw', - [['vorm.', 'nam.'], u, ['am Vormittag', 'am Namittag']], - [['vorm.', 'nam.'], u, ['Vormittag', 'Namittag']], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['Su.', 'Mä.', 'Zi.', 'Mi.', 'Du.', 'Fr.', 'Sa.'], - ['Sunntig', 'Määntig', 'Ziischtig', 'Mittwuch', 'Dunschtig', 'Friitig', 'Samschtig'], - ['Su.', 'Mä.', 'Zi.', 'Mi.', 'Du.', 'Fr.', 'Sa.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'Auguscht', 'Septämber', - 'Oktoober', 'Novämber', 'Dezämber' - ] - ], - u, - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', '’', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'CHF', - 'CHF', - 'Schwiizer Franke', - {'ATS': ['öS']}, - 'ltr', - plural, - [ - [['Mitternacht', 'am Morge', 'zmittag', 'am Namittag', 'zaabig', 'znacht'], u, u], - [ - ['Mitternacht', 'am Morge', 'zmittag', 'am Namittag', 'zaabig', 'znacht'], u, - ['Mitternacht', 'Morge', 'Mittag', 'Namittag', 'Aabig', 'Nacht'] - ], - [ - '00:00', ['05:00', '12:00'], ['12:00', '14:00'], ['14:00', '18:00'], ['18:00', '24:00'], - ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/gu.js b/packages/common/locales/global/gu.js deleted file mode 100644 index ce0e4b2266..0000000000 --- a/packages/common/locales/global/gu.js +++ /dev/null @@ -1,62 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} -global.ng.common.locales['gu'] = [ - 'gu', - [['AM', 'PM'], u, u], - u, - [ - ['ર', 'સો', 'મં', 'બુ', 'ગુ', 'શુ', 'શ'], ['રવિ', 'સોમ', 'મંગળ', 'બુધ', 'ગુરુ', 'શુક્ર', 'શનિ'], - ['રવિવાર', 'સોમવાર', 'મંગળવાર', 'બુધવાર', 'ગુરુવાર', 'શુક્રવાર', 'શનિવાર'], - ['ર', 'સો', 'મં', 'બુ', 'ગુ', 'શુ', 'શ'] - ], - u, - [ - ['જા', 'ફે', 'મા', 'એ', 'મે', 'જૂ', 'જુ', 'ઑ', 'સ', 'ઑ', 'ન', 'ડિ'], - ['જાન્યુ', 'ફેબ્રુ', 'માર્ચ', 'એપ્રિલ', 'મે', 'જૂન', 'જુલાઈ', 'ઑગસ્ટ', 'સપ્ટે', 'ઑક્ટો', 'નવે', 'ડિસે'], - [ - 'જાન્યુઆરી', 'ફેબ્રુઆરી', 'માર્ચ', 'એપ્રિલ', 'મે', 'જૂન', 'જુલાઈ', 'ઑગસ્ટ', 'સપ્ટેમ્બર', 'ઑક્ટોબર', 'નવેમ્બર', - 'ડિસેમ્બર' - ] - ], - u, - [['ઇ સ પુ', 'ઇસ'], ['ઈ.સ.પૂર્વે', 'ઈ.સ.'], ['ઈસવીસન પૂર્વે', 'ઇસવીસન']], - 0, - [0, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['hh:mm a', 'hh:mm:ss a', 'hh:mm:ss a z', 'hh:mm:ss a zzzz'], - ['{1} {0}', u, '{1} એ {0} વાગ્યે', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤#,##,##0.00', '[#E0]'], - 'INR', - '₹', - 'ભારતીય રૂપિયા', - {'JPY': ['JP¥', '¥'], 'MUR': [u, 'રૂ.'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [['મ.રાત્રિ', 'સવારે', 'બપોરે', 'સાંજે', 'રાત્રે'], ['મધ્યરાત્રિ', 'સવારે', 'બપોરે', 'સાંજે', 'રાત્રે'], u], - [['મધ્યરાત્રિ', 'સવારે', 'બપોરે', 'સાંજે', 'રાત્રે'], u, ['મધ્યરાત્રિ', 'સવાર', 'બપોર', 'સાંજ', 'રાત્રિ']], - ['00:00', ['04:00', '12:00'], ['12:00', '16:00'], ['16:00', '20:00'], ['20:00', '04:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/guz.js b/packages/common/locales/global/guz.js deleted file mode 100644 index 4c8969e44e..0000000000 --- a/packages/common/locales/global/guz.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['guz'] = [ - 'guz', - [['Ma', 'Mo'], u, ['Mambia', 'Mog']], - [['Ma', 'Mo'], u, u], - [ - ['C', 'C', 'C', 'C', 'A', 'I', 'E'], ['Cpr', 'Ctt', 'Cmn', 'Cmt', 'Ars', 'Icm', 'Est'], - ['Chumapiri', 'Chumatato', 'Chumaine', 'Chumatano', 'Aramisi', 'Ichuma', 'Esabato'], - ['Cpr', 'Ctt', 'Cmn', 'Cmt', 'Ars', 'Icm', 'Est'] - ], - u, - [ - ['C', 'F', 'M', 'A', 'M', 'J', 'C', 'A', 'S', 'O', 'N', 'D'], - ['Can', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Cul', 'Agt', 'Sep', 'Okt', 'Nob', 'Dis'], - [ - 'Chanuari', 'Feburari', 'Machi', 'Apiriri', 'Mei', 'Juni', 'Chulai', 'Agosti', 'Septemba', - 'Okitoba', 'Nobemba', 'Disemba' - ] - ], - u, - [['YA', 'YK'], u, ['Yeso ataiborwa', 'Yeso kaiboirwe']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Shilingi ya Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/gv.js b/packages/common/locales/global/gv.js deleted file mode 100644 index 47e1788729..0000000000 --- a/packages/common/locales/global/gv.js +++ /dev/null @@ -1,66 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (v === 0 && i % 10 === 1) return 1; - if (v === 0 && i % 10 === 2) return 2; - if (v === 0 && - (i % 100 === 0 || i % 100 === 20 || i % 100 === 40 || i % 100 === 60 || i % 100 === 80)) - return 3; - if (!(v === 0)) return 4; - return 5; -} -global.ng.common.locales['gv'] = [ - 'gv', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Jed', 'Jel', 'Jem', 'Jerc', 'Jerd', 'Jeh', 'Jes'], - ['Jedoonee', 'Jelhein', 'Jemayrt', 'Jercean', 'Jerdein', 'Jeheiney', 'Jesarn'], - ['Jed', 'Jel', 'Jem', 'Jerc', 'Jerd', 'Jeh', 'Jes'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'J-guer', 'T-arree', 'Mayrnt', 'Avrril', 'Boaldyn', 'M-souree', 'J-souree', 'Luanistyn', - 'M-fouyir', 'J-fouyir', 'M-Houney', 'M-Nollick' - ], - [ - 'Jerrey-geuree', 'Toshiaght-arree', 'Mayrnt', 'Averil', 'Boaldyn', 'Mean-souree', - 'Jerrey-souree', 'Luanistyn', 'Mean-fouyir', 'Jerrey-fouyir', 'Mee Houney', 'Mee ny Nollick' - ] - ], - u, - [['RC', 'AD'], u, u], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GBP', - '£', - 'GBP', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ha-GH.js b/packages/common/locales/global/ha-GH.js deleted file mode 100644 index 4045db5e8c..0000000000 --- a/packages/common/locales/global/ha-GH.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ha-gh'] = [ - 'ha-GH', - [['AM', 'PM'], u, ['Safiya', 'Yamma']], - [['AM', 'PM'], u, u], - [ - ['L', 'L', 'T', 'L', 'A', 'J', 'A'], ['Lah', 'Lit', 'Tal', 'Lar', 'Alh', 'Jum', 'Asa'], - ['Lahadi', 'Litinin', 'Talata', 'Laraba', 'Alhamis', 'Jummaʼa', 'Asabar'], - ['Lh', 'Li', 'Ta', 'Lr', 'Al', 'Ju', 'As'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'Y', 'Y', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Fab', 'Mar', 'Afi', 'May', 'Yun', 'Yul', 'Agu', 'Sat', 'Okt', 'Nuw', 'Dis'], - [ - 'Janairu', 'Faburairu', 'Maris', 'Afirilu', 'Mayu', 'Yuni', 'Yuli', 'Agusta', 'Satumba', - 'Oktoba', 'Nuwamba', 'Disamba' - ] - ], - u, - [['K.H', 'BHAI'], u, ['Kafin haihuwar annab', 'Bayan haihuwar annab']], - 1, - [6, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE d MMMM, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'GHS', - 'GH₵', - 'Kudin Ghana', - {'GHS': ['GH₵'], 'NGN': ['₦']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ha-NE.js b/packages/common/locales/global/ha-NE.js deleted file mode 100644 index f7ef113639..0000000000 --- a/packages/common/locales/global/ha-NE.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ha-ne'] = [ - 'ha-NE', - [['AM', 'PM'], u, ['Safiya', 'Yamma']], - [['AM', 'PM'], u, u], - [ - ['L', 'L', 'T', 'L', 'A', 'J', 'A'], ['Lah', 'Lit', 'Tal', 'Lar', 'Alh', 'Jum', 'Asa'], - ['Lahadi', 'Litinin', 'Talata', 'Laraba', 'Alhamis', 'Jummaʼa', 'Asabar'], - ['Lh', 'Li', 'Ta', 'Lr', 'Al', 'Ju', 'As'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'Y', 'Y', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Fab', 'Mar', 'Afi', 'May', 'Yun', 'Yul', 'Agu', 'Sat', 'Okt', 'Nuw', 'Dis'], - [ - 'Janairu', 'Faburairu', 'Maris', 'Afirilu', 'Mayu', 'Yuni', 'Yuli', 'Agusta', 'Satumba', - 'Oktoba', 'Nuwamba', 'Disamba' - ] - ], - u, - [['K.H', 'BHAI'], u, ['Kafin haihuwar annab', 'Bayan haihuwar annab']], - 1, - [6, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE d MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'XOF', - 'CFA', - 'Kuɗin Sefa na Afirka Ta Yamma', - {'NGN': ['₦']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ha.js b/packages/common/locales/global/ha.js deleted file mode 100644 index ef88bcdc8c..0000000000 --- a/packages/common/locales/global/ha.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ha'] = [ - 'ha', - [['AM', 'PM'], u, ['Safiya', 'Yamma']], - [['AM', 'PM'], u, u], - [ - ['L', 'L', 'T', 'L', 'A', 'J', 'A'], ['Lah', 'Lit', 'Tal', 'Lar', 'Alh', 'Jum', 'Asa'], - ['Lahadi', 'Litinin', 'Talata', 'Laraba', 'Alhamis', 'Jummaʼa', 'Asabar'], - ['Lh', 'Li', 'Ta', 'Lr', 'Al', 'Ju', 'As'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'Y', 'Y', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Fab', 'Mar', 'Afi', 'May', 'Yun', 'Yul', 'Agu', 'Sat', 'Okt', 'Nuw', 'Dis'], - [ - 'Janairu', 'Faburairu', 'Maris', 'Afirilu', 'Mayu', 'Yuni', 'Yuli', 'Agusta', 'Satumba', - 'Oktoba', 'Nuwamba', 'Disamba' - ] - ], - u, - [['K.H', 'BHAI'], u, ['Kafin haihuwar annab', 'Bayan haihuwar annab']], - 1, - [6, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE d MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'NGN', - '₦', - 'Nairar Najeriya', - {'NGN': ['₦']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/haw.js b/packages/common/locales/global/haw.js deleted file mode 100644 index 6c9d911f27..0000000000 --- a/packages/common/locales/global/haw.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['haw'] = [ - 'haw', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['LP', 'P1', 'P2', 'P3', 'P4', 'P5', 'P6'], - ['Lāpule', 'Poʻakahi', 'Poʻalua', 'Poʻakolu', 'Poʻahā', 'Poʻalima', 'Poʻaono'], - ['LP', 'P1', 'P2', 'P3', 'P4', 'P5', 'P6'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['Ian.', 'Pep.', 'Mal.', 'ʻAp.', 'Mei', 'Iun.', 'Iul.', 'ʻAu.', 'Kep.', 'ʻOk.', 'Now.', 'Kek.'], - [ - 'Ianuali', 'Pepeluali', 'Malaki', 'ʻApelila', 'Mei', 'Iune', 'Iulai', 'ʻAukake', 'Kepakemapa', - 'ʻOkakopa', 'Nowemapa', 'Kekemapa' - ] - ], - u, - [['BCE', 'CE'], u, u], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'USD', - {'JPY': ['JP¥', '¥']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/he.js b/packages/common/locales/global/he.js deleted file mode 100644 index 27c1e4a759..0000000000 --- a/packages/common/locales/global/he.js +++ /dev/null @@ -1,75 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - if (i === 2 && v === 0) return 2; - if (v === 0 && !(n >= 0 && n <= 10) && n % 10 === 0) return 4; - return 5; -} -global.ng.common.locales['he'] = [ - 'he', - [['לפנה״צ', 'אחה״צ'], u, u], - [['לפנה״צ', 'אחה״צ'], ['AM', 'PM'], u], - [ - ['א׳', 'ב׳', 'ג׳', 'ד׳', 'ה׳', 'ו׳', 'ש׳'], - ['יום א׳', 'יום ב׳', 'יום ג׳', 'יום ד׳', 'יום ה׳', 'יום ו׳', 'שבת'], - ['יום ראשון', 'יום שני', 'יום שלישי', 'יום רביעי', 'יום חמישי', 'יום שישי', 'יום שבת'], - ['א׳', 'ב׳', 'ג׳', 'ד׳', 'ה׳', 'ו׳', 'ש׳'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['ינו׳', 'פבר׳', 'מרץ', 'אפר׳', 'מאי', 'יוני', 'יולי', 'אוג׳', 'ספט׳', 'אוק׳', 'נוב׳', 'דצמ׳'], - [ - 'ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', - 'נובמבר', 'דצמבר' - ] - ], - u, - [['לפנה״ס', 'לספירה'], u, ['לפני הספירה', 'לספירה']], - 0, - [5, 6], - ['d.M.y', 'd בMMM y', 'd בMMMM y', 'EEEE, d בMMMM y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1}, {0}', u, '{1} בשעה {0}', u], - ['.', ',', ';', '%', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '\u200f#,##0.00 ¤;\u200f-#,##0.00 ¤', '#E0'], - 'ILS', - '₪', - 'שקל חדש', - {'BYN': [u, 'р'], 'CNY': ['\u200eCN¥\u200e', '¥'], 'ILP': ['ל״י'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'rtl', - plural, - [ - [ - ['חצות', 'בבוקר', 'בצהריים', 'אחה״צ', 'בערב', 'בלילה', 'לפנות בוקר'], - ['חצות', 'בוקר', 'צהריים', 'אחר הצהריים', 'ערב', 'לילה', 'לפנות בוקר'], - ['חצות', 'בבוקר', 'בצהריים', 'אחר הצהריים', 'בערב', 'בלילה', 'לפנות בוקר'] - ], - [ - ['חצות', 'בוקר', 'צהריים', 'אחה״צ', 'ערב', 'לילה', 'לפנות בוקר'], u, - ['חצות', 'בוקר', 'צהריים', 'אחר הצהריים', 'ערב', 'לילה', 'לפנות בוקר'] - ], - [ - '00:00', ['06:00', '12:00'], ['12:00', '16:00'], ['16:00', '18:00'], ['18:00', '22:00'], - ['22:00', '03:00'], ['03:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/hi.js b/packages/common/locales/global/hi.js deleted file mode 100644 index d3acd81acd..0000000000 --- a/packages/common/locales/global/hi.js +++ /dev/null @@ -1,62 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} -global.ng.common.locales['hi'] = [ - 'hi', - [['am', 'pm'], u, u], - u, - [ - ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'], ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'], - ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरुवार', 'शुक्रवार', 'शनिवार'], - ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'] - ], - u, - [ - ['ज', 'फ़', 'मा', 'अ', 'म', 'जू', 'जु', 'अ', 'सि', 'अ', 'न', 'दि'], - ['जन॰', 'फ़र॰', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुल॰', 'अग॰', 'सित॰', 'अक्तू॰', 'नव॰', 'दिस॰'], - [ - 'जनवरी', 'फ़रवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितंबर', 'अक्तूबर', 'नवंबर', - 'दिसंबर' - ] - ], - u, - [['ईसा-पूर्व', 'ईस्वी'], u, ['ईसा-पूर्व', 'ईसवी सन']], - 0, - [0, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} को {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤#,##,##0.00', '[#E0]'], - 'INR', - '₹', - 'भारतीय रुपया', - {'JPY': ['JP¥', '¥'], 'RON': [u, 'लेई'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural, - [ - [['मध्यरात्रि', 'सुबह', 'दोपहर', 'शाम', 'रात'], u, u], - [['आधी रात', 'सुबह', 'दोपहर', 'शाम', 'रात'], ['मध्यरात्रि', 'सुबह', 'दोपहर', 'शाम', 'रात'], u], - ['00:00', ['04:00', '12:00'], ['12:00', '16:00'], ['16:00', '20:00'], ['20:00', '04:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/hr-BA.js b/packages/common/locales/global/hr-BA.js deleted file mode 100644 index 6d966cb106..0000000000 --- a/packages/common/locales/global/hr-BA.js +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14) || - f % 10 === Math.floor(f % 10) && f % 10 >= 2 && f % 10 <= 4 && - !(f % 100 >= 12 && f % 100 <= 14)) - return 3; - return 5; -} -global.ng.common.locales['hr-ba'] = [ - 'hr-BA', - [['AM', 'PM'], u, u], - u, - [ - ['N', 'P', 'U', 'S', 'Č', 'P', 'S'], ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'], - ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'] - ], - u, - [ - ['1.', '2.', '3.', '4.', '5.', '6.', '7.', '8.', '9.', '10.', '11.', '12.'], - ['sij', 'velj', 'ožu', 'tra', 'svi', 'lip', 'srp', 'kol', 'ruj', 'lis', 'stu', 'pro'], - [ - 'siječnja', 'veljače', 'ožujka', 'travnja', 'svibnja', 'lipnja', 'srpnja', 'kolovoza', - 'rujna', 'listopada', 'studenoga', 'prosinca' - ] - ], - [ - ['1.', '2.', '3.', '4.', '5.', '6.', '7.', '8.', '9.', '10.', '11.', '12.'], - ['sij', 'velj', 'ožu', 'tra', 'svi', 'lip', 'srp', 'kol', 'ruj', 'lis', 'stu', 'pro'], - [ - 'siječanj', 'veljača', 'ožujak', 'travanj', 'svibanj', 'lipanj', 'srpanj', 'kolovoz', 'rujan', - 'listopad', 'studeni', 'prosinac' - ] - ], - [['pr.n.e.', 'AD'], ['pr. Kr.', 'po. Kr.'], ['prije Krista', 'poslije Krista']], - 1, - [6, 0], - ['d. M. yy.', 'd. MMM y.', 'd. MMMM y.', 'EEEE, d. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss (zzzz)'], - ['{1} {0}', u, '{1} \'u\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'BAM', - 'KM', - 'konvertibilna marka', - { - 'AUD': [u, '$'], - 'BAM': ['KM'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XCD': [u, '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural, - [ - [ - ['ponoć', 'podne', 'ujutro', 'popodne', 'navečer', 'noću'], u, - ['ponoć', 'podne', 'ujutro', 'poslije podne', 'navečer', 'noću'] - ], - [['ponoć', 'podne', 'ujutro', 'popodne', 'navečer', 'noću'], u, u], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/hr.js b/packages/common/locales/global/hr.js deleted file mode 100644 index d9e8c4f6be..0000000000 --- a/packages/common/locales/global/hr.js +++ /dev/null @@ -1,105 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14) || - f % 10 === Math.floor(f % 10) && f % 10 >= 2 && f % 10 <= 4 && - !(f % 100 >= 12 && f % 100 <= 14)) - return 3; - return 5; -} -global.ng.common.locales['hr'] = [ - 'hr', - [['AM', 'PM'], u, u], - u, - [ - ['N', 'P', 'U', 'S', 'Č', 'P', 'S'], ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'], - ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'] - ], - [ - ['n', 'p', 'u', 's', 'č', 'p', 's'], ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'], - ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'] - ], - [ - ['1.', '2.', '3.', '4.', '5.', '6.', '7.', '8.', '9.', '10.', '11.', '12.'], - ['sij', 'velj', 'ožu', 'tra', 'svi', 'lip', 'srp', 'kol', 'ruj', 'lis', 'stu', 'pro'], - [ - 'siječnja', 'veljače', 'ožujka', 'travnja', 'svibnja', 'lipnja', 'srpnja', 'kolovoza', - 'rujna', 'listopada', 'studenoga', 'prosinca' - ] - ], - [ - ['1.', '2.', '3.', '4.', '5.', '6.', '7.', '8.', '9.', '10.', '11.', '12.'], - ['sij', 'velj', 'ožu', 'tra', 'svi', 'lip', 'srp', 'kol', 'ruj', 'lis', 'stu', 'pro'], - [ - 'siječanj', 'veljača', 'ožujak', 'travanj', 'svibanj', 'lipanj', 'srpanj', 'kolovoz', 'rujan', - 'listopad', 'studeni', 'prosinac' - ] - ], - [['pr.n.e.', 'AD'], ['pr. Kr.', 'po. Kr.'], ['prije Krista', 'poslije Krista']], - 1, - [6, 0], - ['dd. MM. y.', 'd. MMM y.', 'd. MMMM y.', 'EEEE, d. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss (zzzz)'], - ['{1} {0}', u, '{1} \'u\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'HRK', - 'HRK', - 'hrvatska kuna', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XCD': [u, '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural, - [ - [ - ['ponoć', 'podne', 'ujutro', 'popodne', 'navečer', 'noću'], u, - ['ponoć', 'podne', 'ujutro', 'poslije podne', 'navečer', 'noću'] - ], - [['ponoć', 'podne', 'ujutro', 'popodne', 'navečer', 'noću'], u, u], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/hsb.js b/packages/common/locales/global/hsb.js deleted file mode 100644 index fbfe4b83bf..0000000000 --- a/packages/common/locales/global/hsb.js +++ /dev/null @@ -1,72 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 100 === 1 || f % 100 === 1) return 1; - if (v === 0 && i % 100 === 2 || f % 100 === 2) return 2; - if (v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 3 && i % 100 <= 4 || - f % 100 === Math.floor(f % 100) && f % 100 >= 3 && f % 100 <= 4) - return 3; - return 5; -} -global.ng.common.locales['hsb'] = [ - 'hsb', - [['dop.', 'pop.'], ['dopołdnja', 'popołdnju'], u], - [['dopołdnja', 'popołdnju'], u, u], - [ - ['n', 'p', 'w', 's', 'š', 'p', 's'], ['nje', 'pón', 'wut', 'srj', 'štw', 'pja', 'sob'], - ['njedźela', 'póndźela', 'wutora', 'srjeda', 'štwórtk', 'pjatk', 'sobota'], - ['nj', 'pó', 'wu', 'sr', 'št', 'pj', 'so'] - ], - u, - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - [ - 'jan.', 'feb.', 'měr.', 'apr.', 'mej.', 'jun.', 'jul.', 'awg.', 'sep.', 'okt.', 'now.', 'dec.' - ], - [ - 'januara', 'februara', 'měrca', 'apryla', 'meje', 'junija', 'julija', 'awgusta', 'septembra', - 'oktobra', 'nowembra', 'decembra' - ] - ], - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'měr', 'apr', 'mej', 'jun', 'jul', 'awg', 'sep', 'okt', 'now', 'dec'], - [ - 'januar', 'februar', 'měrc', 'apryl', 'meja', 'junij', 'julij', 'awgust', 'september', - 'oktober', 'nowember', 'december' - ] - ], - [['př.Chr.n.', 'po Chr.n.'], u, ['před Chrystowym narodźenjom', 'po Chrystowym narodźenju']], - 1, - [6, 0], - ['d.M.yy', 'd.M.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['H:mm \'hodź\'.', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - {'AUD': [u, '$'], 'PLN': ['zł'], 'THB': ['฿']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/hu.js b/packages/common/locales/global/hu.js deleted file mode 100644 index f082409ca3..0000000000 --- a/packages/common/locales/global/hu.js +++ /dev/null @@ -1,88 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['hu'] = [ - 'hu', - [['de.', 'du.'], u, u], - u, - [ - ['V', 'H', 'K', 'Sz', 'Cs', 'P', 'Sz'], ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'], - ['vasárnap', 'hétfő', 'kedd', 'szerda', 'csütörtök', 'péntek', 'szombat'], - ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'] - ], - u, - [ - ['J', 'F', 'M', 'Á', 'M', 'J', 'J', 'A', 'Sz', 'O', 'N', 'D'], - [ - 'jan.', 'febr.', 'márc.', 'ápr.', 'máj.', 'jún.', 'júl.', 'aug.', 'szept.', 'okt.', 'nov.', - 'dec.' - ], - [ - 'január', 'február', 'március', 'április', 'május', 'június', 'július', 'augusztus', - 'szeptember', 'október', 'november', 'december' - ] - ], - u, - [['ie.', 'isz.'], ['i. e.', 'i. sz.'], ['Krisztus előtt', 'időszámításunk szerint']], - 1, - [6, 0], - ['y. MM. dd.', 'y. MMM d.', 'y. MMMM d.', 'y. MMMM d., EEEE'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'HUF', - 'Ft', - 'magyar forint', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'HUF': ['Ft'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XCD': [u, '$'] - }, - 'ltr', - plural, - [ - [ - ['éjfél', 'dél', 'reggel', 'de.', 'du.', 'este', 'éjjel', 'hajnal'], u, - ['éjfél', 'dél', 'reggel', 'délelőtt', 'délután', 'este', 'éjjel', 'hajnal'] - ], - u, - [ - '00:00', '12:00', ['06:00', '09:00'], ['09:00', '12:00'], ['12:00', '18:00'], - ['18:00', '21:00'], ['21:00', '04:00'], ['04:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/hy.js b/packages/common/locales/global/hy.js deleted file mode 100644 index 51b4d2f5de..0000000000 --- a/packages/common/locales/global/hy.js +++ /dev/null @@ -1,76 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['hy'] = [ - 'hy', - [['ա', 'հ'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['Կ', 'Ե', 'Ե', 'Չ', 'Հ', 'Ո', 'Շ'], ['կիր', 'երկ', 'երք', 'չրք', 'հնգ', 'ուր', 'շբթ'], - ['կիրակի', 'երկուշաբթի', 'երեքշաբթի', 'չորեքշաբթի', 'հինգշաբթի', 'ուրբաթ', 'շաբաթ'], - ['կր', 'եկ', 'եք', 'չք', 'հգ', 'ու', 'շբ'] - ], - u, - [ - ['Հ', 'Փ', 'Մ', 'Ա', 'Մ', 'Հ', 'Հ', 'Օ', 'Ս', 'Հ', 'Ն', 'Դ'], - ['հնվ', 'փտվ', 'մրտ', 'ապր', 'մյս', 'հնս', 'հլս', 'օգս', 'սեպ', 'հոկ', 'նոյ', 'դեկ'], - [ - 'հունվարի', 'փետրվարի', 'մարտի', 'ապրիլի', 'մայիսի', 'հունիսի', 'հուլիսի', 'օգոստոսի', - 'սեպտեմբերի', 'հոկտեմբերի', 'նոյեմբերի', 'դեկտեմբերի' - ] - ], - [ - ['Հ', 'Փ', 'Մ', 'Ա', 'Մ', 'Հ', 'Հ', 'Օ', 'Ս', 'Հ', 'Ն', 'Դ'], - ['հնվ', 'փտվ', 'մրտ', 'ապր', 'մյս', 'հնս', 'հլս', 'օգս', 'սեպ', 'հոկ', 'նոյ', 'դեկ'], - [ - 'հունվար', 'փետրվար', 'մարտ', 'ապրիլ', 'մայիս', 'հունիս', 'հուլիս', 'օգոստոս', 'սեպտեմբեր', - 'հոկտեմբեր', 'նոյեմբեր', 'դեկտեմբեր' - ] - ], - [['մ.թ.ա.', 'մ.թ.'], u, ['Քրիստոսից առաջ', 'Քրիստոսից հետո']], - 1, - [6, 0], - ['dd.MM.yy', 'dd MMM, y թ.', 'dd MMMM, y թ.', 'y թ. MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'ՈչԹ', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'AMD', - '֏', - 'հայկական դրամ', - {'AMD': ['֏'], 'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural, - [ - [ - ['կգ․', 'կօ․', 'առվ', 'ցրկ', 'երկ', 'գշր'], - ['կեսգիշեր', 'կեսօր', 'առավոտյան', 'ցերեկը', 'երեկոյան', 'գիշերը'], - ['կեսգիշերին', 'կեսօրին', 'առավոտյան', 'ցերեկվա', 'երեկոյան', 'գիշերվա'] - ], - [['կեսգիշեր', 'կեսօր', 'առավոտ', 'ցերեկ', 'երեկո', 'գիշեր'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ia.js b/packages/common/locales/global/ia.js deleted file mode 100644 index 42fd9cf056..0000000000 --- a/packages/common/locales/global/ia.js +++ /dev/null @@ -1,63 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['ia'] = [ - 'ia', - [['AM', 'PM'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom', 'lun', 'mar', 'mer', 'jov', 'ven', 'sab'], - ['dominica', 'lunedi', 'martedi', 'mercuridi', 'jovedi', 'venerdi', 'sabbato'], - ['do', 'lu', 'ma', 'me', 'jo', 've', 'sa'] - ], - u, - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'], - [ - 'januario', 'februario', 'martio', 'april', 'maio', 'junio', 'julio', 'augusto', 'septembre', - 'octobre', 'novembre', 'decembre' - ] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'], - [ - 'januario', 'februario', 'martio', 'april', 'maio', 'junio', 'julio', 'augusto', 'septembre', - 'octobre', 'novembre', 'decembre' - ] - ], - [['a.Chr.', 'p.Chr.'], u, ['ante Christo', 'post Christo']], - 1, - [6, 0], - ['dd-MM-y', 'd MMM y', 'd \'de\' MMMM y', 'EEEE \'le\' d \'de\' MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - u, - u, - u, - {'JPY': ['JP¥', '¥'], 'NLG': ['ƒ'], 'RUB': ['₽'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/id.js b/packages/common/locales/global/id.js deleted file mode 100644 index c15dba00bc..0000000000 --- a/packages/common/locales/global/id.js +++ /dev/null @@ -1,71 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['id'] = [ - 'id', - [['AM', 'PM'], u, u], - u, - [ - ['M', 'S', 'S', 'R', 'K', 'J', 'S'], ['Min', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab'], - ['Minggu', 'Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu'], - ['Min', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Agu', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', - 'Oktober', 'November', 'Desember' - ] - ], - u, - [['SM', 'M'], u, ['Sebelum Masehi', 'Masehi']], - 0, - [6, 0], - ['dd/MM/yy', 'd MMM y', 'd MMMM y', 'EEEE, dd MMMM y'], - ['HH.mm', 'HH.mm.ss', 'HH.mm.ss z', 'HH.mm.ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', '.'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'IDR', - 'Rp', - 'Rupiah Indonesia', - { - 'AUD': ['AU$', '$'], - 'IDR': ['Rp'], - 'INR': ['Rs', '₹'], - 'JPY': ['JP¥', '¥'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural, - [ - [['tengah malam', 'tengah hari', 'pagi', 'siang', 'sore', 'malam'], u, u], u, - [ - '00:00', '12:00', ['00:00', '10:00'], ['10:00', '15:00'], ['15:00', '18:00'], - ['18:00', '24:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ig.js b/packages/common/locales/global/ig.js deleted file mode 100644 index 6ee0ff4062..0000000000 --- a/packages/common/locales/global/ig.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['ig'] = [ - 'ig', - [['A.M.', 'P.M.'], u, ['N’ụtụtụ', 'N’abali']], - [['A.M.', 'P.M.'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Ụka', 'Mọn', 'Tiu', 'Wen', 'Tọọ', 'Fraị', 'Sat'], - ['Sọndee', 'Mọnde', 'Tiuzdee', 'Wenezdee', 'Tọọzdee', 'Fraịdee', 'Satọdee'], - ['Sọn', 'Mọn', 'Tiu', 'Wen', 'Tọọ', 'Fraị', 'Sat'] - ], - u, - [ - ['J', 'F', 'M', 'E', 'M', 'J', 'J', 'Ọ', 'S', 'Ọ', 'N', 'D'], - ['Jen', 'Feb', 'Maa', 'Epr', 'Mee', 'Juu', 'Jul', 'Ọgọ', 'Sep', 'Ọkt', 'Nov', 'Dis'], - [ - 'Jenụwarị', 'Febrụwarị', 'Maachị', 'Epreel', 'Mee', 'Juun', 'Julaị', 'Ọgọọst', 'Septemba', - 'Ọktoba', 'Novemba', 'Disemba' - ] - ], - u, - [['T.K.', 'A.K.'], u, ['Tupu Kraist', 'Afọ Kraịst']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'na\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'NGN', - '₦', - 'Naịra', - {'NGN': ['₦']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ii.js b/packages/common/locales/global/ii.js deleted file mode 100644 index abdf5fdc51..0000000000 --- a/packages/common/locales/global/ii.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['ii'] = [ - 'ii', - [['ꎸꄑ', 'ꁯꋒ'], u, u], - u, - [ - ['ꆏ', 'ꋍ', 'ꑍ', 'ꌕ', 'ꇖ', 'ꉬ', 'ꃘ'], - ['ꑭꆏ', 'ꆏꋍ', 'ꆏꑍ', 'ꆏꌕ', 'ꆏꇖ', 'ꆏꉬ', 'ꆏꃘ'], - ['ꑭꆏꑍ', 'ꆏꊂꋍ', 'ꆏꊂꑍ', 'ꆏꊂꌕ', 'ꆏꊂꇖ', 'ꆏꊂꉬ', 'ꆏꊂꃘ'], - ['ꑭꆏ', 'ꆏꋍ', 'ꆏꑍ', 'ꆏꌕ', 'ꆏꇖ', 'ꆏꉬ', 'ꆏꃘ'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'ꋍꆪ', 'ꑍꆪ', 'ꌕꆪ', 'ꇖꆪ', 'ꉬꆪ', 'ꃘꆪ', 'ꏃꆪ', 'ꉆꆪ', 'ꈬꆪ', 'ꊰꆪ', 'ꊰꊪꆪ', - 'ꊰꑋꆪ' - ], - u - ], - u, - [['ꃅꋊꂿ', 'ꃅꋊꊂ'], u, u], - 0, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'CNY', - '¥', - 'CNY', - {'CNY': ['¥'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/is.js b/packages/common/locales/global/is.js deleted file mode 100644 index 85aba7d5f9..0000000000 --- a/packages/common/locales/global/is.js +++ /dev/null @@ -1,90 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), - t = parseInt(n.toString().replace(/^[^.]*\.?|0+$/g, ''), 10) || 0; - if (t === 0 && i % 10 === 1 && !(i % 100 === 11) || !(t === 0)) return 1; - return 5; -} -global.ng.common.locales['is'] = [ - 'is', - [['f.', 'e.'], ['f.h.', 'e.h.'], u], - [['f.h.', 'e.h.'], u, u], - [ - ['S', 'M', 'Þ', 'M', 'F', 'F', 'L'], ['sun.', 'mán.', 'þri.', 'mið.', 'fim.', 'fös.', 'lau.'], - [ - 'sunnudagur', 'mánudagur', 'þriðjudagur', 'miðvikudagur', 'fimmtudagur', 'föstudagur', - 'laugardagur' - ], - ['su.', 'má.', 'þr.', 'mi.', 'fi.', 'fö.', 'la.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'Á', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mar.', 'apr.', 'maí', 'jún.', 'júl.', 'ágú.', 'sep.', 'okt.', 'nóv.', 'des.'], - [ - 'janúar', 'febrúar', 'mars', 'apríl', 'maí', 'júní', 'júlí', 'ágúst', 'september', 'október', - 'nóvember', 'desember' - ] - ], - u, - [['f.k.', 'e.k.'], ['f.Kr.', 'e.Kr.'], ['fyrir Krist', 'eftir Krist']], - 1, - [6, 0], - ['d.M.y', 'd. MMM y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'kl\'. {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'ISK', - 'ISK', - 'íslensk króna', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'INR': [u, '₹'], - 'JPY': ['JP¥', '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural, - [ - [ - ['mn.', 'h.', 'mrg.', 'sd.', 'kv.', 'n.'], - ['miðnætti', 'hádegi', 'að morgni', 'síðdegis', 'að kvöldi', 'að nóttu'], u - ], - [ - ['mn.', 'hd.', 'mrg.', 'sd.', 'kv.', 'n.'], - ['miðnætti', 'hádegi', 'morgunn', 'síðdegis', 'kvöld', 'nótt'], - ['miðnætti', 'hádegi', 'morgunn', 'eftir hádegi', 'kvöld', 'nótt'] - ], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/it-CH.js b/packages/common/locales/global/it-CH.js deleted file mode 100644 index 3c60f075be..0000000000 --- a/packages/common/locales/global/it-CH.js +++ /dev/null @@ -1,80 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['it-ch'] = [ - 'it-CH', - [['m.', 'p.'], ['AM', 'PM'], u], - u, - [ - ['D', 'L', 'M', 'M', 'G', 'V', 'S'], ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'], - ['domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato'], - ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'] - ], - u, - [ - ['G', 'F', 'M', 'A', 'M', 'G', 'L', 'A', 'S', 'O', 'N', 'D'], - ['gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago', 'set', 'ott', 'nov', 'dic'], - [ - 'gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', - 'ottobre', 'novembre', 'dicembre' - ] - ], - u, - [['aC', 'dC'], ['a.C.', 'd.C.'], ['avanti Cristo', 'dopo Cristo']], - 1, - [6, 0], - ['dd.MM.yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - ['.', '’', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤-#,##0.00', '#E0'], - 'CHF', - 'CHF', - 'franco svizzero', - { - 'BRL': [u, 'R$'], - 'BYN': [u, 'Br'], - 'EGP': [u, '£E'], - 'HKD': [u, '$'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NOK': [u, 'NKr'], - 'THB': ['฿'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'] - }, - 'ltr', - plural, - [ - [ - ['mezzanotte', 'mezzogiorno', 'di mattina', 'di pomeriggio', 'di sera', 'di notte'], u, - ['mezzanotte', 'mezzogiorno', 'di mattina', 'del pomeriggio', 'di sera', 'di notte'] - ], - [['mezzanotte', 'mezzogiorno', 'mattina', 'pomeriggio', 'sera', 'notte'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/it-SM.js b/packages/common/locales/global/it-SM.js deleted file mode 100644 index 397ce89f25..0000000000 --- a/packages/common/locales/global/it-SM.js +++ /dev/null @@ -1,80 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['it-sm'] = [ - 'it-SM', - [['m.', 'p.'], ['AM', 'PM'], u], - u, - [ - ['D', 'L', 'M', 'M', 'G', 'V', 'S'], ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'], - ['domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato'], - ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'] - ], - u, - [ - ['G', 'F', 'M', 'A', 'M', 'G', 'L', 'A', 'S', 'O', 'N', 'D'], - ['gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago', 'set', 'ott', 'nov', 'dic'], - [ - 'gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', - 'ottobre', 'novembre', 'dicembre' - ] - ], - u, - [['aC', 'dC'], ['a.C.', 'd.C.'], ['avanti Cristo', 'dopo Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'BRL': [u, 'R$'], - 'BYN': [u, 'Br'], - 'EGP': [u, '£E'], - 'HKD': [u, '$'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NOK': [u, 'NKr'], - 'THB': ['฿'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'] - }, - 'ltr', - plural, - [ - [ - ['mezzanotte', 'mezzogiorno', 'di mattina', 'di pomeriggio', 'di sera', 'di notte'], u, - ['mezzanotte', 'mezzogiorno', 'di mattina', 'del pomeriggio', 'di sera', 'di notte'] - ], - [['mezzanotte', 'mezzogiorno', 'mattina', 'pomeriggio', 'sera', 'notte'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/it-VA.js b/packages/common/locales/global/it-VA.js deleted file mode 100644 index 49ef312b36..0000000000 --- a/packages/common/locales/global/it-VA.js +++ /dev/null @@ -1,80 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['it-va'] = [ - 'it-VA', - [['m.', 'p.'], ['AM', 'PM'], u], - u, - [ - ['D', 'L', 'M', 'M', 'G', 'V', 'S'], ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'], - ['domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato'], - ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'] - ], - u, - [ - ['G', 'F', 'M', 'A', 'M', 'G', 'L', 'A', 'S', 'O', 'N', 'D'], - ['gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago', 'set', 'ott', 'nov', 'dic'], - [ - 'gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', - 'ottobre', 'novembre', 'dicembre' - ] - ], - u, - [['aC', 'dC'], ['a.C.', 'd.C.'], ['avanti Cristo', 'dopo Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'BRL': [u, 'R$'], - 'BYN': [u, 'Br'], - 'EGP': [u, '£E'], - 'HKD': [u, '$'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NOK': [u, 'NKr'], - 'THB': ['฿'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'] - }, - 'ltr', - plural, - [ - [ - ['mezzanotte', 'mezzogiorno', 'di mattina', 'di pomeriggio', 'di sera', 'di notte'], u, - ['mezzanotte', 'mezzogiorno', 'di mattina', 'del pomeriggio', 'di sera', 'di notte'] - ], - [['mezzanotte', 'mezzogiorno', 'mattina', 'pomeriggio', 'sera', 'notte'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/it.js b/packages/common/locales/global/it.js deleted file mode 100644 index 61495d3396..0000000000 --- a/packages/common/locales/global/it.js +++ /dev/null @@ -1,80 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['it'] = [ - 'it', - [['m.', 'p.'], ['AM', 'PM'], u], - u, - [ - ['D', 'L', 'M', 'M', 'G', 'V', 'S'], ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'], - ['domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato'], - ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'] - ], - u, - [ - ['G', 'F', 'M', 'A', 'M', 'G', 'L', 'A', 'S', 'O', 'N', 'D'], - ['gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago', 'set', 'ott', 'nov', 'dic'], - [ - 'gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', - 'ottobre', 'novembre', 'dicembre' - ] - ], - u, - [['aC', 'dC'], ['a.C.', 'd.C.'], ['avanti Cristo', 'dopo Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'BRL': [u, 'R$'], - 'BYN': [u, 'Br'], - 'EGP': [u, '£E'], - 'HKD': [u, '$'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NOK': [u, 'NKr'], - 'THB': ['฿'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'] - }, - 'ltr', - plural, - [ - [ - ['mezzanotte', 'mezzogiorno', 'di mattina', 'di pomeriggio', 'di sera', 'di notte'], u, - ['mezzanotte', 'mezzogiorno', 'di mattina', 'del pomeriggio', 'di sera', 'di notte'] - ], - [['mezzanotte', 'mezzogiorno', 'mattina', 'pomeriggio', 'sera', 'notte'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ja.js b/packages/common/locales/global/ja.js deleted file mode 100644 index 9df819e44d..0000000000 --- a/packages/common/locales/global/ja.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['ja'] = [ - 'ja', - [['午前', '午後'], u, u], - u, - [ - ['日', '月', '火', '水', '木', '金', '土'], u, - ['日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日'], - ['日', '月', '火', '水', '木', '金', '土'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], u - ], - u, - [['BC', 'AD'], ['紀元前', '西暦'], u], - 0, - [6, 0], - ['y/MM/dd', u, 'y年M月d日', 'y年M月d日EEEE'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H時mm分ss秒 zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'JPY', - '¥', - '日本円', - {'CNY': ['元', '¥'], 'JPY': ['¥'], 'RON': [u, 'レイ'], 'XXX': []}, - 'ltr', - plural, - [ - [['真夜中', '正午', '朝', '昼', '夕方', '夜', '夜中'], u, u], u, - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '16:00'], ['16:00', '19:00'], - ['19:00', '23:00'], ['23:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/jgo.js b/packages/common/locales/global/jgo.js deleted file mode 100644 index 81e1045088..0000000000 --- a/packages/common/locales/global/jgo.js +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['jgo'] = [ - 'jgo', - [['mbaꞌmbaꞌ', 'ŋka mbɔ́t nji'], u, u], - u, - [ - ['Sɔ́', 'Mɔ́', 'ÁM', 'Wɛ́', 'Tɔ́', 'Fɛ', 'Sá'], - ['Sɔ́ndi', 'Mɔ́ndi', 'Ápta Mɔ́ndi', 'Wɛ́nɛsɛdɛ', 'Tɔ́sɛdɛ', 'Fɛlâyɛdɛ', 'Sásidɛ'], u, u - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'Nduŋmbi Saŋ', 'Pɛsaŋ Pɛ́pá', 'Pɛsaŋ Pɛ́tát', 'Pɛsaŋ Pɛ́nɛ́kwa', 'Pɛsaŋ Pataa', 'Pɛsaŋ Pɛ́nɛ́ntúkú', - 'Pɛsaŋ Saambá', 'Pɛsaŋ Pɛ́nɛ́fɔm', 'Pɛsaŋ Pɛ́nɛ́pfúꞋú', 'Pɛsaŋ Nɛgɛ́m', 'Pɛsaŋ Ntsɔ̌pmɔ́', - 'Pɛsaŋ Ntsɔ̌ppá' - ], - u - ], - u, - [ - ['BCE', 'CE'], u, - ['tsɛttsɛt mɛŋguꞌ mi ɛ́ lɛɛnɛ Kɛlísɛtɔ gɔ ńɔ́', 'tsɛttsɛt mɛŋguꞌ mi ɛ́ fúnɛ Kɛlísɛtɔ tɔ́ mɔ́'] - ], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'EEEE, y MMMM dd'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'XAF', - 'FCFA', - 'Fɛlâŋ', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/jmc.js b/packages/common/locales/global/jmc.js deleted file mode 100644 index b0cea953c0..0000000000 --- a/packages/common/locales/global/jmc.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['jmc'] = [ - 'jmc', - [['utuko', 'kyiukonyi'], u, u], - u, - [ - ['J', 'J', 'J', 'J', 'A', 'I', 'J'], ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - ['Jumapilyi', 'Jumatatuu', 'Jumanne', 'Jumatanu', 'Alhamisi', 'Ijumaa', 'Jumamosi'], - ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januari', 'Februari', 'Machi', 'Aprilyi', 'Mei', 'Junyi', 'Julyai', 'Agusti', 'Septemba', - 'Oktoba', 'Novemba', 'Desemba' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Kristu', 'Baada ya Kristu']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'TZS', - 'TSh', - 'Shilingi ya Tanzania', - {'JPY': ['JP¥', '¥'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/jv.js b/packages/common/locales/global/jv.js deleted file mode 100644 index 1fb4c1ca12..0000000000 --- a/packages/common/locales/global/jv.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['jv'] = [ - 'jv', - [['Isuk', 'Wengi'], u, u], - u, - [ - ['A', 'S', 'S', 'R', 'K', 'J', 'S'], ['Ahad', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab'], - ['Ahad', 'Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu'], - ['Ahad', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Agt', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', - 'Oktober', 'November', 'Desember' - ] - ], - u, - [['SM', 'M'], u, ['Sakdurunge Masehi', 'Masehi']], - 0, - [6, 0], - ['dd-MM-y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'IDR', - 'Rp', - 'Rupiah Indonesia', - {'IDR': ['Rp'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ka.js b/packages/common/locales/global/ka.js deleted file mode 100644 index 69c97f7c71..0000000000 --- a/packages/common/locales/global/ka.js +++ /dev/null @@ -1,80 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ka'] = [ - 'ka', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['კ', 'ო', 'ს', 'ო', 'ხ', 'პ', 'შ'], ['კვი', 'ორშ', 'სამ', 'ოთხ', 'ხუთ', 'პარ', 'შაბ'], - ['კვირა', 'ორშაბათი', 'სამშაბათი', 'ოთხშაბათი', 'ხუთშაბათი', 'პარასკევი', 'შაბათი'], - ['კვ', 'ორ', 'სმ', 'ოთ', 'ხთ', 'პრ', 'შბ'] - ], - u, - [ - ['ი', 'თ', 'მ', 'ა', 'მ', 'ი', 'ი', 'ა', 'ს', 'ო', 'ნ', 'დ'], - ['იან', 'თებ', 'მარ', 'აპრ', 'მაი', 'ივნ', 'ივლ', 'აგვ', 'სექ', 'ოქტ', 'ნოე', 'დეკ'], - [ - 'იანვარი', 'თებერვალი', 'მარტი', 'აპრილი', 'მაისი', 'ივნისი', 'ივლისი', 'აგვისტო', - 'სექტემბერი', 'ოქტომბერი', 'ნოემბერი', 'დეკემბერი' - ] - ], - u, - [['ძვ. წ.', 'ახ. წ.'], u, ['ძველი წელთაღრიცხვით', 'ახალი წელთაღრიცხვით']], - 1, - [6, 0], - ['dd.MM.yy', 'd MMM. y', 'd MMMM, y', 'EEEE, dd MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'არ არის რიცხვი', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'GEL', - '₾', - 'ქართული ლარი', - { - 'AUD': [u, '$'], - 'CNY': [u, '¥'], - 'GEL': ['₾'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural, - [ - [ - ['შუაღამეს', 'შუადღ.', 'დილ.', 'ნაშუადღ.', 'საღ.', 'ღამ.'], u, - ['შუაღამეს', 'შუადღეს', 'დილით', 'ნაშუადღევს', 'საღამოს', 'ღამით'] - ], - [['შუაღამე', 'შუადღე', 'დილა', 'ნაშუადღევი', 'საღამო', 'ღამე'], u, u], - [ - '00:00', '12:00', ['05:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/kab.js b/packages/common/locales/global/kab.js deleted file mode 100644 index 884dfb8c21..0000000000 --- a/packages/common/locales/global/kab.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} -global.ng.common.locales['kab'] = [ - 'kab', - [['n tufat', 'n tmeddit'], u, u], - u, - [ - ['Y', 'S', 'K', 'K', 'S', 'S', 'S'], ['Yan', 'San', 'Kraḍ', 'Kuẓ', 'Sam', 'Sḍis', 'Say'], - ['Yanass', 'Sanass', 'Kraḍass', 'Kuẓass', 'Samass', 'Sḍisass', 'Sayass'], - ['Yan', 'San', 'Kraḍ', 'Kuẓ', 'Sam', 'Sḍis', 'Say'] - ], - u, - [ - ['Y', 'F', 'M', 'Y', 'M', 'Y', 'Y', 'Ɣ', 'C', 'T', 'N', 'D'], - ['Yen', 'Fur', 'Meɣ', 'Yeb', 'May', 'Yun', 'Yul', 'Ɣuc', 'Cte', 'Tub', 'Nun', 'Duǧ'], - [ - 'Yennayer', 'Fuṛar', 'Meɣres', 'Yebrir', 'Mayyu', 'Yunyu', 'Yulyu', 'Ɣuct', 'Ctembeṛ', - 'Tubeṛ', 'Nunembeṛ', 'Duǧembeṛ' - ] - ], - u, - [['snd. T.Ɛ', 'sld. T.Ɛ'], u, ['send talalit n Ɛisa', 'seld talalit n Ɛisa']], - 6, - [5, 6], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'DZD', - 'DA', - 'Adinar Azzayri', - {'DZD': ['DA'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/kam.js b/packages/common/locales/global/kam.js deleted file mode 100644 index f399f38262..0000000000 --- a/packages/common/locales/global/kam.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['kam'] = [ - 'kam', - [['Ĩyakwakya', 'Ĩyawĩoo'], u, u], - u, - [ - ['Y', 'W', 'E', 'A', 'A', 'A', 'A'], ['Wky', 'Wkw', 'Wkl', 'Wtũ', 'Wkn', 'Wtn', 'Wth'], - ['Wa kyumwa', 'Wa kwambĩlĩlya', 'Wa kelĩ', 'Wa katatũ', 'Wa kana', 'Wa katano', 'Wa thanthatũ'], - ['Wky', 'Wkw', 'Wkl', 'Wtũ', 'Wkn', 'Wtn', 'Wth'] - ], - u, - [ - ['M', 'K', 'K', 'K', 'K', 'T', 'M', 'N', 'K', 'Ĩ', 'Ĩ', 'Ĩ'], - ['Mbe', 'Kel', 'Ktũ', 'Kan', 'Ktn', 'Tha', 'Moo', 'Nya', 'Knd', 'Ĩku', 'Ĩkm', 'Ĩkl'], - [ - 'Mwai wa mbee', 'Mwai wa kelĩ', 'Mwai wa katatũ', 'Mwai wa kana', 'Mwai wa katano', - 'Mwai wa thanthatũ', 'Mwai wa muonza', 'Mwai wa nyaanya', 'Mwai wa kenda', 'Mwai wa ĩkumi', - 'Mwai wa ĩkumi na ĩmwe', 'Mwai wa ĩkumi na ilĩ' - ] - ], - u, - [['MY', 'IY'], u, ['Mbee wa Yesũ', 'Ĩtina wa Yesũ']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Silingi ya Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/kde.js b/packages/common/locales/global/kde.js deleted file mode 100644 index 1ac25e715c..0000000000 --- a/packages/common/locales/global/kde.js +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['kde'] = [ - 'kde', - [['Muhi', 'Chilo'], u, u], - u, - [ - ['2', '3', '4', '5', '6', '7', '1'], ['Ll2', 'Ll3', 'Ll4', 'Ll5', 'Ll6', 'Ll7', 'Ll1'], - [ - 'Liduva lyapili', 'Liduva lyatatu', 'Liduva lyanchechi', 'Liduva lyannyano', - 'Liduva lyannyano na linji', 'Liduva lyannyano na mavili', 'Liduva litandi' - ], - ['Ll2', 'Ll3', 'Ll4', 'Ll5', 'Ll6', 'Ll7', 'Ll1'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Mwedi Ntandi', 'Mwedi wa Pili', 'Mwedi wa Tatu', 'Mwedi wa Nchechi', 'Mwedi wa Nnyano', - 'Mwedi wa Nnyano na Umo', 'Mwedi wa Nnyano na Mivili', 'Mwedi wa Nnyano na Mitatu', - 'Mwedi wa Nnyano na Nchechi', 'Mwedi wa Nnyano na Nnyano', 'Mwedi wa Nnyano na Nnyano na U', - 'Mwedi wa Nnyano na Nnyano na M' - ] - ], - u, - [['AY', 'NY'], u, ['Akanapawa Yesu', 'Nankuida Yesu']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'TZS', - 'TSh', - 'Shilingi ya Tanzania', - {'JPY': ['JP¥', '¥'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/kea.js b/packages/common/locales/global/kea.js deleted file mode 100644 index 079f1b45e5..0000000000 --- a/packages/common/locales/global/kea.js +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['kea'] = [ - 'kea', - [['am', 'pm'], u, u], - u, - [ - ['D', 'S', 'T', 'K', 'K', 'S', 'S'], ['dum', 'sig', 'ter', 'kua', 'kin', 'ses', 'sab'], - ['dumingu', 'sigunda-fera', 'tersa-fera', 'kuarta-fera', 'kinta-fera', 'sesta-fera', 'sabadu'], - ['du', 'si', 'te', 'ku', 'ki', 'se', 'sa'] - ], - [ - ['D', 'S', 'T', 'K', 'K', 'S', 'S'], ['dum', 'sig', 'ter', 'kua', 'kin', 'ses', 'sab'], - ['dumingu', 'sigunda-fera', 'tersa-fera', 'kuarta-fera', 'kinta-fera', 'sesta-fera', 'sábadu'], - ['du', 'si', 'te', 'ku', 'ki', 'se', 'sa'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Otu', 'Nuv', 'Diz'], - [ - 'Janeru', 'Febreru', 'Marsu', 'Abril', 'Maiu', 'Junhu', 'Julhu', 'Agostu', 'Setenbru', - 'Otubru', 'Nuvenbru', 'Dizenbru' - ] - ], - u, - [['AK', 'DK'], u, ['antis di Kristu', 'dispos di Kristu']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd \'di\' MMMM \'di\' y', 'EEEE, d \'di\' MMMM \'di\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'CVE', - '​', - 'Skudu Kabuverdianu', - {'AUD': ['AU$', '$'], 'CVE': ['​'], 'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/khq.js b/packages/common/locales/global/khq.js deleted file mode 100644 index 9100aea74a..0000000000 --- a/packages/common/locales/global/khq.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['khq'] = [ - 'khq', - [['Adduha', 'Aluula'], u, u], - u, - [ - ['H', 'T', 'T', 'L', 'L', 'L', 'S'], ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alj', 'Ass'], - ['Alhadi', 'Atini', 'Atalata', 'Alarba', 'Alhamiisa', 'Aljuma', 'Assabdu'], - ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alj', 'Ass'] - ], - u, - [ - ['Ž', 'F', 'M', 'A', 'M', 'Ž', 'Ž', 'U', 'S', 'O', 'N', 'D'], - ['Žan', 'Fee', 'Mar', 'Awi', 'Me', 'Žuw', 'Žuy', 'Ut', 'Sek', 'Okt', 'Noo', 'Dee'], - [ - 'Žanwiye', 'Feewiriye', 'Marsi', 'Awiril', 'Me', 'Žuweŋ', 'Žuyye', 'Ut', 'Sektanbur', - 'Oktoobur', 'Noowanbur', 'Deesanbur' - ] - ], - u, - [['IJ', 'IZ'], u, ['Isaa jine', 'Isaa jamanoo']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'XOF', - 'CFA', - 'CFA Fraŋ (BCEAO)', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ki.js b/packages/common/locales/global/ki.js deleted file mode 100644 index 5061a45543..0000000000 --- a/packages/common/locales/global/ki.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['ki'] = [ - 'ki', - [['Kiroko', 'Hwaĩ-inĩ'], u, u], - u, - [ - ['K', 'N', 'N', 'N', 'A', 'N', 'N'], ['KMA', 'NTT', 'NMN', 'NMT', 'ART', 'NMA', 'NMM'], - ['Kiumia', 'Njumatatũ', 'Njumaine', 'Njumatana', 'Aramithi', 'Njumaa', 'Njumamothi'], - ['KMA', 'NTT', 'NMN', 'NMT', 'ART', 'NMA', 'NMM'] - ], - u, - [ - ['J', 'K', 'G', 'K', 'G', 'G', 'M', 'K', 'K', 'I', 'I', 'D'], - ['JEN', 'WKR', 'WGT', 'WKN', 'WTN', 'WTD', 'WMJ', 'WNN', 'WKD', 'WIK', 'WMW', 'DIT'], - [ - 'Njenuarĩ', 'Mwere wa kerĩ', 'Mwere wa gatatũ', 'Mwere wa kana', 'Mwere wa gatano', - 'Mwere wa gatandatũ', 'Mwere wa mũgwanja', 'Mwere wa kanana', 'Mwere wa kenda', - 'Mwere wa ikũmi', 'Mwere wa ikũmi na ũmwe', 'Ndithemba' - ] - ], - u, - [['MK', 'TK'], u, ['Mbere ya Kristo', 'Thutha wa Kristo']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Ciringi ya Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/kk.js b/packages/common/locales/global/kk.js deleted file mode 100644 index 9f2ecf2c4d..0000000000 --- a/packages/common/locales/global/kk.js +++ /dev/null @@ -1,78 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['kk'] = [ - 'kk', - [['AM', 'PM'], u, u], - u, - [ - ['Ж', 'Д', 'С', 'С', 'Б', 'Ж', 'С'], ['жс', 'дс', 'сс', 'ср', 'бс', 'жм', 'сб'], - ['жексенбі', 'дүйсенбі', 'сейсенбі', 'сәрсенбі', 'бейсенбі', 'жұма', 'сенбі'], - ['жс', 'дс', 'сс', 'ср', 'бс', 'жм', 'сб'] - ], - u, - [ - ['Қ', 'А', 'Н', 'С', 'М', 'М', 'Ш', 'Т', 'Қ', 'Қ', 'Қ', 'Ж'], - [ - 'қаң.', 'ақп.', 'нау.', 'сәу.', 'мам.', 'мау.', 'шіл.', 'там.', 'қыр.', 'қаз.', 'қар.', 'жел.' - ], - [ - 'қаңтар', 'ақпан', 'наурыз', 'сәуір', 'мамыр', 'маусым', 'шілде', 'тамыз', 'қыркүйек', - 'қазан', 'қараша', 'желтоқсан' - ] - ], - [ - ['Қ', 'А', 'Н', 'С', 'М', 'М', 'Ш', 'Т', 'Қ', 'Қ', 'Қ', 'Ж'], - [ - 'қаң.', 'ақп.', 'нау.', 'сәу.', 'мам.', 'мау.', 'шіл.', 'там.', 'қыр.', 'қаз.', 'қар.', 'жел.' - ], - [ - 'Қаңтар', 'Ақпан', 'Наурыз', 'Сәуір', 'Мамыр', 'Маусым', 'Шілде', 'Тамыз', 'Қыркүйек', - 'Қазан', 'Қараша', 'Желтоқсан' - ] - ], - [['б.з.д.', 'б.з.'], u, ['Біздің заманымызға дейін', 'біздің заманымыз']], - 1, - [6, 0], - ['dd.MM.yy', 'y \'ж\'. dd MMM', 'y \'ж\'. d MMMM', 'y \'ж\'. d MMMM, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'сан емес', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'KZT', - '₸', - 'Қазақстан теңгесі', - {'JPY': ['JP¥', '¥'], 'KZT': ['₸'], 'RUB': ['₽'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural, - [ - [ - ['түнгі', 'түскі', 'таңғы', 'түстен кейінгі', 'кешкі', 'түнгі'], - ['түн жарымы', 'түскі', 'таңғы', 'түстен кейінгі', 'кешкі', 'түнгі'], u - ], - [['түн жарымы', 'талтүс', 'таң', 'түстен кейін', 'кеш', 'түн'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/kkj.js b/packages/common/locales/global/kkj.js deleted file mode 100644 index 078eb3bd80..0000000000 --- a/packages/common/locales/global/kkj.js +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['kkj'] = [ - 'kkj', - [['AM', 'PM'], u, u], - u, - [ - ['so', 'lu', 'ma', 'mɛ', 'ye', 'va', 'ms'], - ['sɔndi', 'lundi', 'mardi', 'mɛrkɛrɛdi', 'yedi', 'vaŋdɛrɛdi', 'mɔnɔ sɔndi'], u, u - ], - [ - ['so', 'lu', 'ma', 'mɛ', 'ye', 'va', 'ms'], - ['sɔndi', 'lundi', 'mardi', 'mɛrkɛrɛdi', 'yedi', 'vaŋdɛrɛdi', 'mɔnɔ sɔndi'], u, - ['so', 'lu', 'ma', 'mɛ', 'ye', 'va', 'ms'] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'pamba', 'wanja', 'mbiyɔ mɛndoŋgɔ', 'Nyɔlɔmbɔŋgɔ', 'Mɔnɔ ŋgbanja', 'Nyaŋgwɛ ŋgbanja', - 'kuŋgwɛ', 'fɛ', 'njapi', 'nyukul', 'M11', 'ɓulɓusɛ' - ], - u - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['dd/MM y', 'd MMM y', 'd MMMM y', 'EEEE dd MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'XAF', - 'FCFA', - 'Franc CFA', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/kl.js b/packages/common/locales/global/kl.js deleted file mode 100644 index c45bd06333..0000000000 --- a/packages/common/locales/global/kl.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['kl'] = [ - 'kl', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['sap', 'ata', 'mar', 'pin', 'sis', 'tal', 'arf'], - [ - 'sapaat', 'ataasinngorneq', 'marlunngorneq', 'pingasunngorneq', 'sisamanngorneq', - 'tallimanngorneq', 'arfininngorneq' - ], - ['sap', 'ata', 'mar', 'pin', 'sis', 'tal', 'arf'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['jan', 'febr', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sept', 'okt', 'nov', 'dec'], - [ - 'januaarip', 'februaarip', 'marsip', 'apriilip', 'maajip', 'juunip', 'juulip', 'aggustip', - 'septembarip', 'oktobarip', 'novembarip', 'decembarip' - ] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['jan', 'febr', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sept', 'okt', 'nov', 'dec'], - [ - 'januaari', 'februaari', 'marsi', 'apriili', 'maaji', 'juuni', 'juuli', 'aggusti', - 'septembari', 'oktobari', 'novembari', 'decembari' - ] - ], - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH.mm', 'HH.mm.ss', 'HH.mm.ss z', 'HH.mm.ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00;¤-#,##0.00', '#E0'], - 'DKK', - 'kr.', - 'DKK', - {'DKK': ['kr.', 'kr'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/kln.js b/packages/common/locales/global/kln.js deleted file mode 100644 index 3650a3aa0b..0000000000 --- a/packages/common/locales/global/kln.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['kln'] = [ - 'kln', - [['krn', 'koosk'], u, ['karoon', 'kooskoliny']], - [['krn', 'koosk'], u, u], - [ - ['T', 'T', 'O', 'S', 'A', 'M', 'L'], ['Kts', 'Kot', 'Koo', 'Kos', 'Koa', 'Kom', 'Kol'], - ['Kotisap', 'Kotaai', 'Koaeng’', 'Kosomok', 'Koang’wan', 'Komuut', 'Kolo'], - ['Kts', 'Kot', 'Koo', 'Kos', 'Koa', 'Kom', 'Kol'] - ], - u, - [ - ['M', 'N', 'T', 'I', 'M', 'P', 'N', 'R', 'B', 'E', 'K', 'K'], - ['Mul', 'Ngat', 'Taa', 'Iwo', 'Mam', 'Paa', 'Nge', 'Roo', 'Bur', 'Epe', 'Kpt', 'Kpa'], - [ - 'Mulgul', 'Ng’atyaato', 'Kiptaamo', 'Iwootkuut', 'Mamuut', 'Paagi', 'Ng’eiyeet', 'Rooptui', - 'Bureet', 'Epeeso', 'Kipsuunde ne taai', 'Kipsuunde nebo aeng’' - ] - ], - u, - [['AM', 'KO'], u, ['Amait kesich Jesu', 'Kokakesich Jesu']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Silingitab ya Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/km.js b/packages/common/locales/global/km.js deleted file mode 100644 index b0f2e8f18d..0000000000 --- a/packages/common/locales/global/km.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['km'] = [ - 'km', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['អ', 'ច', 'អ', 'ព', 'ព', 'ស', 'ស'], ['អាទិត្យ', 'ចន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហ', 'សុក្រ', 'សៅរ៍'], - ['អាទិត្យ', 'ច័ន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហស្បតិ៍', 'សុក្រ', 'សៅរ៍'], ['អា', 'ច', 'អ', 'ពុ', 'ព្រ', 'សុ', 'ស'] - ], - [ - ['អ', 'ច', 'អ', 'ព', 'ព', 'ស', 'ស'], ['អាទិត្យ', 'ចន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហ', 'សុក្រ', 'សៅរ៍'], - ['អាទិត្យ', 'ចន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហស្បតិ៍', 'សុក្រ', 'សៅរ៍'], ['អា', 'ច', 'អ', 'ពុ', 'ព្រ', 'សុ', 'ស'] - ], - [ - ['ម', 'ក', 'ម', 'ម', 'ឧ', 'ម', 'ក', 'ស', 'ក', 'ត', 'វ', 'ធ'], - ['មករា', 'កុម្ភៈ', 'មីនា', 'មេសា', 'ឧសភា', 'មិថុនា', 'កក្កដា', 'សីហា', 'កញ្ញា', 'តុលា', 'វិច្ឆិកា', 'ធ្នូ'], u - ], - u, - [['មុន គ.ស.', 'គ.ស.'], u, ['មុន​គ្រិស្តសករាជ', 'គ្រិស្តសករាជ']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} នៅ​ម៉ោង {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'KHR', - '៛', - 'រៀល​កម្ពុជា', - {'JPY': ['JP¥', '¥'], 'KHR': ['៛'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural, - [ - [ - [ - 'អធ្រាត្រ', 'ថ្ងៃត្រង់', 'នៅពេល​ព្រឹក', 'នៅពេលរសៀល', - 'នៅពេល​ល្ងាច', 'នៅពេល​យប់' - ], - u, u - ], - [['អធ្រាត្រ', 'ថ្ងៃ​ត្រង់', 'ព្រឹក', 'រសៀល', 'ល្ងាច', 'យប់'], u, u], - [ - '00:00', '12:00', ['00:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '24:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/kn.js b/packages/common/locales/global/kn.js deleted file mode 100644 index 203ea6dd2b..0000000000 --- a/packages/common/locales/global/kn.js +++ /dev/null @@ -1,71 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} -global.ng.common.locales['kn'] = [ - 'kn', - [['ಪೂ', 'ಅ'], ['ಪೂರ್ವಾಹ್ನ', 'ಅಪರಾಹ್ನ'], u], - [['ಪೂರ್ವಾಹ್ನ', 'ಅಪರಾಹ್ನ'], u, u], - [ - ['ಭಾ', 'ಸೋ', 'ಮಂ', 'ಬು', 'ಗು', 'ಶು', 'ಶ'], ['ಭಾನು', 'ಸೋಮ', 'ಮಂಗಳ', 'ಬುಧ', 'ಗುರು', 'ಶುಕ್ರ', 'ಶನಿ'], - ['ಭಾನುವಾರ', 'ಸೋಮವಾರ', 'ಮಂಗಳವಾರ', 'ಬುಧವಾರ', 'ಗುರುವಾರ', 'ಶುಕ್ರವಾರ', 'ಶನಿವಾರ'], - ['ಭಾನು', 'ಸೋಮ', 'ಮಂಗಳ', 'ಬುಧ', 'ಗುರು', 'ಶುಕ್ರ', 'ಶನಿ'] - ], - u, - [ - ['ಜ', 'ಫೆ', 'ಮಾ', 'ಏ', 'ಮೇ', 'ಜೂ', 'ಜು', 'ಆ', 'ಸೆ', 'ಅ', 'ನ', 'ಡಿ'], - ['ಜನವರಿ', 'ಫೆಬ್ರವರಿ', 'ಮಾರ್ಚ್', 'ಏಪ್ರಿ', 'ಮೇ', 'ಜೂನ್', 'ಜುಲೈ', 'ಆಗ', 'ಸೆಪ್ಟೆಂ', 'ಅಕ್ಟೋ', 'ನವೆಂ', 'ಡಿಸೆಂ'], - [ - 'ಜನವರಿ', 'ಫೆಬ್ರವರಿ', 'ಮಾರ್ಚ್', 'ಏಪ್ರಿಲ್', 'ಮೇ', 'ಜೂನ್', 'ಜುಲೈ', 'ಆಗಸ್ಟ್', 'ಸೆಪ್ಟೆಂಬರ್', 'ಅಕ್ಟೋಬರ್', 'ನವೆಂಬರ್', - 'ಡಿಸೆಂಬರ್' - ] - ], - [ - ['ಜ', 'ಫೆ', 'ಮಾ', 'ಏ', 'ಮೇ', 'ಜೂ', 'ಜು', 'ಆ', 'ಸೆ', 'ಅ', 'ನ', 'ಡಿ'], - ['ಜನ', 'ಫೆಬ್ರ', 'ಮಾರ್ಚ್', 'ಏಪ್ರಿ', 'ಮೇ', 'ಜೂನ್', 'ಜುಲೈ', 'ಆಗ', 'ಸೆಪ್ಟೆಂ', 'ಅಕ್ಟೋ', 'ನವೆಂ', 'ಡಿಸೆಂ'], - [ - 'ಜನವರಿ', 'ಫೆಬ್ರವರಿ', 'ಮಾರ್ಚ್', 'ಏಪ್ರಿಲ್', 'ಮೇ', 'ಜೂನ್', 'ಜುಲೈ', 'ಆಗಸ್ಟ್', 'ಸೆಪ್ಟೆಂಬರ್', 'ಅಕ್ಟೋಬರ್', 'ನವೆಂಬರ್', - 'ಡಿಸೆಂಬರ್' - ] - ], - [['ಕ್ರಿ.ಪೂ', 'ಕ್ರಿ.ಶ'], u, ['ಕ್ರಿಸ್ತ ಪೂರ್ವ', 'ಕ್ರಿಸ್ತ ಶಕ']], - 0, - [0, 0], - ['d/M/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['hh:mm a', 'hh:mm:ss a', 'hh:mm:ss a z', 'hh:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'INR', - '₹', - 'ಭಾರತೀಯ ರೂಪಾಯಿ', - {'JPY': ['JP¥', '¥'], 'RON': [u, 'ಲೀ'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural, - [ - [ - ['ಮಧ್ಯರಾತ್ರಿ', 'ಬೆಳಗ್ಗೆ', 'ಮಧ್ಯಾಹ್ನ', 'ಸಂಜೆ', 'ರಾತ್ರಿ'], ['ಮಧ್ಯ ರಾತ್ರಿ', 'ಬೆಳಗ್ಗೆ', 'ಮಧ್ಯಾಹ್ನ', 'ಸಂಜೆ', 'ರಾತ್ರಿ'], u - ], - [['ಮಧ್ಯರಾತ್ರಿ', 'ಬೆಳಗ್ಗೆ', 'ಮಧ್ಯಾಹ್ನ', 'ಸಂಜೆ', 'ರಾತ್ರಿ'], u, u], - ['00:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ko-KP.js b/packages/common/locales/global/ko-KP.js deleted file mode 100644 index 16b445cd61..0000000000 --- a/packages/common/locales/global/ko-KP.js +++ /dev/null @@ -1,55 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['ko-kp'] = [ - 'ko-KP', - [['AM', 'PM'], u, ['오전', '오후']], - u, - [ - ['일', '월', '화', '수', '목', '금', '토'], u, - ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'], - ['일', '월', '화', '수', '목', '금', '토'] - ], - u, - [['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'], u, u], - u, - [['BC', 'AD'], u, ['기원전', '서기']], - 1, - [6, 0], - ['yy. M. d.', 'y. M. d.', 'y년 M월 d일', 'y년 M월 d일 EEEE'], - ['a h:mm', 'a h:mm:ss', 'a h시 m분 s초 z', 'a h시 m분 s초 zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KPW', - 'KPW', - '조선 민주주의 인민 공화국 원', - {'AUD': ['AU$', '$'], 'JPY': ['JP¥', '¥'], 'RON': [u, 'L'], 'TWD': ['NT$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [['자정', '정오', '새벽', '오전', '오후', '저녁', '밤'], u, u], u, - [ - '00:00', '12:00', ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '18:00'], - ['18:00', '21:00'], ['21:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ko.js b/packages/common/locales/global/ko.js deleted file mode 100644 index 8c83469d2e..0000000000 --- a/packages/common/locales/global/ko.js +++ /dev/null @@ -1,55 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['ko'] = [ - 'ko', - [['AM', 'PM'], u, ['오전', '오후']], - u, - [ - ['일', '월', '화', '수', '목', '금', '토'], u, - ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'], - ['일', '월', '화', '수', '목', '금', '토'] - ], - u, - [['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'], u, u], - u, - [['BC', 'AD'], u, ['기원전', '서기']], - 0, - [6, 0], - ['yy. M. d.', 'y. M. d.', 'y년 M월 d일', 'y년 M월 d일 EEEE'], - ['a h:mm', 'a h:mm:ss', 'a h시 m분 s초 z', 'a h시 m분 s초 zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KRW', - '₩', - '대한민국 원', - {'AUD': ['AU$', '$'], 'JPY': ['JP¥', '¥'], 'RON': [u, 'L'], 'TWD': ['NT$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [['자정', '정오', '새벽', '오전', '오후', '저녁', '밤'], u, u], u, - [ - '00:00', '12:00', ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '18:00'], - ['18:00', '21:00'], ['21:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/kok.js b/packages/common/locales/global/kok.js deleted file mode 100644 index ae2a8fe4db..0000000000 --- a/packages/common/locales/global/kok.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['kok'] = [ - 'kok', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['आ', 'सो', 'मं', 'बु', 'बि', 'शु', 'शे'], - ['आयतार', 'सोमार', 'मंगळार', 'बुधवार', 'बिरेस्तार', 'शुक्रार', 'शेनवार'], u, - ['आय', 'सोम', 'मंगळ', 'बुध', 'बिरे', 'शुक्र', 'शेन'] - ], - [ - ['आ', 'सो', 'मं', 'बु', 'ब', 'शु', 'शे'], - ['आयतार', 'सोमार', 'मंगळार', 'बुधवार', 'बिरेस्तार', 'शुक्रार', 'शेनवार'], u, - ['आय', 'सोम', 'मंगळ', 'बुध', 'बिरे', 'शुक्र', 'शेन'] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'जानेवारी', 'फेब्रुवारी', 'मार्च', 'एप्रिल', 'मे', 'जून', 'जुलय', 'ऑगस्ट', 'सप्टेंबर', 'ऑक्टोबर', 'नोव्हेंबर', - 'डिसेंबर' - ], - u - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['जाने', 'फेब्रु', 'मार्च', 'एप्री', 'मे', 'जून', 'जुल', 'ऑग', 'सप्टें', 'ऑक्टो', 'नो', 'डिसे'], - [ - 'जानेवारी', 'फेब्रुवारी', 'मार्च', 'एप्रिल', 'मे', 'जून', 'जुलय', 'ऑगस्ट', 'सप्टेंबर', 'ऑक्टोबर', 'नोव्हेंबर', - 'डिसेंबर' - ] - ], - [['क्रिस्तपूर्व', 'क्रिस्तशखा'], u, u], - 0, - [0, 0], - ['d-M-yy', 'dd-MM-y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'INR', - '₹', - 'भारतीय रुपया', - {'JPY': ['JP¥', '¥'], 'RON': ['रॉन', 'लेई'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ks.js b/packages/common/locales/global/ks.js deleted file mode 100644 index a31425eef3..0000000000 --- a/packages/common/locales/global/ks.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ks'] = [ - 'ks', - [['AM', 'PM'], u, u], - u, - [ - ['ا', 'ژ', 'ب', 'ب', 'ب', 'ج', 'ب'], - ['آتھوار', 'ژٔندٕروار', 'بۆموار', 'بودوار', 'برؠسوار', 'جُمہ', 'بٹوار'], - ['اَتھوار', 'ژٔندرٕروار', 'بۆموار', 'بودوار', 'برؠسوار', 'جُمہ', 'بٹوار'], - ['آتھوار', 'ژٔندٕروار', 'بۆموار', 'بودوار', 'برؠسوار', 'جُمہ', 'بٹوار'] - ], - u, - [ - ['ج', 'ف', 'م', 'ا', 'م', 'ج', 'ج', 'ا', 'س', 'س', 'ا', 'ن'], - [ - 'جنؤری', 'فرؤری', 'مارٕچ', 'اپریل', 'میٔ', 'جوٗن', 'جوٗلایی', 'اگست', 'ستمبر', 'اکتوٗبر', 'نومبر', - 'دسمبر' - ], - u - ], - u, - [['بی سی', 'اے ڈی'], u, ['قبٕل مسیٖح', 'عیٖسوی سنہٕ']], - 0, - [0, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤ #,##,##0.00', '#E0'], - 'INR', - '₹', - 'ہِندُستٲنۍ رۄپَے', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'rtl', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ksb.js b/packages/common/locales/global/ksb.js deleted file mode 100644 index 16d23547ef..0000000000 --- a/packages/common/locales/global/ksb.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ksb'] = [ - 'ksb', - [['makeo', 'nyiaghuo'], u, u], - u, - [ - ['2', '3', '4', '5', 'A', 'I', '1'], ['Jpi', 'Jtt', 'Jmn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - ['Jumaapii', 'Jumaatatu', 'Jumaane', 'Jumaatano', 'Alhamisi', 'Ijumaa', 'Jumaamosi'], - ['Jpi', 'Jtt', 'Jmn', 'Jtn', 'Alh', 'Iju', 'Jmo'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januali', 'Febluali', 'Machi', 'Aplili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', - 'Oktoba', 'Novemba', 'Desemba' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Klisto', 'Baada ya Klisto']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'TZS', - 'TSh', - 'shilingi ya Tanzania', - {'JPY': ['JP¥', '¥'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ksf.js b/packages/common/locales/global/ksf.js deleted file mode 100644 index eea23d716e..0000000000 --- a/packages/common/locales/global/ksf.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['ksf'] = [ - 'ksf', - [['sárúwá', 'cɛɛ́nko'], u, u], - u, - [ - ['s', 'l', 'm', 'm', 'j', 'j', 's'], ['sɔ́n', 'lǝn', 'maa', 'mɛk', 'jǝǝ', 'júm', 'sam'], - ['sɔ́ndǝ', 'lǝndí', 'maadí', 'mɛkrɛdí', 'jǝǝdí', 'júmbá', 'samdí'], - ['sɔ́n', 'lǝn', 'maa', 'mɛk', 'jǝǝ', 'júm', 'sam'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['ŋ1', 'ŋ2', 'ŋ3', 'ŋ4', 'ŋ5', 'ŋ6', 'ŋ7', 'ŋ8', 'ŋ9', 'ŋ10', 'ŋ11', 'ŋ12'], - [ - 'ŋwíí a ntɔ́ntɔ', 'ŋwíí akǝ bɛ́ɛ', 'ŋwíí akǝ ráá', 'ŋwíí akǝ nin', 'ŋwíí akǝ táan', - 'ŋwíí akǝ táafɔk', 'ŋwíí akǝ táabɛɛ', 'ŋwíí akǝ táaraa', 'ŋwíí akǝ táanin', 'ŋwíí akǝ ntɛk', - 'ŋwíí akǝ ntɛk di bɔ́k', 'ŋwíí akǝ ntɛk di bɛ́ɛ' - ] - ], - u, - [['d.Y.', 'k.Y.'], u, ['di Yɛ́sus aká yálɛ', 'cámɛɛn kǝ kǝbɔpka Y']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'fráŋ', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ksh.js b/packages/common/locales/global/ksh.js deleted file mode 100644 index 0fa259faeb..0000000000 --- a/packages/common/locales/global/ksh.js +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 0) return 0; - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ksh'] = [ - 'ksh', - [['v.M.', 'n.M.'], u, ['Uhr vörmiddaachs', 'Uhr nommendaachs']], - [['v.M.', 'n.M.'], u, ['Vörmeddaach', 'Nommendaach']], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['Su.', 'Mo.', 'Di.', 'Me.', 'Du.', 'Fr.', 'Sa.'], - ['Sunndaach', 'Mohndaach', 'Dinnsdaach', 'Metwoch', 'Dunnersdaach', 'Friidaach', 'Samsdaach'], - ['Su', 'Mo', 'Di', 'Me', 'Du', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Fäb', 'Mäz', 'Apr', 'Mai', 'Jun', 'Jul', 'Ouj', 'Säp', 'Okt', 'Nov', 'Dez'], - [ - 'Jannewa', 'Fäbrowa', 'Määz', 'Aprell', 'Mai', 'Juuni', 'Juuli', 'Oujoß', 'Septämber', - 'Oktohber', 'Novämber', 'Dezämber' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'O', 'S', 'O', 'N', 'D'], - ['Jan.', 'Fäb.', 'Mäz.', 'Apr.', 'Mai', 'Jun.', 'Jul.', 'Ouj.', 'Säp.', 'Okt.', 'Nov.', 'Dez.'], - [ - 'Jannewa', 'Fäbrowa', 'Määz', 'Aprell', 'Mai', 'Juuni', 'Juuli', 'Oujoß', 'Septämber', - 'Oktohber', 'Novämber', 'Dezämber' - ] - ], - [['vC', 'nC'], ['v. Chr.', 'n. Chr.'], ['vür Krestos', 'noh Krestos']], - 1, - [6, 0], - ['d. M. y', 'd. MMM. y', 'd. MMMM y', 'EEEE, \'dä\' d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '−', '×10^', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ku.js b/packages/common/locales/global/ku.js deleted file mode 100644 index f99168e51c..0000000000 --- a/packages/common/locales/global/ku.js +++ /dev/null @@ -1,64 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ku'] = [ - 'ku', - [['BN', 'PN'], u, u], - u, - [ - ['Y', 'D', 'S', 'Ç', 'P', 'Î', 'Ş'], ['yş', 'dş', 'sş', 'çş', 'pş', 'în', 'ş'], - ['yekşem', 'duşem', 'sêşem', 'çarşem', 'pêncşem', 'în', 'şemî'], - ['yş', 'dş', 'sş', 'çş', 'pş', 'în', 'ş'] - ], - u, - [ - ['R', 'R', 'A', 'A', 'G', 'P', 'T', 'G', 'R', 'K', 'S', 'B'], - ['rêb', 'reş', 'ada', 'avr', 'gul', 'pûş', 'tîr', 'gel', 'rez', 'kew', 'ser', 'ber'], - [ - 'rêbendanê', 'reşemiyê', 'adarê', 'avrêlê', 'gulanê', 'pûşperê', 'tîrmehê', 'gelawêjê', - 'rezberê', 'kewçêrê', 'sermawezê', 'berfanbarê' - ] - ], - [ - ['R', 'R', 'A', 'A', 'G', 'P', 'T', 'G', 'R', 'K', 'S', 'B'], - ['rêb', 'reş', 'ada', 'avr', 'gul', 'pûş', 'tîr', 'gel', 'rez', 'kew', 'ser', 'ber'], - [ - 'rêbendan', 'reşemî', 'adar', 'avrêl', 'gulan', 'pûşper', 'tîrmeh', 'gelawêj', 'rezber', - 'kewçêr', 'sermawez', 'berfanbar' - ] - ], - [['BZ', 'PZ'], u, ['berî zayînê', 'piştî zayînê']], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '%#,##0', '#,##0.00 ¤', '#E0'], - 'TRY', - '₺', - 'TRY', - {'JPY': ['JP¥', '¥'], 'TRY': ['₺'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/kw.js b/packages/common/locales/global/kw.js deleted file mode 100644 index 82105c3c1c..0000000000 --- a/packages/common/locales/global/kw.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - if (n === 2) return 2; - return 5; -} -global.ng.common.locales['kw'] = [ - 'kw', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sul', 'Lun', 'Mth', 'Mhr', 'Yow', 'Gwe', 'Sad'], - ['dy Sul', 'dy Lun', 'dy Meurth', 'dy Merher', 'dy Yow', 'dy Gwener', 'dy Sadorn'], - ['Sul', 'Lun', 'Mth', 'Mhr', 'Yow', 'Gwe', 'Sad'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['Gen', 'Hwe', 'Meu', 'Ebr', 'Me', 'Met', 'Gor', 'Est', 'Gwn', 'Hed', 'Du', 'Kev'], - [ - 'mis Genver', 'mis Hwevrer', 'mis Meurth', 'mis Ebrel', 'mis Me', 'mis Metheven', - 'mis Gortheren', 'mis Est', 'mis Gwynngala', 'mis Hedra', 'mis Du', 'mis Kevardhu' - ] - ], - u, - [['RC', 'AD'], u, u], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GBP', - '£', - 'GBP', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ky.js b/packages/common/locales/global/ky.js deleted file mode 100644 index 67f7991148..0000000000 --- a/packages/common/locales/global/ky.js +++ /dev/null @@ -1,100 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ky'] = [ - 'ky', - [['тң', 'тк'], u, ['таңкы', 'түштөн кийинки']], - u, - [ - ['Ж', 'Д', 'Ш', 'Ш', 'Б', 'Ж', 'И'], - ['жек.', 'дүй.', 'шейш.', 'шарш.', 'бейш.', 'жума', 'ишм.'], - ['жекшемби', 'дүйшөмбү', 'шейшемби', 'шаршемби', 'бейшемби', 'жума', 'ишемби'], - ['жш.', 'дш.', 'шш.', 'шр.', 'бш.', 'жм.', 'иш.'] - ], - u, - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - ['янв.', 'фев.', 'мар.', 'апр.', 'май', 'июн.', 'июл.', 'авг.', 'сен.', 'окт.', 'ноя.', 'дек.'], - [ - 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', - 'ноябрь', 'декабрь' - ] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'], - [ - 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', - 'Ноябрь', 'Декабрь' - ] - ], - [['б.з.ч.', 'б.з.'], u, ['биздин заманга чейин', 'биздин заман']], - 1, - [6, 0], - ['d/M/yy', 'y-\'ж\'., d-MMM', 'y-\'ж\'., d-MMMM', 'y-\'ж\'., d-MMMM, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'сан эмес', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'KGS', - 'сом', - 'Кыргызстан сому', - { - 'AUD': [u, '$'], - 'BMD': [u, 'BD$'], - 'BRL': [u, 'R$'], - 'BSD': [u, 'B$'], - 'BZD': [u, 'BZ$'], - 'CAD': [u, 'C$'], - 'DOP': [u, 'RD$'], - 'EGP': [u, 'LE'], - 'GBP': [u, '£'], - 'HKD': [u, 'HK$'], - 'HRK': [u, 'Kn'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JMD': [u, 'J$'], - 'JPY': ['JP¥', '¥'], - 'KGS': ['сом'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'THB': ['฿'], - 'TTD': [u, 'TT$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'XCD': [u, '$'] - }, - 'ltr', - plural, - [ - [ - ['түн орт', 'чт', 'эртң мн', 'түшт кйн', 'кечк', 'түн'], - ['түн ортосу', 'чак түш', 'эртең менен', 'түштөн кийин', 'кечинде', 'түн ичинде'], u - ], - [['түн ортосу', 'чак түш', 'эртең менен', 'түштөн кийин', 'кечкурун', 'түн'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/lag.js b/packages/common/locales/global/lag.js deleted file mode 100644 index 4f098194f8..0000000000 --- a/packages/common/locales/global/lag.js +++ /dev/null @@ -1,62 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (n === 0) return 0; - if ((i === 0 || i === 1) && !(n === 0)) return 1; - return 5; -} -global.ng.common.locales['lag'] = [ - 'lag', - [['TOO', 'MUU'], u, u], - u, - [ - ['P', 'T', 'E', 'O', 'A', 'I', 'M'], ['Píili', 'Táatu', 'Íne', 'Táano', 'Alh', 'Ijm', 'Móosi'], - ['Jumapíiri', 'Jumatátu', 'Jumaíne', 'Jumatáano', 'Alamíisi', 'Ijumáa', 'Jumamóosi'], - ['Píili', 'Táatu', 'Íne', 'Táano', 'Alh', 'Ijm', 'Móosi'] - ], - u, - [ - ['F', 'N', 'K', 'I', 'I', 'I', 'M', 'V', 'S', 'I', 'S', 'S'], - [ - 'Fúngatɨ', 'Naanɨ', 'Keenda', 'Ikúmi', 'Inyambala', 'Idwaata', 'Mʉʉnchɨ', 'Vɨɨrɨ', 'Saatʉ', - 'Inyi', 'Saano', 'Sasatʉ' - ], - [ - 'Kʉfúngatɨ', 'Kʉnaanɨ', 'Kʉkeenda', 'Kwiikumi', 'Kwiinyambála', 'Kwiidwaata', 'Kʉmʉʉnchɨ', - 'Kʉvɨɨrɨ', 'Kʉsaatʉ', 'Kwiinyi', 'Kʉsaano', 'Kʉsasatʉ' - ] - ], - u, - [['KSA', 'KA'], u, ['Kɨrɨsitʉ sɨ anavyaal', 'Kɨrɨsitʉ akavyaalwe']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'TZS', - 'TSh', - 'Shilíingi ya Taansanía', - {'JPY': ['JP¥', '¥'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/lb.js b/packages/common/locales/global/lb.js deleted file mode 100644 index d72f1f0837..0000000000 --- a/packages/common/locales/global/lb.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['lb'] = [ - 'lb', - [['mo.', 'nomë.'], ['moies', 'nomëttes'], u], - [['moies', 'nomëttes'], u, u], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['Son.', 'Méi.', 'Dën.', 'Mët.', 'Don.', 'Fre.', 'Sam.'], - ['Sonndeg', 'Méindeg', 'Dënschdeg', 'Mëttwoch', 'Donneschdeg', 'Freideg', 'Samschdeg'], - ['So.', 'Mé.', 'Dë.', 'Më.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['Son', 'Méi', 'Dën', 'Mët', 'Don', 'Fre', 'Sam'], - ['Sonndeg', 'Méindeg', 'Dënschdeg', 'Mëttwoch', 'Donneschdeg', 'Freideg', 'Samschdeg'], - ['So.', 'Mé.', 'Dë.', 'Më.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan.', 'Feb.', 'Mäe.', 'Abr.', 'Mee', 'Juni', 'Juli', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Dez.'], - [ - 'Januar', 'Februar', 'Mäerz', 'Abrëll', 'Mee', 'Juni', 'Juli', 'August', 'September', - 'Oktober', 'November', 'Dezember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mäe', 'Abr', 'Mee', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Januar', 'Februar', 'Mäerz', 'Abrëll', 'Mee', 'Juni', 'Juli', 'August', 'September', - 'Oktober', 'November', 'Dezember' - ] - ], - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'd. MMM y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - {'ATS': ['öS'], 'AUD': ['AU$', '$'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/lg.js b/packages/common/locales/global/lg.js deleted file mode 100644 index 1b21c16b39..0000000000 --- a/packages/common/locales/global/lg.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['lg'] = [ - 'lg', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'B', 'L', 'L', 'L', 'L', 'L'], ['Sab', 'Bal', 'Lw2', 'Lw3', 'Lw4', 'Lw5', 'Lw6'], - ['Sabbiiti', 'Balaza', 'Lwakubiri', 'Lwakusatu', 'Lwakuna', 'Lwakutaano', 'Lwamukaaga'], - ['Sab', 'Bal', 'Lw2', 'Lw3', 'Lw4', 'Lw5', 'Lw6'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apu', 'Maa', 'Juu', 'Jul', 'Agu', 'Seb', 'Oki', 'Nov', 'Des'], - [ - 'Janwaliyo', 'Febwaliyo', 'Marisi', 'Apuli', 'Maayi', 'Juuni', 'Julaayi', 'Agusito', - 'Sebuttemba', 'Okitobba', 'Novemba', 'Desemba' - ] - ], - u, - [['BC', 'AD'], u, ['Kulisito nga tannaza', 'Bukya Kulisito Azaal']], - 1, - [0, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'UGX', - 'USh', - 'Silingi eya Yuganda', - {'JPY': ['JP¥', '¥'], 'UGX': ['USh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/lkt.js b/packages/common/locales/global/lkt.js deleted file mode 100644 index 694d408714..0000000000 --- a/packages/common/locales/global/lkt.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['lkt'] = [ - 'lkt', - [['AM', 'PM'], u, u], - u, - [ - ['A', 'W', 'N', 'Y', 'T', 'Z', 'O'], - [ - 'Aŋpétuwakȟaŋ', 'Aŋpétuwaŋži', 'Aŋpétunuŋpa', 'Aŋpétuyamni', 'Aŋpétutopa', 'Aŋpétuzaptaŋ', - 'Owáŋgyužažapi' - ], - u, u - ], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - [ - 'Aŋpétuwakȟaŋ', 'Aŋpétuwaŋži', 'Aŋpétunuŋpa', 'Aŋpétuyamni', 'Aŋpétutopa', 'Aŋpétuzaptaŋ', - 'Owáŋgyužažapi' - ], - u, u - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'Wiótheȟika Wí', 'Thiyóȟeyuŋka Wí', 'Ištáwičhayazaŋ Wí', 'Pȟežítȟo Wí', 'Čhaŋwápetȟo Wí', - 'Wípazukȟa-wašté Wí', 'Čhaŋpȟásapa Wí', 'Wasútȟuŋ Wí', 'Čhaŋwápeǧi Wí', 'Čhaŋwápe-kasná Wí', - 'Waníyetu Wí', 'Tȟahékapšuŋ Wí' - ], - u - ], - u, - [['BCE', 'CE'], u, u], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'USD', - '$', - 'USD', - {'JPY': ['JP¥', '¥']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ln-AO.js b/packages/common/locales/global/ln-AO.js deleted file mode 100644 index f43746d59d..0000000000 --- a/packages/common/locales/global/ln-AO.js +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === Math.floor(n) && n >= 0 && n <= 1) return 1; - return 5; -} -global.ng.common.locales['ln-ao'] = [ - 'ln-AO', - [['ntɔ́ngɔ́', 'mpókwa'], u, u], - u, - [ - ['e', 'y', 'm', 'm', 'm', 'm', 'p'], ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'], - [ - 'eyenga', 'mokɔlɔ mwa yambo', 'mokɔlɔ mwa míbalé', 'mokɔlɔ mwa mísáto', 'mokɔlɔ ya mínéi', - 'mokɔlɔ ya mítáno', 'mpɔ́sɔ' - ], - ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'] - ], - u, - [ - ['y', 'f', 'm', 'a', 'm', 'y', 'y', 'a', 's', 'ɔ', 'n', 'd'], - ['yan', 'fbl', 'msi', 'apl', 'mai', 'yun', 'yul', 'agt', 'stb', 'ɔtb', 'nvb', 'dsb'], - [ - 'sánzá ya yambo', 'sánzá ya míbalé', 'sánzá ya mísáto', 'sánzá ya mínei', 'sánzá ya mítáno', - 'sánzá ya motóbá', 'sánzá ya nsambo', 'sánzá ya mwambe', 'sánzá ya libwa', 'sánzá ya zómi', - 'sánzá ya zómi na mɔ̌kɔ́', 'sánzá ya zómi na míbalé' - ] - ], - u, - [['libóso ya', 'nsima ya Y'], u, ['Yambo ya Yézu Krís', 'Nsima ya Yézu Krís']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'AOA', - 'Kz', - 'Kwanza ya Angóla', - {'AOA': ['Kz'], 'CDF': ['FC'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ln-CF.js b/packages/common/locales/global/ln-CF.js deleted file mode 100644 index c23b75e4a4..0000000000 --- a/packages/common/locales/global/ln-CF.js +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === Math.floor(n) && n >= 0 && n <= 1) return 1; - return 5; -} -global.ng.common.locales['ln-cf'] = [ - 'ln-CF', - [['ntɔ́ngɔ́', 'mpókwa'], u, u], - u, - [ - ['e', 'y', 'm', 'm', 'm', 'm', 'p'], ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'], - [ - 'eyenga', 'mokɔlɔ mwa yambo', 'mokɔlɔ mwa míbalé', 'mokɔlɔ mwa mísáto', 'mokɔlɔ ya mínéi', - 'mokɔlɔ ya mítáno', 'mpɔ́sɔ' - ], - ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'] - ], - u, - [ - ['y', 'f', 'm', 'a', 'm', 'y', 'y', 'a', 's', 'ɔ', 'n', 'd'], - ['yan', 'fbl', 'msi', 'apl', 'mai', 'yun', 'yul', 'agt', 'stb', 'ɔtb', 'nvb', 'dsb'], - [ - 'sánzá ya yambo', 'sánzá ya míbalé', 'sánzá ya mísáto', 'sánzá ya mínei', 'sánzá ya mítáno', - 'sánzá ya motóbá', 'sánzá ya nsambo', 'sánzá ya mwambe', 'sánzá ya libwa', 'sánzá ya zómi', - 'sánzá ya zómi na mɔ̌kɔ́', 'sánzá ya zómi na míbalé' - ] - ], - u, - [['libóso ya', 'nsima ya Y'], u, ['Yambo ya Yézu Krís', 'Nsima ya Yézu Krís']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'Falánga CFA BEAC', - {'CDF': ['FC'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ln-CG.js b/packages/common/locales/global/ln-CG.js deleted file mode 100644 index db93df851c..0000000000 --- a/packages/common/locales/global/ln-CG.js +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === Math.floor(n) && n >= 0 && n <= 1) return 1; - return 5; -} -global.ng.common.locales['ln-cg'] = [ - 'ln-CG', - [['ntɔ́ngɔ́', 'mpókwa'], u, u], - u, - [ - ['e', 'y', 'm', 'm', 'm', 'm', 'p'], ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'], - [ - 'eyenga', 'mokɔlɔ mwa yambo', 'mokɔlɔ mwa míbalé', 'mokɔlɔ mwa mísáto', 'mokɔlɔ ya mínéi', - 'mokɔlɔ ya mítáno', 'mpɔ́sɔ' - ], - ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'] - ], - u, - [ - ['y', 'f', 'm', 'a', 'm', 'y', 'y', 'a', 's', 'ɔ', 'n', 'd'], - ['yan', 'fbl', 'msi', 'apl', 'mai', 'yun', 'yul', 'agt', 'stb', 'ɔtb', 'nvb', 'dsb'], - [ - 'sánzá ya yambo', 'sánzá ya míbalé', 'sánzá ya mísáto', 'sánzá ya mínei', 'sánzá ya mítáno', - 'sánzá ya motóbá', 'sánzá ya nsambo', 'sánzá ya mwambe', 'sánzá ya libwa', 'sánzá ya zómi', - 'sánzá ya zómi na mɔ̌kɔ́', 'sánzá ya zómi na míbalé' - ] - ], - u, - [['libóso ya', 'nsima ya Y'], u, ['Yambo ya Yézu Krís', 'Nsima ya Yézu Krís']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'Falánga CFA BEAC', - {'CDF': ['FC'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ln.js b/packages/common/locales/global/ln.js deleted file mode 100644 index 312964f4a2..0000000000 --- a/packages/common/locales/global/ln.js +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === Math.floor(n) && n >= 0 && n <= 1) return 1; - return 5; -} -global.ng.common.locales['ln'] = [ - 'ln', - [['ntɔ́ngɔ́', 'mpókwa'], u, u], - u, - [ - ['e', 'y', 'm', 'm', 'm', 'm', 'p'], ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'], - [ - 'eyenga', 'mokɔlɔ mwa yambo', 'mokɔlɔ mwa míbalé', 'mokɔlɔ mwa mísáto', 'mokɔlɔ ya mínéi', - 'mokɔlɔ ya mítáno', 'mpɔ́sɔ' - ], - ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'] - ], - u, - [ - ['y', 'f', 'm', 'a', 'm', 'y', 'y', 'a', 's', 'ɔ', 'n', 'd'], - ['yan', 'fbl', 'msi', 'apl', 'mai', 'yun', 'yul', 'agt', 'stb', 'ɔtb', 'nvb', 'dsb'], - [ - 'sánzá ya yambo', 'sánzá ya míbalé', 'sánzá ya mísáto', 'sánzá ya mínei', 'sánzá ya mítáno', - 'sánzá ya motóbá', 'sánzá ya nsambo', 'sánzá ya mwambe', 'sánzá ya libwa', 'sánzá ya zómi', - 'sánzá ya zómi na mɔ̌kɔ́', 'sánzá ya zómi na míbalé' - ] - ], - u, - [['libóso ya', 'nsima ya Y'], u, ['Yambo ya Yézu Krís', 'Nsima ya Yézu Krís']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'CDF', - 'FC', - 'Falánga ya Kongó', - {'CDF': ['FC'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/lo.js b/packages/common/locales/global/lo.js deleted file mode 100644 index 17ca92fc0b..0000000000 --- a/packages/common/locales/global/lo.js +++ /dev/null @@ -1,82 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['lo'] = [ - 'lo', - [['ກ່ອນທ່ຽງ', 'ຫຼັງທ່ຽງ'], u, u], - u, - [ - ['ອາ', 'ຈ', 'ອ', 'ພ', 'ພຫ', 'ສຸ', 'ສ'], ['ອາທິດ', 'ຈັນ', 'ອັງຄານ', 'ພຸດ', 'ພະຫັດ', 'ສຸກ', 'ເສົາ'], - ['ວັນອາທິດ', 'ວັນຈັນ', 'ວັນອັງຄານ', 'ວັນພຸດ', 'ວັນພະຫັດ', 'ວັນສຸກ', 'ວັນເສົາ'], - ['ອາ.', 'ຈ.', 'ອ.', 'ພ.', 'ພຫ.', 'ສຸ.', 'ສ.'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'ມ.ກ.', 'ກ.ພ.', 'ມ.ນ.', 'ມ.ສ.', 'ພ.ພ.', 'ມິ.ຖ.', 'ກ.ລ.', 'ສ.ຫ.', 'ກ.ຍ.', 'ຕ.ລ.', 'ພ.ຈ.', 'ທ.ວ.' - ], - [ - 'ມັງກອນ', 'ກຸມພາ', 'ມີນາ', 'ເມສາ', 'ພຶດສະພາ', 'ມິຖຸນາ', 'ກໍລະກົດ', 'ສິງຫາ', 'ກັນຍາ', 'ຕຸລາ', 'ພະຈິກ', - 'ທັນວາ' - ] - ], - u, - [['ກ່ອນ ຄ.ສ.', 'ຄ.ສ.'], u, ['ກ່ອນຄຣິດສັກກະລາດ', 'ຄຣິດສັກກະລາດ']], - 0, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE ທີ d MMMM G y'], - ['H:mm', 'H:mm:ss', 'H ໂມງ m ນາທີ ss ວິນາທີ z', 'H ໂມງ m ນາທີ ss ວິນາທີ zzzz'], - ['{1}, {0}', u, u, u], - [ - ',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', - 'ບໍ່​ແມ່ນ​ໂຕ​ເລກ', ':' - ], - ['#,##0.###', '#,##0%', '¤#,##0.00;¤-#,##0.00', '#'], - 'LAK', - '₭', - 'ລາວ ກີບ', - {'JPY': ['JP¥', '¥'], 'LAK': ['₭'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['ທ່ຽງຄືນ', 'ຕອນທ່ຽງ', 'ຕອນເຊົ້າ', 'ຕອນທ່ຽງ', 'ຕອນແລງ', 'ກາງຄືນ'], - ['ທ່ຽງຄືນ', 'ຕອນທ່ຽງ', 'ຕອນເຊົ້າ', 'ຕອນບ່າຍ', 'ຕອນແລງ', 'ກາງຄືນ'], - ['ທ່ຽງຄືນ', 'ຕອນທ່ຽງ', 'ຕອນເຊົ້າ', 'ຕອນບ່າຍ', 'ຕອນແລງ', 'ຕອນກາງຄືນ'] - ], - [ - [ - 'ທ່ຽງ​ຄືນ', 'ຕອນທ່ຽງ', '​ເຊົ້າ', 'ສ', 'ແລງ', - '​ກາງ​ຄືນ' - ], - [ - 'ທ່ຽງ​ຄືນ', 'ທ່ຽງ', '​ເຊົ້າ', 'ສວຍ', 'ແລງ', - '​ກາງ​ຄືນ' - ], - ['ທ່ຽງຄືນ', 'ຕອນທ່ຽງ', '​ເຊົ້າ', 'ສວຍ', 'ແລງ', '​ກາງ​ຄືນ'] - ], - [ - '00:00', '12:00', ['05:00', '12:00'], ['12:00', '16:00'], ['16:00', '20:00'], - ['20:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/lrc-IQ.js b/packages/common/locales/global/lrc-IQ.js deleted file mode 100644 index bd815d6daa..0000000000 --- a/packages/common/locales/global/lrc-IQ.js +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['lrc-iq'] = [ - 'lrc-IQ', - [['AM', 'PM'], u, u], - u, - [['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], u, u], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'جانڤیە', 'فئڤریە', 'مارس', 'آڤریل', 'مئی', 'جوٙأن', 'جوٙلا', 'آگوست', 'سئپتامر', 'ئوکتوڤر', - 'نوڤامر', 'دئسامر' - ], - u - ], - u, - [['BCE', 'CE'], u, u], - 6, - [5, 6], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'IQD', - 'د.ع.\u200f', - 'IQD', - {'IQD': ['د.ع.\u200f'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'rtl', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/lrc.js b/packages/common/locales/global/lrc.js deleted file mode 100644 index 9e02eaa917..0000000000 --- a/packages/common/locales/global/lrc.js +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['lrc'] = [ - 'lrc', - [['AM', 'PM'], u, u], - u, - [['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], u, u], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'جانڤیە', 'فئڤریە', 'مارس', 'آڤریل', 'مئی', 'جوٙأن', 'جوٙلا', 'آگوست', 'سئپتامر', 'ئوکتوڤر', - 'نوڤامر', 'دئسامر' - ], - u - ], - u, - [['BCE', 'CE'], u, u], - 6, - [5, 5], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'IRR', - 'IRR', - 'IRR', - {'IQD': ['د.ع.\u200f'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'rtl', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/lt.js b/packages/common/locales/global/lt.js deleted file mode 100644 index c5f807e104..0000000000 --- a/packages/common/locales/global/lt.js +++ /dev/null @@ -1,113 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (n % 10 === 1 && !(n % 100 >= 11 && n % 100 <= 19)) return 1; - if (n % 10 === Math.floor(n % 10) && n % 10 >= 2 && n % 10 <= 9 && - !(n % 100 >= 11 && n % 100 <= 19)) - return 3; - if (!(f === 0)) return 4; - return 5; -} -global.ng.common.locales['lt'] = [ - 'lt', - [['pr. p.', 'pop.'], ['priešpiet', 'popiet'], u], - u, - [ - ['S', 'P', 'A', 'T', 'K', 'P', 'Š'], ['sk', 'pr', 'an', 'tr', 'kt', 'pn', 'št'], - [ - 'sekmadienis', 'pirmadienis', 'antradienis', 'trečiadienis', 'ketvirtadienis', 'penktadienis', - 'šeštadienis' - ], - ['Sk', 'Pr', 'An', 'Tr', 'Kt', 'Pn', 'Št'] - ], - u, - [ - ['S', 'V', 'K', 'B', 'G', 'B', 'L', 'R', 'R', 'S', 'L', 'G'], - [ - 'saus.', 'vas.', 'kov.', 'bal.', 'geg.', 'birž.', 'liep.', 'rugp.', 'rugs.', 'spal.', - 'lapkr.', 'gruod.' - ], - [ - 'sausio', 'vasario', 'kovo', 'balandžio', 'gegužės', 'birželio', 'liepos', 'rugpjūčio', - 'rugsėjo', 'spalio', 'lapkričio', 'gruodžio' - ] - ], - [ - ['S', 'V', 'K', 'B', 'G', 'B', 'L', 'R', 'R', 'S', 'L', 'G'], - [ - 'saus.', 'vas.', 'kov.', 'bal.', 'geg.', 'birž.', 'liep.', 'rugp.', 'rugs.', 'spal.', - 'lapkr.', 'gruod.' - ], - [ - 'sausis', 'vasaris', 'kovas', 'balandis', 'gegužė', 'birželis', 'liepa', 'rugpjūtis', - 'rugsėjis', 'spalis', 'lapkritis', 'gruodis' - ] - ], - [['pr. Kr.', 'po Kr.'], u, ['prieš Kristų', 'po Kristaus']], - 1, - [6, 0], - ['y-MM-dd', u, 'y \'m\'. MMMM d \'d\'.', 'y \'m\'. MMMM d \'d\'., EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '−', '×10^', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euras', - { - 'AUD': [u, '$'], - 'BDT': [], - 'BRL': [u, 'R$'], - 'BYN': [u, 'Br'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [], - 'INR': [], - 'JPY': [u, '¥'], - 'KHR': [], - 'KRW': [u, '₩'], - 'LAK': [], - 'MNT': [], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'PLN': [u, 'zl'], - 'PYG': [u, 'Gs'], - 'RUB': [u, 'rb'], - 'TWD': [u, '$'], - 'USD': [u, '$'], - 'VND': [], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [], - 'XPF': [] - }, - 'ltr', - plural, - [ - [['vidurnaktis', 'perpiet', 'rytas', 'popietė', 'vakaras', 'naktis'], u, u], - [['vidurnaktis', 'vidurdienis', 'rytas', 'diena', 'vakaras', 'naktis'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/lu.js b/packages/common/locales/global/lu.js deleted file mode 100644 index ee3141a4b7..0000000000 --- a/packages/common/locales/global/lu.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['lu'] = [ - 'lu', - [['Dinda', 'Dilolo'], u, u], - u, - [ - ['L', 'N', 'N', 'N', 'N', 'N', 'L'], ['Lum', 'Nko', 'Ndy', 'Ndg', 'Njw', 'Ngv', 'Lub'], - ['Lumingu', 'Nkodya', 'Ndàayà', 'Ndangù', 'Njòwa', 'Ngòvya', 'Lubingu'], - ['Lum', 'Nko', 'Ndy', 'Ndg', 'Njw', 'Ngv', 'Lub'] - ], - u, - [ - ['C', 'L', 'L', 'M', 'L', 'L', 'K', 'L', 'L', 'L', 'K', 'C'], - ['Cio', 'Lui', 'Lus', 'Muu', 'Lum', 'Luf', 'Kab', 'Lush', 'Lut', 'Lun', 'Kas', 'Cis'], - [ - 'Ciongo', 'Lùishi', 'Lusòlo', 'Mùuyà', 'Lumùngùlù', 'Lufuimi', 'Kabàlàshìpù', 'Lùshìkà', - 'Lutongolo', 'Lungùdi', 'Kaswèkèsè', 'Ciswà' - ] - ], - u, - [['kmp. Y.K.', 'kny. Y. K.'], u, ['Kumpala kwa Yezu Kli', 'Kunyima kwa Yezu Kli']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'CDF', - 'FC', - 'Nfalanga wa Kongu', - {'CDF': ['FC'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/luo.js b/packages/common/locales/global/luo.js deleted file mode 100644 index 0f2a391b99..0000000000 --- a/packages/common/locales/global/luo.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['luo'] = [ - 'luo', - [['OD', 'OT'], u, u], - u, - [ - ['J', 'W', 'T', 'T', 'T', 'T', 'N'], ['JMP', 'WUT', 'TAR', 'TAD', 'TAN', 'TAB', 'NGS'], - ['Jumapil', 'Wuok Tich', 'Tich Ariyo', 'Tich Adek', 'Tich Ang’wen', 'Tich Abich', 'Ngeso'], - ['JMP', 'WUT', 'TAR', 'TAD', 'TAN', 'TAB', 'NGS'] - ], - u, - [ - ['C', 'R', 'D', 'N', 'B', 'U', 'B', 'B', 'C', 'P', 'C', 'P'], - ['DAC', 'DAR', 'DAD', 'DAN', 'DAH', 'DAU', 'DAO', 'DAB', 'DOC', 'DAP', 'DGI', 'DAG'], - [ - 'Dwe mar Achiel', 'Dwe mar Ariyo', 'Dwe mar Adek', 'Dwe mar Ang’wen', 'Dwe mar Abich', - 'Dwe mar Auchiel', 'Dwe mar Abiriyo', 'Dwe mar Aboro', 'Dwe mar Ochiko', 'Dwe mar Apar', - 'Dwe mar gi achiel', 'Dwe mar Apar gi ariyo' - ] - ], - u, - [['BC', 'AD'], u, ['Kapok Kristo obiro', 'Ka Kristo osebiro']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'KES', - 'Ksh', - 'Siling mar Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/luy.js b/packages/common/locales/global/luy.js deleted file mode 100644 index 897d515967..0000000000 --- a/packages/common/locales/global/luy.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['luy'] = [ - 'luy', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['J2', 'J3', 'J4', 'J5', 'Al', 'Ij', 'J1'], - [ - 'Jumapiri', 'Jumatatu', 'Jumanne', 'Jumatano', 'Murwa wa Kanne', 'Murwa wa Katano', 'Jumamosi' - ], - ['J2', 'J3', 'J4', 'J5', 'Al', 'Ij', 'J1'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', - 'Oktoba', 'Novemba', 'Desemba' - ] - ], - u, - [['BC', 'AD'], u, ['Imberi ya Kuuza Kwa', 'Muhiga Kuvita Kuuza']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00;¤- #,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Sirinji ya Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/lv.js b/packages/common/locales/global/lv.js deleted file mode 100644 index b173067590..0000000000 --- a/packages/common/locales/global/lv.js +++ /dev/null @@ -1,87 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (n % 10 === 0 || n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 19 || - v === 2 && f % 100 === Math.floor(f % 100) && f % 100 >= 11 && f % 100 <= 19) - return 0; - if (n % 10 === 1 && !(n % 100 === 11) || v === 2 && f % 10 === 1 && !(f % 100 === 11) || - !(v === 2) && f % 10 === 1) - return 1; - return 5; -} -global.ng.common.locales['lv'] = [ - 'lv', - [['priekšp.', 'pēcp.'], u, ['priekšpusdienā', 'pēcpusdienā']], - [['priekšp.', 'pēcpusd.'], u, ['priekšpusdiena', 'pēcpusdiena']], - [ - ['S', 'P', 'O', 'T', 'C', 'P', 'S'], - ['svētd.', 'pirmd.', 'otrd.', 'trešd.', 'ceturtd.', 'piektd.', 'sestd.'], - ['svētdiena', 'pirmdiena', 'otrdiena', 'trešdiena', 'ceturtdiena', 'piektdiena', 'sestdiena'], - ['Sv', 'Pr', 'Ot', 'Tr', 'Ce', 'Pk', 'Se'] - ], - [ - ['S', 'P', 'O', 'T', 'C', 'P', 'S'], - ['Svētd.', 'Pirmd.', 'Otrd.', 'Trešd.', 'Ceturtd.', 'Piektd.', 'Sestd.'], - ['Svētdiena', 'Pirmdiena', 'Otrdiena', 'Trešdiena', 'Ceturtdiena', 'Piektdiena', 'Sestdiena'], - ['Sv', 'Pr', 'Ot', 'Tr', 'Ce', 'Pk', 'Se'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'febr.', 'marts', 'apr.', 'maijs', 'jūn.', 'jūl.', 'aug.', 'sept.', 'okt.', 'nov.', - 'dec.' - ], - [ - 'janvāris', 'februāris', 'marts', 'aprīlis', 'maijs', 'jūnijs', 'jūlijs', 'augusts', - 'septembris', 'oktobris', 'novembris', 'decembris' - ] - ], - u, - [['p.m.ē.', 'm.ē.'], u, ['pirms mūsu ēras', 'mūsu ērā']], - 1, - [6, 0], - ['dd.MM.yy', 'y. \'gada\' d. MMM', 'y. \'gada\' d. MMMM', 'EEEE, y. \'gada\' d. MMMM'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NS', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'eiro', - {'AUD': ['AU$', '$'], 'LVL': ['Ls'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural, - [ - [ - ['pusnaktī', 'pusd.', 'no rīta', 'pēcpusd.', 'vakarā', 'naktī'], u, - ['pusnaktī', 'pusdienlaikā', 'no rīta', 'pēcpusdienā', 'vakarā', 'naktī'] - ], - [ - ['pusnakts', 'pusd.', 'rīts', 'pēcpusd.', 'vakars', 'nakts'], - ['pusnakts', 'pusd.', 'rīts', 'pēcpusdiena', 'vakars', 'nakts'], - ['pusnakts', 'pusdienlaiks', 'rīts', 'pēcpusdiena', 'vakars', 'nakts'] - ], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '23:00'], - ['23:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/mas-TZ.js b/packages/common/locales/global/mas-TZ.js deleted file mode 100644 index 79ea24c962..0000000000 --- a/packages/common/locales/global/mas-TZ.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['mas-tz'] = [ - 'mas-TZ', - [['Ɛnkakɛnyá', 'Ɛndámâ'], u, u], - u, - [ - ['2', '3', '4', '5', '6', '7', '1'], ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - ['Jumapílí', 'Jumatátu', 'Jumane', 'Jumatánɔ', 'Alaámisi', 'Jumáa', 'Jumamósi'], - ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['Dal', 'Ará', 'Ɔɛn', 'Doy', 'Lép', 'Rok', 'Sás', 'Bɔ́r', 'Kús', 'Gís', 'Shʉ́', 'Ntʉ́'], - [ - 'Oladalʉ́', 'Arát', 'Ɔɛnɨ́ɔɨŋɔk', 'Olodoyíóríê inkókúâ', 'Oloilépūnyīē inkókúâ', 'Kújúɔrɔk', - 'Mórusásin', 'Ɔlɔ́ɨ́bɔ́rárɛ', 'Kúshîn', 'Olgísan', 'Pʉshʉ́ka', 'Ntʉ́ŋʉ́s' - ] - ], - u, - [['MY', 'EY'], u, ['Meínō Yɛ́sʉ', 'Eínō Yɛ́sʉ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'TZS', - 'TSh', - 'Iropiyianí e Tanzania', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/mas.js b/packages/common/locales/global/mas.js deleted file mode 100644 index ced083ec76..0000000000 --- a/packages/common/locales/global/mas.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['mas'] = [ - 'mas', - [['Ɛnkakɛnyá', 'Ɛndámâ'], u, u], - u, - [ - ['2', '3', '4', '5', '6', '7', '1'], ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - ['Jumapílí', 'Jumatátu', 'Jumane', 'Jumatánɔ', 'Alaámisi', 'Jumáa', 'Jumamósi'], - ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['Dal', 'Ará', 'Ɔɛn', 'Doy', 'Lép', 'Rok', 'Sás', 'Bɔ́r', 'Kús', 'Gís', 'Shʉ́', 'Ntʉ́'], - [ - 'Oladalʉ́', 'Arát', 'Ɔɛnɨ́ɔɨŋɔk', 'Olodoyíóríê inkókúâ', 'Oloilépūnyīē inkókúâ', 'Kújúɔrɔk', - 'Mórusásin', 'Ɔlɔ́ɨ́bɔ́rárɛ', 'Kúshîn', 'Olgísan', 'Pʉshʉ́ka', 'Ntʉ́ŋʉ́s' - ] - ], - u, - [['MY', 'EY'], u, ['Meínō Yɛ́sʉ', 'Eínō Yɛ́sʉ']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Iropiyianí e Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/mer.js b/packages/common/locales/global/mer.js deleted file mode 100644 index 8192e52710..0000000000 --- a/packages/common/locales/global/mer.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['mer'] = [ - 'mer', - [['RŨ', 'ŨG'], u, u], - u, - [ - ['K', 'M', 'W', 'W', 'W', 'W', 'J'], ['KIU', 'MRA', 'WAI', 'WET', 'WEN', 'WTN', 'JUM'], - ['Kiumia', 'Muramuko', 'Wairi', 'Wethatu', 'Wena', 'Wetano', 'Jumamosi'], - ['KIU', 'MRA', 'WAI', 'WET', 'WEN', 'WTN', 'JUM'] - ], - u, - [ - ['J', 'F', 'M', 'Ĩ', 'M', 'N', 'N', 'A', 'S', 'O', 'N', 'D'], - ['JAN', 'FEB', 'MAC', 'ĨPU', 'MĨĨ', 'NJU', 'NJR', 'AGA', 'SPT', 'OKT', 'NOV', 'DEC'], - [ - 'Januarĩ', 'Feburuarĩ', 'Machi', 'Ĩpurũ', 'Mĩĩ', 'Njuni', 'Njuraĩ', 'Agasti', 'Septemba', - 'Oktũba', 'Novemba', 'Dicemba' - ] - ], - u, - [['MK', 'NK'], u, ['Mbere ya Kristũ', 'Nyuma ya Kristũ']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Shilingi ya Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/mfe.js b/packages/common/locales/global/mfe.js deleted file mode 100644 index 4bbeb9fbec..0000000000 --- a/packages/common/locales/global/mfe.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['mfe'] = [ - 'mfe', - [['AM', 'PM'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'z', 'v', 's'], ['dim', 'lin', 'mar', 'mer', 'ze', 'van', 'sam'], - ['dimans', 'lindi', 'mardi', 'merkredi', 'zedi', 'vandredi', 'samdi'], - ['dim', 'lin', 'mar', 'mer', 'ze', 'van', 'sam'] - ], - u, - [ - ['z', 'f', 'm', 'a', 'm', 'z', 'z', 'o', 's', 'o', 'n', 'd'], - ['zan', 'fev', 'mar', 'avr', 'me', 'zin', 'zil', 'out', 'sep', 'okt', 'nov', 'des'], - [ - 'zanvie', 'fevriye', 'mars', 'avril', 'me', 'zin', 'zilye', 'out', 'septam', 'oktob', 'novam', - 'desam' - ] - ], - u, - [['av. Z-K', 'ap. Z-K'], u, ['avan Zezi-Krist', 'apre Zezi-Krist']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'MUR', - 'Rs', - 'roupi morisien', - {'JPY': ['JP¥', '¥'], 'MUR': ['Rs'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/mg.js b/packages/common/locales/global/mg.js deleted file mode 100644 index a5c62a9df3..0000000000 --- a/packages/common/locales/global/mg.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === Math.floor(n) && n >= 0 && n <= 1) return 1; - return 5; -} -global.ng.common.locales['mg'] = [ - 'mg', - [['AM', 'PM'], u, u], - u, - [ - ['A', 'A', 'T', 'A', 'A', 'Z', 'A'], ['Alah', 'Alats', 'Tal', 'Alar', 'Alak', 'Zom', 'Asab'], - ['Alahady', 'Alatsinainy', 'Talata', 'Alarobia', 'Alakamisy', 'Zoma', 'Asabotsy'], - ['Alah', 'Alats', 'Tal', 'Alar', 'Alak', 'Zom', 'Asab'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'Mey', 'Jon', 'Jol', 'Aog', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Janoary', 'Febroary', 'Martsa', 'Aprily', 'Mey', 'Jona', 'Jolay', 'Aogositra', 'Septambra', - 'Oktobra', 'Novambra', 'Desambra' - ] - ], - u, - [['BC', 'AD'], u, ['Alohan’i JK', 'Aorian’i JK']], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'MGA', - 'Ar', - 'Ariary', - {'JPY': ['JP¥', '¥'], 'MGA': ['Ar'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/mgh.js b/packages/common/locales/global/mgh.js deleted file mode 100644 index b24c356000..0000000000 --- a/packages/common/locales/global/mgh.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['mgh'] = [ - 'mgh', - [['wichishu', 'mchochil’l'], u, u], - u, - [ - ['S', 'J', 'J', 'J', 'A', 'I', 'J'], ['Sab', 'Jtt', 'Jnn', 'Jtn', 'Ara', 'Iju', 'Jmo'], - ['Sabato', 'Jumatatu', 'Jumanne', 'Jumatano', 'Arahamisi', 'Ijumaa', 'Jumamosi'], - ['Sab', 'Jtt', 'Jnn', 'Jtn', 'Ara', 'Iju', 'Jmo'] - ], - u, - [ - ['K', 'U', 'R', 'C', 'T', 'M', 'S', 'N', 'T', 'K', 'M', 'Y'], - ['Kwa', 'Una', 'Rar', 'Che', 'Tha', 'Moc', 'Sab', 'Nan', 'Tis', 'Kum', 'Moj', 'Yel'], - [ - 'Mweri wo kwanza', 'Mweri wo unayeli', 'Mweri wo uneraru', 'Mweri wo unecheshe', - 'Mweri wo unethanu', 'Mweri wo thanu na mocha', 'Mweri wo saba', 'Mweri wo nane', - 'Mweri wo tisa', 'Mweri wo kumi', 'Mweri wo kumi na moja', 'Mweri wo kumi na yel’li' - ] - ], - u, - [['HY', 'YY'], u, ['Hinapiya yesu', 'Yopia yesu']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'MZN', - 'MTn', - 'MZN', - {'JPY': ['JP¥', '¥'], 'MZN': ['MTn'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/mgo.js b/packages/common/locales/global/mgo.js deleted file mode 100644 index 69c640b784..0000000000 --- a/packages/common/locales/global/mgo.js +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['mgo'] = [ - 'mgo', - [['AM', 'PM'], u, u], - u, - [ - ['A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7'], - ['Aneg 1', 'Aneg 2', 'Aneg 3', 'Aneg 4', 'Aneg 5', 'Aneg 6', 'Aneg 7'], u, - ['1', '2', '3', '4', '5', '6', '7'] - ], - u, - [ - ['M1', 'A2', 'M3', 'N4', 'F5', 'I6', 'A7', 'I8', 'K9', '10', '11', '12'], - [ - 'mbegtug', 'imeg àbùbì', 'imeg mbəŋchubi', 'iməg ngwə̀t', 'iməg fog', 'iməg ichiibɔd', - 'iməg àdùmbə̀ŋ', 'iməg ichika', 'iməg kud', 'iməg tèsiʼe', 'iməg zò', 'iməg krizmed' - ], - [ - 'iməg mbegtug', 'imeg àbùbì', 'imeg mbəŋchubi', 'iməg ngwə̀t', 'iməg fog', 'iməg ichiibɔd', - 'iməg àdùmbə̀ŋ', 'iməg ichika', 'iməg kud', 'iməg tèsiʼe', 'iməg zò', 'iməg krizmed' - ] - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'EEEE, y MMMM dd'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'XAF', - 'FCFA', - 'shirè', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/mi.js b/packages/common/locales/global/mi.js deleted file mode 100644 index 79c51d19b4..0000000000 --- a/packages/common/locales/global/mi.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['mi'] = [ - 'mi', - [['AM', 'PM'], u, u], - u, - [ - ['T', 'H', 'T', 'A', 'P', 'M', 'H'], ['Tap', 'Hin', 'Tū', 'Apa', 'Par', 'Mer', 'Hor'], - ['Rātapu', 'Rāhina', 'Rātū', 'Rāapa', 'Rāpare', 'Rāmere', 'Rāhoroi'], - ['Tap', 'Hin', 'Tū', 'Apa', 'Par', 'Mer', 'Hor'] - ], - u, - [ - ['K', 'H', 'P', 'P', 'H', 'P', 'H', 'H', 'M', 'N', 'R', 'H'], - ['Kohi', 'Hui', 'Pou', 'Pae', 'Hara', 'Pipi', 'Hōngo', 'Here', 'Mahu', 'Nuku', 'Rangi', 'Haki'], - [ - 'Kohitātea', 'Huitanguru', 'Poutūterangi', 'Paengawhāwhā', 'Haratua', 'Pipiri', 'Hōngongoi', - 'Hereturikōkā', 'Mahuru', 'Whiringa-ā-nuku', 'Whiringa-ā-rangi', 'Hakihea' - ] - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['dd-MM-y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'NZD', - '$', - 'Tāra o Aotearoa', - {'NZD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/mk.js b/packages/common/locales/global/mk.js deleted file mode 100644 index f9f04bfeba..0000000000 --- a/packages/common/locales/global/mk.js +++ /dev/null @@ -1,95 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - return 5; -} -global.ng.common.locales['mk'] = [ - 'mk', - [['претпл.', 'попл.'], u, ['претпладне', 'попладне']], - u, - [ - ['н', 'п', 'в', 'с', 'ч', 'п', 'с'], ['нед.', 'пон.', 'вт.', 'сре.', 'чет.', 'пет.', 'саб.'], - ['недела', 'понеделник', 'вторник', 'среда', 'четврток', 'петок', 'сабота'], - ['нед.', 'пон.', 'вто.', 'сре.', 'чет.', 'пет.', 'саб.'] - ], - [ - ['н', 'п', 'в', 'с', 'ч', 'п', 'с'], ['нед.', 'пон.', 'вто.', 'сре.', 'чет.', 'пет.', 'саб.'], - ['недела', 'понеделник', 'вторник', 'среда', 'четврток', 'петок', 'сабота'], - ['нед.', 'пон.', 'вто.', 'сре.', 'чет.', 'пет.', 'саб.'] - ], - [ - ['ј', 'ф', 'м', 'а', 'м', 'ј', 'ј', 'а', 'с', 'о', 'н', 'д'], - [ - 'јан.', 'фев.', 'мар.', 'апр.', 'мај', 'јун.', 'јул.', 'авг.', 'септ.', 'окт.', 'ноем.', - 'дек.' - ], - [ - 'јануари', 'февруари', 'март', 'април', 'мај', 'јуни', 'јули', 'август', 'септември', - 'октомври', 'ноември', 'декември' - ] - ], - u, - [['пр.н.е.', 'н.е.'], u, ['пред нашата ера', 'од нашата ера']], - 1, - [6, 0], - ['d.M.yy', 'd.M.y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'MKD', - 'ден.', - 'Македонски денар', - { - 'AUD': [u, '$'], - 'CNY': [u, '¥'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MKD': ['ден.'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural, - [ - [ - ['полн.', 'напл.', 'утро', 'претпл.', 'попл.', 'веч.', 'ноќе'], - ['полноќ', 'напладне', 'наутро', 'претпл.', 'попл.', 'навечер', 'ноќе'], - ['полноќ', 'напладне', 'наутро', 'претпладне', 'попладне', 'навечер', 'по полноќ'] - ], - [ - ['полноќ', 'пладне', 'наутро', 'претпл.', 'попл.', 'навечер', 'по полноќ'], - ['полноќ', 'напладне', 'наутро', 'претпл.', 'попл.', 'навечер', 'по полноќ'], - ['на полноќ', 'напладне', 'наутро', 'претпладне', 'попладне', 'навечер', 'по полноќ'] - ], - [ - '00:00', '12:00', ['04:00', '10:00'], ['10:00', '12:00'], ['12:00', '18:00'], - ['18:00', '24:00'], ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ml.js b/packages/common/locales/global/ml.js deleted file mode 100644 index 9c430050a5..0000000000 --- a/packages/common/locales/global/ml.js +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ml'] = [ - 'ml', - [['AM', 'PM'], u, u], - u, - [ - ['ഞ', 'തി', 'ചൊ', 'ബു', 'വ്യാ', 'വെ', 'ശ'], - ['ഞായർ', 'തിങ്കൾ', 'ചൊവ്വ', 'ബുധൻ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'], - [ - 'ഞായറാഴ്\u200cച', 'തിങ്കളാഴ്\u200cച', 'ചൊവ്വാഴ്ച', 'ബുധനാഴ്\u200cച', 'വ്യാഴാഴ്\u200cച', - 'വെള്ളിയാഴ്\u200cച', 'ശനിയാഴ്\u200cച' - ], - ['ഞാ', 'തി', 'ചൊ', 'ബു', 'വ്യാ', 'വെ', 'ശ'] - ], - [ - ['ഞാ', 'തി', 'ചൊ', 'ബു', 'വ്യാ', 'വെ', 'ശ'], - ['ഞായർ', 'തിങ്കൾ', 'ചൊവ്വ', 'ബുധൻ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'], - [ - 'ഞായറാഴ്\u200cച', 'തിങ്കളാഴ്\u200cച', 'ചൊവ്വാഴ്\u200cച', 'ബുധനാഴ്\u200cച', 'വ്യാഴാഴ്\u200cച', - 'വെള്ളിയാഴ്\u200cച', 'ശനിയാഴ്\u200cച' - ], - ['ഞാ', 'തി', 'ചൊ', 'ബു', 'വ്യാ', 'വെ', 'ശ'] - ], - [ - ['ജ', 'ഫെ', 'മാ', 'ഏ', 'മെ', 'ജൂൺ', 'ജൂ', 'ഓ', 'സെ', 'ഒ', 'ന', 'ഡി'], - ['ജനു', 'ഫെബ്രു', 'മാർ', 'ഏപ്രി', 'മേയ്', 'ജൂൺ', 'ജൂലൈ', 'ഓഗ', 'സെപ്റ്റം', 'ഒക്ടോ', 'നവം', 'ഡിസം'], - [ - 'ജനുവരി', 'ഫെബ്രുവരി', 'മാർച്ച്', 'ഏപ്രിൽ', 'മേയ്', 'ജൂൺ', 'ജൂലൈ', 'ഓഗസ്റ്റ്', 'സെപ്റ്റംബർ', 'ഒക്\u200cടോബർ', - 'നവംബർ', 'ഡിസംബർ' - ] - ], - u, - [['ക്രി.മു.', 'എഡി'], u, ['ക്രിസ്\u200cതുവിന് മുമ്പ്', 'ആന്നോ ഡൊമിനി']], - 0, - [0, 0], - ['d/M/yy', 'y, MMM d', 'y, MMMM d', 'y, MMMM d, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'INR', - '₹', - 'ഇന്ത്യൻ രൂപ', - {'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural, - [ - [ - ['അ', 'ഉച്ച', 'പുലർച്ചെ', 'രാവിലെ', 'ഉച്ചയ്ക്ക്', 'ഉച്ചതിരിഞ്ഞ്', 'വൈകുന്നേരം', 'സന്ധ്യ', 'രാത്രി'], - ['അർദ്ധരാത്രി', 'ഉച്ച', 'പുലർച്ചെ', 'രാവിലെ', 'ഉച്ചയ്ക്ക്', 'ഉച്ചതിരിഞ്ഞ്', 'വൈകുന്നേരം', 'സന്ധ്യ', 'രാത്രി'], - u - ], - [ - ['അർദ്ധരാത്രി', 'ഉച്ച', 'പുലർച്ചെ', 'രാവിലെ', 'ഉച്ചയ്ക്ക്', 'ഉച്ചതിരിഞ്ഞ്', 'വൈകുന്നേരം', 'സന്ധ്യ', 'രാത്രി'], - u, u - ], - [ - '00:00', '12:00', ['03:00', '06:00'], ['06:00', '12:00'], ['12:00', '14:00'], - ['14:00', '15:00'], ['15:00', '18:00'], ['18:00', '19:00'], ['19:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/mn.js b/packages/common/locales/global/mn.js deleted file mode 100644 index 5c1a216b37..0000000000 --- a/packages/common/locales/global/mn.js +++ /dev/null @@ -1,85 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['mn'] = [ - 'mn', - [['ү.ө.', 'ү.х.'], u, u], - u, - [ - ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'], u, - ['ням', 'даваа', 'мягмар', 'лхагва', 'пүрэв', 'баасан', 'бямба'], - ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'] - ], - [ - ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'], u, - ['Ням', 'Даваа', 'Мягмар', 'Лхагва', 'Пүрэв', 'Баасан', 'Бямба'], - ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'] - ], - [ - ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII'], - [ - '1-р сар', '2-р сар', '3-р сар', '4-р сар', '5-р сар', '6-р сар', '7-р сар', '8-р сар', - '9-р сар', '10-р сар', '11-р сар', '12-р сар' - ], - [ - 'нэгдүгээр сар', 'хоёрдугаар сар', 'гуравдугаар сар', 'дөрөвдүгээр сар', 'тавдугаар сар', - 'зургаадугаар сар', 'долоодугаар сар', 'наймдугаар сар', 'есдүгээр сар', 'аравдугаар сар', - 'арван нэгдүгээр сар', 'арван хоёрдугаар сар' - ] - ], - [ - ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII'], - [ - '1-р сар', '2-р сар', '3-р сар', '4-р сар', '5-р сар', '6-р сар', '7-р сар', '8-р сар', - '9-р сар', '10-р сар', '11-р сар', '12-р сар' - ], - [ - 'Нэгдүгээр сар', 'Хоёрдугаар сар', 'Гуравдугаар сар', 'Дөрөвдүгээр сар', 'Тавдугаар сар', - 'Зургаадугаар сар', 'Долоодугаар сар', 'Наймдугаар сар', 'Есдүгээр сар', 'Аравдугаар сар', - 'Арван нэгдүгээр сар', 'Арван хоёрдугаар сар' - ] - ], - [['МЭӨ', 'МЭ'], u, ['манай эриний өмнөх', 'манай эриний']], - 1, - [6, 0], - [ - 'y.MM.dd', 'y \'оны\' MMM\'ын\' d', 'y \'оны\' MMMM\'ын\' d', - 'y \'оны\' MMMM\'ын\' d, EEEE \'гараг\'' - ], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss (z)', 'HH:mm:ss (zzzz)'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'MNT', - '₮', - 'Монгол төгрөг', - {'JPY': ['JP¥', '¥'], 'MNT': ['₮'], 'SEK': [u, 'кр'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural, - [ - [['шөнө дунд', 'үд дунд', 'өглөө', 'өдөр', 'орой', 'шөнө'], u, u], u, - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/mr.js b/packages/common/locales/global/mr.js deleted file mode 100644 index d47a6786a1..0000000000 --- a/packages/common/locales/global/mr.js +++ /dev/null @@ -1,71 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} -global.ng.common.locales['mr'] = [ - 'mr', - [['स', 'सं'], ['म.पू.', 'म.उ.'], u], - [['म.पू.', 'म.उ.'], u, u], - [ - ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'], ['रवि', 'सोम', 'मंगळ', 'बुध', 'गुरु', 'शुक्र', 'शनि'], - ['रविवार', 'सोमवार', 'मंगळवार', 'बुधवार', 'गुरुवार', 'शुक्रवार', 'शनिवार'], - ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'] - ], - u, - [ - ['जा', 'फे', 'मा', 'ए', 'मे', 'जू', 'जु', 'ऑ', 'स', 'ऑ', 'नो', 'डि'], - ['जाने', 'फेब्रु', 'मार्च', 'एप्रि', 'मे', 'जून', 'जुलै', 'ऑग', 'सप्टें', 'ऑक्टो', 'नोव्हें', 'डिसें'], - [ - 'जानेवारी', 'फेब्रुवारी', 'मार्च', 'एप्रिल', 'मे', 'जून', 'जुलै', 'ऑगस्ट', 'सप्टेंबर', 'ऑक्टोबर', 'नोव्हेंबर', - 'डिसेंबर' - ] - ], - u, - [['इ. स. पू.', 'इ. स.'], u, ['ईसवीसनपूर्व', 'ईसवीसन']], - 0, - [0, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} रोजी {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##0%', '¤#,##0.00', '[#E0]'], - 'INR', - '₹', - 'भारतीय रुपया', - {'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural, - [ - [ - ['म.रा.', 'दु', 'प', 'स', 'दु', 'सं', 'सा', 'रा'], - ['मध्यरात्र', 'मध्यान्ह', 'पहाट', 'सकाळ', 'दुपार', 'संध्याकाळ', 'सायंकाळ', 'रात्र'], u - ], - [ - ['म.रा.', 'म', 'प', 'स', 'दु', 'सं', 'सा', 'रात्र'], - ['मध्यरात्र', 'मध्यान्ह', 'पहाट', 'सकाळ', 'दुपार', 'संध्याकाळ', 'सायंकाळ', 'रात्र'], u - ], - [ - '00:00', '12:00', ['04:00', '06:00'], ['06:00', '12:00'], ['12:00', '16:00'], - ['16:00', '18:00'], ['18:00', '21:00'], ['21:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ms-BN.js b/packages/common/locales/global/ms-BN.js deleted file mode 100644 index 100b51fb58..0000000000 --- a/packages/common/locales/global/ms-BN.js +++ /dev/null @@ -1,77 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['ms-bn'] = [ - 'ms-BN', - [['a', 'p'], ['PG', 'PTG'], u], - u, - [ - ['A', 'I', 'S', 'R', 'K', 'J', 'S'], ['Ahd', 'Isn', 'Sel', 'Rab', 'Kha', 'Jum', 'Sab'], - ['Ahad', 'Isnin', 'Selasa', 'Rabu', 'Khamis', 'Jumaat', 'Sabtu'], - ['Ah', 'Is', 'Se', 'Ra', 'Kh', 'Ju', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ogo', 'Sep', 'Okt', 'Nov', 'Dis'], - [ - 'Januari', 'Februari', 'Mac', 'April', 'Mei', 'Jun', 'Julai', 'Ogos', 'September', 'Oktober', - 'November', 'Disember' - ] - ], - u, - [['S.M.', 'TM'], u, u], - 1, - [6, 0], - ['d/MM/yy', 'd MMM y', 'd MMMM y', 'dd MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'BND', - '$', - 'Dolar Brunei', - { - 'BND': ['$'], - 'CAD': [u, '$'], - 'JPY': ['JP¥', '¥'], - 'MXN': [u, '$'], - 'MYR': ['RM'], - 'TWD': ['NT$'], - 'USD': [u, '$'] - }, - 'ltr', - plural, - [ - [ - ['pagi', 'pagi', 'tengah hari', 'petang', 'malam'], u, - ['tengah malam', 'pagi', 'tengah hari', 'petang', 'malam'] - ], - [ - ['pagi', 'pagi', 'tengah hari', 'petang', 'malam'], - ['tengah malam', 'pagi', 'tengah hari', 'petang', 'malam'], u - ], - [ - ['00:00', '01:00'], ['01:00', '12:00'], ['12:00', '14:00'], ['14:00', '19:00'], - ['19:00', '24:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ms-SG.js b/packages/common/locales/global/ms-SG.js deleted file mode 100644 index 968f65d0ab..0000000000 --- a/packages/common/locales/global/ms-SG.js +++ /dev/null @@ -1,77 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['ms-sg'] = [ - 'ms-SG', - [['a', 'p'], ['PG', 'PTG'], u], - u, - [ - ['A', 'I', 'S', 'R', 'K', 'J', 'S'], ['Ahd', 'Isn', 'Sel', 'Rab', 'Kha', 'Jum', 'Sab'], - ['Ahad', 'Isnin', 'Selasa', 'Rabu', 'Khamis', 'Jumaat', 'Sabtu'], - ['Ah', 'Is', 'Se', 'Ra', 'Kh', 'Ju', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ogo', 'Sep', 'Okt', 'Nov', 'Dis'], - [ - 'Januari', 'Februari', 'Mac', 'April', 'Mei', 'Jun', 'Julai', 'Ogos', 'September', 'Oktober', - 'November', 'Disember' - ] - ], - u, - [['S.M.', 'TM'], u, u], - 0, - [6, 0], - ['d/MM/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SGD', - '$', - 'Dolar Singapura', - { - 'CAD': [u, '$'], - 'JPY': ['JP¥', '¥'], - 'MXN': [u, '$'], - 'MYR': ['RM'], - 'SGD': ['$'], - 'TWD': ['NT$'], - 'USD': [u, '$'] - }, - 'ltr', - plural, - [ - [ - ['pagi', 'pagi', 'tengah hari', 'petang', 'malam'], u, - ['tengah malam', 'pagi', 'tengah hari', 'petang', 'malam'] - ], - [ - ['pagi', 'pagi', 'tengah hari', 'petang', 'malam'], - ['tengah malam', 'pagi', 'tengah hari', 'petang', 'malam'], u - ], - [ - ['00:00', '01:00'], ['01:00', '12:00'], ['12:00', '14:00'], ['14:00', '19:00'], - ['19:00', '24:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ms.js b/packages/common/locales/global/ms.js deleted file mode 100644 index 65087663d4..0000000000 --- a/packages/common/locales/global/ms.js +++ /dev/null @@ -1,76 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['ms'] = [ - 'ms', - [['a', 'p'], ['PG', 'PTG'], u], - u, - [ - ['A', 'I', 'S', 'R', 'K', 'J', 'S'], ['Ahd', 'Isn', 'Sel', 'Rab', 'Kha', 'Jum', 'Sab'], - ['Ahad', 'Isnin', 'Selasa', 'Rabu', 'Khamis', 'Jumaat', 'Sabtu'], - ['Ah', 'Is', 'Se', 'Ra', 'Kh', 'Ju', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ogo', 'Sep', 'Okt', 'Nov', 'Dis'], - [ - 'Januari', 'Februari', 'Mac', 'April', 'Mei', 'Jun', 'Julai', 'Ogos', 'September', 'Oktober', - 'November', 'Disember' - ] - ], - u, - [['S.M.', 'TM'], u, u], - 1, - [6, 0], - ['d/MM/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'MYR', - 'RM', - 'Ringgit Malaysia', - { - 'CAD': [u, '$'], - 'JPY': ['JP¥', '¥'], - 'MXN': [u, '$'], - 'MYR': ['RM'], - 'TWD': ['NT$'], - 'USD': [u, '$'] - }, - 'ltr', - plural, - [ - [ - ['pagi', 'pagi', 'tengah hari', 'petang', 'malam'], u, - ['tengah malam', 'pagi', 'tengah hari', 'petang', 'malam'] - ], - [ - ['pagi', 'pagi', 'tengah hari', 'petang', 'malam'], - ['tengah malam', 'pagi', 'tengah hari', 'petang', 'malam'], u - ], - [ - ['00:00', '01:00'], ['01:00', '12:00'], ['12:00', '14:00'], ['14:00', '19:00'], - ['19:00', '24:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/mt.js b/packages/common/locales/global/mt.js deleted file mode 100644 index b19587a886..0000000000 --- a/packages/common/locales/global/mt.js +++ /dev/null @@ -1,70 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - if (n === 0 || n % 100 === Math.floor(n % 100) && n % 100 >= 2 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 19) return 4; - return 5; -} -global.ng.common.locales['mt'] = [ - 'mt', - [['am', 'pm'], ['AM', 'PM'], u], - u, - [ - ['Ħd', 'T', 'Tl', 'Er', 'Ħm', 'Ġm', 'Sb'], ['Ħad', 'Tne', 'Tli', 'Erb', 'Ħam', 'Ġim', 'Sib'], - ['Il-Ħadd', 'It-Tnejn', 'It-Tlieta', 'L-Erbgħa', 'Il-Ħamis', 'Il-Ġimgħa', 'Is-Sibt'], - ['Ħad', 'Tne', 'Tli', 'Erb', 'Ħam', 'Ġim', 'Sib'] - ], - [ - ['Ħd', 'Tn', 'Tl', 'Er', 'Ħm', 'Ġm', 'Sb'], ['Ħad', 'Tne', 'Tli', 'Erb', 'Ħam', 'Ġim', 'Sib'], - ['Il-Ħadd', 'It-Tnejn', 'It-Tlieta', 'L-Erbgħa', 'Il-Ħamis', 'Il-Ġimgħa', 'Is-Sibt'], - ['Ħad', 'Tne', 'Tli', 'Erb', 'Ħam', 'Ġim', 'Sib'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'Ġ', 'L', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Fra', 'Mar', 'Apr', 'Mej', 'Ġun', 'Lul', 'Aww', 'Set', 'Ott', 'Nov', 'Diċ'], - [ - 'Jannar', 'Frar', 'Marzu', 'April', 'Mejju', 'Ġunju', 'Lulju', 'Awwissu', 'Settembru', - 'Ottubru', 'Novembru', 'Diċembru' - ] - ], - [ - ['Jn', 'Fr', 'Mz', 'Ap', 'Mj', 'Ġn', 'Lj', 'Aw', 'St', 'Ob', 'Nv', 'Dċ'], - ['Jan', 'Fra', 'Mar', 'Apr', 'Mej', 'Ġun', 'Lul', 'Aww', 'Set', 'Ott', 'Nov', 'Diċ'], - [ - 'Jannar', 'Frar', 'Marzu', 'April', 'Mejju', 'Ġunju', 'Lulju', 'Awwissu', 'Settembru', - 'Ottubru', 'Novembru', 'Diċembru' - ] - ], - [['QK', 'WK'], u, ['Qabel Kristu', 'Wara Kristu']], - 0, - [6, 0], - ['dd/MM/y', 'dd MMM y', 'd \'ta\'’ MMMM y', 'EEEE, d \'ta\'’ MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'EUR', - '€', - 'ewro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/mua.js b/packages/common/locales/global/mua.js deleted file mode 100644 index 8c1ad87021..0000000000 --- a/packages/common/locales/global/mua.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['mua'] = [ - 'mua', - [['comme', 'lilli'], u, u], - u, - [ - ['Y', 'L', 'Z', 'O', 'A', 'G', 'E'], ['Cya', 'Cla', 'Czi', 'Cko', 'Cka', 'Cga', 'Cze'], - ['Com’yakke', 'Comlaaɗii', 'Comzyiiɗii', 'Comkolle', 'Comkaldǝɓlii', 'Comgaisuu', 'Comzyeɓsuu'], - ['Cya', 'Cla', 'Czi', 'Cko', 'Cka', 'Cga', 'Cze'] - ], - u, - [ - ['O', 'A', 'I', 'F', 'D', 'B', 'L', 'M', 'E', 'U', 'W', 'Y'], - ['FLO', 'CLA', 'CKI', 'FMF', 'MAD', 'MBI', 'MLI', 'MAM', 'FDE', 'FMU', 'FGW', 'FYU'], - [ - 'Fĩi Loo', 'Cokcwaklaŋne', 'Cokcwaklii', 'Fĩi Marfoo', 'Madǝǝuutǝbijaŋ', 'Mamǝŋgwãafahbii', - 'Mamǝŋgwãalii', 'Madǝmbii', 'Fĩi Dǝɓlii', 'Fĩi Mundaŋ', 'Fĩi Gwahlle', 'Fĩi Yuru' - ] - ], - u, - [['KK', 'PK'], u, ['KǝPel Kristu', 'Pel Kristu']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XAF', - 'FCFA', - 'solai BEAC', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/my.js b/packages/common/locales/global/my.js deleted file mode 100644 index 23cc0f89bb..0000000000 --- a/packages/common/locales/global/my.js +++ /dev/null @@ -1,73 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['my'] = [ - 'my', - [['နံနက်', 'ညနေ'], u, u], - u, - [ - ['တ', 'တ', 'အ', 'ဗ', 'က', 'သ', 'စ'], - ['တနင်္ဂနွေ', 'တနင်္လာ', 'အင်္ဂါ', 'ဗုဒ္ဓဟူး', 'ကြာသပတေး', 'သောကြာ', 'စနေ'], u, u - ], - u, - [ - ['ဇ', 'ဖ', 'မ', 'ဧ', 'မ', 'ဇ', 'ဇ', 'ဩ', 'စ', 'အ', 'န', 'ဒ'], - ['ဇန်', 'ဖေ', 'မတ်', 'ဧ', 'မေ', 'ဇွန်', 'ဇူ', 'ဩ', 'စက်', 'အောက်', 'နို', 'ဒီ'], - [ - 'ဇန်နဝါရီ', 'ဖေဖော်ဝါရီ', 'မတ်', 'ဧပြီ', 'မေ', 'ဇွန်', 'ဇူလိုင်', 'ဩဂုတ်', 'စက်တင်ဘာ', 'အောက်တိုဘာ', 'နိုဝင်ဘာ', - 'ဒီဇင်ဘာ' - ] - ], - u, - [['ဘီစီ', 'အဒေီ'], u, ['ခရစ်တော် မပေါ်မီနှစ်', 'ခရစ်နှစ်']], - 0, - [6, 0], - ['dd-MM-yy', 'y၊ MMM d', 'y၊ d MMMM', 'y၊ MMMM d၊ EEEE'], - ['B H:mm', 'B HH:mm:ss', 'z HH:mm:ss', 'zzzz HH:mm:ss'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'ဂဏန်းမဟုတ်သော', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'MMK', - 'K', - 'မြန်မာ ကျပ်', - { - 'ANG': ['NAf'], - 'AWG': ['Afl'], - 'BBD': [u, 'Bds$'], - 'BSD': [u, 'B$'], - 'HTG': ['G'], - 'JPY': ['JP¥', '¥'], - 'MMK': ['K'], - 'PAB': ['B/.'], - 'THB': ['฿'], - 'TTD': ['TT$', '$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [['သန်းခေါင်ယံ', 'မွန်းတည့်', 'နံနက်', 'နေ့လယ်', 'ညနေ', 'ည'], u, u], u, - [ - '00:00', '12:00', ['00:00', '12:00'], ['12:00', '16:00'], ['16:00', '19:00'], - ['19:00', '24:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/mzn.js b/packages/common/locales/global/mzn.js deleted file mode 100644 index 8073f5e3d2..0000000000 --- a/packages/common/locales/global/mzn.js +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['mzn'] = [ - 'mzn', - [['AM', 'PM'], u, u], - u, - [['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], u, u], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن', 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', - 'نوامبر', 'دسامبر' - ], - u - ], - u, - [['پ.م', 'م.'], u, ['قبل میلاد', 'بعد میلاد']], - 6, - [5, 5], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'IRR', - 'IRR', - 'ایران ریال', - {'JPY': ['JP¥', '¥']}, - 'rtl', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/naq.js b/packages/common/locales/global/naq.js deleted file mode 100644 index 9cf3eccefe..0000000000 --- a/packages/common/locales/global/naq.js +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - if (n === 2) return 2; - return 5; -} -global.ng.common.locales['naq'] = [ - 'naq', - [['ǁgoagas', 'ǃuias'], u, u], - u, - [ - ['S', 'M', 'E', 'W', 'D', 'F', 'A'], ['Son', 'Ma', 'De', 'Wu', 'Do', 'Fr', 'Sat'], - [ - 'Sontaxtsees', 'Mantaxtsees', 'Denstaxtsees', 'Wunstaxtsees', 'Dondertaxtsees', - 'Fraitaxtsees', 'Satertaxtsees' - ], - ['Son', 'Ma', 'De', 'Wu', 'Do', 'Fr', 'Sat'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'ǃKhanni', 'ǃKhanǀgôab', 'ǀKhuuǁkhâb', 'ǃHôaǂkhaib', 'ǃKhaitsâb', 'Gamaǀaeb', 'ǂKhoesaob', - 'Aoǁkhuumûǁkhâb', 'Taraǀkhuumûǁkhâb', 'ǂNûǁnâiseb', 'ǀHooǂgaeb', 'Hôasoreǁkhâb' - ] - ], - u, - [['BC', 'AD'], u, ['Xristub aiǃâ', 'Xristub khaoǃgâ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZAR', - 'ZAR', - 'South African Randi', - {'JPY': ['JP¥', '¥'], 'NAD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/nb-SJ.js b/packages/common/locales/global/nb-SJ.js deleted file mode 100644 index 45cf78793e..0000000000 --- a/packages/common/locales/global/nb-SJ.js +++ /dev/null @@ -1,100 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['nb-sj'] = [ - 'nb-SJ', - [['a', 'p'], ['a.m.', 'p.m.'], u], - [['a.m.', 'p.m.'], u, u], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['søn.', 'man.', 'tir.', 'ons.', 'tor.', 'fre.', 'lør.'], - ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'], - ['sø.', 'ma.', 'ti.', 'on.', 'to.', 'fr.', 'lø.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mar.', 'apr.', 'mai', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'des.'], - [ - 'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', - 'november', 'desember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'], - [ - 'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', - 'november', 'desember' - ] - ], - [['f.Kr.', 'e.Kr.'], u, ['før Kristus', 'etter Kristus']], - 1, - [6, 0], - ['dd.MM.y', 'd. MMM y', 'd. MMMM y', 'EEEE d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'kl\'. {0}', '{1} {0}'], - [',', ' ', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'NOK', - 'kr', - 'norske kroner', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NOK': ['kr'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural, - [ - [ - ['mn.', 'mg.', 'fm.', 'em.', 'kv.', 'nt.'], - ['midn.', 'morg.', 'form.', 'etterm.', 'kveld', 'natt'], - ['midnatt', 'morgenen', 'formiddagen', 'ettermiddagen', 'kvelden', 'natten'] - ], - [ - ['mn.', 'mg.', 'fm.', 'em.', 'kv.', 'nt.'], - ['midn.', 'morg.', 'form.', 'etterm.', 'kveld', 'natt'], - ['midnatt', 'morgen', 'formiddag', 'ettermiddag', 'kveld', 'natt'] - ], - [ - '00:00', ['06:00', '10:00'], ['10:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/nb.js b/packages/common/locales/global/nb.js deleted file mode 100644 index 197ef2bb7d..0000000000 --- a/packages/common/locales/global/nb.js +++ /dev/null @@ -1,100 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['nb'] = [ - 'nb', - [['a', 'p'], ['a.m.', 'p.m.'], u], - [['a.m.', 'p.m.'], u, u], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['søn.', 'man.', 'tir.', 'ons.', 'tor.', 'fre.', 'lør.'], - ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'], - ['sø.', 'ma.', 'ti.', 'on.', 'to.', 'fr.', 'lø.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mar.', 'apr.', 'mai', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'des.'], - [ - 'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', - 'november', 'desember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'], - [ - 'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', - 'november', 'desember' - ] - ], - [['f.Kr.', 'e.Kr.'], u, ['før Kristus', 'etter Kristus']], - 1, - [6, 0], - ['dd.MM.y', 'd. MMM y', 'd. MMMM y', 'EEEE d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'kl\'. {0}', '{1} {0}'], - [',', ' ', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'NOK', - 'kr', - 'norske kroner', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NOK': ['kr'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural, - [ - [ - ['mn.', 'mg.', 'fm.', 'em.', 'kv.', 'nt.'], - ['midn.', 'morg.', 'form.', 'etterm.', 'kveld', 'natt'], - ['midnatt', 'morgenen', 'formiddagen', 'ettermiddagen', 'kvelden', 'natten'] - ], - [ - ['mn.', 'mg.', 'fm.', 'em.', 'kv.', 'nt.'], - ['midn.', 'morg.', 'form.', 'etterm.', 'kveld', 'natt'], - ['midnatt', 'morgen', 'formiddag', 'ettermiddag', 'kveld', 'natt'] - ], - [ - '00:00', ['06:00', '10:00'], ['10:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/nd.js b/packages/common/locales/global/nd.js deleted file mode 100644 index b4649ad3b4..0000000000 --- a/packages/common/locales/global/nd.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['nd'] = [ - 'nd', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'S', 'S', 'S', 'S', 'M'], ['Son', 'Mvu', 'Sib', 'Sit', 'Sin', 'Sih', 'Mgq'], - ['Sonto', 'Mvulo', 'Sibili', 'Sithathu', 'Sine', 'Sihlanu', 'Mgqibelo'], - ['Son', 'Mvu', 'Sib', 'Sit', 'Sin', 'Sih', 'Mgq'] - ], - u, - [ - ['Z', 'N', 'M', 'M', 'N', 'N', 'N', 'N', 'M', 'M', 'L', 'M'], - ['Zib', 'Nhlo', 'Mbi', 'Mab', 'Nkw', 'Nhla', 'Ntu', 'Ncw', 'Mpan', 'Mfu', 'Lwe', 'Mpal'], - [ - 'Zibandlela', 'Nhlolanja', 'Mbimbitho', 'Mabasa', 'Nkwenkwezi', 'Nhlangula', 'Ntulikazi', - 'Ncwabakazi', 'Mpandula', 'Mfumfu', 'Lwezi', 'Mpalakazi' - ] - ], - u, - [['BC', 'AD'], u, ['UKristo angakabuyi', 'Ukristo ebuyile']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - 'US$', - 'Dola yase Amelika', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/nds-NL.js b/packages/common/locales/global/nds-NL.js deleted file mode 100644 index 720a883672..0000000000 --- a/packages/common/locales/global/nds-NL.js +++ /dev/null @@ -1,48 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['nds-nl'] = [ - 'nds-NL', - [['AM', 'PM'], u, u], - u, - [['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], u, u], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'], u - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'EUR', - '€', - 'EUR', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/nds.js b/packages/common/locales/global/nds.js deleted file mode 100644 index 9309162c0a..0000000000 --- a/packages/common/locales/global/nds.js +++ /dev/null @@ -1,48 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['nds'] = [ - 'nds', - [['AM', 'PM'], u, u], - u, - [['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], u, u], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'], u - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'EUR', - '€', - 'EUR', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ne-IN.js b/packages/common/locales/global/ne-IN.js deleted file mode 100644 index 72dc42797f..0000000000 --- a/packages/common/locales/global/ne-IN.js +++ /dev/null @@ -1,70 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ne-in'] = [ - 'ne-IN', - [['पूर्वाह्न', 'अपराह्न'], u, u], - u, - [ - ['आ', 'सो', 'म', 'बु', 'बि', 'शु', 'श'], ['आइत', 'सोम', 'मङ्गल', 'बुध', 'बिहि', 'शुक्र', 'शनि'], - ['आइतबार', 'सोमबार', 'मङ्गलबार', 'बुधबार', 'बिहिबार', 'शुक्रबार', 'शनिबार'], - ['आइत', 'सोम', 'मङ्गल', 'बुध', 'बिहि', 'शुक्र', 'शनि'] - ], - u, - [ - ['जन', 'फेब', 'मार्च', 'अप्र', 'मे', 'जुन', 'जुल', 'अग', 'सेप', 'अक्टो', 'नोभे', 'डिसे'], - [ - 'जनवरी', 'फेब्रुअरी', 'मार्च', 'अप्रिल', 'मे', 'जुन', 'जुलाई', 'अगस्ट', 'सेप्टेम्बर', 'अक्टोबर', 'नोभेम्बर', - 'डिसेम्बर' - ], - u - ], - [ - ['जन', 'फेेब', 'मार्च', 'अप्र', 'मे', 'जुन', 'जुल', 'अग', 'सेप', 'अक्टो', 'नोभे', 'डिसे'], - [ - 'जनवरी', 'फेब्रुअरी', 'मार्च', 'अप्रिल', 'मे', 'जुन', 'जुलाई', 'अगस्ट', 'सेप्टेम्बर', 'अक्टोबर', 'नोभेम्बर', - 'डिसेम्बर' - ], - u - ], - [['ईसा पूर्व', 'सन्'], u, u], - 0, - [0, 0], - ['yy/M/d', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤ #,##,##0.00', '#E0'], - 'INR', - '₹', - 'भारतीय रूपिँया', - {'JPY': ['JP¥', '¥'], 'NPR': ['नेरू', 'रू'], 'THB': ['฿'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [['मध्यरात', 'मध्यान्ह', 'बिहान', 'अपरान्ह', 'साँझ', 'बेलुकी', 'रात'], u, u], u, - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '16:00'], ['16:00', '19:00'], - ['19:00', '22:00'], ['22:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ne.js b/packages/common/locales/global/ne.js deleted file mode 100644 index 8589ee9895..0000000000 --- a/packages/common/locales/global/ne.js +++ /dev/null @@ -1,70 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ne'] = [ - 'ne', - [['पूर्वाह्न', 'अपराह्न'], u, u], - u, - [ - ['आ', 'सो', 'म', 'बु', 'बि', 'शु', 'श'], ['आइत', 'सोम', 'मङ्गल', 'बुध', 'बिहि', 'शुक्र', 'शनि'], - ['आइतबार', 'सोमबार', 'मङ्गलबार', 'बुधबार', 'बिहिबार', 'शुक्रबार', 'शनिबार'], - ['आइत', 'सोम', 'मङ्गल', 'बुध', 'बिहि', 'शुक्र', 'शनि'] - ], - u, - [ - ['जन', 'फेब', 'मार्च', 'अप्र', 'मे', 'जुन', 'जुल', 'अग', 'सेप', 'अक्टो', 'नोभे', 'डिसे'], - [ - 'जनवरी', 'फेब्रुअरी', 'मार्च', 'अप्रिल', 'मे', 'जुन', 'जुलाई', 'अगस्ट', 'सेप्टेम्बर', 'अक्टोबर', 'नोभेम्बर', - 'डिसेम्बर' - ], - u - ], - [ - ['जन', 'फेेब', 'मार्च', 'अप्र', 'मे', 'जुन', 'जुल', 'अग', 'सेप', 'अक्टो', 'नोभे', 'डिसे'], - [ - 'जनवरी', 'फेब्रुअरी', 'मार्च', 'अप्रिल', 'मे', 'जुन', 'जुलाई', 'अगस्ट', 'सेप्टेम्बर', 'अक्टोबर', 'नोभेम्बर', - 'डिसेम्बर' - ], - u - ], - [['ईसा पूर्व', 'सन्'], u, u], - 0, - [6, 0], - ['yy/M/d', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤ #,##,##0.00', '#E0'], - 'NPR', - 'नेरू', - 'नेपाली रूपैयाँ', - {'JPY': ['JP¥', '¥'], 'NPR': ['नेरू', 'रू'], 'THB': ['฿'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [['मध्यरात', 'मध्यान्ह', 'बिहान', 'अपरान्ह', 'साँझ', 'बेलुकी', 'रात'], u, u], u, - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '16:00'], ['16:00', '19:00'], - ['19:00', '22:00'], ['22:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/nl-AW.js b/packages/common/locales/global/nl-AW.js deleted file mode 100644 index 7e7c3a97a7..0000000000 --- a/packages/common/locales/global/nl-AW.js +++ /dev/null @@ -1,74 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['nl-aw'] = [ - 'nl-AW', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['Z', 'M', 'D', 'W', 'D', 'V', 'Z'], ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], - ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], - ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['v.C.', 'n.C.'], ['v.Chr.', 'n.Chr.'], ['voor Christus', 'na Christus']], - 1, - [6, 0], - ['dd-MM-y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'om\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤ -#,##0.00', '#E0'], - 'AWG', - 'Afl.', - 'Arubaanse gulden', - { - 'AUD': ['AU$', '$'], - 'AWG': ['Afl.'], - 'CAD': ['C$', '$'], - 'FJD': ['FJ$', '$'], - 'JPY': ['JP¥', '¥'], - 'SBD': ['SI$', '$'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural, - [ - [['middernacht', '’s ochtends', '’s middags', '’s avonds', '’s nachts'], u, u], - [['middernacht', 'ochtend', 'middag', 'avond', 'nacht'], u, u], - ['00:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '06:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/nl-BE.js b/packages/common/locales/global/nl-BE.js deleted file mode 100644 index ee6d8f59e1..0000000000 --- a/packages/common/locales/global/nl-BE.js +++ /dev/null @@ -1,73 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['nl-be'] = [ - 'nl-BE', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['Z', 'M', 'D', 'W', 'D', 'V', 'Z'], ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], - ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], - ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['v.C.', 'n.C.'], ['v.Chr.', 'n.Chr.'], ['voor Christus', 'na Christus']], - 1, - [6, 0], - ['d/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'om\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤ -#,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - { - 'AUD': ['AU$', '$'], - 'CAD': ['C$', '$'], - 'FJD': ['FJ$', '$'], - 'JPY': ['JP¥', '¥'], - 'SBD': ['SI$', '$'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural, - [ - [['middernacht', '’s ochtends', '’s middags', '’s avonds', '’s nachts'], u, u], - [['middernacht', 'ochtend', 'middag', 'avond', 'nacht'], u, u], - ['00:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '06:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/nl-BQ.js b/packages/common/locales/global/nl-BQ.js deleted file mode 100644 index e4b51f960f..0000000000 --- a/packages/common/locales/global/nl-BQ.js +++ /dev/null @@ -1,72 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['nl-bq'] = [ - 'nl-BQ', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['Z', 'M', 'D', 'W', 'D', 'V', 'Z'], ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], - ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], - ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['v.C.', 'n.C.'], ['v.Chr.', 'n.Chr.'], ['voor Christus', 'na Christus']], - 1, - [6, 0], - ['dd-MM-y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'om\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤ -#,##0.00', '#E0'], - 'USD', - '$', - 'Amerikaanse dollar', - { - 'AUD': ['AU$', '$'], - 'CAD': ['C$', '$'], - 'FJD': ['FJ$', '$'], - 'JPY': ['JP¥', '¥'], - 'SBD': ['SI$', '$'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural, - [ - [['middernacht', '’s ochtends', '’s middags', '’s avonds', '’s nachts'], u, u], - [['middernacht', 'ochtend', 'middag', 'avond', 'nacht'], u, u], - ['00:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '06:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/nl-CW.js b/packages/common/locales/global/nl-CW.js deleted file mode 100644 index 55cfed49ab..0000000000 --- a/packages/common/locales/global/nl-CW.js +++ /dev/null @@ -1,74 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['nl-cw'] = [ - 'nl-CW', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['Z', 'M', 'D', 'W', 'D', 'V', 'Z'], ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], - ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], - ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['v.C.', 'n.C.'], ['v.Chr.', 'n.Chr.'], ['voor Christus', 'na Christus']], - 1, - [6, 0], - ['dd-MM-y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'om\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤ -#,##0.00', '#E0'], - 'ANG', - 'NAf.', - 'Nederlands-Antilliaanse gulden', - { - 'ANG': ['NAf.'], - 'AUD': ['AU$', '$'], - 'CAD': ['C$', '$'], - 'FJD': ['FJ$', '$'], - 'JPY': ['JP¥', '¥'], - 'SBD': ['SI$', '$'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural, - [ - [['middernacht', '’s ochtends', '’s middags', '’s avonds', '’s nachts'], u, u], - [['middernacht', 'ochtend', 'middag', 'avond', 'nacht'], u, u], - ['00:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '06:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/nl-SR.js b/packages/common/locales/global/nl-SR.js deleted file mode 100644 index 464c03ada2..0000000000 --- a/packages/common/locales/global/nl-SR.js +++ /dev/null @@ -1,74 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['nl-sr'] = [ - 'nl-SR', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['Z', 'M', 'D', 'W', 'D', 'V', 'Z'], ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], - ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], - ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['v.C.', 'n.C.'], ['v.Chr.', 'n.Chr.'], ['voor Christus', 'na Christus']], - 1, - [6, 0], - ['dd-MM-y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'om\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤ -#,##0.00', '#E0'], - 'SRD', - '$', - 'Surinaamse dollar', - { - 'AUD': ['AU$', '$'], - 'CAD': ['C$', '$'], - 'FJD': ['FJ$', '$'], - 'JPY': ['JP¥', '¥'], - 'SBD': ['SI$', '$'], - 'SRD': ['$'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural, - [ - [['middernacht', '’s ochtends', '’s middags', '’s avonds', '’s nachts'], u, u], - [['middernacht', 'ochtend', 'middag', 'avond', 'nacht'], u, u], - ['00:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '06:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/nl-SX.js b/packages/common/locales/global/nl-SX.js deleted file mode 100644 index 5e282262aa..0000000000 --- a/packages/common/locales/global/nl-SX.js +++ /dev/null @@ -1,74 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['nl-sx'] = [ - 'nl-SX', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['Z', 'M', 'D', 'W', 'D', 'V', 'Z'], ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], - ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], - ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['v.C.', 'n.C.'], ['v.Chr.', 'n.Chr.'], ['voor Christus', 'na Christus']], - 1, - [6, 0], - ['dd-MM-y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'om\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤ -#,##0.00', '#E0'], - 'ANG', - 'NAf.', - 'Nederlands-Antilliaanse gulden', - { - 'ANG': ['NAf.'], - 'AUD': ['AU$', '$'], - 'CAD': ['C$', '$'], - 'FJD': ['FJ$', '$'], - 'JPY': ['JP¥', '¥'], - 'SBD': ['SI$', '$'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural, - [ - [['middernacht', '’s ochtends', '’s middags', '’s avonds', '’s nachts'], u, u], - [['middernacht', 'ochtend', 'middag', 'avond', 'nacht'], u, u], - ['00:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '06:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/nl.js b/packages/common/locales/global/nl.js deleted file mode 100644 index 657da4146e..0000000000 --- a/packages/common/locales/global/nl.js +++ /dev/null @@ -1,73 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['nl'] = [ - 'nl', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['Z', 'M', 'D', 'W', 'D', 'V', 'Z'], ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], - ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], - ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['v.C.', 'n.C.'], ['v.Chr.', 'n.Chr.'], ['voor Christus', 'na Christus']], - 1, - [6, 0], - ['dd-MM-y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'om\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤ -#,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - { - 'AUD': ['AU$', '$'], - 'CAD': ['C$', '$'], - 'FJD': ['FJ$', '$'], - 'JPY': ['JP¥', '¥'], - 'SBD': ['SI$', '$'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural, - [ - [['middernacht', '’s ochtends', '’s middags', '’s avonds', '’s nachts'], u, u], - [['middernacht', 'ochtend', 'middag', 'avond', 'nacht'], u, u], - ['00:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], ['00:00', '06:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/nmg.js b/packages/common/locales/global/nmg.js deleted file mode 100644 index 75730e360d..0000000000 --- a/packages/common/locales/global/nmg.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['nmg'] = [ - 'nmg', - [['maná', 'kugú'], u, u], - u, - [ - ['s', 'm', 's', 's', 's', 'm', 's'], ['sɔ́n', 'mɔ́n', 'smb', 'sml', 'smn', 'mbs', 'sas'], - [ - 'sɔ́ndɔ', 'mɔ́ndɔ', 'sɔ́ndɔ mafú mába', 'sɔ́ndɔ mafú málal', 'sɔ́ndɔ mafú mána', 'mabágá má sukul', - 'sásadi' - ], - ['sɔ́n', 'mɔ́n', 'smb', 'sml', 'smn', 'mbs', 'sas'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['ng1', 'ng2', 'ng3', 'ng4', 'ng5', 'ng6', 'ng7', 'ng8', 'ng9', 'ng10', 'ng11', 'kris'], - [ - 'ngwɛn matáhra', 'ngwɛn ńmba', 'ngwɛn ńlal', 'ngwɛn ńna', 'ngwɛn ńtan', 'ngwɛn ńtuó', - 'ngwɛn hɛmbuɛrí', 'ngwɛn lɔmbi', 'ngwɛn rɛbvuâ', 'ngwɛn wum', 'ngwɛn wum navǔr', 'krísimin' - ] - ], - u, - [['BL', 'PB'], u, ['Bó Lahlɛ̄', 'Pfiɛ Burī']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'Fraŋ CFA BEAC', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/nn.js b/packages/common/locales/global/nn.js deleted file mode 100644 index 5d7517a0b1..0000000000 --- a/packages/common/locales/global/nn.js +++ /dev/null @@ -1,88 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['nn'] = [ - 'nn', - [['f.m.', 'e.m.'], u, ['formiddag', 'ettermiddag']], - [['f.m.', 'e.m.'], u, u], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['sø.', 'må.', 'ty.', 'on.', 'to.', 'fr.', 'la.'], - ['søndag', 'måndag', 'tysdag', 'onsdag', 'torsdag', 'fredag', 'laurdag'], - ['sø.', 'må.', 'ty.', 'on.', 'to.', 'fr.', 'la.'] - ], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['søn', 'mån', 'tys', 'ons', 'tor', 'fre', 'lau'], - ['søndag', 'måndag', 'tysdag', 'onsdag', 'torsdag', 'fredag', 'laurdag'], - ['sø.', 'må.', 'ty.', 'on.', 'to.', 'fr.', 'la.'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mars', 'apr.', 'mai', 'juni', 'juli', 'aug.', 'sep.', 'okt.', 'nov.', 'des.'], - [ - 'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', - 'november', 'desember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'], - [ - 'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', - 'november', 'desember' - ] - ], - [['f.Kr.', 'e.Kr.'], u, u], - 1, - [6, 0], - ['dd.MM.y', 'd. MMM y', 'd. MMMM y', 'EEEE d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', '\'kl\'. HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'kl\'. {0}', '{1} {0}'], - [',', ' ', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'NOK', - 'kr', - 'norske kroner', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NOK': ['kr'], - 'NZD': [u, '$'], - 'TWD': [u, '$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XPF': [] - }, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/nnh.js b/packages/common/locales/global/nnh.js deleted file mode 100644 index 4b449d84da..0000000000 --- a/packages/common/locales/global/nnh.js +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['nnh'] = [ - 'nnh', - [['mbaʼámbaʼ', 'ncwònzém'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - [ - 'lyɛʼɛ́ sẅíŋtè', 'mvfò lyɛ̌ʼ', 'mbɔ́ɔntè mvfò lyɛ̌ʼ', 'tsètsɛ̀ɛ lyɛ̌ʼ', 'mbɔ́ɔntè tsetsɛ̀ɛ lyɛ̌ʼ', - 'mvfò màga lyɛ̌ʼ', 'màga lyɛ̌ʼ' - ], - u, u - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'saŋ tsetsɛ̀ɛ lùm', 'saŋ kàg ngwóŋ', 'saŋ lepyè shúm', 'saŋ cÿó', 'saŋ tsɛ̀ɛ cÿó', - 'saŋ njÿoláʼ', 'saŋ tyɛ̀b tyɛ̀b mbʉ̀ŋ', 'saŋ mbʉ̀ŋ', 'saŋ ngwɔ̀ʼ mbÿɛ', 'saŋ tàŋa tsetsáʼ', - 'saŋ mejwoŋó', 'saŋ lùm' - ], - u - ], - u, - [['m.z.Y.', 'm.g.n.Y.'], u, ['mé zyé Yěsô', 'mé gÿo ńzyé Yěsô']], - 1, - [6, 0], - ['dd/MM/yy', 'd MMM, y', '\'lyɛ\'̌ʼ d \'na\' MMMM, y', 'EEEE , \'lyɛ\'̌ʼ d \'na\' MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1}, {0}', '{1},{0}'], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'XAF', - 'FCFA', - 'feláŋ CFA', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/nus.js b/packages/common/locales/global/nus.js deleted file mode 100644 index b503d55b72..0000000000 --- a/packages/common/locales/global/nus.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['nus'] = [ - 'nus', - [['RW', 'TŊ'], u, u], - u, - [ - ['C', 'J', 'R', 'D', 'Ŋ', 'D', 'B'], ['Cäŋ', 'Jiec', 'Rɛw', 'Diɔ̱k', 'Ŋuaan', 'Dhieec', 'Bäkɛl'], - [ - 'Cäŋ kuɔth', 'Jiec la̱t', 'Rɛw lätni', 'Diɔ̱k lätni', 'Ŋuaan lätni', 'Dhieec lätni', - 'Bäkɛl lätni' - ], - ['Cäŋ', 'Jiec', 'Rɛw', 'Diɔ̱k', 'Ŋuaan', 'Dhieec', 'Bäkɛl'] - ], - u, - [ - ['T', 'P', 'D', 'G', 'D', 'K', 'P', 'T', 'T', 'L', 'K', 'T'], - ['Tiop', 'Pɛt', 'Duɔ̱ɔ̱', 'Guak', 'Duä', 'Kor', 'Pay', 'Thoo', 'Tɛɛ', 'Laa', 'Kur', 'Tid'], - [ - 'Tiop thar pɛt', 'Pɛt', 'Duɔ̱ɔ̱ŋ', 'Guak', 'Duät', 'Kornyoot', 'Pay yie̱tni', 'Tho̱o̱r', 'Tɛɛr', - 'Laath', 'Kur', 'Tio̱p in di̱i̱t' - ] - ], - u, - [['AY', 'ƐY'], u, ['A ka̱n Yecu ni dap', 'Ɛ ca Yecu dap']], - 1, - [6, 0], - ['d/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'z h:mm:ss a', 'zzzz h:mm:ss a'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SSP', - '£', - 'SSP', - {'GBP': ['GB£', '£'], 'JPY': ['JP¥', '¥'], 'SSP': ['£'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/nyn.js b/packages/common/locales/global/nyn.js deleted file mode 100644 index af386a0537..0000000000 --- a/packages/common/locales/global/nyn.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['nyn'] = [ - 'nyn', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'K', 'R', 'S', 'N', 'T', 'M'], ['SAN', 'ORK', 'OKB', 'OKS', 'OKN', 'OKT', 'OMK'], - ['Sande', 'Orwokubanza', 'Orwakabiri', 'Orwakashatu', 'Orwakana', 'Orwakataano', 'Orwamukaaga'], - ['SAN', 'ORK', 'OKB', 'OKS', 'OKN', 'OKT', 'OMK'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['KBZ', 'KBR', 'KST', 'KKN', 'KTN', 'KMK', 'KMS', 'KMN', 'KMW', 'KKM', 'KNK', 'KNB'], - [ - 'Okwokubanza', 'Okwakabiri', 'Okwakashatu', 'Okwakana', 'Okwakataana', 'Okwamukaaga', - 'Okwamushanju', 'Okwamunaana', 'Okwamwenda', 'Okwaikumi', 'Okwaikumi na kumwe', - 'Okwaikumi na ibiri' - ] - ], - u, - [['BC', 'AD'], u, ['Kurisito Atakaijire', 'Kurisito Yaijire']], - 1, - [0, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'UGX', - 'USh', - 'Eshiringi ya Uganda', - {'JPY': ['JP¥', '¥'], 'UGX': ['USh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/om-KE.js b/packages/common/locales/global/om-KE.js deleted file mode 100644 index 545b4f4200..0000000000 --- a/packages/common/locales/global/om-KE.js +++ /dev/null @@ -1,64 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['om-ke'] = [ - 'om-KE', - [['WD', 'WB'], u, u], - u, - [ - ['D', 'W', 'Q', 'R', 'K', 'J', 'S'], ['Dil', 'Wix', 'Qib', 'Rob', 'Kam', 'Jim', 'San'], - ['Dilbata', 'Wiixata', 'Qibxata', 'Roobii', 'Kamiisa', 'Jimaata', 'Sanbata'], - ['Dil', 'Wix', 'Qib', 'Rob', 'Kam', 'Jim', 'San'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Ama', 'Gur', 'Bit', 'Elb', 'Cam', 'Wax', 'Ado', 'Hag', 'Ful', 'Onk', 'Sad', 'Mud'], - [ - 'Amajjii', 'Guraandhala', 'Bitooteessa', 'Elba', 'Caamsa', 'Waxabajjii', 'Adooleessa', - 'Hagayya', 'Fuulbana', 'Onkololeessa', 'Sadaasa', 'Muddee' - ] - ], - [ - ['A', 'G', 'B', 'E', 'C', 'W', 'A', 'H', 'F', 'O', 'S', 'M'], - ['Ama', 'Gur', 'Bit', 'Elb', 'Cam', 'Wax', 'Ado', 'Hag', 'Ful', 'Onk', 'Sad', 'Mud'], - [ - 'Amajjii', 'Guraandhala', 'Bitooteessa', 'Elba', 'Caamsa', 'Waxabajjii', 'Adooleessa', - 'Hagayya', 'Fuulbana', 'Onkololeessa', 'Sadaasa', 'Muddee' - ] - ], - [['KD', 'CE'], u, ['Dheengadda Jeesu', 'CE']], - 0, - [6, 0], - ['dd/MM/yy', 'dd-MMM-y', 'dd MMMM y', 'EEEE, MMMM d, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'KES', - {'ETB': ['Br'], 'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/om.js b/packages/common/locales/global/om.js deleted file mode 100644 index c22d6763bb..0000000000 --- a/packages/common/locales/global/om.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['om'] = [ - 'om', - [['WD', 'WB'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Dil', 'Wix', 'Qib', 'Rob', 'Kam', 'Jim', 'San'], - ['Dilbata', 'Wiixata', 'Qibxata', 'Roobii', 'Kamiisa', 'Jimaata', 'Sanbata'], - ['Dil', 'Wix', 'Qib', 'Rob', 'Kam', 'Jim', 'San'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Ama', 'Gur', 'Bit', 'Elb', 'Cam', 'Wax', 'Ado', 'Hag', 'Ful', 'Onk', 'Sad', 'Mud'], - [ - 'Amajjii', 'Guraandhala', 'Bitooteessa', 'Elba', 'Caamsa', 'Waxabajjii', 'Adooleessa', - 'Hagayya', 'Fuulbana', 'Onkololeessa', 'Sadaasa', 'Muddee' - ] - ], - u, - [['BCE', 'CE'], u, ['Dheengadda Jeesu', 'CE']], - 0, - [6, 0], - ['dd/MM/yy', 'dd-MMM-y', 'dd MMMM y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ETB', - 'Br', - 'Itoophiyaa Birrii', - {'ETB': ['Br'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/or.js b/packages/common/locales/global/or.js deleted file mode 100644 index c4172b2495..0000000000 --- a/packages/common/locales/global/or.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['or'] = [ - 'or', - [['ପୂ', 'ଅ'], ['AM', 'PM'], u], - [['AM', 'ଅପରାହ୍ନ'], ['ପୂର୍ବାହ୍ନ', 'ଅପରାହ୍ନ'], u], - [ - ['ର', 'ସୋ', 'ମ', 'ବୁ', 'ଗୁ', 'ଶୁ', 'ଶ'], ['ରବି', 'ସୋମ', 'ମଙ୍ଗଳ', 'ବୁଧ', 'ଗୁରୁ', 'ଶୁକ୍ର', 'ଶନି'], - ['ରବିବାର', 'ସୋମବାର', 'ମଙ୍ଗଳବାର', 'ବୁଧବାର', 'ଗୁରୁବାର', 'ଶୁକ୍ରବାର', 'ଶନିବାର'], - ['ରବି', 'ସୋମ', 'ମଙ୍ଗଳ', 'ବୁଧ', 'ଗୁରୁ', 'ଶୁକ୍ର', 'ଶନି'] - ], - u, - [ - ['ଜା', 'ଫେ', 'ମା', 'ଅ', 'ମଇ', 'ଜୁ', 'ଜୁ', 'ଅ', 'ସେ', 'ଅ', 'ନ', 'ଡି'], - [ - 'ଜାନୁଆରୀ', 'ଫେବୃଆରୀ', 'ମାର୍ଚ୍ଚ', 'ଅପ୍ରେଲ', 'ମଇ', 'ଜୁନ', 'ଜୁଲାଇ', 'ଅଗଷ୍ଟ', 'ସେପ୍ଟେମ୍ବର', 'ଅକ୍ଟୋବର', - 'ନଭେମ୍ବର', 'ଡିସେମ୍ବର' - ], - u - ], - u, - [['BC', 'AD'], u, ['ଖ୍ରୀଷ୍ଟପୂର୍ବ', 'ଖ୍ରୀଷ୍ଟାବ୍ଦ']], - 0, - [0, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{0} ଠାରେ {1}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'INR', - '₹', - 'ଭାରତୀୟ ଟଙ୍କା', - {}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/os-RU.js b/packages/common/locales/global/os-RU.js deleted file mode 100644 index 356fdecf5c..0000000000 --- a/packages/common/locales/global/os-RU.js +++ /dev/null @@ -1,73 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['os-ru'] = [ - 'os-RU', - [['AM', 'PM'], u, ['ӕмбисбоны размӕ', 'ӕмбисбоны фӕстӕ']], - [['AM', 'PM'], u, u], - [ - ['Х', 'К', 'Д', 'Ӕ', 'Ц', 'М', 'С'], ['хцб', 'крс', 'дцг', 'ӕрт', 'цпр', 'мрб', 'сбт'], - ['хуыцаубон', 'къуырисӕр', 'дыццӕг', 'ӕртыццӕг', 'цыппӕрӕм', 'майрӕмбон', 'сабат'], - ['хцб', 'крс', 'дцг', 'ӕрт', 'цпр', 'мрб', 'сбт'] - ], - [ - ['Х', 'К', 'Д', 'Ӕ', 'Ц', 'М', 'С'], ['Хцб', 'Крс', 'Дцг', 'Ӕрт', 'Цпр', 'Мрб', 'Сбт'], - ['Хуыцаубон', 'Къуырисӕр', 'Дыццӕг', 'Ӕртыццӕг', 'Цыппӕрӕм', 'Майрӕмбон', 'Сабат'], - ['хцб', 'крс', 'дцг', 'ӕрт', 'цпр', 'мрб', 'сбт'] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'фев.', 'мар.', 'апр.', 'майы', 'июны', 'июлы', 'авг.', 'сен.', 'окт.', 'ноя.', 'дек.' - ], - [ - 'январы', 'февралы', 'мартъийы', 'апрелы', 'майы', 'июны', 'июлы', 'августы', 'сентябры', - 'октябры', 'ноябры', 'декабры' - ] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'Янв.', 'Февр.', 'Март.', 'Апр.', 'Май', 'Июнь', 'Июль', 'Авг.', 'Сент.', 'Окт.', 'Нояб.', - 'Дек.' - ], - [ - 'Январь', 'Февраль', 'Мартъи', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', - 'Октябрь', 'Ноябрь', 'Декабрь' - ] - ], - [['н.д.а.', 'н.д.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd MMM y \'аз\'', 'd MMMM, y \'аз\'', 'EEEE, d MMMM, y \'аз\''], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'НН', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'RUB', - '₽', - 'Сом', - {'JPY': ['JP¥', '¥'], 'RUB': ['₽']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/os.js b/packages/common/locales/global/os.js deleted file mode 100644 index 52943f0e1c..0000000000 --- a/packages/common/locales/global/os.js +++ /dev/null @@ -1,73 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['os'] = [ - 'os', - [['AM', 'PM'], u, ['ӕмбисбоны размӕ', 'ӕмбисбоны фӕстӕ']], - [['AM', 'PM'], u, u], - [ - ['Х', 'К', 'Д', 'Ӕ', 'Ц', 'М', 'С'], ['хцб', 'крс', 'дцг', 'ӕрт', 'цпр', 'мрб', 'сбт'], - ['хуыцаубон', 'къуырисӕр', 'дыццӕг', 'ӕртыццӕг', 'цыппӕрӕм', 'майрӕмбон', 'сабат'], - ['хцб', 'крс', 'дцг', 'ӕрт', 'цпр', 'мрб', 'сбт'] - ], - [ - ['Х', 'К', 'Д', 'Ӕ', 'Ц', 'М', 'С'], ['Хцб', 'Крс', 'Дцг', 'Ӕрт', 'Цпр', 'Мрб', 'Сбт'], - ['Хуыцаубон', 'Къуырисӕр', 'Дыццӕг', 'Ӕртыццӕг', 'Цыппӕрӕм', 'Майрӕмбон', 'Сабат'], - ['хцб', 'крс', 'дцг', 'ӕрт', 'цпр', 'мрб', 'сбт'] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'фев.', 'мар.', 'апр.', 'майы', 'июны', 'июлы', 'авг.', 'сен.', 'окт.', 'ноя.', 'дек.' - ], - [ - 'январы', 'февралы', 'мартъийы', 'апрелы', 'майы', 'июны', 'июлы', 'августы', 'сентябры', - 'октябры', 'ноябры', 'декабры' - ] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'Янв.', 'Февр.', 'Март.', 'Апр.', 'Май', 'Июнь', 'Июль', 'Авг.', 'Сент.', 'Окт.', 'Нояб.', - 'Дек.' - ], - [ - 'Январь', 'Февраль', 'Мартъи', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', - 'Октябрь', 'Ноябрь', 'Декабрь' - ] - ], - [['н.д.а.', 'н.д.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd MMM y \'аз\'', 'd MMMM, y \'аз\'', 'EEEE, d MMMM, y \'аз\''], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'НН', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'GEL', - '₾', - 'Лар', - {'GEL': ['₾'], 'JPY': ['JP¥', '¥']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/pa-Arab.js b/packages/common/locales/global/pa-Arab.js deleted file mode 100644 index 9a3b581ebf..0000000000 --- a/packages/common/locales/global/pa-Arab.js +++ /dev/null @@ -1,55 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['pa-arab'] = [ - 'pa-Arab', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['اتوار', 'پیر', 'منگل', 'بُدھ', 'جمعرات', 'جمعہ', 'ہفتہ'], - u, u - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'جنوری', 'فروری', 'مارچ', 'اپریل', 'مئ', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', - 'دسمبر' - ], - u - ], - u, - [['ايساپورو', 'سں'], u, u], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, dd MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'PKR', - 'ر', - 'روپئیہ', - {'JPY': ['JP¥', '¥'], 'PKR': ['ر', 'Rs'], 'USD': ['US$', '$']}, - 'rtl', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/pa-Guru.js b/packages/common/locales/global/pa-Guru.js deleted file mode 100644 index 9591f697dd..0000000000 --- a/packages/common/locales/global/pa-Guru.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === Math.floor(n) && n >= 0 && n <= 1) return 1; - return 5; -} -global.ng.common.locales['pa-guru'] = [ - 'pa-Guru', - [['ਸ.', 'ਸ਼.'], ['ਪੂ.ਦੁ.', 'ਬਾ.ਦੁ.'], u], - [['ਪੂ.ਦੁ.', 'ਬਾ.ਦੁ.'], u, u], - [ - ['ਐ', 'ਸੋ', 'ਮੰ', 'ਬੁੱ', 'ਵੀ', 'ਸ਼ੁੱ', 'ਸ਼'], ['ਐਤ', 'ਸੋਮ', 'ਮੰਗਲ', 'ਬੁੱਧ', 'ਵੀਰ', 'ਸ਼ੁੱਕਰ', 'ਸ਼ਨਿੱਚਰ'], - ['ਐਤਵਾਰ', 'ਸੋਮਵਾਰ', 'ਮੰਗਲਵਾਰ', 'ਬੁੱਧਵਾਰ', 'ਵੀਰਵਾਰ', 'ਸ਼ੁੱਕਰਵਾਰ', 'ਸ਼ਨਿੱਚਰਵਾਰ'], - ['ਐਤ', 'ਸੋਮ', 'ਮੰਗ', 'ਬੁੱਧ', 'ਵੀਰ', 'ਸ਼ੁੱਕ', 'ਸ਼ਨਿੱ'] - ], - u, - [ - ['ਜ', 'ਫ਼', 'ਮਾ', 'ਅ', 'ਮ', 'ਜੂ', 'ਜੁ', 'ਅ', 'ਸ', 'ਅ', 'ਨ', 'ਦ'], - ['ਜਨ', 'ਫ਼ਰ', 'ਮਾਰਚ', 'ਅਪ੍ਰੈ', 'ਮਈ', 'ਜੂਨ', 'ਜੁਲਾ', 'ਅਗ', 'ਸਤੰ', 'ਅਕਤੂ', 'ਨਵੰ', 'ਦਸੰ'], - ['ਜਨਵਰੀ', 'ਫ਼ਰਵਰੀ', 'ਮਾਰਚ', 'ਅਪ੍ਰੈਲ', 'ਮਈ', 'ਜੂਨ', 'ਜੁਲਾਈ', 'ਅਗਸਤ', 'ਸਤੰਬਰ', 'ਅਕਤੂਬਰ', 'ਨਵੰਬਰ', 'ਦਸੰਬਰ'] - ], - u, - [['ਈ.ਪੂ.', 'ਸੰਨ'], ['ਈ. ਪੂ.', 'ਸੰਨ'], ['ਈਸਵੀ ਪੂਰਵ', 'ਈਸਵੀ ਸੰਨ']], - 0, - [0, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤ #,##,##0.00', '[#E0]'], - 'INR', - '₹', - 'ਭਾਰਤੀ ਰੁਪਇਆ', - {'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$'], 'XXX': []}, - 'ltr', - plural, - [ - [['ਅੱਧੀ ਰਾਤ', 'ਸਵੇਰੇ', 'ਦੁਪਹਿਰੇ', 'ਸ਼ਾਮੀਂ', 'ਰਾਤੀਂ'], u, u], - [['ਅੱਧੀ ਰਾਤ', 'ਸਵੇਰੇ', 'ਦੁਪਹਿਰੇ', 'ਸ਼ਾਮੀਂ', 'ਰਾਤੀਂ'], u, ['ਅੱਧੀ ਰਾਤ', 'ਸਵੇਰੇ', 'ਦੁਪਹਿਰੇ', 'ਸ਼ਾਮ', 'ਰਾਤ']], - ['00:00', ['04:00', '12:00'], ['12:00', '16:00'], ['16:00', '21:00'], ['21:00', '04:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/pa.js b/packages/common/locales/global/pa.js deleted file mode 100644 index 8dc08e163d..0000000000 --- a/packages/common/locales/global/pa.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === Math.floor(n) && n >= 0 && n <= 1) return 1; - return 5; -} -global.ng.common.locales['pa'] = [ - 'pa', - [['ਸ.', 'ਸ਼.'], ['ਪੂ.ਦੁ.', 'ਬਾ.ਦੁ.'], u], - [['ਪੂ.ਦੁ.', 'ਬਾ.ਦੁ.'], u, u], - [ - ['ਐ', 'ਸੋ', 'ਮੰ', 'ਬੁੱ', 'ਵੀ', 'ਸ਼ੁੱ', 'ਸ਼'], ['ਐਤ', 'ਸੋਮ', 'ਮੰਗਲ', 'ਬੁੱਧ', 'ਵੀਰ', 'ਸ਼ੁੱਕਰ', 'ਸ਼ਨਿੱਚਰ'], - ['ਐਤਵਾਰ', 'ਸੋਮਵਾਰ', 'ਮੰਗਲਵਾਰ', 'ਬੁੱਧਵਾਰ', 'ਵੀਰਵਾਰ', 'ਸ਼ੁੱਕਰਵਾਰ', 'ਸ਼ਨਿੱਚਰਵਾਰ'], - ['ਐਤ', 'ਸੋਮ', 'ਮੰਗ', 'ਬੁੱਧ', 'ਵੀਰ', 'ਸ਼ੁੱਕ', 'ਸ਼ਨਿੱ'] - ], - u, - [ - ['ਜ', 'ਫ਼', 'ਮਾ', 'ਅ', 'ਮ', 'ਜੂ', 'ਜੁ', 'ਅ', 'ਸ', 'ਅ', 'ਨ', 'ਦ'], - ['ਜਨ', 'ਫ਼ਰ', 'ਮਾਰਚ', 'ਅਪ੍ਰੈ', 'ਮਈ', 'ਜੂਨ', 'ਜੁਲਾ', 'ਅਗ', 'ਸਤੰ', 'ਅਕਤੂ', 'ਨਵੰ', 'ਦਸੰ'], - ['ਜਨਵਰੀ', 'ਫ਼ਰਵਰੀ', 'ਮਾਰਚ', 'ਅਪ੍ਰੈਲ', 'ਮਈ', 'ਜੂਨ', 'ਜੁਲਾਈ', 'ਅਗਸਤ', 'ਸਤੰਬਰ', 'ਅਕਤੂਬਰ', 'ਨਵੰਬਰ', 'ਦਸੰਬਰ'] - ], - u, - [['ਈ.ਪੂ.', 'ਸੰਨ'], ['ਈ. ਪੂ.', 'ਸੰਨ'], ['ਈਸਵੀ ਪੂਰਵ', 'ਈਸਵੀ ਸੰਨ']], - 0, - [0, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤ #,##,##0.00', '[#E0]'], - 'INR', - '₹', - 'ਭਾਰਤੀ ਰੁਪਇਆ', - {'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$'], 'XXX': []}, - 'ltr', - plural, - [ - [['ਅੱਧੀ ਰਾਤ', 'ਸਵੇਰੇ', 'ਦੁਪਹਿਰੇ', 'ਸ਼ਾਮੀਂ', 'ਰਾਤੀਂ'], u, u], - [['ਅੱਧੀ ਰਾਤ', 'ਸਵੇਰੇ', 'ਦੁਪਹਿਰੇ', 'ਸ਼ਾਮੀਂ', 'ਰਾਤੀਂ'], u, ['ਅੱਧੀ ਰਾਤ', 'ਸਵੇਰੇ', 'ਦੁਪਹਿਰੇ', 'ਸ਼ਾਮ', 'ਰਾਤ']], - ['00:00', ['04:00', '12:00'], ['12:00', '16:00'], ['16:00', '21:00'], ['21:00', '04:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/pl.js b/packages/common/locales/global/pl.js deleted file mode 100644 index 23b4f86606..0000000000 --- a/packages/common/locales/global/pl.js +++ /dev/null @@ -1,107 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14)) - return 3; - if (v === 0 && !(i === 1) && i % 10 === Math.floor(i % 10) && i % 10 >= 0 && i % 10 <= 1 || - v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 5 && i % 10 <= 9 || - v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 12 && i % 100 <= 14) - return 4; - return 5; -} -global.ng.common.locales['pl'] = [ - 'pl', - [['a', 'p'], ['AM', 'PM'], u], - u, - [ - ['n', 'p', 'w', 'ś', 'c', 'p', 's'], ['niedz.', 'pon.', 'wt.', 'śr.', 'czw.', 'pt.', 'sob.'], - ['niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota'], - ['nie', 'pon', 'wto', 'śro', 'czw', 'pią', 'sob'] - ], - [ - ['N', 'P', 'W', 'Ś', 'C', 'P', 'S'], ['niedz.', 'pon.', 'wt.', 'śr.', 'czw.', 'pt.', 'sob.'], - ['niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota'], - ['nie', 'pon', 'wto', 'śro', 'czw', 'pią', 'sob'] - ], - [ - ['s', 'l', 'm', 'k', 'm', 'c', 'l', 's', 'w', 'p', 'l', 'g'], - ['sty', 'lut', 'mar', 'kwi', 'maj', 'cze', 'lip', 'sie', 'wrz', 'paź', 'lis', 'gru'], - [ - 'stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'września', - 'października', 'listopada', 'grudnia' - ] - ], - [ - ['S', 'L', 'M', 'K', 'M', 'C', 'L', 'S', 'W', 'P', 'L', 'G'], - ['sty', 'lut', 'mar', 'kwi', 'maj', 'cze', 'lip', 'sie', 'wrz', 'paź', 'lis', 'gru'], - [ - 'styczeń', 'luty', 'marzec', 'kwiecień', 'maj', 'czerwiec', 'lipiec', 'sierpień', 'wrzesień', - 'październik', 'listopad', 'grudzień' - ] - ], - [['p.n.e.', 'n.e.'], u, ['przed naszą erą', 'naszej ery']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'PLN', - 'zł', - 'złoty polski', - { - 'AUD': [u, '$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'PLN': ['zł'], - 'RON': [u, 'lej'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural, - [ - [ - ['o półn.', 'w poł.', 'rano', 'przed poł.', 'po poł.', 'wiecz.', 'w nocy'], - ['o północy', 'w południe', 'rano', 'przed południem', 'po południu', 'wieczorem', 'w nocy'], - u - ], - [ - ['półn.', 'poł.', 'rano', 'przedpoł.', 'popoł.', 'wiecz.', 'noc'], - ['północ', 'południe', 'rano', 'przedpołudnie', 'popołudnie', 'wieczór', 'noc'], u - ], - [ - '00:00', '12:00', ['06:00', '10:00'], ['10:00', '12:00'], ['12:00', '18:00'], - ['18:00', '21:00'], ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/prg.js b/packages/common/locales/global/prg.js deleted file mode 100644 index eb7a27cb42..0000000000 --- a/packages/common/locales/global/prg.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (n % 10 === 0 || n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 19 || - v === 2 && f % 100 === Math.floor(f % 100) && f % 100 >= 11 && f % 100 <= 19) - return 0; - if (n % 10 === 1 && !(n % 100 === 11) || v === 2 && f % 10 === 1 && !(f % 100 === 11) || - !(v === 2) && f % 10 === 1) - return 1; - return 5; -} -global.ng.common.locales['prg'] = [ - 'prg', - [['AM', 'PM'], u, u], - u, - [['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], u, u], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'], u - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - u, - u, - u, - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ps-PK.js b/packages/common/locales/global/ps-PK.js deleted file mode 100644 index d04f3c6f0b..0000000000 --- a/packages/common/locales/global/ps-PK.js +++ /dev/null @@ -1,66 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ps-pk'] = [ - 'ps-PK', - [['غ.م.', 'غ.و.'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - ['يونۍ', 'دونۍ', 'درېنۍ', 'څلرنۍ', 'پينځنۍ', 'جمعه', 'اونۍ'], u, u - ], - u, - [ - ['ج', 'ف', 'م', 'ا', 'م', 'ج', 'ج', 'ا', 'س', 'ا', 'ن', 'د'], - [ - 'جنوري', 'فبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اګست', 'سېپتمبر', 'اکتوبر', - 'نومبر', 'دسمبر' - ], - u - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'جنوري', 'فبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اګست', 'سپتمبر', 'اکتوبر', 'نومبر', - 'دسمبر' - ], - [ - 'جنوري', 'فېبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اګست', 'سپتمبر', 'اکتوبر', - 'نومبر', 'دسمبر' - ] - ], - [['له میلاد وړاندې', 'م.'], u, ['له میلاد څخه وړاندې', 'له میلاد څخه وروسته']], - 0, - [6, 0], - ['y/M/d', 'y MMM d', 'د y د MMMM d', 'EEEE د y د MMMM d'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '\u200e+', '\u200e−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'PKR', - 'Rs', - 'پاکستانۍ کلداره', - {'AFN': ['؋'], 'JPY': ['JP¥', '¥'], 'PKR': ['Rs']}, - 'rtl', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ps.js b/packages/common/locales/global/ps.js deleted file mode 100644 index baab10d24c..0000000000 --- a/packages/common/locales/global/ps.js +++ /dev/null @@ -1,66 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ps'] = [ - 'ps', - [['غ.م.', 'غ.و.'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - ['يونۍ', 'دونۍ', 'درېنۍ', 'څلرنۍ', 'پينځنۍ', 'جمعه', 'اونۍ'], u, u - ], - u, - [ - ['ج', 'ف', 'م', 'ا', 'م', 'ج', 'ج', 'ا', 'س', 'ا', 'ن', 'د'], - [ - 'جنوري', 'فبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اګست', 'سېپتمبر', 'اکتوبر', - 'نومبر', 'دسمبر' - ], - u - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'جنوري', 'فبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اګست', 'سپتمبر', 'اکتوبر', 'نومبر', - 'دسمبر' - ], - [ - 'جنوري', 'فېبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اګست', 'سپتمبر', 'اکتوبر', - 'نومبر', 'دسمبر' - ] - ], - [['له میلاد وړاندې', 'م.'], u, ['له میلاد څخه وړاندې', 'له میلاد څخه وروسته']], - 6, - [4, 5], - ['y/M/d', 'y MMM d', 'د y د MMMM d', 'EEEE د y د MMMM d'], - ['H:mm', 'H:mm:ss', 'H:mm:ss (z)', 'H:mm:ss (zzzz)'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '\u200e+', '\u200e−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'AFN', - '؋', - 'افغانۍ', - {'AFN': ['؋'], 'JPY': ['JP¥', '¥']}, - 'rtl', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/pt-AO.js b/packages/common/locales/global/pt-AO.js deleted file mode 100644 index 2d642acf61..0000000000 --- a/packages/common/locales/global/pt-AO.js +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} -global.ng.common.locales['pt-ao'] = [ - 'pt-AO', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'AOA', - 'Kz', - 'kwanza angolano', - { - 'AOA': ['Kz'], - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'PTE': ['​'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [ - ['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], - ['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u - ], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], - ['00:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/pt-CH.js b/packages/common/locales/global/pt-CH.js deleted file mode 100644 index db5c6b9f62..0000000000 --- a/packages/common/locales/global/pt-CH.js +++ /dev/null @@ -1,82 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} -global.ng.common.locales['pt-ch'] = [ - 'pt-CH', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'CHF', - 'CHF', - 'franco suíço', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'PTE': ['​'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [ - ['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], - ['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u - ], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], - ['00:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/pt-CV.js b/packages/common/locales/global/pt-CV.js deleted file mode 100644 index b2053c29c5..0000000000 --- a/packages/common/locales/global/pt-CV.js +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} -global.ng.common.locales['pt-cv'] = [ - 'pt-CV', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'CVE', - '​', - 'escudo cabo-verdiano', - { - 'AUD': ['AU$', '$'], - 'CVE': ['​'], - 'JPY': ['JP¥', '¥'], - 'PTE': ['​PTE'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [ - ['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], - ['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u - ], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], - ['00:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/pt-GQ.js b/packages/common/locales/global/pt-GQ.js deleted file mode 100644 index 274a3226bd..0000000000 --- a/packages/common/locales/global/pt-GQ.js +++ /dev/null @@ -1,82 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} -global.ng.common.locales['pt-gq'] = [ - 'pt-GQ', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'franco CFA (BEAC)', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'PTE': ['​'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [ - ['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], - ['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u - ], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], - ['00:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/pt-GW.js b/packages/common/locales/global/pt-GW.js deleted file mode 100644 index 3ff8c22ca8..0000000000 --- a/packages/common/locales/global/pt-GW.js +++ /dev/null @@ -1,82 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} -global.ng.common.locales['pt-gw'] = [ - 'pt-GW', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'franco CFA (BCEAO)', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'PTE': ['​'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [ - ['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], - ['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u - ], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], - ['00:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/pt-LU.js b/packages/common/locales/global/pt-LU.js deleted file mode 100644 index 91933464ff..0000000000 --- a/packages/common/locales/global/pt-LU.js +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} -global.ng.common.locales['pt-lu'] = [ - 'pt-LU', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'LUF': ['F'], - 'PTE': ['​'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [ - ['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], - ['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u - ], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], - ['00:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/pt-MO.js b/packages/common/locales/global/pt-MO.js deleted file mode 100644 index 14b777b08f..0000000000 --- a/packages/common/locales/global/pt-MO.js +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} -global.ng.common.locales['pt-mo'] = [ - 'pt-MO', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 0, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'MOP', - 'MOP$', - 'pataca macaense', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'MOP': ['MOP$'], - 'PTE': ['​'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [ - ['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], - ['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u - ], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], - ['00:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/pt-MZ.js b/packages/common/locales/global/pt-MZ.js deleted file mode 100644 index b9e4878594..0000000000 --- a/packages/common/locales/global/pt-MZ.js +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} -global.ng.common.locales['pt-mz'] = [ - 'pt-MZ', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 0, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'MZN', - 'MTn', - 'metical moçambicano', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'MZN': ['MTn'], - 'PTE': ['​'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [ - ['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], - ['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u - ], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], - ['00:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/pt-PT.js b/packages/common/locales/global/pt-PT.js deleted file mode 100644 index 2c4685ed30..0000000000 --- a/packages/common/locales/global/pt-PT.js +++ /dev/null @@ -1,82 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} -global.ng.common.locales['pt-pt'] = [ - 'pt-PT', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 0, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'PTE': ['​'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [ - ['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], - ['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u - ], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], - ['00:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/pt-ST.js b/packages/common/locales/global/pt-ST.js deleted file mode 100644 index 4771e667f5..0000000000 --- a/packages/common/locales/global/pt-ST.js +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} -global.ng.common.locales['pt-st'] = [ - 'pt-ST', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'STN', - 'Db', - 'dobra de São Tomé e Príncipe', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'PTE': ['​'], - 'RON': [u, 'L'], - 'STN': ['Db'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [ - ['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], - ['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u - ], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], - ['00:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/pt-TL.js b/packages/common/locales/global/pt-TL.js deleted file mode 100644 index 18a40ea114..0000000000 --- a/packages/common/locales/global/pt-TL.js +++ /dev/null @@ -1,82 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} -global.ng.common.locales['pt-tl'] = [ - 'pt-TL', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'USD', - 'US$', - 'dólar dos Estados Unidos', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'PTE': ['​'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [ - ['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], - ['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u - ], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], - ['00:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/pt.js b/packages/common/locales/global/pt.js deleted file mode 100644 index d2f6bc9fb4..0000000000 --- a/packages/common/locales/global/pt.js +++ /dev/null @@ -1,79 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} -global.ng.common.locales['pt'] = [ - 'pt', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], ['dom.', 'seg.', 'ter.', 'qua.', 'qui.', 'sex.', 'sáb.'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['dom.', 'seg.', 'ter.', 'qua.', 'qui.', 'sex.', 'sáb.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 0, - [6, 0], - ['dd/MM/y', 'd \'de\' MMM \'de\' y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'BRL', - 'R$', - 'Real brasileiro', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'PTE': ['Esc.'], - 'RON': [u, 'L'], - 'SYP': [u, 'S£'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [['meia-noite', 'meio-dia', 'da manhã', 'da tarde', 'da noite', 'da madrugada'], u, u], - [['meia-noite', 'meio-dia', 'manhã', 'tarde', 'noite', 'madrugada'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '19:00'], ['19:00', '24:00'], - ['00:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/qu-BO.js b/packages/common/locales/global/qu-BO.js deleted file mode 100644 index 55ecfb3a8d..0000000000 --- a/packages/common/locales/global/qu-BO.js +++ /dev/null @@ -1,64 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['qu-bo'] = [ - 'qu-BO', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['D', 'L', 'M', 'X', 'J', 'V', 'S'], ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sab'], - ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'], - ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sab'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Set', 'Oct', 'Nov', 'Dic'], - [ - 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Setiembre', - 'Octubre', 'Noviembre', 'Diciembre' - ] - ], - u, - [['BCE', 'dC'], ['BCE', 'd.C.'], u], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{0} {1}', '{1} {0}'], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'BOB', - 'Bs', - 'Boliviano', - { - 'BBD': ['BBG', '$'], - 'BMD': ['DBM', '$'], - 'BOB': ['Bs'], - 'BZD': ['DBZ', '$'], - 'CAD': ['$CA', '$'], - 'JPY': ['JP¥', '¥'], - 'USD': ['$US', '$'] - }, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/qu-EC.js b/packages/common/locales/global/qu-EC.js deleted file mode 100644 index 7cfc86cff9..0000000000 --- a/packages/common/locales/global/qu-EC.js +++ /dev/null @@ -1,62 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['qu-ec'] = [ - 'qu-EC', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['D', 'L', 'M', 'X', 'J', 'V', 'S'], ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sab'], - ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'], - ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sab'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Set', 'Oct', 'Nov', 'Dic'], - [ - 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Setiembre', - 'Octubre', 'Noviembre', 'Diciembre' - ] - ], - u, - [['BCE', 'dC'], ['BCE', 'd.C.'], u], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{0} {1}', '{1} {0}'], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'USD', - '$', - 'Dólar Americano', - { - 'BBD': ['BBG', '$'], - 'BMD': ['DBM', '$'], - 'BZD': ['DBZ', '$'], - 'CAD': ['$CA', '$'], - 'JPY': ['JP¥', '¥'] - }, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/qu.js b/packages/common/locales/global/qu.js deleted file mode 100644 index c4c97e50ce..0000000000 --- a/packages/common/locales/global/qu.js +++ /dev/null @@ -1,64 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['qu'] = [ - 'qu', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['D', 'L', 'M', 'X', 'J', 'V', 'S'], ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sab'], - ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'], - ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sab'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Set', 'Oct', 'Nov', 'Dic'], - [ - 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Setiembre', - 'Octubre', 'Noviembre', 'Diciembre' - ] - ], - u, - [['BCE', 'dC'], ['BCE', 'd.C.'], u], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{0} {1}', '{1} {0}'], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'PEN', - 'S/', - 'Sol Peruano', - { - 'BBD': ['BBG', '$'], - 'BMD': ['DBM', '$'], - 'BZD': ['DBZ', '$'], - 'CAD': ['$CA', '$'], - 'JPY': ['JP¥', '¥'], - 'PEN': ['S/'], - 'USD': ['$US', '$'] - }, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/rm.js b/packages/common/locales/global/rm.js deleted file mode 100644 index 01d28138c3..0000000000 --- a/packages/common/locales/global/rm.js +++ /dev/null @@ -1,70 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['rm'] = [ - 'rm', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'G', 'M', 'M', 'G', 'V', 'S'], ['du', 'gli', 'ma', 'me', 'gie', 've', 'so'], - ['dumengia', 'glindesdi', 'mardi', 'mesemna', 'gievgia', 'venderdi', 'sonda'], - ['du', 'gli', 'ma', 'me', 'gie', 've', 'so'] - ], - u, - [ - ['S', 'F', 'M', 'A', 'M', 'Z', 'F', 'A', 'S', 'O', 'N', 'D'], - [ - 'schan.', 'favr.', 'mars', 'avr.', 'matg', 'zercl.', 'fan.', 'avust', 'sett.', 'oct.', 'nov.', - 'dec.' - ], - [ - 'da schaner', 'da favrer', 'da mars', 'd’avrigl', 'da matg', 'da zercladur', 'da fanadur', - 'd’avust', 'da settember', 'd’october', 'da november', 'da december' - ] - ], - [ - ['S', 'F', 'M', 'A', 'M', 'Z', 'F', 'A', 'S', 'O', 'N', 'D'], - [ - 'schan.', 'favr.', 'mars', 'avr.', 'matg', 'zercl.', 'fan.', 'avust', 'sett.', 'oct.', 'nov.', - 'dec.' - ], - [ - 'schaner', 'favrer', 'mars', 'avrigl', 'matg', 'zercladur', 'fanadur', 'avust', 'settember', - 'october', 'november', 'december' - ] - ], - [['av. Cr.', 's. Cr.'], u, ['avant Cristus', 'suenter Cristus']], - 1, - [6, 0], - ['dd-MM-yy', 'dd-MM-y', 'd MMMM y', 'EEEE, \'ils\' d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', '’', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'CHF', - 'CHF', - 'franc svizzer', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/rn.js b/packages/common/locales/global/rn.js deleted file mode 100644 index f96b733c12..0000000000 --- a/packages/common/locales/global/rn.js +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['rn'] = [ - 'rn', - [['Z.MU.', 'Z.MW.'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['cu.', 'mbe.', 'kab.', 'gtu.', 'kan.', 'gnu.', 'gnd.'], - [ - 'Ku w’indwi', 'Ku wa mbere', 'Ku wa kabiri', 'Ku wa gatatu', 'Ku wa kane', 'Ku wa gatanu', - 'Ku wa gatandatu' - ], - ['cu.', 'mbe.', 'kab.', 'gtu.', 'kan.', 'gnu.', 'gnd.'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'Mut.', 'Gas.', 'Wer.', 'Mat.', 'Gic.', 'Kam.', 'Nya.', 'Kan.', 'Nze.', 'Ukw.', 'Ugu.', 'Uku.' - ], - [ - 'Nzero', 'Ruhuhuma', 'Ntwarante', 'Ndamukiza', 'Rusama', 'Ruheshi', 'Mukakaro', 'Nyandagaro', - 'Nyakanga', 'Gitugutu', 'Munyonyo', 'Kigarama' - ] - ], - u, - [['Mb.Y.', 'Ny.Y'], u, ['Mbere ya Yezu', 'Nyuma ya Yezu']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00¤', '#E0'], - 'BIF', - 'FBu', - 'Ifaranga ry’Uburundi', - {'BIF': ['FBu'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ro-MD.js b/packages/common/locales/global/ro-MD.js deleted file mode 100644 index 177798b22c..0000000000 --- a/packages/common/locales/global/ro-MD.js +++ /dev/null @@ -1,92 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - if (!(v === 0) || n === 0 || - !(n === 1) && n % 100 === Math.floor(n % 100) && n % 100 >= 1 && n % 100 <= 19) - return 3; - return 5; -} -global.ng.common.locales['ro-md'] = [ - 'ro-MD', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['D', 'L', 'Ma', 'Mi', 'J', 'V', 'S'], ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'], - ['duminică', 'luni', 'marți', 'miercuri', 'joi', 'vineri', 'sâmbătă'], - ['Du', 'Lu', 'Ma', 'Mi', 'Jo', 'Vi', 'Sâ'] - ], - u, - [ - ['I', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'], - [ - 'ian.', 'feb.', 'mar.', 'apr.', 'mai', 'iun.', 'iul.', 'aug.', 'sept.', 'oct.', 'nov.', 'dec.' - ], - [ - 'ianuarie', 'februarie', 'martie', 'aprilie', 'mai', 'iunie', 'iulie', 'august', 'septembrie', - 'octombrie', 'noiembrie', 'decembrie' - ] - ], - u, - [['î.Hr.', 'd.Hr.'], u, ['înainte de Hristos', 'după Hristos']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'MDL', - 'L', - 'leu moldovenesc', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MDL': ['L'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XCD': [u, '$'] - }, - 'ltr', - plural, - [ - [ - ['miezul nopții', 'amiază', 'dimineață', 'după-amiază', 'seară', 'noapte'], - ['miezul nopții', 'amiază', 'dimineața', 'după-amiaza', 'seara', 'noaptea'], u - ], - u, - [ - '00:00', '12:00', ['05:00', '12:00'], ['12:00', '18:00'], ['18:00', '22:00'], - ['22:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ro.js b/packages/common/locales/global/ro.js deleted file mode 100644 index d4457f76ad..0000000000 --- a/packages/common/locales/global/ro.js +++ /dev/null @@ -1,95 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - if (!(v === 0) || n === 0 || - !(n === 1) && n % 100 === Math.floor(n % 100) && n % 100 >= 1 && n % 100 <= 19) - return 3; - return 5; -} -global.ng.common.locales['ro'] = [ - 'ro', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dum.', 'lun.', 'mar.', 'mie.', 'joi', 'vin.', 'sâm.'], - ['duminică', 'luni', 'marți', 'miercuri', 'joi', 'vineri', 'sâmbătă'], - ['du.', 'lu.', 'ma.', 'mi.', 'joi', 'vi.', 'sâ.'] - ], - u, - [ - ['I', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'], - [ - 'ian.', 'feb.', 'mar.', 'apr.', 'mai', 'iun.', 'iul.', 'aug.', 'sept.', 'oct.', 'nov.', 'dec.' - ], - [ - 'ianuarie', 'februarie', 'martie', 'aprilie', 'mai', 'iunie', 'iulie', 'august', 'septembrie', - 'octombrie', 'noiembrie', 'decembrie' - ] - ], - u, - [['î.Hr.', 'd.Hr.'], u, ['înainte de Hristos', 'după Hristos']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'RON', - 'RON', - 'leu românesc', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XCD': [u, '$'] - }, - 'ltr', - plural, - [ - [ - ['miezul nopții', 'la amiază', 'dimineața', 'după-amiaza', 'seara', 'noaptea'], - ['miezul nopții', 'amiază', 'dimineața', 'după-amiaza', 'seara', 'noaptea'], - ['la miezul nopții', 'la amiază', 'dimineața', 'după-amiaza', 'seara', 'noaptea'] - ], - [ - ['miezul nopții', 'amiază', 'dimineața', 'după-amiaza', 'seara', 'noaptea'], u, - ['la miezul nopții', 'la amiază', 'dimineața', 'după-amiaza', 'seara', 'noaptea'] - ], - [ - '00:00', '12:00', ['05:00', '12:00'], ['12:00', '18:00'], ['18:00', '22:00'], - ['22:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/rof.js b/packages/common/locales/global/rof.js deleted file mode 100644 index 8a5a21a5f4..0000000000 --- a/packages/common/locales/global/rof.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['rof'] = [ - 'rof', - [['kang’ama', 'kingoto'], u, u], - u, - [ - ['2', '3', '4', '5', '6', '7', '1'], ['Ijp', 'Ijt', 'Ijn', 'Ijtn', 'Alh', 'Iju', 'Ijm'], - ['Ijumapili', 'Ijumatatu', 'Ijumanne', 'Ijumatano', 'Alhamisi', 'Ijumaa', 'Ijumamosi'], - ['Ijp', 'Ijt', 'Ijn', 'Ijtn', 'Alh', 'Iju', 'Ijm'] - ], - u, - [ - ['K', 'K', 'K', 'K', 'T', 'S', 'S', 'N', 'T', 'I', 'I', 'I'], - ['M1', 'M2', 'M3', 'M4', 'M5', 'M6', 'M7', 'M8', 'M9', 'M10', 'M11', 'M12'], - [ - 'Mweri wa kwanza', 'Mweri wa kaili', 'Mweri wa katatu', 'Mweri wa kaana', 'Mweri wa tanu', - 'Mweri wa sita', 'Mweri wa saba', 'Mweri wa nane', 'Mweri wa tisa', 'Mweri wa ikumi', - 'Mweri wa ikumi na moja', 'Mweri wa ikumi na mbili' - ] - ], - u, - [['KM', 'BM'], u, ['Kabla ya Mayesu', 'Baada ya Mayesu']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'TZS', - 'TSh', - 'heleri sa Tanzania', - {'JPY': ['JP¥', '¥'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/root.js b/packages/common/locales/global/root.js deleted file mode 100644 index d7a5799a32..0000000000 --- a/packages/common/locales/global/root.js +++ /dev/null @@ -1,66 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['root'] = [ - 'root', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'US Dollar', - {}, - 'ltr', - plural, - [ - [ - ['mi', 'n', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], - ['midnight', 'noon', 'in the morning', 'in the afternoon', 'in the evening', 'at night'], u - ], - [['midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ru-BY.js b/packages/common/locales/global/ru-BY.js deleted file mode 100644 index e6c4673126..0000000000 --- a/packages/common/locales/global/ru-BY.js +++ /dev/null @@ -1,106 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14)) - return 3; - if (v === 0 && i % 10 === 0 || - v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 5 && i % 10 <= 9 || - v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 11 && i % 100 <= 14) - return 4; - return 5; -} -global.ng.common.locales['ru-by'] = [ - 'ru-BY', - [['AM', 'PM'], u, u], - u, - [ - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], u, - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['В', 'П', 'В', 'С', 'Ч', 'П', 'С'], ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'мар.', 'апр.', 'мая', 'июн.', 'июл.', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', - 'октября', 'ноября', 'декабря' - ] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'март', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', - 'ноябрь', 'декабрь' - ] - ], - [['до н.э.', 'н.э.'], ['до н. э.', 'н. э.'], ['до Рождества Христова', 'от Рождества Христова']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y \'г\'.', 'd MMMM y \'г\'.', 'EEEE, d MMMM y \'г\'.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'не число', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'BYN', - 'Br', - 'белорусский рубль', - { - 'BYN': ['Br'], - 'GEL': [u, 'ლ'], - 'RON': [u, 'L'], - 'RUB': ['₽'], - 'THB': ['฿'], - 'TMT': ['ТМТ'], - 'TWD': ['NT$'], - 'UAH': ['₴'], - 'XXX': ['XXXX'] - }, - 'ltr', - plural, - [ - [ - ['полн.', 'полд.', 'утра', 'дня', 'веч.', 'ночи'], - ['полн.', 'полд.', 'утра', 'дня', 'вечера', 'ночи'], - ['полночь', 'полдень', 'утра', 'дня', 'вечера', 'ночи'] - ], - [ - ['полн.', 'полд.', 'утро', 'день', 'веч.', 'ночь'], u, - ['полночь', 'полдень', 'утро', 'день', 'вечер', 'ночь'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ru-KG.js b/packages/common/locales/global/ru-KG.js deleted file mode 100644 index 45fffe45a0..0000000000 --- a/packages/common/locales/global/ru-KG.js +++ /dev/null @@ -1,107 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14)) - return 3; - if (v === 0 && i % 10 === 0 || - v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 5 && i % 10 <= 9 || - v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 11 && i % 100 <= 14) - return 4; - return 5; -} -global.ng.common.locales['ru-kg'] = [ - 'ru-KG', - [['AM', 'PM'], u, u], - u, - [ - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], u, - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['В', 'П', 'В', 'С', 'Ч', 'П', 'С'], ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'мар.', 'апр.', 'мая', 'июн.', 'июл.', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', - 'октября', 'ноября', 'декабря' - ] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'март', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', - 'ноябрь', 'декабрь' - ] - ], - [['до н.э.', 'н.э.'], ['до н. э.', 'н. э.'], ['до Рождества Христова', 'от Рождества Христова']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y \'г\'.', 'd MMMM y \'г\'.', 'EEEE, d MMMM y \'г\'.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'не число', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'KGS', - 'сом', - 'киргизский сом', - { - 'GEL': [u, 'ლ'], - 'KGS': ['сом'], - 'RON': [u, 'L'], - 'RUB': ['₽'], - 'RUR': ['р.'], - 'THB': ['฿'], - 'TMT': ['ТМТ'], - 'TWD': ['NT$'], - 'UAH': ['₴'], - 'XXX': ['XXXX'] - }, - 'ltr', - plural, - [ - [ - ['полн.', 'полд.', 'утра', 'дня', 'веч.', 'ночи'], - ['полн.', 'полд.', 'утра', 'дня', 'вечера', 'ночи'], - ['полночь', 'полдень', 'утра', 'дня', 'вечера', 'ночи'] - ], - [ - ['полн.', 'полд.', 'утро', 'день', 'веч.', 'ночь'], u, - ['полночь', 'полдень', 'утро', 'день', 'вечер', 'ночь'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ru-KZ.js b/packages/common/locales/global/ru-KZ.js deleted file mode 100644 index d550aa10b2..0000000000 --- a/packages/common/locales/global/ru-KZ.js +++ /dev/null @@ -1,107 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14)) - return 3; - if (v === 0 && i % 10 === 0 || - v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 5 && i % 10 <= 9 || - v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 11 && i % 100 <= 14) - return 4; - return 5; -} -global.ng.common.locales['ru-kz'] = [ - 'ru-KZ', - [['AM', 'PM'], u, u], - u, - [ - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], u, - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['В', 'П', 'В', 'С', 'Ч', 'П', 'С'], ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'мар.', 'апр.', 'мая', 'июн.', 'июл.', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', - 'октября', 'ноября', 'декабря' - ] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'март', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', - 'ноябрь', 'декабрь' - ] - ], - [['до н.э.', 'н.э.'], ['до н. э.', 'н. э.'], ['до Рождества Христова', 'от Рождества Христова']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y \'г\'.', 'd MMMM y \'г\'.', 'EEEE, d MMMM y \'г\'.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'не число', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'KZT', - '₸', - 'казахский тенге', - { - 'GEL': [u, 'ლ'], - 'KZT': ['₸'], - 'RON': [u, 'L'], - 'RUB': ['₽'], - 'RUR': ['р.'], - 'THB': ['฿'], - 'TMT': ['ТМТ'], - 'TWD': ['NT$'], - 'UAH': ['₴'], - 'XXX': ['XXXX'] - }, - 'ltr', - plural, - [ - [ - ['полн.', 'полд.', 'утра', 'дня', 'веч.', 'ночи'], - ['полн.', 'полд.', 'утра', 'дня', 'вечера', 'ночи'], - ['полночь', 'полдень', 'утра', 'дня', 'вечера', 'ночи'] - ], - [ - ['полн.', 'полд.', 'утро', 'день', 'веч.', 'ночь'], u, - ['полночь', 'полдень', 'утро', 'день', 'вечер', 'ночь'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ru-MD.js b/packages/common/locales/global/ru-MD.js deleted file mode 100644 index ef5bcf1a5a..0000000000 --- a/packages/common/locales/global/ru-MD.js +++ /dev/null @@ -1,107 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14)) - return 3; - if (v === 0 && i % 10 === 0 || - v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 5 && i % 10 <= 9 || - v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 11 && i % 100 <= 14) - return 4; - return 5; -} -global.ng.common.locales['ru-md'] = [ - 'ru-MD', - [['AM', 'PM'], u, u], - u, - [ - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], u, - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['В', 'П', 'В', 'С', 'Ч', 'П', 'С'], ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'мар.', 'апр.', 'мая', 'июн.', 'июл.', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', - 'октября', 'ноября', 'декабря' - ] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'март', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', - 'ноябрь', 'декабрь' - ] - ], - [['до н.э.', 'н.э.'], ['до н. э.', 'н. э.'], ['до Рождества Христова', 'от Рождества Христова']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y \'г\'.', 'd MMMM y \'г\'.', 'EEEE, d MMMM y \'г\'.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'не число', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'MDL', - 'L', - 'молдавский лей', - { - 'GEL': [u, 'ლ'], - 'MDL': ['L'], - 'RON': [u, 'L'], - 'RUB': ['₽'], - 'RUR': ['р.'], - 'THB': ['฿'], - 'TMT': ['ТМТ'], - 'TWD': ['NT$'], - 'UAH': ['₴'], - 'XXX': ['XXXX'] - }, - 'ltr', - plural, - [ - [ - ['полн.', 'полд.', 'утра', 'дня', 'веч.', 'ночи'], - ['полн.', 'полд.', 'утра', 'дня', 'вечера', 'ночи'], - ['полночь', 'полдень', 'утра', 'дня', 'вечера', 'ночи'] - ], - [ - ['полн.', 'полд.', 'утро', 'день', 'веч.', 'ночь'], u, - ['полночь', 'полдень', 'утро', 'день', 'вечер', 'ночь'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ru-UA.js b/packages/common/locales/global/ru-UA.js deleted file mode 100644 index 3879a56720..0000000000 --- a/packages/common/locales/global/ru-UA.js +++ /dev/null @@ -1,106 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14)) - return 3; - if (v === 0 && i % 10 === 0 || - v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 5 && i % 10 <= 9 || - v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 11 && i % 100 <= 14) - return 4; - return 5; -} -global.ng.common.locales['ru-ua'] = [ - 'ru-UA', - [['AM', 'PM'], u, u], - u, - [ - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], u, - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['В', 'П', 'В', 'С', 'Ч', 'П', 'С'], ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'мар.', 'апр.', 'мая', 'июн.', 'июл.', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', - 'октября', 'ноября', 'декабря' - ] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'март', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', - 'ноябрь', 'декабрь' - ] - ], - [['до н.э.', 'н.э.'], ['до н. э.', 'н. э.'], ['до Рождества Христова', 'от Рождества Христова']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y \'г\'.', 'd MMMM y \'г\'.', 'EEEE, d MMMM y \'г\'.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'не число', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'UAH', - '₴', - 'украинская гривна', - { - 'GEL': [u, 'ლ'], - 'RON': [u, 'L'], - 'RUB': ['₽'], - 'RUR': ['р.'], - 'THB': ['฿'], - 'TMT': ['ТМТ'], - 'TWD': ['NT$'], - 'UAH': ['₴'], - 'XXX': ['XXXX'] - }, - 'ltr', - plural, - [ - [ - ['полн.', 'полд.', 'утра', 'дня', 'веч.', 'ночи'], - ['полн.', 'полд.', 'утра', 'дня', 'вечера', 'ночи'], - ['полночь', 'полдень', 'утра', 'дня', 'вечера', 'ночи'] - ], - [ - ['полн.', 'полд.', 'утро', 'день', 'веч.', 'ночь'], u, - ['полночь', 'полдень', 'утро', 'день', 'вечер', 'ночь'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ru.js b/packages/common/locales/global/ru.js deleted file mode 100644 index d4a2c7c4d3..0000000000 --- a/packages/common/locales/global/ru.js +++ /dev/null @@ -1,106 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14)) - return 3; - if (v === 0 && i % 10 === 0 || - v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 5 && i % 10 <= 9 || - v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 11 && i % 100 <= 14) - return 4; - return 5; -} -global.ng.common.locales['ru'] = [ - 'ru', - [['AM', 'PM'], u, u], - u, - [ - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], u, - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['В', 'П', 'В', 'С', 'Ч', 'П', 'С'], ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'мар.', 'апр.', 'мая', 'июн.', 'июл.', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', - 'октября', 'ноября', 'декабря' - ] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'март', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', - 'ноябрь', 'декабрь' - ] - ], - [['до н.э.', 'н.э.'], ['до н. э.', 'н. э.'], ['до Рождества Христова', 'от Рождества Христова']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y \'г\'.', 'd MMMM y \'г\'.', 'EEEE, d MMMM y \'г\'.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'не число', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'RUB', - '₽', - 'российский рубль', - { - 'GEL': [u, 'ლ'], - 'RON': [u, 'L'], - 'RUB': ['₽'], - 'RUR': ['р.'], - 'THB': ['฿'], - 'TMT': ['ТМТ'], - 'TWD': ['NT$'], - 'UAH': ['₴'], - 'XXX': ['XXXX'] - }, - 'ltr', - plural, - [ - [ - ['полн.', 'полд.', 'утра', 'дня', 'веч.', 'ночи'], - ['полн.', 'полд.', 'утра', 'дня', 'вечера', 'ночи'], - ['полночь', 'полдень', 'утра', 'дня', 'вечера', 'ночи'] - ], - [ - ['полн.', 'полд.', 'утро', 'день', 'веч.', 'ночь'], u, - ['полночь', 'полдень', 'утро', 'день', 'вечер', 'ночь'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/rw.js b/packages/common/locales/global/rw.js deleted file mode 100644 index 900e0f84c8..0000000000 --- a/packages/common/locales/global/rw.js +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['rw'] = [ - 'rw', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['cyu.', 'mbe.', 'kab.', 'gtu.', 'kan.', 'gnu.', 'gnd.'], - [ - 'Ku cyumweru', 'Kuwa mbere', 'Kuwa kabiri', 'Kuwa gatatu', 'Kuwa kane', 'Kuwa gatanu', - 'Kuwa gatandatu' - ], - ['cyu.', 'mbe.', 'kab.', 'gtu.', 'kan.', 'gnu.', 'gnd.'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'mut.', 'gas.', 'wer.', 'mat.', 'gic.', 'kam.', 'nya.', 'kan.', 'nze.', 'ukw.', 'ugu.', 'uku.' - ], - [ - 'Mutarama', 'Gashyantare', 'Werurwe', 'Mata', 'Gicuransi', 'Kamena', 'Nyakanga', 'Kanama', - 'Nzeli', 'Ukwakira', 'Ugushyingo', 'Ukuboza' - ] - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'RWF', - 'RF', - 'RWF', - {'JPY': ['JP¥', '¥'], 'RWF': ['RF'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/rwk.js b/packages/common/locales/global/rwk.js deleted file mode 100644 index 557c651373..0000000000 --- a/packages/common/locales/global/rwk.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['rwk'] = [ - 'rwk', - [['utuko', 'kyiukonyi'], u, u], - u, - [ - ['J', 'J', 'J', 'J', 'A', 'I', 'J'], ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - ['Jumapilyi', 'Jumatatuu', 'Jumanne', 'Jumatanu', 'Alhamisi', 'Ijumaa', 'Jumamosi'], - ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januari', 'Februari', 'Machi', 'Aprilyi', 'Mei', 'Junyi', 'Julyai', 'Agusti', 'Septemba', - 'Oktoba', 'Novemba', 'Desemba' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Kristu', 'Baada ya Kristu']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'TZS', - 'TSh', - 'Shilingi ya Tanzania', - {'JPY': ['JP¥', '¥'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sah.js b/packages/common/locales/global/sah.js deleted file mode 100644 index 56c0861f81..0000000000 --- a/packages/common/locales/global/sah.js +++ /dev/null @@ -1,63 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['sah'] = [ - 'sah', - [['ЭИ', 'ЭК'], u, u], - u, - [ - ['Б', 'Б', 'О', 'С', 'Ч', 'Б', 'С'], ['бс', 'бн', 'оп', 'сэ', 'чп', 'бэ', 'сб'], - ['баскыһыанньа', 'бэнидиэнньик', 'оптуорунньук', 'сэрэдэ', 'чэппиэр', 'Бээтиҥсэ', 'субуота'], - ['бс', 'бн', 'оп', 'сэ', 'чп', 'бэ', 'сб'] - ], - u, - [ - ['Т', 'О', 'К', 'М', 'Ы', 'Б', 'О', 'А', 'Б', 'А', 'С', 'А'], - ['Тохс', 'Олун', 'Клн', 'Мсу', 'Ыам', 'Бэс', 'Отй', 'Атр', 'Блҕ', 'Алт', 'Сэт', 'Ахс'], - [ - 'Тохсунньу', 'Олунньу', 'Кулун тутар', 'Муус устар', 'Ыам ыйын', 'Бэс ыйын', 'От ыйын', - 'Атырдьых ыйын', 'Балаҕан ыйын', 'Алтынньы', 'Сэтинньи', 'ахсынньы' - ] - ], - [ - ['Т', 'О', 'К', 'М', 'Ы', 'Б', 'О', 'А', 'Б', 'А', 'С', 'А'], - ['Тохс', 'Олун', 'Клн', 'Мсу', 'Ыам', 'Бэс', 'Отй', 'Атр', 'Блҕ', 'Алт', 'Сэт', 'Ахс'], - [ - 'тохсунньу', 'олунньу', 'кулун тутар', 'муус устар', 'ыам ыйа', 'бэс ыйа', 'от ыйа', - 'атырдьых ыйа', 'балаҕан ыйа', 'алтынньы', 'сэтинньи', 'ахсынньы' - ] - ], - [['б. э. и.', 'б. э'], u, u], - 1, - [6, 0], - ['yy/M/d', 'y, MMM d', 'y, MMMM d', 'y \'сыл\' MMMM d \'күнэ\', EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'чыыһыла буотах', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'RUB', - '₽', - 'Арассыыйа солкуобайа', - {'JPY': ['JP¥', '¥'], 'RUB': ['₽'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/saq.js b/packages/common/locales/global/saq.js deleted file mode 100644 index fbbe3406c3..0000000000 --- a/packages/common/locales/global/saq.js +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['saq'] = [ - 'saq', - [['Tesiran', 'Teipa'], u, u], - u, - [ - ['A', 'K', 'O', 'I', 'I', 'S', 'K'], ['Are', 'Kun', 'Ong', 'Ine', 'Ile', 'Sap', 'Kwe'], - [ - 'Mderot ee are', 'Mderot ee kuni', 'Mderot ee ong’wan', 'Mderot ee inet', 'Mderot ee ile', - 'Mderot ee sapa', 'Mderot ee kwe' - ], - ['Are', 'Kun', 'Ong', 'Ine', 'Ile', 'Sap', 'Kwe'] - ], - u, - [ - ['O', 'W', 'O', 'O', 'I', 'I', 'S', 'I', 'S', 'T', 'T', 'T'], - ['Obo', 'Waa', 'Oku', 'Ong', 'Ime', 'Ile', 'Sap', 'Isi', 'Saa', 'Tom', 'Tob', 'Tow'], - [ - 'Lapa le obo', 'Lapa le waare', 'Lapa le okuni', 'Lapa le ong’wan', 'Lapa le imet', - 'Lapa le ile', 'Lapa le sapa', 'Lapa le isiet', 'Lapa le saal', 'Lapa le tomon', - 'Lapa le tomon obo', 'Lapa le tomon waare' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Christo', 'Baada ya Christo']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Njilingi eel Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sbp.js b/packages/common/locales/global/sbp.js deleted file mode 100644 index 8354b1a1d0..0000000000 --- a/packages/common/locales/global/sbp.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['sbp'] = [ - 'sbp', - [['Lwamilawu', 'Pashamihe'], u, u], - u, - [ - ['M', 'J', 'J', 'J', 'A', 'I', 'J'], ['Mul', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - ['Mulungu', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alahamisi', 'Ijumaa', 'Jumamosi'], - ['Mul', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['Mup', 'Mwi', 'Msh', 'Mun', 'Mag', 'Muj', 'Msp', 'Mpg', 'Mye', 'Mok', 'Mus', 'Muh'], - [ - 'Mupalangulwa', 'Mwitope', 'Mushende', 'Munyi', 'Mushende Magali', 'Mujimbi', 'Mushipepo', - 'Mupuguto', 'Munyense', 'Mokhu', 'Musongandembwe', 'Muhaano' - ] - ], - u, - [['AK', 'PK'], u, ['Ashanali uKilisito', 'Pamwandi ya Kilisto']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'TZS', - 'TSh', - 'Ihela ya Tansaniya', - {'JPY': ['JP¥', '¥'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sd.js b/packages/common/locales/global/sd.js deleted file mode 100644 index 2c4c5e1101..0000000000 --- a/packages/common/locales/global/sd.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['sd'] = [ - 'sd', - [['صبح، منجهند', 'منجهند، شام'], ['صبح، منجهند', 'شام، منجهند'], ['صبح، منجهند', 'منجهند، شام']], - [['صبح، منجهند', 'منجهند، شام'], u, u], - [ - ['آچر', 'سو', 'اڱارو', 'اربع', 'خم', 'جمعو', 'ڇنڇر'], - ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمعو', 'ڇنڇر'], u, u - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'جنوري', 'فيبروري', 'مارچ', 'اپريل', 'مئي', 'جون', 'جولاءِ', 'آگسٽ', 'سيپٽمبر', 'آڪٽوبر', - 'نومبر', 'ڊسمبر' - ], - u - ], - u, - [['BC', 'CD'], u, ['مسيح کان اڳ', 'عيسوي کان پهرين']], - 0, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'PKR', - 'Rs', - 'پاڪستاني رپي', - {'JPY': ['JP¥', '¥'], 'PKR': ['Rs'], 'USD': ['US$', '$']}, - 'rtl', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/se-FI.js b/packages/common/locales/global/se-FI.js deleted file mode 100644 index b31ba9a4d8..0000000000 --- a/packages/common/locales/global/se-FI.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - if (n === 2) return 2; - return 5; -} -global.ng.common.locales['se-fi'] = [ - 'se-FI', - [['i', 'e'], ['ib', 'eb'], u], - [['ib', 'eb'], u, u], - [ - ['S', 'M', 'D', 'G', 'D', 'B', 'L'], ['so', 'má', 'di', 'ga', 'du', 'be', 'lá'], - ['sotnabeaivi', 'mánnodat', 'disdat', 'gaskavahkku', 'duorastat', 'bearjadat', 'lávvordat'], - ['so', 'má', 'di', 'ga', 'du', 'be', 'lá'] - ], - u, - [ - ['O', 'G', 'N', 'C', 'M', 'G', 'S', 'B', 'Č', 'G', 'S', 'J'], - [ - 'ođđj', 'guov', 'njuk', 'cuoŋ', 'mies', 'geas', 'suoi', 'borg', 'čakč', 'golg', 'skáb', 'juov' - ], - [ - 'ođđajagemánnu', 'guovvamánnu', 'njukčamánnu', 'cuoŋománnu', 'miessemánnu', 'geassemánnu', - 'suoidnemánnu', 'borgemánnu', 'čakčamánnu', 'golggotmánnu', 'skábmamánnu', 'juovlamánnu' - ] - ], - u, - [['oKr.', 'mKr.'], u, ['ovdal Kristusa', 'maŋŋel Kristusa']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '−', '·10^', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'DKK': ['Dkr', 'kr'], - 'JPY': ['JP¥', '¥'], - 'NOK': ['kr'], - 'SEK': ['Skr', 'kr'], - 'THB': ['฿'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/se-SE.js b/packages/common/locales/global/se-SE.js deleted file mode 100644 index c15d2bd907..0000000000 --- a/packages/common/locales/global/se-SE.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - if (n === 2) return 2; - return 5; -} -global.ng.common.locales['se-se'] = [ - 'se-SE', - [['i.b.', 'e.b.'], u, ['iđitbeaivet', 'eahketbeaivet']], - [['i.b.', 'e.b.'], u, ['iđitbeaivi', 'eahketbeaivi']], - [ - ['S', 'V', 'M', 'G', 'D', 'B', 'L'], ['sotn', 'vuos', 'maŋ', 'gask', 'duor', 'bear', 'láv'], - [ - 'sotnabeaivi', 'vuossárga', 'maŋŋebárga', 'gaskavahkku', 'duorasdat', 'bearjadat', 'lávvardat' - ], - ['sotn', 'vuos', 'maŋ', 'gask', 'duor', 'bear', 'láv'] - ], - u, - [ - ['O', 'G', 'N', 'C', 'M', 'G', 'S', 'B', 'Č', 'G', 'S', 'J'], - ['ođđj', 'guov', 'njuk', 'cuo', 'mies', 'geas', 'suoi', 'borg', 'čakč', 'golg', 'skáb', 'juov'], - [ - 'ođđajagemánnu', 'guovvamánnu', 'njukčamánnu', 'cuoŋománnu', 'miessemánnu', 'geassemánnu', - 'suoidnemánnu', 'borgemánnu', 'čakčamánnu', 'golggotmánnu', 'skábmamánnu', 'juovlamánnu' - ] - ], - u, - [['o.Kr.', 'm.Kr.'], u, ['ovdal Kristtusa', 'maŋŋel Kristtusa']], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '−', '·10^', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'SEK', - 'kr', - 'ruoŧŧa kruvdno', - { - 'DKK': ['Dkr', 'kr'], - 'JPY': ['JP¥', '¥'], - 'NOK': ['Nkr', 'kr'], - 'SEK': ['kr'], - 'THB': ['฿'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/se.js b/packages/common/locales/global/se.js deleted file mode 100644 index 683354ba85..0000000000 --- a/packages/common/locales/global/se.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - if (n === 2) return 2; - return 5; -} -global.ng.common.locales['se'] = [ - 'se', - [['i.b.', 'e.b.'], u, ['iđitbeaivet', 'eahketbeaivet']], - [['i.b.', 'e.b.'], u, ['iđitbeaivi', 'eahketbeaivi']], - [ - ['S', 'V', 'M', 'G', 'D', 'B', 'L'], ['sotn', 'vuos', 'maŋ', 'gask', 'duor', 'bear', 'láv'], - [ - 'sotnabeaivi', 'vuossárga', 'maŋŋebárga', 'gaskavahkku', 'duorasdat', 'bearjadat', 'lávvardat' - ], - ['sotn', 'vuos', 'maŋ', 'gask', 'duor', 'bear', 'láv'] - ], - u, - [ - ['O', 'G', 'N', 'C', 'M', 'G', 'S', 'B', 'Č', 'G', 'S', 'J'], - ['ođđj', 'guov', 'njuk', 'cuo', 'mies', 'geas', 'suoi', 'borg', 'čakč', 'golg', 'skáb', 'juov'], - [ - 'ođđajagemánnu', 'guovvamánnu', 'njukčamánnu', 'cuoŋománnu', 'miessemánnu', 'geassemánnu', - 'suoidnemánnu', 'borgemánnu', 'čakčamánnu', 'golggotmánnu', 'skábmamánnu', 'juovlamánnu' - ] - ], - u, - [['o.Kr.', 'm.Kr.'], u, ['ovdal Kristtusa', 'maŋŋel Kristtusa']], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '−', '·10^', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'NOK', - 'kr', - 'norgga kruvdno', - { - 'DKK': ['Dkr', 'kr'], - 'JPY': ['JP¥', '¥'], - 'NOK': ['kr'], - 'SEK': ['Skr', 'kr'], - 'THB': ['฿'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/seh.js b/packages/common/locales/global/seh.js deleted file mode 100644 index 427012d6de..0000000000 --- a/packages/common/locales/global/seh.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['seh'] = [ - 'seh', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'P', 'C', 'T', 'N', 'S', 'S'], ['Dim', 'Pos', 'Pir', 'Tat', 'Nai', 'Sha', 'Sab'], - ['Dimingu', 'Chiposi', 'Chipiri', 'Chitatu', 'Chinai', 'Chishanu', 'Sabudu'], - ['Dim', 'Pos', 'Pir', 'Tat', 'Nai', 'Sha', 'Sab'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Aug', 'Set', 'Otu', 'Nov', 'Dec'], - [ - 'Janeiro', 'Fevreiro', 'Marco', 'Abril', 'Maio', 'Junho', 'Julho', 'Augusto', 'Setembro', - 'Otubro', 'Novembro', 'Decembro' - ] - ], - u, - [['AC', 'AD'], u, ['Antes de Cristo', 'Anno Domini']], - 0, - [6, 0], - ['d/M/y', 'd \'de\' MMM \'de\' y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'MZN', - 'MTn', - 'Metical de Moçambique', - {'JPY': ['JP¥', '¥'], 'MZN': ['MTn'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ses.js b/packages/common/locales/global/ses.js deleted file mode 100644 index a1c1ea178a..0000000000 --- a/packages/common/locales/global/ses.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['ses'] = [ - 'ses', - [['Adduha', 'Aluula'], u, u], - u, - [ - ['H', 'T', 'T', 'L', 'L', 'L', 'S'], ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'], - ['Alhadi', 'Atinni', 'Atalaata', 'Alarba', 'Alhamiisa', 'Alzuma', 'Asibti'], - ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'] - ], - u, - [ - ['Ž', 'F', 'M', 'A', 'M', 'Ž', 'Ž', 'U', 'S', 'O', 'N', 'D'], - ['Žan', 'Fee', 'Mar', 'Awi', 'Me', 'Žuw', 'Žuy', 'Ut', 'Sek', 'Okt', 'Noo', 'Dee'], - [ - 'Žanwiye', 'Feewiriye', 'Marsi', 'Awiril', 'Me', 'Žuweŋ', 'Žuyye', 'Ut', 'Sektanbur', - 'Oktoobur', 'Noowanbur', 'Deesanbur' - ] - ], - u, - [['IJ', 'IZ'], u, ['Isaa jine', 'Isaa zamanoo']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'XOF', - 'CFA', - 'CFA Fraŋ (BCEAO)', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sg.js b/packages/common/locales/global/sg.js deleted file mode 100644 index 47e911e52b..0000000000 --- a/packages/common/locales/global/sg.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['sg'] = [ - 'sg', - [['ND', 'LK'], u, u], - u, - [ - ['K', 'S', 'T', 'S', 'K', 'P', 'Y'], ['Bk1', 'Bk2', 'Bk3', 'Bk4', 'Bk5', 'Lâp', 'Lây'], - ['Bikua-ôko', 'Bïkua-ûse', 'Bïkua-ptâ', 'Bïkua-usïö', 'Bïkua-okü', 'Lâpôsö', 'Lâyenga'], - ['Bk1', 'Bk2', 'Bk3', 'Bk4', 'Bk5', 'Lâp', 'Lây'] - ], - u, - [ - ['N', 'F', 'M', 'N', 'B', 'F', 'L', 'K', 'M', 'N', 'N', 'K'], - ['Nye', 'Ful', 'Mbä', 'Ngu', 'Bêl', 'Fön', 'Len', 'Kük', 'Mvu', 'Ngb', 'Nab', 'Kak'], - [ - 'Nyenye', 'Fulundïgi', 'Mbängü', 'Ngubùe', 'Bêläwü', 'Föndo', 'Lengua', 'Kükürü', 'Mvuka', - 'Ngberere', 'Nabändüru', 'Kakauka' - ] - ], - u, - [['KnK', 'NpK'], u, ['Kôzo na Krîstu', 'Na pekô tî Krîstu']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00;¤-#,##0.00', '#E0'], - 'XAF', - 'FCFA', - 'farânga CFA (BEAC)', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/shi-Latn.js b/packages/common/locales/global/shi-Latn.js deleted file mode 100644 index 47113e63bd..0000000000 --- a/packages/common/locales/global/shi-Latn.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['shi-latn'] = [ - 'shi-Latn', - [['tifawt', 'tadggʷat'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['asa', 'ayn', 'asi', 'akṛ', 'akw', 'asim', 'asiḍ'], - ['asamas', 'aynas', 'asinas', 'akṛas', 'akwas', 'asimwas', 'asiḍyas'], - ['asa', 'ayn', 'asi', 'akṛ', 'akw', 'asim', 'asiḍ'] - ], - u, - [ - ['i', 'b', 'm', 'i', 'm', 'y', 'y', 'ɣ', 'c', 'k', 'n', 'd'], - ['inn', 'bṛa', 'maṛ', 'ibr', 'may', 'yun', 'yul', 'ɣuc', 'cut', 'ktu', 'nuw', 'duj'], - [ - 'innayr', 'bṛayṛ', 'maṛṣ', 'ibrir', 'mayyu', 'yunyu', 'yulyuz', 'ɣuct', 'cutanbir', 'ktubr', - 'nuwanbir', 'dujanbir' - ] - ], - u, - [['daɛ', 'dfɛ'], u, ['dat n ɛisa', 'dffir n ɛisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'MAD', - 'MAD', - 'adrim n lmɣrib', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/shi-Tfng.js b/packages/common/locales/global/shi-Tfng.js deleted file mode 100644 index 09dc68b1c2..0000000000 --- a/packages/common/locales/global/shi-Tfng.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - if (n === Math.floor(n) && n >= 2 && n <= 10) return 3; - return 5; -} -global.ng.common.locales['shi-tfng'] = [ - 'shi-Tfng', - [['ⵜⵉⴼⴰⵡⵜ', 'ⵜⴰⴷⴳⴳⵯⴰⵜ'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['ⴰⵙⴰ', 'ⴰⵢⵏ', 'ⴰⵙⵉ', 'ⴰⴽⵕ', 'ⴰⴽⵡ', 'ⴰⵙⵉⵎ', 'ⴰⵙⵉⴹ'], - ['ⴰⵙⴰⵎⴰⵙ', 'ⴰⵢⵏⴰⵙ', 'ⴰⵙⵉⵏⴰⵙ', 'ⴰⴽⵕⴰⵙ', 'ⴰⴽⵡⴰⵙ', 'ⵙⵉⵎⵡⴰⵙ', 'ⴰⵙⵉⴹⵢⴰⵙ'], - ['ⴰⵙⴰ', 'ⴰⵢⵏ', 'ⴰⵙⵉ', 'ⴰⴽⵕ', 'ⴰⴽⵡ', 'ⴰⵙⵉⵎ', 'ⴰⵙⵉⴹ'] - ], - u, - [ - ['ⵉ', 'ⴱ', 'ⵎ', 'ⵉ', 'ⵎ', 'ⵢ', 'ⵢ', 'ⵖ', 'ⵛ', 'ⴽ', 'ⵏ', 'ⴷ'], - ['ⵉⵏⵏ', 'ⴱⵕⴰ', 'ⵎⴰⵕ', 'ⵉⴱⵔ', 'ⵎⴰⵢ', 'ⵢⵓⵏ', 'ⵢⵓⵍ', 'ⵖⵓⵛ', 'ⵛⵓⵜ', 'ⴽⵜⵓ', 'ⵏⵓⵡ', 'ⴷⵓⵊ'], - [ - 'ⵉⵏⵏⴰⵢⵔ', 'ⴱⵕⴰⵢⵕ', 'ⵎⴰⵕⵚ', 'ⵉⴱⵔⵉⵔ', 'ⵎⴰⵢⵢⵓ', 'ⵢⵓⵏⵢⵓ', 'ⵢⵓⵍⵢⵓⵣ', 'ⵖⵓⵛⵜ', 'ⵛⵓⵜⴰⵏⴱⵉⵔ', 'ⴽⵜⵓⴱⵔ', - 'ⵏⵓⵡⴰⵏⴱⵉⵔ', 'ⴷⵓⵊⴰⵏⴱⵉⵔ' - ] - ], - u, - [['ⴷⴰⵄ', 'ⴷⴼⵄ'], u, ['ⴷⴰⵜ ⵏ ⵄⵉⵙⴰ', 'ⴷⴼⴼⵉⵔ ⵏ ⵄⵉⵙⴰ']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'MAD', - 'MAD', - 'ⴰⴷⵔⵉⵎ ⵏ ⵍⵎⵖⵔⵉⴱ', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/shi.js b/packages/common/locales/global/shi.js deleted file mode 100644 index 307c760866..0000000000 --- a/packages/common/locales/global/shi.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - if (n === Math.floor(n) && n >= 2 && n <= 10) return 3; - return 5; -} -global.ng.common.locales['shi'] = [ - 'shi', - [['ⵜⵉⴼⴰⵡⵜ', 'ⵜⴰⴷⴳⴳⵯⴰⵜ'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['ⴰⵙⴰ', 'ⴰⵢⵏ', 'ⴰⵙⵉ', 'ⴰⴽⵕ', 'ⴰⴽⵡ', 'ⴰⵙⵉⵎ', 'ⴰⵙⵉⴹ'], - ['ⴰⵙⴰⵎⴰⵙ', 'ⴰⵢⵏⴰⵙ', 'ⴰⵙⵉⵏⴰⵙ', 'ⴰⴽⵕⴰⵙ', 'ⴰⴽⵡⴰⵙ', 'ⵙⵉⵎⵡⴰⵙ', 'ⴰⵙⵉⴹⵢⴰⵙ'], - ['ⴰⵙⴰ', 'ⴰⵢⵏ', 'ⴰⵙⵉ', 'ⴰⴽⵕ', 'ⴰⴽⵡ', 'ⴰⵙⵉⵎ', 'ⴰⵙⵉⴹ'] - ], - u, - [ - ['ⵉ', 'ⴱ', 'ⵎ', 'ⵉ', 'ⵎ', 'ⵢ', 'ⵢ', 'ⵖ', 'ⵛ', 'ⴽ', 'ⵏ', 'ⴷ'], - ['ⵉⵏⵏ', 'ⴱⵕⴰ', 'ⵎⴰⵕ', 'ⵉⴱⵔ', 'ⵎⴰⵢ', 'ⵢⵓⵏ', 'ⵢⵓⵍ', 'ⵖⵓⵛ', 'ⵛⵓⵜ', 'ⴽⵜⵓ', 'ⵏⵓⵡ', 'ⴷⵓⵊ'], - [ - 'ⵉⵏⵏⴰⵢⵔ', 'ⴱⵕⴰⵢⵕ', 'ⵎⴰⵕⵚ', 'ⵉⴱⵔⵉⵔ', 'ⵎⴰⵢⵢⵓ', 'ⵢⵓⵏⵢⵓ', 'ⵢⵓⵍⵢⵓⵣ', 'ⵖⵓⵛⵜ', 'ⵛⵓⵜⴰⵏⴱⵉⵔ', 'ⴽⵜⵓⴱⵔ', - 'ⵏⵓⵡⴰⵏⴱⵉⵔ', 'ⴷⵓⵊⴰⵏⴱⵉⵔ' - ] - ], - u, - [['ⴷⴰⵄ', 'ⴷⴼⵄ'], u, ['ⴷⴰⵜ ⵏ ⵄⵉⵙⴰ', 'ⴷⴼⴼⵉⵔ ⵏ ⵄⵉⵙⴰ']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'MAD', - 'MAD', - 'ⴰⴷⵔⵉⵎ ⵏ ⵍⵎⵖⵔⵉⴱ', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/si.js b/packages/common/locales/global/si.js deleted file mode 100644 index adcfcaedbb..0000000000 --- a/packages/common/locales/global/si.js +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (n === 0 || n === 1 || i === 0 && f === 1) return 1; - return 5; -} -global.ng.common.locales['si'] = [ - 'si', - [['පෙ', 'ප'], ['පෙ.ව.', 'ප.ව.'], u], - [['පෙ.ව.', 'ප.ව.'], u, u], - [ - ['ඉ', 'ස', 'අ', 'බ', 'බ්\u200dර', 'සි', 'සෙ'], - ['ඉරිදා', 'සඳුදා', 'අඟහ', 'බදාදා', 'බ්\u200dරහස්', 'සිකු', 'සෙන'], - ['ඉරිදා', 'සඳුදා', 'අඟහරුවාදා', 'බදාදා', 'බ්\u200dරහස්පතින්දා', 'සිකුරාදා', 'සෙනසුරාදා'], - ['ඉරි', 'සඳු', 'අඟ', 'බදා', 'බ්\u200dරහ', 'සිකු', 'සෙන'] - ], - u, - [ - ['ජ', 'පෙ', 'මා', 'අ', 'මැ', 'ජූ', 'ජූ', 'අ', 'සැ', 'ඔ', 'නෙ', 'දෙ'], - ['ජන', 'පෙබ', 'මාර්තු', 'අප්\u200dරේල්', 'මැයි', 'ජූනි', 'ජූලි', 'අගෝ', 'සැප්', 'ඔක්', 'නොවැ', 'දෙසැ'], - [ - 'ජනවාරි', 'පෙබරවාරි', 'මාර්තු', 'අප්\u200dරේල්', 'මැයි', 'ජූනි', 'ජූලි', 'අගෝස්තු', 'සැප්තැම්බර්', 'ඔක්තෝබර්', - 'නොවැම්බර්', 'දෙසැම්බර්' - ] - ], - [ - ['ජ', 'පෙ', 'මා', 'අ', 'මැ', 'ජූ', 'ජූ', 'අ', 'සැ', 'ඔ', 'නෙ', 'දෙ'], - ['ජන', 'පෙබ', 'මාර්', 'අප්\u200dරේල්', 'මැයි', 'ජූනි', 'ජූලි', 'අගෝ', 'සැප්', 'ඔක්', 'නොවැ', 'දෙසැ'], - [ - 'ජනවාරි', 'පෙබරවාරි', 'මාර්තු', 'අප්\u200dරේල්', 'මැයි', 'ජූනි', 'ජූලි', 'අගෝස්තු', 'සැප්තැම්බර්', 'ඔක්තෝබර්', - 'නොවැම්බර්', 'දෙසැම්බර්' - ] - ], - [['ක්\u200dරි.පූ.', 'ක්\u200dරි.ව.'], u, ['ක්\u200dරිස්තු පූර්ව', 'ක්\u200dරිස්තු වර්ෂ']], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH.mm', 'HH.mm.ss', 'HH.mm.ss z', 'HH.mm.ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', '.'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#'], - 'LKR', - 'රු.', - 'ශ්\u200dරී ලංකා රුපියල', - { - 'JPY': ['JP¥', '¥'], - 'LKR': ['රු.'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XOF': ['සිෆ්එ'] - }, - 'ltr', - plural, - [ - [ - ['මැ', 'ම', 'පා', 'උ', 'ද', 'හ', 'රෑ', 'මැ'], - ['මැදියම', 'මධ්\u200dයාහ්නය', 'පාන්දර', 'උදේ', 'දවල්', 'හවස', 'රෑ', 'මැදියමට පසු'], u - ], - [['මැදියම', 'මධ්\u200dයාහ්නය', 'පාන්දර', 'උදේ', 'දවල්', 'හවස', 'රෑ', 'මැදියමට පසු'], u, u], - [ - '00:00', '12:00', ['01:00', '06:00'], ['06:00', '12:00'], ['12:00', '14:00'], - ['14:00', '18:00'], ['18:00', '24:00'], ['00:00', '01:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sk.js b/packages/common/locales/global/sk.js deleted file mode 100644 index 47b6555e28..0000000000 --- a/packages/common/locales/global/sk.js +++ /dev/null @@ -1,98 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - if (i === Math.floor(i) && i >= 2 && i <= 4 && v === 0) return 3; - if (!(v === 0)) return 4; - return 5; -} -global.ng.common.locales['sk'] = [ - 'sk', - [['AM', 'PM'], u, u], - u, - [ - ['n', 'p', 'u', 's', 'š', 'p', 's'], ['ne', 'po', 'ut', 'st', 'št', 'pi', 'so'], - ['nedeľa', 'pondelok', 'utorok', 'streda', 'štvrtok', 'piatok', 'sobota'], - ['ne', 'po', 'ut', 'st', 'št', 'pi', 'so'] - ], - u, - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'mar', 'apr', 'máj', 'jún', 'júl', 'aug', 'sep', 'okt', 'nov', 'dec'], - [ - 'januára', 'februára', 'marca', 'apríla', 'mája', 'júna', 'júla', 'augusta', 'septembra', - 'októbra', 'novembra', 'decembra' - ] - ], - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'mar', 'apr', 'máj', 'jún', 'júl', 'aug', 'sep', 'okt', 'nov', 'dec'], - [ - 'január', 'február', 'marec', 'apríl', 'máj', 'jún', 'júl', 'august', 'september', 'október', - 'november', 'december' - ] - ], - [['pred Kr.', 'po Kr.'], u, ['pred Kristom', 'po Kristovi']], - 1, - [6, 0], - ['d. M. y', u, 'd. MMMM y', 'EEEE d. MMMM y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', '{1}, {0}', u, u], - [',', ' ', ';', '%', '+', '-', 'e', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': ['NIS', '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XXX': [] - }, - 'ltr', - plural, - [ - [ - ['o poln.', 'nap.', 'ráno', 'dop.', 'pop.', 'več.', 'v n.'], - ['o poln.', 'napol.', 'ráno', 'dopol.', 'popol.', 'večer', 'v noci'], - ['o polnoci', 'napoludnie', 'ráno', 'dopoludnia', 'popoludní', 'večer', 'v noci'] - ], - [ - ['poln.', 'pol.', 'ráno', 'dop.', 'pop.', 'več.', 'noc'], - ['poln.', 'pol.', 'ráno', 'dopol.', 'popol.', 'večer', 'noc'], - ['polnoc', 'poludnie', 'ráno', 'dopoludnie', 'popoludnie', 'večer', 'noc'] - ], - [ - '00:00', '12:00', ['04:00', '09:00'], ['09:00', '12:00'], ['12:00', '18:00'], - ['18:00', '22:00'], ['22:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sl.js b/packages/common/locales/global/sl.js deleted file mode 100644 index 6325f06edf..0000000000 --- a/packages/common/locales/global/sl.js +++ /dev/null @@ -1,85 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (v === 0 && i % 100 === 1) return 1; - if (v === 0 && i % 100 === 2) return 2; - if (v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 3 && i % 100 <= 4 || !(v === 0)) - return 3; - return 5; -} -global.ng.common.locales['sl'] = [ - 'sl', - [['d', 'p'], ['dop.', 'pop.'], u], - [['d', 'p'], ['dop.', 'pop.'], ['dopoldne', 'popoldne']], - [ - ['n', 'p', 't', 's', 'č', 'p', 's'], ['ned.', 'pon.', 'tor.', 'sre.', 'čet.', 'pet.', 'sob.'], - ['nedelja', 'ponedeljek', 'torek', 'sreda', 'četrtek', 'petek', 'sobota'], - ['ned.', 'pon.', 'tor.', 'sre.', 'čet.', 'pet.', 'sob.'] - ], - u, - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun.', 'jul.', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januar', 'februar', 'marec', 'april', 'maj', 'junij', 'julij', 'avgust', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['pr. Kr.', 'po Kr.'], u, ['pred Kristusom', 'po Kristusu']], - 1, - [6, 0], - ['d. MM. yy', 'd. MMM y', 'dd. MMMM y', 'EEEE, dd. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '−', 'e', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'evro', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'GBP': [u, '£'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'XCD': [u, '$'] - }, - 'ltr', - plural, - [ - [ - ['24.00', '12.00', 'zj', 'd', 'p', 'zv', 'po'], - ['opoln.', 'opold.', 'zjut.', 'dop.', 'pop.', 'zveč.', 'ponoči'], - ['opolnoči', 'opoldne', 'zjutraj', 'dopoldan', 'popoldan', 'zvečer', 'ponoči'] - ], - [ - ['24.00', '12.00', 'j', 'd', 'p', 'v', 'n'], - ['poln.', 'pold.', 'jut.', 'dop.', 'pop.', 'zveč.', 'noč'], - ['polnoč', 'poldne', 'jutro', 'dopoldne', 'popoldne', 'večer', 'noč'] - ], - [ - '00:00', '12:00', ['06:00', '10:00'], ['10:00', '12:00'], ['12:00', '18:00'], - ['18:00', '22:00'], ['22:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/smn.js b/packages/common/locales/global/smn.js deleted file mode 100644 index a9703a6eae..0000000000 --- a/packages/common/locales/global/smn.js +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - if (n === 2) return 2; - return 5; -} -global.ng.common.locales['smn'] = [ - 'smn', - [['ip.', 'ep.'], u, u], - u, - [ - ['p', 'V', 'M', 'K', 'T', 'V', 'L'], ['pas', 'vuo', 'maj', 'kos', 'tuo', 'vás', 'láv'], - ['pasepeeivi', 'vuossaargâ', 'majebaargâ', 'koskoho', 'tuorâstuv', 'vástuppeeivi', 'lávurduv'], - ['pa', 'vu', 'ma', 'ko', 'tu', 'vá', 'lá'] - ], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['pas', 'vuo', 'maj', 'kos', 'tuo', 'vás', 'láv'], - ['pasepeivi', 'vuossargâ', 'majebargâ', 'koskokko', 'tuorâstâh', 'vástuppeivi', 'lávurdâh'], - ['pa', 'vu', 'ma', 'ko', 'tu', 'vá', 'lá'] - ], - [ - ['U', 'K', 'NJ', 'C', 'V', 'K', 'S', 'P', 'Č', 'R', 'S', 'J'], - [ - 'uđiv', 'kuovâ', 'njuhčâ', 'cuáŋui', 'vyesi', 'kesi', 'syeini', 'porge', 'čohčâ', 'roovvâd', - 'skammâ', 'juovlâ' - ], - [ - 'uđđâivemáánu', 'kuovâmáánu', 'njuhčâmáánu', 'cuáŋuimáánu', 'vyesimáánu', 'kesimáánu', - 'syeinimáánu', 'porgemáánu', 'čohčâmáánu', 'roovvâdmáánu', 'skammâmáánu', 'juovlâmáánu' - ] - ], - u, - [['oKr.', 'mKr.'], u, ['Ovdil Kristus šoddâm', 'maŋa Kristus šoddâm']], - 1, - [6, 0], - ['d.M.y', 'MMM d. y', 'MMMM d. y', 'cccc, MMMM d. y'], - ['H.mm', 'H.mm.ss', 'H.mm.ss z', 'H.mm.ss zzzz'], - ['{1} {0}', '{1} \'tme\' {0}', u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'epiloho', '.'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sn.js b/packages/common/locales/global/sn.js deleted file mode 100644 index 0c9cfd327b..0000000000 --- a/packages/common/locales/global/sn.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['sn'] = [ - 'sn', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'C', 'C', 'C', 'C', 'M'], ['Svo', 'Muv', 'Chp', 'Cht', 'Chn', 'Chs', 'Mug'], - ['Svondo', 'Muvhuro', 'Chipiri', 'Chitatu', 'China', 'Chishanu', 'Mugovera'], - ['Sv', 'Mu', 'Cp', 'Ct', 'Cn', 'Cs', 'Mg'] - ], - u, - [ - ['N', 'K', 'K', 'K', 'C', 'C', 'C', 'N', 'G', 'G', 'M', 'Z'], - ['Ndi', 'Kuk', 'Kur', 'Kub', 'Chv', 'Chk', 'Chg', 'Nya', 'Gun', 'Gum', 'Mbu', 'Zvi'], - [ - 'Ndira', 'Kukadzi', 'Kurume', 'Kubvumbi', 'Chivabvu', 'Chikumi', 'Chikunguru', 'Nyamavhuvhu', - 'Gunyana', 'Gumiguru', 'Mbudzi', 'Zvita' - ] - ], - u, - [['BC', 'AD'], u, ['Kristo asati auya', 'mugore ramambo vedu']], - 0, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - 'US$', - 'Dora re Amerika', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/so-DJ.js b/packages/common/locales/global/so-DJ.js deleted file mode 100644 index 455a01b642..0000000000 --- a/packages/common/locales/global/so-DJ.js +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['so-dj'] = [ - 'so-DJ', - [['h', 'd'], ['GH', 'GD'], u], - [['GH', 'GD'], u, u], - [ - ['A', 'I', 'T', 'A', 'Kh', 'J', 'S'], ['Axd', 'Isn', 'Tldo', 'Arbc', 'Khms', 'Jmc', 'Sbti'], - ['Axad', 'Isniin', 'Talaado', 'Arbaco', 'Khamiis', 'Jimco', 'Sabti'], - ['Axd', 'Isn', 'Tldo', 'Arbc', 'Khms', 'Jmc', 'Sbti'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'L', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Lul', 'Ogs', 'Seb', 'Okt', 'Nof', 'Dis'], - [ - 'Bisha Koobaad', 'Bisha Labaad', 'Bisha Saddexaad', 'Bisha Afraad', 'Bisha Shanaad', - 'Bisha Lixaad', 'Bisha Todobaad', 'Bisha Sideedaad', 'Bisha Sagaalaad', 'Bisha Tobnaad', - 'Bisha Kow iyo Tobnaad', 'Bisha Laba iyo Tobnaad' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'L', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Lul', 'Ogs', 'Seb', 'Okt', 'Nof', 'Dis'], - [ - 'Jannaayo', 'Febraayo', 'Maarso', 'Abriil', 'May', 'Juun', 'Luuliyo', 'Ogost', 'Sebtembar', - 'Oktoobar', 'Nofembar', 'Desembar' - ] - ], - [['B', 'A'], ['CH', 'CD'], ['Ciise Hortii', 'Ciise Dabadii']], - 6, - [6, 0], - ['dd/MM/yy', 'dd-MMM-y', 'dd MMMM y', 'EEEE, MMMM dd, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'MaL', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'DJF', - 'Fdj', - 'Faran Jabuuti', - {'BBD': ['DBB', '$'], 'DJF': ['Fdj'], 'JPY': ['JP¥', '¥'], 'SOS': ['S'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/so-ET.js b/packages/common/locales/global/so-ET.js deleted file mode 100644 index cfc0148e6e..0000000000 --- a/packages/common/locales/global/so-ET.js +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['so-et'] = [ - 'so-ET', - [['h', 'd'], ['GH', 'GD'], u], - [['GH', 'GD'], u, u], - [ - ['A', 'I', 'T', 'A', 'Kh', 'J', 'S'], ['Axd', 'Isn', 'Tldo', 'Arbc', 'Khms', 'Jmc', 'Sbti'], - ['Axad', 'Isniin', 'Talaado', 'Arbaco', 'Khamiis', 'Jimco', 'Sabti'], - ['Axd', 'Isn', 'Tldo', 'Arbc', 'Khms', 'Jmc', 'Sbti'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'L', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Lul', 'Ogs', 'Seb', 'Okt', 'Nof', 'Dis'], - [ - 'Bisha Koobaad', 'Bisha Labaad', 'Bisha Saddexaad', 'Bisha Afraad', 'Bisha Shanaad', - 'Bisha Lixaad', 'Bisha Todobaad', 'Bisha Sideedaad', 'Bisha Sagaalaad', 'Bisha Tobnaad', - 'Bisha Kow iyo Tobnaad', 'Bisha Laba iyo Tobnaad' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'L', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Lul', 'Ogs', 'Seb', 'Okt', 'Nof', 'Dis'], - [ - 'Jannaayo', 'Febraayo', 'Maarso', 'Abriil', 'May', 'Juun', 'Luuliyo', 'Ogost', 'Sebtembar', - 'Oktoobar', 'Nofembar', 'Desembar' - ] - ], - [['B', 'A'], ['CH', 'CD'], ['Ciise Hortii', 'Ciise Dabadii']], - 0, - [6, 0], - ['dd/MM/yy', 'dd-MMM-y', 'dd MMMM y', 'EEEE, MMMM dd, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'MaL', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ETB', - 'Br', - 'Birta Itoobbiya', - {'BBD': ['DBB', '$'], 'ETB': ['Br'], 'JPY': ['JP¥', '¥'], 'SOS': ['S'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/so-KE.js b/packages/common/locales/global/so-KE.js deleted file mode 100644 index 3147fa940a..0000000000 --- a/packages/common/locales/global/so-KE.js +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['so-ke'] = [ - 'so-KE', - [['h', 'd'], ['GH', 'GD'], u], - [['GH', 'GD'], u, u], - [ - ['A', 'I', 'T', 'A', 'Kh', 'J', 'S'], ['Axd', 'Isn', 'Tldo', 'Arbc', 'Khms', 'Jmc', 'Sbti'], - ['Axad', 'Isniin', 'Talaado', 'Arbaco', 'Khamiis', 'Jimco', 'Sabti'], - ['Axd', 'Isn', 'Tldo', 'Arbc', 'Khms', 'Jmc', 'Sbti'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'L', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Lul', 'Ogs', 'Seb', 'Okt', 'Nof', 'Dis'], - [ - 'Bisha Koobaad', 'Bisha Labaad', 'Bisha Saddexaad', 'Bisha Afraad', 'Bisha Shanaad', - 'Bisha Lixaad', 'Bisha Todobaad', 'Bisha Sideedaad', 'Bisha Sagaalaad', 'Bisha Tobnaad', - 'Bisha Kow iyo Tobnaad', 'Bisha Laba iyo Tobnaad' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'L', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Lul', 'Ogs', 'Seb', 'Okt', 'Nof', 'Dis'], - [ - 'Jannaayo', 'Febraayo', 'Maarso', 'Abriil', 'May', 'Juun', 'Luuliyo', 'Ogost', 'Sebtembar', - 'Oktoobar', 'Nofembar', 'Desembar' - ] - ], - [['B', 'A'], ['CH', 'CD'], ['Ciise Hortii', 'Ciise Dabadii']], - 0, - [6, 0], - ['dd/MM/yy', 'dd-MMM-y', 'dd MMMM y', 'EEEE, MMMM dd, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'MaL', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Shilingka Kenya', - {'BBD': ['DBB', '$'], 'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'SOS': ['S'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/so.js b/packages/common/locales/global/so.js deleted file mode 100644 index 21f9e41fd8..0000000000 --- a/packages/common/locales/global/so.js +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['so'] = [ - 'so', - [['h', 'd'], ['GH', 'GD'], u], - [['GH', 'GD'], u, u], - [ - ['A', 'I', 'T', 'A', 'Kh', 'J', 'S'], ['Axd', 'Isn', 'Tldo', 'Arbc', 'Khms', 'Jmc', 'Sbti'], - ['Axad', 'Isniin', 'Talaado', 'Arbaco', 'Khamiis', 'Jimco', 'Sabti'], - ['Axd', 'Isn', 'Tldo', 'Arbc', 'Khms', 'Jmc', 'Sbti'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'L', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Lul', 'Ogs', 'Seb', 'Okt', 'Nof', 'Dis'], - [ - 'Bisha Koobaad', 'Bisha Labaad', 'Bisha Saddexaad', 'Bisha Afraad', 'Bisha Shanaad', - 'Bisha Lixaad', 'Bisha Todobaad', 'Bisha Sideedaad', 'Bisha Sagaalaad', 'Bisha Tobnaad', - 'Bisha Kow iyo Tobnaad', 'Bisha Laba iyo Tobnaad' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'L', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Lul', 'Ogs', 'Seb', 'Okt', 'Nof', 'Dis'], - [ - 'Jannaayo', 'Febraayo', 'Maarso', 'Abriil', 'May', 'Juun', 'Luuliyo', 'Ogost', 'Sebtembar', - 'Oktoobar', 'Nofembar', 'Desembar' - ] - ], - [['B', 'A'], ['CH', 'CD'], ['Ciise Hortii', 'Ciise Dabadii']], - 1, - [6, 0], - ['dd/MM/yy', 'dd-MMM-y', 'dd MMMM y', 'EEEE, MMMM dd, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'MaL', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SOS', - 'S', - 'Shilingka Soomaaliya', - {'BBD': ['DBB', '$'], 'JPY': ['JP¥', '¥'], 'SOS': ['S'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sq-MK.js b/packages/common/locales/global/sq-MK.js deleted file mode 100644 index ae48ff0901..0000000000 --- a/packages/common/locales/global/sq-MK.js +++ /dev/null @@ -1,170 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['sq-mk'] = [ - 'sq-MK', - [['p.d.', 'm.d.'], u, ['e paradites', 'e pasdites']], - [['p.d.', 'm.d.'], u, ['paradite', 'pasdite']], - [ - ['d', 'h', 'm', 'm', 'e', 'p', 'sh'], ['Die', 'Hën', 'Mar', 'Mër', 'Enj', 'Pre', 'Sht'], - ['e diel', 'e hënë', 'e martë', 'e mërkurë', 'e enjte', 'e premte', 'e shtunë'], - ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'] - ], - [ - ['d', 'h', 'm', 'm', 'e', 'p', 'sh'], ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'], - ['e diel', 'e hënë', 'e martë', 'e mërkurë', 'e enjte', 'e premte', 'e shtunë'], - ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'] - ], - [ - ['j', 'sh', 'm', 'p', 'm', 'q', 'k', 'g', 'sh', 't', 'n', 'dh'], - ['jan', 'shk', 'mar', 'pri', 'maj', 'qer', 'korr', 'gush', 'sht', 'tet', 'nën', 'dhj'], - [ - 'janar', 'shkurt', 'mars', 'prill', 'maj', 'qershor', 'korrik', 'gusht', 'shtator', 'tetor', - 'nëntor', 'dhjetor' - ] - ], - u, - [['p.K.', 'mb.K.'], u, ['para Krishtit', 'mbas Krishtit']], - 1, - [6, 0], - ['d.M.yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'në\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'MKD', - 'den', - 'Denari maqedonas', - { - 'ALL': ['Lekë'], - 'AOA': [], - 'ARS': [], - 'AUD': ['A$', 'AUD'], - 'BAM': [], - 'BBD': [], - 'BDT': [], - 'BMD': [], - 'BND': [], - 'BOB': [], - 'BRL': [], - 'BSD': [], - 'BWP': [], - 'BYN': [], - 'BZD': [], - 'CAD': ['CA$', 'CAD'], - 'CLP': [], - 'CNY': ['CN¥', 'CNY'], - 'COP': [], - 'CRC': [], - 'CUC': [], - 'CUP': [], - 'CZK': [], - 'DKK': [], - 'DOP': [], - 'EGP': [], - 'EUR': ['€', 'EUR'], - 'FJD': [], - 'FKP': [], - 'GBP': ['£', 'GBP'], - 'GEL': [], - 'GIP': [], - 'GNF': [], - 'GTQ': [], - 'GYD': [], - 'HKD': ['HK$', 'HKS'], - 'HNL': [], - 'HRK': [], - 'HUF': [], - 'IDR': [], - 'ILS': ['₪', 'ILS'], - 'INR': ['₹', 'INR'], - 'ISK': [], - 'JMD': [], - 'JPY': ['JP¥', 'JPY'], - 'KHR': [], - 'KMF': [], - 'KPW': [], - 'KRW': ['₩', 'KRW'], - 'KYD': [], - 'KZT': [], - 'LAK': [], - 'LBP': [], - 'LKR': [], - 'LRD': [], - 'MGA': [], - 'MKD': ['den'], - 'MMK': [], - 'MNT': [], - 'MUR': [], - 'MXN': ['MX$', 'MXN'], - 'MYR': [], - 'NAD': [], - 'NGN': [], - 'NIO': [], - 'NOK': [], - 'NPR': [], - 'NZD': ['NZ$', 'NZD'], - 'PHP': [], - 'PKR': [], - 'PLN': [], - 'PYG': [], - 'RON': [], - 'RUB': [], - 'RWF': [], - 'SBD': [], - 'SEK': [], - 'SGD': [], - 'SHP': [], - 'SRD': [], - 'SSP': [], - 'STN': [], - 'SYP': [], - 'THB': ['฿', 'THB'], - 'TOP': [], - 'TRY': [], - 'TTD': [], - 'TWD': ['NT$', 'TWD'], - 'UAH': [], - 'USD': ['US$', 'USD'], - 'UYU': [], - 'VND': ['₫', 'VND'], - 'XCD': ['EC$', 'XCD'], - 'ZAR': [], - 'ZMW': [] - }, - 'ltr', - plural, - [ - [ - [ - 'e mesnatës', 'e mesditës', 'e mëngjesit', 'e paradites', 'e pasdites', 'e mbrëmjes', - 'e natës' - ], - u, u - ], - [['mesnatë', 'mesditë', 'mëngjes', 'paradite', 'pasdite', 'mbrëmje', 'natë'], u, u], - [ - '00:00', '12:00', ['04:00', '09:00'], ['09:00', '12:00'], ['12:00', '18:00'], - ['18:00', '24:00'], ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sq-XK.js b/packages/common/locales/global/sq-XK.js deleted file mode 100644 index fa5679f45d..0000000000 --- a/packages/common/locales/global/sq-XK.js +++ /dev/null @@ -1,169 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['sq-xk'] = [ - 'sq-XK', - [['p.d.', 'm.d.'], u, ['e paradites', 'e pasdites']], - [['p.d.', 'm.d.'], u, ['paradite', 'pasdite']], - [ - ['d', 'h', 'm', 'm', 'e', 'p', 'sh'], ['Die', 'Hën', 'Mar', 'Mër', 'Enj', 'Pre', 'Sht'], - ['e diel', 'e hënë', 'e martë', 'e mërkurë', 'e enjte', 'e premte', 'e shtunë'], - ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'] - ], - [ - ['d', 'h', 'm', 'm', 'e', 'p', 'sh'], ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'], - ['e diel', 'e hënë', 'e martë', 'e mërkurë', 'e enjte', 'e premte', 'e shtunë'], - ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'] - ], - [ - ['j', 'sh', 'm', 'p', 'm', 'q', 'k', 'g', 'sh', 't', 'n', 'dh'], - ['jan', 'shk', 'mar', 'pri', 'maj', 'qer', 'korr', 'gush', 'sht', 'tet', 'nën', 'dhj'], - [ - 'janar', 'shkurt', 'mars', 'prill', 'maj', 'qershor', 'korrik', 'gusht', 'shtator', 'tetor', - 'nëntor', 'dhjetor' - ] - ], - u, - [['p.K.', 'mb.K.'], u, ['para Krishtit', 'mbas Krishtit']], - 1, - [6, 0], - ['d.M.yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'në\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euroja', - { - 'ALL': ['Lekë'], - 'AOA': [], - 'ARS': [], - 'AUD': ['A$', 'AUD'], - 'BAM': [], - 'BBD': [], - 'BDT': [], - 'BMD': [], - 'BND': [], - 'BOB': [], - 'BRL': [], - 'BSD': [], - 'BWP': [], - 'BYN': [], - 'BZD': [], - 'CAD': ['CA$', 'CAD'], - 'CLP': [], - 'CNY': ['CN¥', 'CNY'], - 'COP': [], - 'CRC': [], - 'CUC': [], - 'CUP': [], - 'CZK': [], - 'DKK': [], - 'DOP': [], - 'EGP': [], - 'EUR': ['€', 'EUR'], - 'FJD': [], - 'FKP': [], - 'GBP': ['£', 'GBP'], - 'GEL': [], - 'GIP': [], - 'GNF': [], - 'GTQ': [], - 'GYD': [], - 'HKD': ['HK$', 'HKS'], - 'HNL': [], - 'HRK': [], - 'HUF': [], - 'IDR': [], - 'ILS': ['₪', 'ILS'], - 'INR': ['₹', 'INR'], - 'ISK': [], - 'JMD': [], - 'JPY': ['JP¥', 'JPY'], - 'KHR': [], - 'KMF': [], - 'KPW': [], - 'KRW': ['₩', 'KRW'], - 'KYD': [], - 'KZT': [], - 'LAK': [], - 'LBP': [], - 'LKR': [], - 'LRD': [], - 'MGA': [], - 'MMK': [], - 'MNT': [], - 'MUR': [], - 'MXN': ['MX$', 'MXN'], - 'MYR': [], - 'NAD': [], - 'NGN': [], - 'NIO': [], - 'NOK': [], - 'NPR': [], - 'NZD': ['NZ$', 'NZD'], - 'PHP': [], - 'PKR': [], - 'PLN': [], - 'PYG': [], - 'RON': [], - 'RUB': [], - 'RWF': [], - 'SBD': [], - 'SEK': [], - 'SGD': [], - 'SHP': [], - 'SRD': [], - 'SSP': [], - 'STN': [], - 'SYP': [], - 'THB': ['฿', 'THB'], - 'TOP': [], - 'TRY': [], - 'TTD': [], - 'TWD': ['NT$', 'TWD'], - 'UAH': [], - 'USD': ['US$', 'USD'], - 'UYU': [], - 'VND': ['₫', 'VND'], - 'XCD': ['EC$', 'XCD'], - 'ZAR': [], - 'ZMW': [] - }, - 'ltr', - plural, - [ - [ - [ - 'e mesnatës', 'e mesditës', 'e mëngjesit', 'e paradites', 'e pasdites', 'e mbrëmjes', - 'e natës' - ], - u, u - ], - [['mesnatë', 'mesditë', 'mëngjes', 'paradite', 'pasdite', 'mbrëmje', 'natë'], u, u], - [ - '00:00', '12:00', ['04:00', '09:00'], ['09:00', '12:00'], ['12:00', '18:00'], - ['18:00', '24:00'], ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sq.js b/packages/common/locales/global/sq.js deleted file mode 100644 index addd0c9441..0000000000 --- a/packages/common/locales/global/sq.js +++ /dev/null @@ -1,169 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['sq'] = [ - 'sq', - [['p.d.', 'm.d.'], u, ['e paradites', 'e pasdites']], - [['p.d.', 'm.d.'], u, ['paradite', 'pasdite']], - [ - ['d', 'h', 'm', 'm', 'e', 'p', 'sh'], ['Die', 'Hën', 'Mar', 'Mër', 'Enj', 'Pre', 'Sht'], - ['e diel', 'e hënë', 'e martë', 'e mërkurë', 'e enjte', 'e premte', 'e shtunë'], - ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'] - ], - [ - ['d', 'h', 'm', 'm', 'e', 'p', 'sh'], ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'], - ['e diel', 'e hënë', 'e martë', 'e mërkurë', 'e enjte', 'e premte', 'e shtunë'], - ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'] - ], - [ - ['j', 'sh', 'm', 'p', 'm', 'q', 'k', 'g', 'sh', 't', 'n', 'dh'], - ['jan', 'shk', 'mar', 'pri', 'maj', 'qer', 'korr', 'gush', 'sht', 'tet', 'nën', 'dhj'], - [ - 'janar', 'shkurt', 'mars', 'prill', 'maj', 'qershor', 'korrik', 'gusht', 'shtator', 'tetor', - 'nëntor', 'dhjetor' - ] - ], - u, - [['p.K.', 'mb.K.'], u, ['para Krishtit', 'mbas Krishtit']], - 1, - [6, 0], - ['d.M.yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a, z', 'h:mm:ss a, zzzz'], - ['{1}, {0}', u, '{1} \'në\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'ALL', - 'Lekë', - 'Leku shqiptar', - { - 'ALL': ['Lekë'], - 'AOA': [], - 'ARS': [], - 'AUD': ['A$', 'AUD'], - 'BAM': [], - 'BBD': [], - 'BDT': [], - 'BMD': [], - 'BND': [], - 'BOB': [], - 'BRL': [], - 'BSD': [], - 'BWP': [], - 'BYN': [], - 'BZD': [], - 'CAD': ['CA$', 'CAD'], - 'CLP': [], - 'CNY': ['CN¥', 'CNY'], - 'COP': [], - 'CRC': [], - 'CUC': [], - 'CUP': [], - 'CZK': [], - 'DKK': [], - 'DOP': [], - 'EGP': [], - 'EUR': ['€', 'EUR'], - 'FJD': [], - 'FKP': [], - 'GBP': ['£', 'GBP'], - 'GEL': [], - 'GIP': [], - 'GNF': [], - 'GTQ': [], - 'GYD': [], - 'HKD': ['HK$', 'HKS'], - 'HNL': [], - 'HRK': [], - 'HUF': [], - 'IDR': [], - 'ILS': ['₪', 'ILS'], - 'INR': ['₹', 'INR'], - 'ISK': [], - 'JMD': [], - 'JPY': ['JP¥', 'JPY'], - 'KHR': [], - 'KMF': [], - 'KPW': [], - 'KRW': ['₩', 'KRW'], - 'KYD': [], - 'KZT': [], - 'LAK': [], - 'LBP': [], - 'LKR': [], - 'LRD': [], - 'MGA': [], - 'MMK': [], - 'MNT': [], - 'MUR': [], - 'MXN': ['MX$', 'MXN'], - 'MYR': [], - 'NAD': [], - 'NGN': [], - 'NIO': [], - 'NOK': [], - 'NPR': [], - 'NZD': ['NZ$', 'NZD'], - 'PHP': [], - 'PKR': [], - 'PLN': [], - 'PYG': [], - 'RON': [], - 'RUB': [], - 'RWF': [], - 'SBD': [], - 'SEK': [], - 'SGD': [], - 'SHP': [], - 'SRD': [], - 'SSP': [], - 'STN': [], - 'SYP': [], - 'THB': ['฿', 'THB'], - 'TOP': [], - 'TRY': [], - 'TTD': [], - 'TWD': ['NT$', 'TWD'], - 'UAH': [], - 'USD': ['US$', 'USD'], - 'UYU': [], - 'VND': ['₫', 'VND'], - 'XCD': ['EC$', 'XCD'], - 'ZAR': [], - 'ZMW': [] - }, - 'ltr', - plural, - [ - [ - [ - 'e mesnatës', 'e mesditës', 'e mëngjesit', 'e paradites', 'e pasdites', 'e mbrëmjes', - 'e natës' - ], - u, u - ], - [['mesnatë', 'mesditë', 'mëngjes', 'paradite', 'pasdite', 'mbrëmje', 'natë'], u, u], - [ - '00:00', '12:00', ['04:00', '09:00'], ['09:00', '12:00'], ['12:00', '18:00'], - ['18:00', '24:00'], ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sr-Cyrl-BA.js b/packages/common/locales/global/sr-Cyrl-BA.js deleted file mode 100644 index 306900fe1c..0000000000 --- a/packages/common/locales/global/sr-Cyrl-BA.js +++ /dev/null @@ -1,84 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14) || - f % 10 === Math.floor(f % 10) && f % 10 >= 2 && f % 10 <= 4 && - !(f % 100 >= 12 && f % 100 <= 14)) - return 3; - return 5; -} -global.ng.common.locales['sr-cyrl-ba'] = [ - 'sr-Cyrl-BA', - [['a', 'p'], ['прије подне', 'по подне'], u], - [['а', 'p'], ['прије подне', 'по подне'], u], - [ - ['н', 'п', 'у', 'с', 'ч', 'п', 'с'], ['нед', 'пон', 'ут', 'ср', 'чет', 'пет', 'суб'], - ['недјеља', 'понедељак', 'уторак', 'сриједа', 'четвртак', 'петак', 'субота'], - ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'] - ], - u, - [ - ['ј', 'ф', 'м', 'а', 'м', 'ј', 'ј', 'а', 'с', 'о', 'н', 'д'], - ['јан', 'феб', 'мар', 'апр', 'мај', 'јун', 'јул', 'авг', 'сеп', 'окт', 'нов', 'дец'], - [ - 'јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', - 'новембар', 'децембар' - ] - ], - u, - [['п.н.е.', 'н.е.'], ['п. н. е.', 'н. е.'], ['прије нове ере', 'нове ере']], - 1, - [6, 0], - ['d.M.yy.', 'dd.MM.y.', 'dd. MMMM y.', 'EEEE, dd. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'BAM', - 'КМ', - 'Босанско-херцеговачка конвертибилна марка', - { - 'AUD': [u, '$'], - 'BAM': ['КМ', 'KM'], - 'GEL': [u, 'ლ'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural, - [ - [ - ['поноћ', 'подне', 'јутро', 'по под.', 'вече', 'ноћ'], - ['поноћ', 'подне', 'јутро', 'по под.', 'вече', 'ноћу'], - ['поноћ', 'подне', 'ујутро', 'по подне', 'увече', 'ноћу'] - ], - [['поноћ', 'подне', 'јутро', 'поподне', 'вече', 'ноћ'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sr-Cyrl-ME.js b/packages/common/locales/global/sr-Cyrl-ME.js deleted file mode 100644 index efebe780e4..0000000000 --- a/packages/common/locales/global/sr-Cyrl-ME.js +++ /dev/null @@ -1,84 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14) || - f % 10 === Math.floor(f % 10) && f % 10 >= 2 && f % 10 <= 4 && - !(f % 100 >= 12 && f % 100 <= 14)) - return 3; - return 5; -} -global.ng.common.locales['sr-cyrl-me'] = [ - 'sr-Cyrl-ME', - [['a', 'p'], ['прије подне', 'по подне'], u], - u, - [ - ['н', 'п', 'у', 'с', 'ч', 'п', 'с'], ['нед', 'пон', 'уто', 'сре', 'чет', 'пет', 'суб'], - ['недјеља', 'понедељак', 'уторак', 'сриједа', 'четвртак', 'петак', 'субота'], - ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'] - ], - u, - [ - ['ј', 'ф', 'м', 'а', 'м', 'ј', 'ј', 'а', 'с', 'о', 'н', 'д'], - ['јан', 'феб', 'март', 'апр', 'мај', 'јун', 'јул', 'авг', 'септ', 'окт', 'нов', 'дец'], - [ - 'јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', - 'новембар', 'децембар' - ] - ], - u, - [['п.н.е.', 'н.е.'], ['п. н. е.', 'н. е.'], ['прије нове ере', 'нове ере']], - 1, - [6, 0], - ['d.M.yy.', 'dd.MM.y.', 'dd. MMMM y.', 'EEEE, dd. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Евро', - { - 'AUD': [u, '$'], - 'BAM': ['КМ', 'KM'], - 'GEL': [u, 'ლ'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural, - [ - [ - ['поноћ', 'подне', 'јутро', 'по под.', 'вече', 'ноћ'], - ['поноћ', 'подне', 'јутро', 'по под.', 'вече', 'ноћу'], - ['поноћ', 'подне', 'ујутро', 'по подне', 'увече', 'ноћу'] - ], - [['поноћ', 'подне', 'јутро', 'поподне', 'вече', 'ноћ'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sr-Cyrl-XK.js b/packages/common/locales/global/sr-Cyrl-XK.js deleted file mode 100644 index dbc07c561c..0000000000 --- a/packages/common/locales/global/sr-Cyrl-XK.js +++ /dev/null @@ -1,84 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14) || - f % 10 === Math.floor(f % 10) && f % 10 >= 2 && f % 10 <= 4 && - !(f % 100 >= 12 && f % 100 <= 14)) - return 3; - return 5; -} -global.ng.common.locales['sr-cyrl-xk'] = [ - 'sr-Cyrl-XK', - [['a', 'p'], ['пре подне', 'по подне'], u], - u, - [ - ['н', 'п', 'у', 'с', 'ч', 'п', 'с'], ['нед', 'пон', 'уто', 'сре', 'чет', 'пет', 'суб'], - ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'], - ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'] - ], - u, - [ - ['ј', 'ф', 'м', 'а', 'м', 'ј', 'ј', 'а', 'с', 'о', 'н', 'д'], - ['јан', 'феб', 'март', 'апр', 'мај', 'јун', 'јул', 'авг', 'септ', 'окт', 'нов', 'дец'], - [ - 'јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', - 'новембар', 'децембар' - ] - ], - u, - [['п.н.е.', 'н.е.'], ['п. н. е.', 'н. е.'], ['пре нове ере', 'нове ере']], - 1, - [6, 0], - ['d.M.yy.', 'dd.MM.y.', 'dd. MMMM y.', 'EEEE, dd. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Евро', - { - 'AUD': [u, '$'], - 'BAM': ['КМ', 'KM'], - 'GEL': [u, 'ლ'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural, - [ - [ - ['поноћ', 'подне', 'јутро', 'по под.', 'вече', 'ноћ'], - ['поноћ', 'подне', 'јутро', 'по под.', 'увече', 'ноћу'], - ['поноћ', 'подне', 'ујутро', 'по подне', 'увече', 'ноћу'] - ], - [['поноћ', 'подне', 'јутро', 'поподне', 'вече', 'ноћ'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sr-Cyrl.js b/packages/common/locales/global/sr-Cyrl.js deleted file mode 100644 index c28351098b..0000000000 --- a/packages/common/locales/global/sr-Cyrl.js +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14) || - f % 10 === Math.floor(f % 10) && f % 10 >= 2 && f % 10 <= 4 && - !(f % 100 >= 12 && f % 100 <= 14)) - return 3; - return 5; -} -global.ng.common.locales['sr-cyrl'] = [ - 'sr-Cyrl', - [['a', 'p'], ['пре подне', 'по подне'], u], - [['пре подне', 'по подне'], u, u], - [ - ['н', 'п', 'у', 'с', 'ч', 'п', 'с'], ['нед', 'пон', 'уто', 'сре', 'чет', 'пет', 'суб'], - ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'], - ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'] - ], - u, - [ - ['ј', 'ф', 'м', 'а', 'м', 'ј', 'ј', 'а', 'с', 'о', 'н', 'д'], - ['јан', 'феб', 'мар', 'апр', 'мај', 'јун', 'јул', 'авг', 'сеп', 'окт', 'нов', 'дец'], - [ - 'јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', - 'новембар', 'децембар' - ] - ], - u, - [['п.н.е.', 'н.е.'], ['п. н. е.', 'н. е.'], ['пре нове ере', 'нове ере']], - 1, - [6, 0], - ['d.M.yy.', 'dd.MM.y.', 'dd. MMMM y.', 'EEEE, dd. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'RSD', - 'RSD', - 'Српски динар', - { - 'AUD': [u, '$'], - 'BAM': ['КМ', 'KM'], - 'GEL': [u, 'ლ'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural, - [ - [ - ['поноћ', 'подне', 'ујутру', 'по подне', 'увече', 'ноћу'], - ['поноћ', 'подне', 'ујутро', 'по подне', 'увече', 'ноћу'], u - ], - [['поноћ', 'подне', 'јутро', 'поподне', 'вече', 'ноћ'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sr-Latn-BA.js b/packages/common/locales/global/sr-Latn-BA.js deleted file mode 100644 index 90dbb90817..0000000000 --- a/packages/common/locales/global/sr-Latn-BA.js +++ /dev/null @@ -1,77 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['sr-latn-ba'] = [ - 'sr-Latn-BA', - [['a', 'p'], ['prije podne', 'po podne'], u], - u, - [ - ['n', 'p', 'u', 's', 'č', 'p', 's'], ['ned', 'pon', 'ut', 'sr', 'čet', 'pet', 'sub'], - ['nedjelja', 'ponedeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'] - ], - u, - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'avg', 'sep', 'okt', 'nov', 'dec'], - [ - 'januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', - 'novembar', 'decembar' - ] - ], - u, - [['p.n.e.', 'n.e.'], ['p. n. e.', 'n. e.'], ['prije nove ere', 'nove ere']], - 1, - [6, 0], - ['d.M.yy.', 'dd.MM.y.', 'dd. MMMM y.', 'EEEE, dd. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'BAM', - 'KM', - 'Bosansko-hercegovačka konvertibilna marka', - { - 'AUD': [u, '$'], - 'BAM': ['KM'], - 'BYN': [u, 'r.'], - 'GEL': [u, 'ლ'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural, - [ - [ - ['ponoć', 'podne', 'jutro', 'po pod.', 'veče', 'noć'], - ['ponoć', 'podne', 'jutro', 'po pod.', 'veče', 'noću'], - ['ponoć', 'podne', 'ujutro', 'po podne', 'uveče', 'noću'] - ], - [['ponoć', 'podne', 'jutro', 'popodne', 'veče', 'noć'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sr-Latn-ME.js b/packages/common/locales/global/sr-Latn-ME.js deleted file mode 100644 index d23bf4845e..0000000000 --- a/packages/common/locales/global/sr-Latn-ME.js +++ /dev/null @@ -1,77 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['sr-latn-me'] = [ - 'sr-Latn-ME', - [['a', 'p'], ['prije podne', 'po podne'], u], - u, - [ - ['n', 'p', 'u', 's', 'č', 'p', 's'], ['ned', 'pon', 'uto', 'sre', 'čet', 'pet', 'sub'], - ['nedjelja', 'ponedeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'] - ], - u, - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'mart', 'apr', 'maj', 'jun', 'jul', 'avg', 'sept', 'okt', 'nov', 'dec'], - [ - 'januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', - 'novembar', 'decembar' - ] - ], - u, - [['p.n.e.', 'n.e.'], ['p. n. e.', 'n. e.'], ['prije nove ere', 'nove ere']], - 1, - [6, 0], - ['d.M.yy.', 'dd.MM.y.', 'dd. MMMM y.', 'EEEE, dd. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Evro', - { - 'AUD': [u, '$'], - 'BAM': ['KM'], - 'BYN': [u, 'r.'], - 'GEL': [u, 'ლ'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural, - [ - [ - ['ponoć', 'podne', 'jutro', 'po pod.', 'veče', 'noć'], - ['ponoć', 'podne', 'jutro', 'po pod.', 'veče', 'noću'], - ['ponoć', 'podne', 'ujutro', 'po podne', 'uveče', 'noću'] - ], - [['ponoć', 'podne', 'jutro', 'popodne', 'veče', 'noć'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sr-Latn-XK.js b/packages/common/locales/global/sr-Latn-XK.js deleted file mode 100644 index bde7533e14..0000000000 --- a/packages/common/locales/global/sr-Latn-XK.js +++ /dev/null @@ -1,77 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['sr-latn-xk'] = [ - 'sr-Latn-XK', - [['a', 'p'], ['pre podne', 'po podne'], u], - u, - [ - ['n', 'p', 'u', 's', 'č', 'p', 's'], ['ned', 'pon', 'uto', 'sre', 'čet', 'pet', 'sub'], - ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'], - ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'] - ], - u, - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'mart', 'apr', 'maj', 'jun', 'jul', 'avg', 'sept', 'okt', 'nov', 'dec'], - [ - 'januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', - 'novembar', 'decembar' - ] - ], - u, - [['p.n.e.', 'n.e.'], ['p. n. e.', 'n. e.'], ['pre nove ere', 'nove ere']], - 1, - [6, 0], - ['d.M.yy.', 'dd.MM.y.', 'dd. MMMM y.', 'EEEE, dd. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Evro', - { - 'AUD': [u, '$'], - 'BAM': ['KM'], - 'BYN': [u, 'r.'], - 'GEL': [u, 'ლ'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural, - [ - [ - ['ponoć', 'podne', 'jutro', 'po pod.', 'veče', 'noć'], - ['ponoć', 'podne', 'jutro', 'po pod.', 'uveče', 'noću'], - ['ponoć', 'podne', 'ujutro', 'po podne', 'uveče', 'noću'] - ], - [['ponoć', 'podne', 'jutro', 'popodne', 'veče', 'noć'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sr-Latn.js b/packages/common/locales/global/sr-Latn.js deleted file mode 100644 index 4663c6515c..0000000000 --- a/packages/common/locales/global/sr-Latn.js +++ /dev/null @@ -1,76 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['sr-latn'] = [ - 'sr-Latn', - [['a', 'p'], ['pre podne', 'po podne'], u], - [['pre podne', 'po podne'], u, u], - [ - ['n', 'p', 'u', 's', 'č', 'p', 's'], ['ned', 'pon', 'uto', 'sre', 'čet', 'pet', 'sub'], - ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'], - ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'] - ], - u, - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'avg', 'sep', 'okt', 'nov', 'dec'], - [ - 'januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', - 'novembar', 'decembar' - ] - ], - u, - [['p.n.e.', 'n.e.'], ['p. n. e.', 'n. e.'], ['pre nove ere', 'nove ere']], - 1, - [6, 0], - ['d.M.yy.', 'dd.MM.y.', 'dd. MMMM y.', 'EEEE, dd. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'RSD', - 'RSD', - 'Srpski dinar', - { - 'AUD': [u, '$'], - 'BAM': ['KM'], - 'BYN': [u, 'r.'], - 'GEL': [u, 'ლ'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural, - [ - [ - ['ponoć', 'podne', 'ujutru', 'po podne', 'uveče', 'noću'], - ['ponoć', 'podne', 'ujutro', 'po podne', 'uveče', 'noću'], u - ], - [['ponoć', 'podne', 'jutro', 'popodne', 'veče', 'noć'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sr.js b/packages/common/locales/global/sr.js deleted file mode 100644 index 366ccb4713..0000000000 --- a/packages/common/locales/global/sr.js +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14) || - f % 10 === Math.floor(f % 10) && f % 10 >= 2 && f % 10 <= 4 && - !(f % 100 >= 12 && f % 100 <= 14)) - return 3; - return 5; -} -global.ng.common.locales['sr'] = [ - 'sr', - [['a', 'p'], ['пре подне', 'по подне'], u], - [['пре подне', 'по подне'], u, u], - [ - ['н', 'п', 'у', 'с', 'ч', 'п', 'с'], ['нед', 'пон', 'уто', 'сре', 'чет', 'пет', 'суб'], - ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'], - ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'] - ], - u, - [ - ['ј', 'ф', 'м', 'а', 'м', 'ј', 'ј', 'а', 'с', 'о', 'н', 'д'], - ['јан', 'феб', 'мар', 'апр', 'мај', 'јун', 'јул', 'авг', 'сеп', 'окт', 'нов', 'дец'], - [ - 'јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', - 'новембар', 'децембар' - ] - ], - u, - [['п.н.е.', 'н.е.'], ['п. н. е.', 'н. е.'], ['пре нове ере', 'нове ере']], - 1, - [6, 0], - ['d.M.yy.', 'dd.MM.y.', 'dd. MMMM y.', 'EEEE, dd. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'RSD', - 'RSD', - 'Српски динар', - { - 'AUD': [u, '$'], - 'BAM': ['КМ', 'KM'], - 'GEL': [u, 'ლ'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural, - [ - [ - ['поноћ', 'подне', 'ујутру', 'по подне', 'увече', 'ноћу'], - ['поноћ', 'подне', 'ујутро', 'по подне', 'увече', 'ноћу'], u - ], - [['поноћ', 'подне', 'јутро', 'поподне', 'вече', 'ноћ'], u, u], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sv-AX.js b/packages/common/locales/global/sv-AX.js deleted file mode 100644 index e12bb33523..0000000000 --- a/packages/common/locales/global/sv-AX.js +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['sv-ax'] = [ - 'sv-AX', - [['fm', 'em'], u, u], - [['fm', 'em'], ['f.m.', 'e.m.'], ['förmiddag', 'eftermiddag']], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['sön', 'mån', 'tis', 'ons', 'tors', 'fre', 'lör'], - ['söndag', 'måndag', 'tisdag', 'onsdag', 'torsdag', 'fredag', 'lördag'], - ['sö', 'må', 'ti', 'on', 'to', 'fr', 'lö'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mars', 'apr.', 'maj', 'juni', 'juli', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januari', 'februari', 'mars', 'april', 'maj', 'juni', 'juli', 'augusti', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['f.Kr.', 'e.Kr.'], u, ['före Kristus', 'efter Kristus']], - 1, - [6, 0], - ['y-MM-dd', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', '\'kl\'. HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '−', '×10^', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': [u, '$'], - 'BBD': ['Bds$', '$'], - 'BMD': ['BM$', '$'], - 'BRL': ['BR$', 'R$'], - 'BSD': ['BS$', '$'], - 'BZD': ['BZ$', '$'], - 'CNY': [u, '¥'], - 'DKK': ['Dkr', 'kr'], - 'DOP': ['RD$', '$'], - 'EEK': ['Ekr'], - 'EGP': ['EG£', 'E£'], - 'ESP': [], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'IEP': ['IE£'], - 'INR': [u, '₹'], - 'ISK': ['Ikr', 'kr'], - 'JMD': ['JM$', '$'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'NOK': ['Nkr', 'kr'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SEK': ['kr'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural, - [ - [ - ['midn.', 'på morg.', 'på förm.', 'på efterm.', 'på kvällen', 'på natten'], - ['midnatt', 'på morg.', 'på förm.', 'på efterm.', 'på kvällen', 'på natten'], - ['midnatt', 'på morgonen', 'på förmiddagen', 'på eftermiddagen', 'på kvällen', 'på natten'] - ], - [ - ['midn.', 'morg.', 'förm.', 'efterm.', 'kväll', 'natt'], - ['midnatt', 'morgon', 'förm.', 'efterm.', 'kväll', 'natt'], - ['midnatt', 'morgon', 'förmiddag', 'eftermiddag', 'kväll', 'natt'] - ], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sv-FI.js b/packages/common/locales/global/sv-FI.js deleted file mode 100644 index 614f1d6d82..0000000000 --- a/packages/common/locales/global/sv-FI.js +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['sv-fi'] = [ - 'sv-FI', - [['fm', 'em'], u, u], - [['fm', 'em'], ['f.m.', 'e.m.'], ['förmiddag', 'eftermiddag']], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['sön', 'mån', 'tis', 'ons', 'tors', 'fre', 'lör'], - ['söndag', 'måndag', 'tisdag', 'onsdag', 'torsdag', 'fredag', 'lördag'], - ['sö', 'må', 'ti', 'on', 'to', 'fr', 'lö'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mars', 'apr.', 'maj', 'juni', 'juli', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januari', 'februari', 'mars', 'april', 'maj', 'juni', 'juli', 'augusti', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['f.Kr.', 'e.Kr.'], u, ['före Kristus', 'efter Kristus']], - 1, - [6, 0], - ['y-MM-dd', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', '\'kl\'. HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '−', '×10^', '×', '‰', '∞', 'NaN', '.'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': [u, '$'], - 'BBD': ['Bds$', '$'], - 'BMD': ['BM$', '$'], - 'BRL': ['BR$', 'R$'], - 'BSD': ['BS$', '$'], - 'BZD': ['BZ$', '$'], - 'CNY': [u, '¥'], - 'DKK': ['Dkr', 'kr'], - 'DOP': ['RD$', '$'], - 'EEK': ['Ekr'], - 'EGP': ['EG£', 'E£'], - 'ESP': [], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'IEP': ['IE£'], - 'INR': [u, '₹'], - 'ISK': ['Ikr', 'kr'], - 'JMD': ['JM$', '$'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'NOK': ['Nkr', 'kr'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SEK': ['kr'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural, - [ - [ - ['midn.', 'på morg.', 'på förm.', 'på efterm.', 'på kvällen', 'på natten'], - ['midnatt', 'på morg.', 'på förm.', 'på efterm.', 'på kvällen', 'på natten'], - ['midnatt', 'på morgonen', 'på förmiddagen', 'på eftermiddagen', 'på kvällen', 'på natten'] - ], - [ - ['midn.', 'morg.', 'förm.', 'efterm.', 'kväll', 'natt'], - ['midnatt', 'morgon', 'förm.', 'efterm.', 'kväll', 'natt'], - ['midnatt', 'morgon', 'förmiddag', 'eftermiddag', 'kväll', 'natt'] - ], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sv.js b/packages/common/locales/global/sv.js deleted file mode 100644 index c77f338c99..0000000000 --- a/packages/common/locales/global/sv.js +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['sv'] = [ - 'sv', - [['fm', 'em'], u, u], - [['fm', 'em'], ['f.m.', 'e.m.'], ['förmiddag', 'eftermiddag']], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['sön', 'mån', 'tis', 'ons', 'tors', 'fre', 'lör'], - ['söndag', 'måndag', 'tisdag', 'onsdag', 'torsdag', 'fredag', 'lördag'], - ['sö', 'må', 'ti', 'on', 'to', 'fr', 'lö'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mars', 'apr.', 'maj', 'juni', 'juli', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januari', 'februari', 'mars', 'april', 'maj', 'juni', 'juli', 'augusti', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['f.Kr.', 'e.Kr.'], u, ['före Kristus', 'efter Kristus']], - 1, - [6, 0], - ['y-MM-dd', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', '\'kl\'. HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '−', '×10^', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'SEK', - 'kr', - 'svensk krona', - { - 'AUD': [u, '$'], - 'BBD': ['Bds$', '$'], - 'BMD': ['BM$', '$'], - 'BRL': ['BR$', 'R$'], - 'BSD': ['BS$', '$'], - 'BZD': ['BZ$', '$'], - 'CNY': [u, '¥'], - 'DKK': ['Dkr', 'kr'], - 'DOP': ['RD$', '$'], - 'EEK': ['Ekr'], - 'EGP': ['EG£', 'E£'], - 'ESP': [], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'IEP': ['IE£'], - 'INR': [u, '₹'], - 'ISK': ['Ikr', 'kr'], - 'JMD': ['JM$', '$'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'NOK': ['Nkr', 'kr'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SEK': ['kr'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural, - [ - [ - ['midn.', 'på morg.', 'på förm.', 'på efterm.', 'på kvällen', 'på natten'], - ['midnatt', 'på morg.', 'på förm.', 'på efterm.', 'på kvällen', 'på natten'], - ['midnatt', 'på morgonen', 'på förmiddagen', 'på eftermiddagen', 'på kvällen', 'på natten'] - ], - [ - ['midn.', 'morg.', 'förm.', 'efterm.', 'kväll', 'natt'], - ['midnatt', 'morgon', 'förm.', 'efterm.', 'kväll', 'natt'], - ['midnatt', 'morgon', 'förmiddag', 'eftermiddag', 'kväll', 'natt'] - ], - [ - '00:00', ['05:00', '10:00'], ['10:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sw-CD.js b/packages/common/locales/global/sw-CD.js deleted file mode 100644 index 5993439dcd..0000000000 --- a/packages/common/locales/global/sw-CD.js +++ /dev/null @@ -1,82 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['sw-cd'] = [ - 'sw-CD', - [['am', 'pm'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'], u, u - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', - 'Oktoba', 'Novemba', 'Desemba' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Kristo', 'Baada ya Kristo']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'CDF', - 'FC', - 'Faranga ya Kongo', - { - 'CDF': ['FC'], - 'JPY': ['JP¥', '¥'], - 'KES': ['Ksh'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'TZS': ['TSh'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [ - ['usiku', 'mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'], - ['saa sita za usiku', 'adhuhuri', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'], - ['saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'] - ], - [ - [ - 'saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku' - ], - ['saa sita za usiku', 'adhuhuri', 'alfajiri', 'asubuhi', 'alasiri', 'jioni', 'usiku'], - ['saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'] - ], - [ - '00:00', '12:00', ['04:00', '07:00'], ['07:00', '12:00'], ['12:00', '16:00'], - ['16:00', '19:00'], ['19:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sw-KE.js b/packages/common/locales/global/sw-KE.js deleted file mode 100644 index 8699eb9573..0000000000 --- a/packages/common/locales/global/sw-KE.js +++ /dev/null @@ -1,74 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['sw-ke'] = [ - 'sw-KE', - [['am', 'pm'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'], u, u - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', - 'Oktoba', 'Novemba', 'Desemba' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Kristo', 'Baada ya Kristo']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Shilingi ya Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'THB': ['฿'], 'TWD': ['NT$'], 'TZS': ['TSh']}, - 'ltr', - plural, - [ - [ - ['usiku', 'mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'], - ['saa sita za usiku', 'adhuhuri', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'], - ['saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'] - ], - [ - [ - 'saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku' - ], - ['saa sita za usiku', 'adhuhuri', 'alfajiri', 'asubuhi', 'alasiri', 'jioni', 'usiku'], - ['saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'] - ], - [ - '00:00', '12:00', ['04:00', '07:00'], ['07:00', '12:00'], ['12:00', '16:00'], - ['16:00', '19:00'], ['19:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sw-UG.js b/packages/common/locales/global/sw-UG.js deleted file mode 100644 index 265c688447..0000000000 --- a/packages/common/locales/global/sw-UG.js +++ /dev/null @@ -1,82 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['sw-ug'] = [ - 'sw-UG', - [['am', 'pm'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'], u, u - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', - 'Oktoba', 'Novemba', 'Desemba' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Kristo', 'Baada ya Kristo']], - 1, - [0, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'UGX', - 'USh', - 'Shilingi ya Uganda', - { - 'JPY': ['JP¥', '¥'], - 'KES': ['Ksh'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'TZS': ['TSh'], - 'UGX': ['USh'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [ - ['usiku', 'mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'], - ['saa sita za usiku', 'adhuhuri', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'], - ['saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'] - ], - [ - [ - 'saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku' - ], - ['saa sita za usiku', 'adhuhuri', 'alfajiri', 'asubuhi', 'alasiri', 'jioni', 'usiku'], - ['saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'] - ], - [ - '00:00', '12:00', ['04:00', '07:00'], ['07:00', '12:00'], ['12:00', '16:00'], - ['16:00', '19:00'], ['19:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/sw.js b/packages/common/locales/global/sw.js deleted file mode 100644 index 03e478af3a..0000000000 --- a/packages/common/locales/global/sw.js +++ /dev/null @@ -1,81 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['sw'] = [ - 'sw', - [['am', 'pm'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'], u, u - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', - 'Oktoba', 'Novemba', 'Desemba' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Kristo', 'Baada ya Kristo']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'TZS', - 'TSh', - 'Shilingi ya Tanzania', - { - 'JPY': ['JP¥', '¥'], - 'KES': ['Ksh'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'TZS': ['TSh'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [ - [ - ['usiku', 'mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'], - ['saa sita za usiku', 'adhuhuri', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'], - ['saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'] - ], - [ - [ - 'saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku' - ], - ['saa sita za usiku', 'adhuhuri', 'alfajiri', 'asubuhi', 'alasiri', 'jioni', 'usiku'], - ['saa sita za usiku', 'saa sita za mchana', 'alfajiri', 'asubuhi', 'mchana', 'jioni', 'usiku'] - ], - [ - '00:00', '12:00', ['04:00', '07:00'], ['07:00', '12:00'], ['12:00', '16:00'], - ['16:00', '19:00'], ['19:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ta-LK.js b/packages/common/locales/global/ta-LK.js deleted file mode 100644 index 04332af199..0000000000 --- a/packages/common/locales/global/ta-LK.js +++ /dev/null @@ -1,71 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ta-lk'] = [ - 'ta-LK', - [['மு.ப', 'பி.ப'], ['முற்பகல்', 'பிற்பகல்'], u], - u, - [ - ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'], - ['ஞாயி.', 'திங்.', 'செவ்.', 'புத.', 'வியா.', 'வெள்.', 'சனி'], - ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'], - ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'] - ], - u, - [ - ['ஜ', 'பி', 'மா', 'ஏ', 'மே', 'ஜூ', 'ஜூ', 'ஆ', 'செ', 'அ', 'ந', 'டி'], - ['ஜன.', 'பிப்.', 'மார்.', 'ஏப்.', 'மே', 'ஜூன்', 'ஜூலை', 'ஆக.', 'செப்.', 'அக்.', 'நவ.', 'டிச.'], - [ - 'ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டம்பர்', 'அக்டோபர்', 'நவம்பர்', - 'டிசம்பர்' - ] - ], - u, - [['கி.மு.', 'கி.பி.'], u, ['கிறிஸ்துவுக்கு முன்', 'அன்னோ டோமினி']], - 1, - [6, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} ’அன்று’ {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤ #,##,##0.00', '#E0'], - 'LKR', - 'Rs.', - 'இலங்கை ரூபாய்', - {'LKR': ['Rs.', 'Rs'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural, - [ - [ - ['நள்.', 'நண்.', 'அதி.', 'கா.', 'மதி.', 'பிற்.', 'மா.', 'அந்தி மா.', 'இர.'], - ['நள்ளிரவு', 'நண்பகல்', 'அதிகாலை', 'காலை', 'மதியம்', 'பிற்பகல்', 'மாலை', 'அந்தி மாலை', 'இரவு'], u - ], - [ - ['நள்.', 'நண்.', 'அதி.', 'கா.', 'மதி.', 'பிற்.', 'மா.', 'அந்தி மா.', 'இ.'], - ['நள்ளிரவு', 'நண்பகல்', 'அதிகாலை', 'காலை', 'மதியம்', 'பிற்பகல்', 'மாலை', 'அந்தி மாலை', 'இரவு'], u - ], - [ - '00:00', '12:00', ['03:00', '05:00'], ['05:00', '12:00'], ['12:00', '14:00'], - ['14:00', '16:00'], ['16:00', '18:00'], ['18:00', '21:00'], ['21:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ta-MY.js b/packages/common/locales/global/ta-MY.js deleted file mode 100644 index 378486beeb..0000000000 --- a/packages/common/locales/global/ta-MY.js +++ /dev/null @@ -1,71 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ta-my'] = [ - 'ta-MY', - [['மு.ப', 'பி.ப'], ['முற்பகல்', 'பிற்பகல்'], u], - u, - [ - ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'], - ['ஞாயி.', 'திங்.', 'செவ்.', 'புத.', 'வியா.', 'வெள்.', 'சனி'], - ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'], - ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'] - ], - u, - [ - ['ஜ', 'பி', 'மா', 'ஏ', 'மே', 'ஜூ', 'ஜூ', 'ஆ', 'செ', 'அ', 'ந', 'டி'], - ['ஜன.', 'பிப்.', 'மார்.', 'ஏப்.', 'மே', 'ஜூன்', 'ஜூலை', 'ஆக.', 'செப்.', 'அக்.', 'நவ.', 'டிச.'], - [ - 'ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டம்பர்', 'அக்டோபர்', 'நவம்பர்', - 'டிசம்பர்' - ] - ], - u, - [['கி.மு.', 'கி.பி.'], u, ['கிறிஸ்துவுக்கு முன்', 'அன்னோ டோமினி']], - 1, - [6, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['a h:mm', 'a h:mm:ss', 'a h:mm:ss z', 'a h:mm:ss zzzz'], - ['{1}, {0}', u, '{1} ’அன்று’ {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'MYR', - 'RM', - 'மலேஷியன் ரிங்கிட்', - {'MYR': ['RM'], 'SGD': ['S$', '$'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural, - [ - [ - ['நள்.', 'நண்.', 'அதி.', 'கா.', 'மதி.', 'பிற்.', 'மா.', 'அந்தி மா.', 'இர.'], - ['நள்ளிரவு', 'நண்பகல்', 'அதிகாலை', 'காலை', 'மதியம்', 'பிற்பகல்', 'மாலை', 'அந்தி மாலை', 'இரவு'], u - ], - [ - ['நள்.', 'நண்.', 'அதி.', 'கா.', 'மதி.', 'பிற்.', 'மா.', 'அந்தி மா.', 'இ.'], - ['நள்ளிரவு', 'நண்பகல்', 'அதிகாலை', 'காலை', 'மதியம்', 'பிற்பகல்', 'மாலை', 'அந்தி மாலை', 'இரவு'], u - ], - [ - '00:00', '12:00', ['03:00', '05:00'], ['05:00', '12:00'], ['12:00', '14:00'], - ['14:00', '16:00'], ['16:00', '18:00'], ['18:00', '21:00'], ['21:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ta-SG.js b/packages/common/locales/global/ta-SG.js deleted file mode 100644 index ed49339c10..0000000000 --- a/packages/common/locales/global/ta-SG.js +++ /dev/null @@ -1,71 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ta-sg'] = [ - 'ta-SG', - [['மு.ப', 'பி.ப'], ['முற்பகல்', 'பிற்பகல்'], u], - u, - [ - ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'], - ['ஞாயி.', 'திங்.', 'செவ்.', 'புத.', 'வியா.', 'வெள்.', 'சனி'], - ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'], - ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'] - ], - u, - [ - ['ஜ', 'பி', 'மா', 'ஏ', 'மே', 'ஜூ', 'ஜூ', 'ஆ', 'செ', 'அ', 'ந', 'டி'], - ['ஜன.', 'பிப்.', 'மார்.', 'ஏப்.', 'மே', 'ஜூன்', 'ஜூலை', 'ஆக.', 'செப்.', 'அக்.', 'நவ.', 'டிச.'], - [ - 'ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டம்பர்', 'அக்டோபர்', 'நவம்பர்', - 'டிசம்பர்' - ] - ], - u, - [['கி.மு.', 'கி.பி.'], u, ['கிறிஸ்துவுக்கு முன்', 'அன்னோ டோமினி']], - 0, - [6, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['a h:mm', 'a h:mm:ss', 'a h:mm:ss z', 'a h:mm:ss zzzz'], - ['{1}, {0}', u, '{1} ’அன்று’ {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'SGD', - '$', - 'சிங்கப்பூர் டாலர்', - {'MYR': ['RM'], 'SGD': ['$'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [ - [ - ['நள்.', 'நண்.', 'அதி.', 'கா.', 'மதி.', 'பிற்.', 'மா.', 'அந்தி மா.', 'இர.'], - ['நள்ளிரவு', 'நண்பகல்', 'அதிகாலை', 'காலை', 'மதியம்', 'பிற்பகல்', 'மாலை', 'அந்தி மாலை', 'இரவு'], u - ], - [ - ['நள்.', 'நண்.', 'அதி.', 'கா.', 'மதி.', 'பிற்.', 'மா.', 'அந்தி மா.', 'இ.'], - ['நள்ளிரவு', 'நண்பகல்', 'அதிகாலை', 'காலை', 'மதியம்', 'பிற்பகல்', 'மாலை', 'அந்தி மாலை', 'இரவு'], u - ], - [ - '00:00', '12:00', ['03:00', '05:00'], ['05:00', '12:00'], ['12:00', '14:00'], - ['14:00', '16:00'], ['16:00', '18:00'], ['18:00', '21:00'], ['21:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ta.js b/packages/common/locales/global/ta.js deleted file mode 100644 index ebf532a8e9..0000000000 --- a/packages/common/locales/global/ta.js +++ /dev/null @@ -1,71 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ta'] = [ - 'ta', - [['மு.ப', 'பி.ப'], ['முற்பகல்', 'பிற்பகல்'], u], - u, - [ - ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'], - ['ஞாயி.', 'திங்.', 'செவ்.', 'புத.', 'வியா.', 'வெள்.', 'சனி'], - ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'], - ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'] - ], - u, - [ - ['ஜ', 'பி', 'மா', 'ஏ', 'மே', 'ஜூ', 'ஜூ', 'ஆ', 'செ', 'அ', 'ந', 'டி'], - ['ஜன.', 'பிப்.', 'மார்.', 'ஏப்.', 'மே', 'ஜூன்', 'ஜூலை', 'ஆக.', 'செப்.', 'அக்.', 'நவ.', 'டிச.'], - [ - 'ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டம்பர்', 'அக்டோபர்', 'நவம்பர்', - 'டிசம்பர்' - ] - ], - u, - [['கி.மு.', 'கி.பி.'], u, ['கிறிஸ்துவுக்கு முன்', 'அன்னோ டோமினி']], - 0, - [0, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['a h:mm', 'a h:mm:ss', 'a h:mm:ss z', 'a h:mm:ss zzzz'], - ['{1}, {0}', u, '{1} ’அன்று’ {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤ #,##,##0.00', '#E0'], - 'INR', - '₹', - 'இந்திய ரூபாய்', - {'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural, - [ - [ - ['நள்.', 'நண்.', 'அதி.', 'கா.', 'மதி.', 'பிற்.', 'மா.', 'அந்தி மா.', 'இர.'], - ['நள்ளிரவு', 'நண்பகல்', 'அதிகாலை', 'காலை', 'மதியம்', 'பிற்பகல்', 'மாலை', 'அந்தி மாலை', 'இரவு'], u - ], - [ - ['நள்.', 'நண்.', 'அதி.', 'கா.', 'மதி.', 'பிற்.', 'மா.', 'அந்தி மா.', 'இ.'], - ['நள்ளிரவு', 'நண்பகல்', 'அதிகாலை', 'காலை', 'மதியம்', 'பிற்பகல்', 'மாலை', 'அந்தி மாலை', 'இரவு'], u - ], - [ - '00:00', '12:00', ['03:00', '05:00'], ['05:00', '12:00'], ['12:00', '14:00'], - ['14:00', '16:00'], ['16:00', '18:00'], ['18:00', '21:00'], ['21:00', '03:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/te.js b/packages/common/locales/global/te.js deleted file mode 100644 index 6dafd979f1..0000000000 --- a/packages/common/locales/global/te.js +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['te'] = [ - 'te', - [['ఉ', 'సా'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['ఆ', 'సో', 'మ', 'బు', 'గు', 'శు', 'శ'], ['ఆది', 'సోమ', 'మంగళ', 'బుధ', 'గురు', 'శుక్ర', 'శని'], - ['ఆదివారం', 'సోమవారం', 'మంగళవారం', 'బుధవారం', 'గురువారం', 'శుక్రవారం', 'శనివారం'], - ['ఆది', 'సోమ', 'మం', 'బుధ', 'గురు', 'శుక్ర', 'శని'] - ], - u, - [ - ['జ', 'ఫి', 'మా', 'ఏ', 'మే', 'జూ', 'జు', 'ఆ', 'సె', 'అ', 'న', 'డి'], - ['జన', 'ఫిబ్ర', 'మార్చి', 'ఏప్రి', 'మే', 'జూన్', 'జులై', 'ఆగ', 'సెప్టెం', 'అక్టో', 'నవం', 'డిసెం'], - [ - 'జనవరి', 'ఫిబ్రవరి', 'మార్చి', 'ఏప్రిల్', 'మే', 'జూన్', 'జులై', 'ఆగస్టు', 'సెప్టెంబర్', 'అక్టోబర్', 'నవంబర్', - 'డిసెంబర్' - ] - ], - u, - [['క్రీపూ', 'క్రీశ'], u, ['క్రీస్తు పూర్వం', 'క్రీస్తు శకం']], - 0, - [0, 0], - ['dd-MM-yy', 'd MMM, y', 'd MMMM, y', 'd, MMMM y, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, '{1} {0}కి', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##0%', '¤#,##,##0.00', '#E0'], - 'INR', - '₹', - 'రూపాయి', - {'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural, - [ - [['అర్ధరాత్రి', 'ఉదయం', 'మధ్యాహ్నం', 'సాయంత్రం', 'రాత్రి'], u, u], u, - ['00:00', ['06:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00']] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/teo-KE.js b/packages/common/locales/global/teo-KE.js deleted file mode 100644 index 5efd2895d1..0000000000 --- a/packages/common/locales/global/teo-KE.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['teo-ke'] = [ - 'teo-KE', - [['Taparachu', 'Ebongi'], u, u], - u, - [ - ['J', 'B', 'A', 'U', 'U', 'K', 'S'], ['Jum', 'Bar', 'Aar', 'Uni', 'Ung', 'Kan', 'Sab'], - ['Nakaejuma', 'Nakaebarasa', 'Nakaare', 'Nakauni', 'Nakaung’on', 'Nakakany', 'Nakasabiti'], - ['Jum', 'Bar', 'Aar', 'Uni', 'Ung', 'Kan', 'Sab'] - ], - u, - [ - ['R', 'M', 'K', 'D', 'M', 'M', 'J', 'P', 'S', 'T', 'L', 'P'], - ['Rar', 'Muk', 'Kwa', 'Dun', 'Mar', 'Mod', 'Jol', 'Ped', 'Sok', 'Tib', 'Lab', 'Poo'], - [ - 'Orara', 'Omuk', 'Okwamg’', 'Odung’el', 'Omaruk', 'Omodok’king’ol', 'Ojola', 'Opedel', - 'Osokosokoma', 'Otibar', 'Olabor', 'Opoo' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Christo', 'Baada ya Christo']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Ango’otol lok’ Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'UGX': ['USh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/teo.js b/packages/common/locales/global/teo.js deleted file mode 100644 index 18d3217c51..0000000000 --- a/packages/common/locales/global/teo.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['teo'] = [ - 'teo', - [['Taparachu', 'Ebongi'], u, u], - u, - [ - ['J', 'B', 'A', 'U', 'U', 'K', 'S'], ['Jum', 'Bar', 'Aar', 'Uni', 'Ung', 'Kan', 'Sab'], - ['Nakaejuma', 'Nakaebarasa', 'Nakaare', 'Nakauni', 'Nakaung’on', 'Nakakany', 'Nakasabiti'], - ['Jum', 'Bar', 'Aar', 'Uni', 'Ung', 'Kan', 'Sab'] - ], - u, - [ - ['R', 'M', 'K', 'D', 'M', 'M', 'J', 'P', 'S', 'T', 'L', 'P'], - ['Rar', 'Muk', 'Kwa', 'Dun', 'Mar', 'Mod', 'Jol', 'Ped', 'Sok', 'Tib', 'Lab', 'Poo'], - [ - 'Orara', 'Omuk', 'Okwamg’', 'Odung’el', 'Omaruk', 'Omodok’king’ol', 'Ojola', 'Opedel', - 'Osokosokoma', 'Otibar', 'Olabor', 'Opoo' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Christo', 'Baada ya Christo']], - 1, - [0, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'UGX', - 'USh', - 'Ango’otol lok’ Uganda', - {'JPY': ['JP¥', '¥'], 'UGX': ['USh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/tg.js b/packages/common/locales/global/tg.js deleted file mode 100644 index 01c2ad6ceb..0000000000 --- a/packages/common/locales/global/tg.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['tg'] = [ - 'tg', - [['AM', 'PM'], u, u], - u, - [ - ['Я', 'Д', 'С', 'Ч', 'П', 'Ҷ', 'Ш'], ['Яшб', 'Дшб', 'Сшб', 'Чшб', 'Пшб', 'Ҷмъ', 'Шнб'], - ['Якшанбе', 'Душанбе', 'Сешанбе', 'Чоршанбе', 'Панҷшанбе', 'Ҷумъа', 'Шанбе'], - ['Яшб', 'Дшб', 'Сшб', 'Чшб', 'Пшб', 'Ҷмъ', 'Шнб'] - ], - u, - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'], - [ - 'Январ', 'Феврал', 'Март', 'Апрел', 'Май', 'Июн', 'Июл', 'Август', 'Сентябр', 'Октябр', - 'Ноябр', 'Декабр' - ] - ], - u, - [['ПеМ', 'ПаМ'], u, ['Пеш аз милод', 'ПаМ']], - 1, - [6, 0], - ['dd/MM/yy', 'dd MMM y', 'dd MMMM y', 'EEEE, dd MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'TJS', - 'сом.', - 'Сомонӣ', - {'JPY': ['JP¥', '¥'], 'TJS': ['сом.']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/th.js b/packages/common/locales/global/th.js deleted file mode 100644 index 7a6b85a02e..0000000000 --- a/packages/common/locales/global/th.js +++ /dev/null @@ -1,72 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['th'] = [ - 'th', - [['a', 'p'], ['ก่อนเที่ยง', 'หลังเที่ยง'], u], - [['ก่อนเที่ยง', 'หลังเที่ยง'], u, u], - [ - ['อา', 'จ', 'อ', 'พ', 'พฤ', 'ศ', 'ส'], ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'], - ['วันอาทิตย์', 'วันจันทร์', 'วันอังคาร', 'วันพุธ', 'วันพฤหัสบดี', 'วันศุกร์', 'วันเสาร์'], - ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'] - ], - u, - [ - [ - 'ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', - 'ธ.ค.' - ], - u, - [ - 'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', - 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม' - ] - ], - u, - [['ก่อน ค.ศ.', 'ค.ศ.'], u, ['ปีก่อนคริสตกาล', 'คริสต์ศักราช']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM G y', 'EEEEที่ d MMMM G y'], - ['HH:mm', 'HH:mm:ss', 'H นาฬิกา mm นาที ss วินาที z', 'H นาฬิกา mm นาที ss วินาที zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'THB', - '฿', - 'บาท', - {'AUD': ['AU$', '$'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$'], 'XXX': []}, - 'ltr', - plural, - [ - [ - ['เที่ยงคืน', 'เที่ยง', 'เช้า', 'เที่ยง', 'บ่าย', 'เย็น', 'ค่ำ', 'กลางคืน'], - ['เที่ยงคืน', 'เที่ยง', 'ในตอนเช้า', 'ในตอนบ่าย', 'บ่าย', 'ในตอนเย็น', 'ค่ำ', 'กลางคืน'], u - ], - [ - ['เที่ยงคืน', 'เที่ยง', 'เช้า', 'ช่วงเที่ยง', 'บ่าย', 'เย็น', 'ค่ำ', 'กลางคืน'], - ['เที่ยงคืน', 'เที่ยง', 'ในตอนเช้า', 'ในตอนบ่าย', 'บ่าย', 'ในตอนเย็น', 'ค่ำ', 'กลางคืน'], u - ], - [ - '00:00', '12:00', ['06:00', '12:00'], ['12:00', '13:00'], ['13:00', '16:00'], - ['16:00', '18:00'], ['18:00', '21:00'], ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ti-ER.js b/packages/common/locales/global/ti-ER.js deleted file mode 100644 index 0996585471..0000000000 --- a/packages/common/locales/global/ti-ER.js +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === Math.floor(n) && n >= 0 && n <= 1) return 1; - return 5; -} -global.ng.common.locales['ti-er'] = [ - 'ti-ER', - [['ንጉሆ ሰዓተ', 'ድሕር ሰዓት'], u, u], - u, - [ - ['ሰ', 'ሰ', 'ሰ', 'ረ', 'ሓ', 'ዓ', 'ቀ'], ['ሰን', 'ሰኑ', 'ሰሉ', 'ረቡ', 'ሓሙ', 'ዓር', 'ቀዳ'], - ['ሰንበት', 'ሰኑይ', 'ሠሉስ', 'ረቡዕ', 'ኃሙስ', 'ዓርቢ', 'ቀዳም'], ['ሰን', 'ሰኑ', 'ሰሉ', 'ረቡ', 'ሓሙ', 'ዓር', 'ቀዳ'] - ], - u, - [ - ['ጥ', 'ለ', 'መ', 'ሚ', 'ግ', 'ሰ', 'ሓ', 'ነ', 'መ', 'ጥ', 'ሕ', 'ታ'], - ['ጥሪ', 'ለካ', 'መጋ', 'ሚያ', 'ግን', 'ሰነ', 'ሓም', 'ነሓ', 'መስ', 'ጥቅ', 'ሕዳ', 'ታሕ'], - ['ጥሪ', 'ለካቲት', 'መጋቢት', 'ሚያዝያ', 'ግንቦት', 'ሰነ', 'ሓምለ', 'ነሓሰ', 'መስከረም', 'ጥቅምቲ', 'ሕዳር', 'ታሕሳስ'] - ], - u, - [['ዓ/ዓ', 'ዓ/ም'], u, ['ዓመተ ዓለም', 'ዓመተ ምህረት']], - 1, - [6, 0], - ['dd/MM/yy', 'dd-MMM-y', 'dd MMMM y', 'EEEE፣ dd MMMM መዓልቲ y G'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ERN', - 'Nfk', - 'ERN', - {'ERN': ['Nfk'], 'ETB': ['Br'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ti.js b/packages/common/locales/global/ti.js deleted file mode 100644 index cb4a40ab90..0000000000 --- a/packages/common/locales/global/ti.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === Math.floor(n) && n >= 0 && n <= 1) return 1; - return 5; -} -global.ng.common.locales['ti'] = [ - 'ti', - [['ንጉሆ ሰዓተ', 'ድሕር ሰዓት'], u, u], - u, - [ - ['ሰ', 'ሰ', 'ሰ', 'ረ', 'ሓ', 'ዓ', 'ቀ'], ['ሰን', 'ሰኑ', 'ሰሉ', 'ረቡ', 'ሓሙ', 'ዓር', 'ቀዳ'], - ['ሰንበት', 'ሰኑይ', 'ሠሉስ', 'ረቡዕ', 'ኃሙስ', 'ዓርቢ', 'ቀዳም'], ['ሰን', 'ሰኑ', 'ሰሉ', 'ረቡ', 'ሓሙ', 'ዓር', 'ቀዳ'] - ], - [ - ['ሰ', 'ሰ', 'ሠ', 'ረ', 'ሓ', 'ዓ', 'ቀ'], ['ሰን', 'ሰኑ', 'ሰሉ', 'ረቡ', 'ሓሙ', 'ዓር', 'ቀዳ'], - ['ሰንበት', 'ሰኑይ', 'ሠሉስ', 'ረቡዕ', 'ኃሙስ', 'ዓርቢ', 'ቀዳም'], ['ሰን', 'ሰኑ', 'ሰሉ', 'ረቡ', 'ሓሙ', 'ዓር', 'ቀዳ'] - ], - [ - ['ጥ', 'ለ', 'መ', 'ሚ', 'ግ', 'ሰ', 'ሓ', 'ነ', 'መ', 'ጥ', 'ሕ', 'ታ'], - ['ጥሪ', 'ለካ', 'መጋ', 'ሚያ', 'ግን', 'ሰነ', 'ሓም', 'ነሓ', 'መስ', 'ጥቅ', 'ሕዳ', 'ታሕ'], - ['ጥሪ', 'ለካቲት', 'መጋቢት', 'ሚያዝያ', 'ግንቦት', 'ሰነ', 'ሓምለ', 'ነሓሰ', 'መስከረም', 'ጥቅምቲ', 'ሕዳር', 'ታሕሳስ'] - ], - u, - [['ዓ/ዓ', 'ዓ/ም'], u, ['ዓ/ዓ', 'ዓመተ ምህረት']], - 0, - [6, 0], - ['dd/MM/yy', 'dd-MMM-y', 'dd MMMM y', 'EEEE፣ dd MMMM መዓልቲ y G'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ETB', - 'Br', - 'የኢትዮጵያ ብር', - {'ETB': ['Br'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/tk.js b/packages/common/locales/global/tk.js deleted file mode 100644 index 6f007a5da9..0000000000 --- a/packages/common/locales/global/tk.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['tk'] = [ - 'tk', - [['öň', 'soň'], ['go.öň', 'go.soň'], ['günortadan öň', 'günortadan soň']], - [['öň', 'soň'], ['g.öň', 'g.soň'], ['günortadan öň', 'günortadan soň']], - [ - ['Ý', 'D', 'S', 'Ç', 'P', 'A', 'Ş'], ['ýek', 'duş', 'siş', 'çar', 'pen', 'ann', 'şen'], - ['ýekşenbe', 'duşenbe', 'sişenbe', 'çarşenbe', 'penşenbe', 'anna', 'şenbe'], - ['ýb', 'db', 'sb', 'çb', 'pb', 'an', 'şb'] - ], - [ - ['Ý', 'D', 'S', 'Ç', 'P', 'A', 'Ş'], ['Ýek', 'Duş', 'Siş', 'Çar', 'Pen', 'Ann', 'Şen'], - ['Ýekşenbe', 'Duşenbe', 'Sişenbe', 'Çarşenbe', 'Penşenbe', 'Anna', 'Şenbe'], - ['Ýb', 'Db', 'Sb', 'Çb', 'Pb', 'An', 'Şb'] - ], - [ - ['Ý', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'], - ['ýan', 'few', 'mart', 'apr', 'maý', 'iýun', 'iýul', 'awg', 'sen', 'okt', 'noý', 'dek'], - [ - 'ýanwar', 'fewral', 'mart', 'aprel', 'maý', 'iýun', 'iýul', 'awgust', 'sentýabr', 'oktýabr', - 'noýabr', 'dekabr' - ] - ], - [ - ['Ý', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'], - ['Ýan', 'Few', 'Mar', 'Apr', 'Maý', 'Iýun', 'Iýul', 'Awg', 'Sen', 'Okt', 'Noý', 'Dek'], - [ - 'Ýanwar', 'Fewral', 'Mart', 'Aprel', 'Maý', 'Iýun', 'Iýul', 'Awgust', 'Sentýabr', 'Oktýabr', - 'Noýabr', 'Dekabr' - ] - ], - [['B.e.öň', 'B.e.'], u, ['Isadan öň', 'Isadan soň']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y', 'd MMMM y', 'd MMMM y EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'san däl', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'TMT', - 'TMT', - 'Türkmen manady', - {'EUR': [u, '€'], 'GBP': [u, '£'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/to.js b/packages/common/locales/global/to.js deleted file mode 100644 index 369cca66c0..0000000000 --- a/packages/common/locales/global/to.js +++ /dev/null @@ -1,64 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['to'] = [ - 'to', - [['AM', 'PM'], u, ['hengihengi', 'efiafi']], - [['AM', 'PM'], u, ['HH', 'EA']], - [ - ['S', 'M', 'T', 'P', 'T', 'F', 'T'], ['Sāp', 'Mōn', 'Tūs', 'Pul', 'Tuʻa', 'Fal', 'Tok'], - ['Sāpate', 'Mōnite', 'Tūsite', 'Pulelulu', 'Tuʻapulelulu', 'Falaite', 'Tokonaki'], - ['Sāp', 'Mōn', 'Tūs', 'Pul', 'Tuʻa', 'Fal', 'Tok'] - ], - u, - [ - ['S', 'F', 'M', 'E', 'M', 'S', 'S', 'A', 'S', 'O', 'N', 'T'], - ['Sān', 'Fēp', 'Maʻa', 'ʻEpe', 'Mē', 'Sun', 'Siu', 'ʻAok', 'Sep', 'ʻOka', 'Nōv', 'Tīs'], - [ - 'Sānuali', 'Fēpueli', 'Maʻasi', 'ʻEpeleli', 'Mē', 'Sune', 'Siulai', 'ʻAokosi', 'Sepitema', - 'ʻOkatopa', 'Nōvema', 'Tīsema' - ] - ], - u, - [['KM', 'TS'], u, ['ki muʻa', 'taʻu ʻo Sīsū']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', '{1}, {0}', u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'TF', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'TOP', - 'T$', - 'Paʻanga fakatonga', - { - 'AUD': ['AUD$', 'AU$'], - 'FJD': [u, 'F$'], - 'JPY': ['JP¥', '¥'], - 'NZD': ['NZD$', 'NZ$'], - 'SBD': [u, 'S$'], - 'TOP': ['T$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/tr-CY.js b/packages/common/locales/global/tr-CY.js deleted file mode 100644 index d7872162cb..0000000000 --- a/packages/common/locales/global/tr-CY.js +++ /dev/null @@ -1,77 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['tr-cy'] = [ - 'tr-CY', - [['öö', 'ös'], ['ÖÖ', 'ÖS'], u], - [['ÖÖ', 'ÖS'], u, u], - [ - ['P', 'P', 'S', 'Ç', 'P', 'C', 'C'], ['Paz', 'Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cmt'], - ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'], - ['Pa', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'] - ], - u, - [ - ['O', 'Ş', 'M', 'N', 'M', 'H', 'T', 'A', 'E', 'E', 'K', 'A'], - ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara'], - [ - 'Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', - 'Kasım', 'Aralık' - ] - ], - u, - [['MÖ', 'MS'], u, ['Milattan Önce', 'Milattan Sonra']], - 1, - [6, 0], - ['d.MM.y', 'd MMM y', 'd MMMM y', 'd MMMM y EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '%#,##0', '¤#,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - {'AUD': ['AU$', '$'], 'RON': [u, 'L'], 'THB': ['฿'], 'TRY': ['₺'], 'TWD': ['NT$']}, - 'ltr', - plural, - [ - [ - ['gece', 'ö', 'sabah', 'öğleden önce', 'öğleden sonra', 'akşamüstü', 'akşam', 'gece'], - [ - 'gece yarısı', 'öğle', 'sabah', 'öğleden önce', 'öğleden sonra', 'akşamüstü', 'akşam', - 'gece' - ], - u - ], - [ - [ - 'gece yarısı', 'öğle', 'sabah', 'öğleden önce', 'öğleden sonra', 'akşamüstü', 'akşam', - 'gece' - ], - u, u - ], - [ - '00:00', '12:00', ['06:00', '11:00'], ['11:00', '12:00'], ['12:00', '18:00'], - ['18:00', '19:00'], ['19:00', '21:00'], ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/tr.js b/packages/common/locales/global/tr.js deleted file mode 100644 index 90beceb422..0000000000 --- a/packages/common/locales/global/tr.js +++ /dev/null @@ -1,77 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['tr'] = [ - 'tr', - [['öö', 'ös'], ['ÖÖ', 'ÖS'], u], - [['ÖÖ', 'ÖS'], u, u], - [ - ['P', 'P', 'S', 'Ç', 'P', 'C', 'C'], ['Paz', 'Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cmt'], - ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'], - ['Pa', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'] - ], - u, - [ - ['O', 'Ş', 'M', 'N', 'M', 'H', 'T', 'A', 'E', 'E', 'K', 'A'], - ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara'], - [ - 'Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', - 'Kasım', 'Aralık' - ] - ], - u, - [['MÖ', 'MS'], u, ['Milattan Önce', 'Milattan Sonra']], - 1, - [6, 0], - ['d.MM.y', 'd MMM y', 'd MMMM y', 'd MMMM y EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '%#,##0', '¤#,##0.00', '#E0'], - 'TRY', - '₺', - 'Türk Lirası', - {'AUD': ['AU$', '$'], 'RON': [u, 'L'], 'THB': ['฿'], 'TRY': ['₺'], 'TWD': ['NT$']}, - 'ltr', - plural, - [ - [ - ['gece', 'ö', 'sabah', 'öğleden önce', 'öğleden sonra', 'akşamüstü', 'akşam', 'gece'], - [ - 'gece yarısı', 'öğle', 'sabah', 'öğleden önce', 'öğleden sonra', 'akşamüstü', 'akşam', - 'gece' - ], - u - ], - [ - [ - 'gece yarısı', 'öğle', 'sabah', 'öğleden önce', 'öğleden sonra', 'akşamüstü', 'akşam', - 'gece' - ], - u, u - ], - [ - '00:00', '12:00', ['06:00', '11:00'], ['11:00', '12:00'], ['12:00', '18:00'], - ['18:00', '19:00'], ['19:00', '21:00'], ['21:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/tt.js b/packages/common/locales/global/tt.js deleted file mode 100644 index 162fb9fdc3..0000000000 --- a/packages/common/locales/global/tt.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['tt'] = [ - 'tt', - [['AM', 'PM'], u, u], - u, - [ - ['Я', 'Д', 'С', 'Ч', 'П', 'Җ', 'Ш'], ['якш.', 'дүш.', 'сиш.', 'чәр.', 'пәнҗ.', 'җом.', 'шим.'], - ['якшәмбе', 'дүшәмбе', 'сишәмбе', 'чәршәмбе', 'пәнҗешәмбе', 'җомга', 'шимбә'], - ['якш.', 'дүш.', 'сиш.', 'чәр.', 'пәнҗ.', 'җом.', 'шим.'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'гыйн.', 'фев.', 'мар.', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'гыйнвар', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', - 'октябрь', 'ноябрь', 'декабрь' - ] - ], - u, - [['б.э.к.', 'милади'], u, ['безнең эрага кадәр', 'безнең эра']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM, y \'ел\'', 'd MMMM, y \'ел\'', 'd MMMM, y \'ел\', EEEE'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'RUB', - '₽', - 'Россия сумы', - {'JPY': ['JP¥', '¥'], 'RUB': ['₽']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/twq.js b/packages/common/locales/global/twq.js deleted file mode 100644 index 782b9cf556..0000000000 --- a/packages/common/locales/global/twq.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['twq'] = [ - 'twq', - [['Subbaahi', 'Zaarikay b'], u, u], - u, - [ - ['H', 'T', 'T', 'L', 'L', 'L', 'S'], ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'], - ['Alhadi', 'Atinni', 'Atalaata', 'Alarba', 'Alhamiisa', 'Alzuma', 'Asibti'], - ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'] - ], - u, - [ - ['Ž', 'F', 'M', 'A', 'M', 'Ž', 'Ž', 'U', 'S', 'O', 'N', 'D'], - ['Žan', 'Fee', 'Mar', 'Awi', 'Me', 'Žuw', 'Žuy', 'Ut', 'Sek', 'Okt', 'Noo', 'Dee'], - [ - 'Žanwiye', 'Feewiriye', 'Marsi', 'Awiril', 'Me', 'Žuweŋ', 'Žuyye', 'Ut', 'Sektanbur', - 'Oktoobur', 'Noowanbur', 'Deesanbur' - ] - ], - u, - [['IJ', 'IZ'], u, ['Isaa jine', 'Isaa zamanoo']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'XOF', - 'CFA', - 'CFA Fraŋ (BCEAO)', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/tzm.js b/packages/common/locales/global/tzm.js deleted file mode 100644 index f70c47f5ff..0000000000 --- a/packages/common/locales/global/tzm.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === Math.floor(n) && n >= 0 && n <= 1 || n === Math.floor(n) && n >= 11 && n <= 99) - return 1; - return 5; -} -global.ng.common.locales['tzm'] = [ - 'tzm', - [['Zdat azal', 'Ḍeffir aza'], u, u], - u, - [ - ['A', 'A', 'A', 'A', 'A', 'A', 'A'], ['Asa', 'Ayn', 'Asn', 'Akr', 'Akw', 'Asm', 'Asḍ'], - ['Asamas', 'Aynas', 'Asinas', 'Akras', 'Akwas', 'Asimwas', 'Asiḍyas'], - ['Asa', 'Ayn', 'Asn', 'Akr', 'Akw', 'Asm', 'Asḍ'] - ], - u, - [ - ['Y', 'Y', 'M', 'I', 'M', 'Y', 'Y', 'Ɣ', 'C', 'K', 'N', 'D'], - ['Yen', 'Yeb', 'Mar', 'Ibr', 'May', 'Yun', 'Yul', 'Ɣuc', 'Cut', 'Kṭu', 'Nwa', 'Duj'], - [ - 'Yennayer', 'Yebrayer', 'Mars', 'Ibrir', 'Mayyu', 'Yunyu', 'Yulyuz', 'Ɣuct', 'Cutanbir', - 'Kṭuber', 'Nwanbir', 'Dujanbir' - ] - ], - u, - [['ZƐ', 'ḌƐ'], u, ['Zdat Ɛisa (TAƔ)', 'Ḍeffir Ɛisa (TAƔ)']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'MAD', - 'MAD', - 'Derhem Umeṛṛuki', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ug.js b/packages/common/locales/global/ug.js deleted file mode 100644 index a9ba1595a6..0000000000 --- a/packages/common/locales/global/ug.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['ug'] = [ - 'ug', - [['ب', 'ك'], ['چ.ب', 'چ.ك'], ['چۈشتىن بۇرۇن', 'چۈشتىن كېيىن']], - [['چ.ب', 'چ.ك'], u, u], - [ - ['ي', 'د', 'س', 'چ', 'پ', 'ج', 'ش'], ['يە', 'دۈ', 'سە', 'چا', 'پە', 'جۈ', 'شە'], - ['يەكشەنبە', 'دۈشەنبە', 'سەيشەنبە', 'چارشەنبە', 'پەيشەنبە', 'جۈمە', 'شەنبە'], - ['ي', 'د', 'س', 'چ', 'پ', 'ج', 'ش'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'يانۋار', 'فېۋرال', 'مارت', 'ئاپرېل', 'ماي', 'ئىيۇن', 'ئىيۇل', 'ئاۋغۇست', 'سېنتەبىر', - 'ئۆكتەبىر', 'نويابىر', 'دېكابىر' - ], - u - ], - u, - [['BCE', 'مىلادىيە'], u, ['مىلادىيەدىن بۇرۇن', 'مىلادىيە']], - 0, - [6, 0], - ['y-MM-dd', 'd-MMM، y', 'd-MMMM، y', 'y d-MMMM، EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}، {0}', u, '{1} {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'CNY', - '¥', - 'جۇڭگو يۈەنى', - {'CNY': ['¥', '¥'], 'JPY': ['JP¥', '¥']}, - 'rtl', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/uk.js b/packages/common/locales/global/uk.js deleted file mode 100644 index b9c293e9be..0000000000 --- a/packages/common/locales/global/uk.js +++ /dev/null @@ -1,107 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14)) - return 3; - if (v === 0 && i % 10 === 0 || - v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 5 && i % 10 <= 9 || - v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 11 && i % 100 <= 14) - return 4; - return 5; -} -global.ng.common.locales['uk'] = [ - 'uk', - [['дп', 'пп'], u, u], - u, - [ - ['Н', 'П', 'В', 'С', 'Ч', 'П', 'С'], ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - ['неділя', 'понеділок', 'вівторок', 'середа', 'четвер', 'пʼятниця', 'субота'], - ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - u, - [ - ['с', 'л', 'б', 'к', 'т', 'ч', 'л', 'с', 'в', 'ж', 'л', 'г'], - [ - 'січ.', 'лют.', 'бер.', 'квіт.', 'трав.', 'черв.', 'лип.', 'серп.', 'вер.', 'жовт.', 'лист.', - 'груд.' - ], - [ - 'січня', 'лютого', 'березня', 'квітня', 'травня', 'червня', 'липня', 'серпня', 'вересня', - 'жовтня', 'листопада', 'грудня' - ] - ], - [ - ['С', 'Л', 'Б', 'К', 'Т', 'Ч', 'Л', 'С', 'В', 'Ж', 'Л', 'Г'], - ['січ', 'лют', 'бер', 'кві', 'тра', 'чер', 'лип', 'сер', 'вер', 'жов', 'лис', 'гру'], - [ - 'січень', 'лютий', 'березень', 'квітень', 'травень', 'червень', 'липень', 'серпень', - 'вересень', 'жовтень', 'листопад', 'грудень' - ] - ], - [['до н.е.', 'н.е.'], ['до н. е.', 'н. е.'], ['до нашої ери', 'нашої ери']], - 1, - [6, 0], - ['dd.MM.yy', 'd MMM y \'р\'.', 'd MMMM y \'р\'.', 'EEEE, d MMMM y \'р\'.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'о\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'Е', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'UAH', - '₴', - 'українська гривня', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, '$'], - 'UAH': ['₴'], - 'UAK': ['крб.'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XCD': [u, '$'] - }, - 'ltr', - plural, - [ - [ - ['північ', 'п', 'ранку', 'дня', 'вечора', 'ночі'], - ['опівночі', 'пополудні', 'ранку', 'дня', 'вечора', 'ночі'], u - ], - [ - ['північ', 'полудень', 'ранок', 'день', 'вечір', 'ніч'], u, - ['опівніч', 'полудень', 'ранок', 'день', 'вечір', 'ніч'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '24:00'], - ['00:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ur-IN.js b/packages/common/locales/global/ur-IN.js deleted file mode 100644 index 3073c2c777..0000000000 --- a/packages/common/locales/global/ur-IN.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['ur-in'] = [ - 'ur-IN', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'], - u, u - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', - 'دسمبر' - ], - u - ], - u, - [['قبل مسیح', 'عیسوی'], u, u], - 0, - [0, 0], - ['d/M/yy', 'd MMM، y', 'd MMMM، y', 'EEEE، d MMMM، y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'INR', - '₹', - 'بھارتی روپیہ', - {'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'rtl', - plural, - [ - [ - ['آدھی رات', 'صبح', 'دوپہر', 'سہ پہر', 'شام', 'رات'], u, - ['آدھی رات', 'صبح میں', 'دوپہر میں', 'سہ پہر', 'شام میں', 'رات میں'] - ], - [['آدھی رات', 'صبح', 'دوپہر', 'سہ پہر', 'شام', 'رات'], u, u], - [ - '00:00', ['04:00', '12:00'], ['12:00', '16:00'], ['16:00', '18:00'], ['18:00', '20:00'], - ['20:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/ur.js b/packages/common/locales/global/ur.js deleted file mode 100644 index c4a1571b5f..0000000000 --- a/packages/common/locales/global/ur.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['ur'] = [ - 'ur', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'], - u, u - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', - 'دسمبر' - ], - u - ], - u, - [['قبل مسیح', 'عیسوی'], u, u], - 0, - [6, 0], - ['d/M/yy', 'd MMM، y', 'd MMMM، y', 'EEEE، d MMMM، y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'PKR', - 'Rs', - 'پاکستانی روپیہ', - {'JPY': ['JP¥', '¥'], 'PKR': ['Rs'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'rtl', - plural, - [ - [ - ['آدھی رات', 'صبح', 'دوپہر', 'سہ پہر', 'شام', 'رات'], u, - ['آدھی رات', 'صبح میں', 'دوپہر میں', 'سہ پہر', 'شام میں', 'رات میں'] - ], - [['آدھی رات', 'صبح', 'دوپہر', 'سہ پہر', 'شام', 'رات'], u, u], - [ - '00:00', ['04:00', '12:00'], ['12:00', '16:00'], ['16:00', '18:00'], ['18:00', '20:00'], - ['20:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/uz-Arab.js b/packages/common/locales/global/uz-Arab.js deleted file mode 100644 index bff0b28220..0000000000 --- a/packages/common/locales/global/uz-Arab.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['uz-arab'] = [ - 'uz-Arab', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['ی.', 'د.', 'س.', 'چ.', 'پ.', 'ج.', 'ش.'], - ['یکشنبه', 'دوشنبه', 'سه\u200cشنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'], - ['ی.', 'د.', 'س.', 'چ.', 'پ.', 'ج.', 'ش.'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['جنو', 'فبر', 'مار', 'اپر', 'می', 'جون', 'جول', 'اگس', 'سپت', 'اکت', 'نوم', 'دسم'], - [ - 'جنوری', 'فبروری', 'مارچ', 'اپریل', 'می', 'جون', 'جولای', 'اگست', 'سپتمبر', 'اکتوبر', 'نومبر', - 'دسمبر' - ] - ], - u, - [['BCE', 'CE'], u, u], - 6, - [4, 5], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '\u200e+', '\u200e−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'AFN', - '؋', - 'افغانی', - {'AFN': ['؋'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'rtl', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/uz-Cyrl.js b/packages/common/locales/global/uz-Cyrl.js deleted file mode 100644 index 3f52f6e8bf..0000000000 --- a/packages/common/locales/global/uz-Cyrl.js +++ /dev/null @@ -1,62 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['uz-cyrl'] = [ - 'uz-Cyrl', - [['ТО', 'ТК'], u, u], - u, - [ - ['Я', 'Д', 'С', 'Ч', 'П', 'Ж', 'Ш'], ['якш', 'душ', 'сеш', 'чор', 'пай', 'жум', 'шан'], - ['якшанба', 'душанба', 'сешанба', 'чоршанба', 'пайшанба', 'жума', 'шанба'], - ['як', 'ду', 'се', 'чо', 'па', 'жу', 'ша'] - ], - u, - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'], - [ - 'январ', 'феврал', 'март', 'апрел', 'май', 'июн', 'июл', 'август', 'сентябр', 'октябр', - 'ноябр', 'декабр' - ] - ], - u, - [['м.а.', 'милодий'], u, ['милоддан аввалги', 'милодий']], - 1, - [6, 0], - ['dd/MM/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, dd MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss (z)', 'HH:mm:ss (zzzz)'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'ҳақиқий сон эмас', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'UZS', - 'сўм', - 'Ўзбекистон сўм', - {'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'USD': ['US$', '$'], 'UZS': ['сўм']}, - 'ltr', - plural, - [ - [['ярим тун', 'туш пайти', 'эрталаб', 'кундузи', 'кечқурун', 'кечаси'], u, u], u, - [ - '00:00', '12:00', ['06:00', '11:00'], ['11:00', '18:00'], ['18:00', '22:00'], - ['22:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/uz-Latn.js b/packages/common/locales/global/uz-Latn.js deleted file mode 100644 index 438dea1ada..0000000000 --- a/packages/common/locales/global/uz-Latn.js +++ /dev/null @@ -1,70 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['uz-latn'] = [ - 'uz-Latn', - [['TO', 'TK'], u, u], - u, - [ - ['Y', 'D', 'S', 'C', 'P', 'J', 'S'], ['Yak', 'Dush', 'Sesh', 'Chor', 'Pay', 'Jum', 'Shan'], - ['yakshanba', 'dushanba', 'seshanba', 'chorshanba', 'payshanba', 'juma', 'shanba'], - ['Ya', 'Du', 'Se', 'Ch', 'Pa', 'Ju', 'Sh'] - ], - u, - [ - ['Y', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'], - ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avg', 'sen', 'okt', 'noy', 'dek'], - [ - 'yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avgust', 'sentabr', 'oktabr', - 'noyabr', 'dekabr' - ] - ], - [ - ['Y', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'], - ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'Iyn', 'Iyl', 'Avg', 'Sen', 'Okt', 'Noy', 'Dek'], - [ - 'Yanvar', 'Fevral', 'Mart', 'Aprel', 'May', 'Iyun', 'Iyul', 'Avgust', 'Sentabr', 'Oktabr', - 'Noyabr', 'Dekabr' - ] - ], - [['m.a.', 'milodiy'], u, ['miloddan avvalgi', 'milodiy']], - 1, - [6, 0], - ['dd/MM/yy', 'd-MMM, y', 'd-MMMM, y', 'EEEE, d-MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'H:mm:ss (z)', 'H:mm:ss (zzzz)'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'son emas', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'UZS', - 'soʻm', - 'O‘zbekiston so‘mi', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'UZS': ['soʻm']}, - 'ltr', - plural, - [ - [['yarim tun', 'tush payti', 'ertalab', 'kunduzi', 'kechqurun', 'kechasi'], u, u], u, - [ - '00:00', '12:00', ['06:00', '11:00'], ['11:00', '18:00'], ['18:00', '22:00'], - ['22:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/uz.js b/packages/common/locales/global/uz.js deleted file mode 100644 index 805815785d..0000000000 --- a/packages/common/locales/global/uz.js +++ /dev/null @@ -1,70 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['uz'] = [ - 'uz', - [['TO', 'TK'], u, u], - u, - [ - ['Y', 'D', 'S', 'C', 'P', 'J', 'S'], ['Yak', 'Dush', 'Sesh', 'Chor', 'Pay', 'Jum', 'Shan'], - ['yakshanba', 'dushanba', 'seshanba', 'chorshanba', 'payshanba', 'juma', 'shanba'], - ['Ya', 'Du', 'Se', 'Ch', 'Pa', 'Ju', 'Sh'] - ], - u, - [ - ['Y', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'], - ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avg', 'sen', 'okt', 'noy', 'dek'], - [ - 'yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avgust', 'sentabr', 'oktabr', - 'noyabr', 'dekabr' - ] - ], - [ - ['Y', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'], - ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'Iyn', 'Iyl', 'Avg', 'Sen', 'Okt', 'Noy', 'Dek'], - [ - 'Yanvar', 'Fevral', 'Mart', 'Aprel', 'May', 'Iyun', 'Iyul', 'Avgust', 'Sentabr', 'Oktabr', - 'Noyabr', 'Dekabr' - ] - ], - [['m.a.', 'milodiy'], u, ['miloddan avvalgi', 'milodiy']], - 1, - [6, 0], - ['dd/MM/yy', 'd-MMM, y', 'd-MMMM, y', 'EEEE, d-MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'H:mm:ss (z)', 'H:mm:ss (zzzz)'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'son emas', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'UZS', - 'soʻm', - 'O‘zbekiston so‘mi', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'UZS': ['soʻm']}, - 'ltr', - plural, - [ - [['yarim tun', 'tush payti', 'ertalab', 'kunduzi', 'kechqurun', 'kechasi'], u, u], u, - [ - '00:00', '12:00', ['06:00', '11:00'], ['11:00', '18:00'], ['18:00', '22:00'], - ['22:00', '06:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/vai-Latn.js b/packages/common/locales/global/vai-Latn.js deleted file mode 100644 index 2b6c58d31d..0000000000 --- a/packages/common/locales/global/vai-Latn.js +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['vai-latn'] = [ - 'vai-Latn', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - ['lahadi', 'tɛɛnɛɛ', 'talata', 'alaba', 'aimisa', 'aijima', 'siɓiti'], u, u - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'], u - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'LRD', - '$', - 'Laibhiya Dala', - {'JPY': ['JP¥', '¥'], 'LRD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/vai-Vaii.js b/packages/common/locales/global/vai-Vaii.js deleted file mode 100644 index 215a693736..0000000000 --- a/packages/common/locales/global/vai-Vaii.js +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['vai-vaii'] = [ - 'vai-Vaii', - [['AM', 'PM'], u, u], - u, - [['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['ꕞꕌꔵ', 'ꗳꗡꘉ', 'ꕚꕞꕚ', 'ꕉꕞꕒ', 'ꕉꔤꕆꕢ', 'ꕉꔤꕀꕮ', 'ꔻꔬꔳ'], u, u], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['ꖨꖕꔞ', 'ꕒꕡ', 'ꕾꖺ', 'ꖢꖕ', 'ꖑꕱ', 'ꖱꘋ', 'ꖱꕞ', 'ꗛꔕ', 'ꕢꕌ', 'ꕭꖃ', 'ꔞꘋ', 'ꖨꖕꗏ'], - [ - 'ꖨꖕ ꕪꕴ ꔞꔀꕮꕊ', 'ꕒꕡꖝꖕ', 'ꕾꖺ', 'ꖢꖕ', 'ꖑꕱ', 'ꖱꘋ', 'ꖱꕞꔤ', 'ꗛꔕ', 'ꕢꕌ', 'ꕭꖃ', 'ꔞꘋꕔꕿ ꕸꖃꗏ', - 'ꖨꖕ ꕪꕴ ꗏꖺꕮꕊ' - ] - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'LRD', - '$', - 'ꕞꔤꔫꕩ ꕜꕞꕌ', - {'JPY': ['JP¥', '¥'], 'LRD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/vai.js b/packages/common/locales/global/vai.js deleted file mode 100644 index 961e5bdad7..0000000000 --- a/packages/common/locales/global/vai.js +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['vai'] = [ - 'vai', - [['AM', 'PM'], u, u], - u, - [['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['ꕞꕌꔵ', 'ꗳꗡꘉ', 'ꕚꕞꕚ', 'ꕉꕞꕒ', 'ꕉꔤꕆꕢ', 'ꕉꔤꕀꕮ', 'ꔻꔬꔳ'], u, u], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['ꖨꖕꔞ', 'ꕒꕡ', 'ꕾꖺ', 'ꖢꖕ', 'ꖑꕱ', 'ꖱꘋ', 'ꖱꕞ', 'ꗛꔕ', 'ꕢꕌ', 'ꕭꖃ', 'ꔞꘋ', 'ꖨꖕꗏ'], - [ - 'ꖨꖕ ꕪꕴ ꔞꔀꕮꕊ', 'ꕒꕡꖝꖕ', 'ꕾꖺ', 'ꖢꖕ', 'ꖑꕱ', 'ꖱꘋ', 'ꖱꕞꔤ', 'ꗛꔕ', 'ꕢꕌ', 'ꕭꖃ', 'ꔞꘋꕔꕿ ꕸꖃꗏ', - 'ꖨꖕ ꕪꕴ ꗏꖺꕮꕊ' - ] - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'LRD', - '$', - 'ꕞꔤꔫꕩ ꕜꕞꕌ', - {'JPY': ['JP¥', '¥'], 'LRD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/vi.js b/packages/common/locales/global/vi.js deleted file mode 100644 index 92159720c2..0000000000 --- a/packages/common/locales/global/vi.js +++ /dev/null @@ -1,91 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['vi'] = [ - 'vi', - [['s', 'c'], ['SA', 'CH'], u], - [['SA', 'CH'], u, u], - [ - ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], - ['CN', 'Th 2', 'Th 3', 'Th 4', 'Th 5', 'Th 6', 'Th 7'], - ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'], - ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'thg 1', 'thg 2', 'thg 3', 'thg 4', 'thg 5', 'thg 6', 'thg 7', 'thg 8', 'thg 9', 'thg 10', - 'thg 11', 'thg 12' - ], - [ - 'tháng 1', 'tháng 2', 'tháng 3', 'tháng 4', 'tháng 5', 'tháng 6', 'tháng 7', 'tháng 8', - 'tháng 9', 'tháng 10', 'tháng 11', 'tháng 12' - ] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'Thg 1', 'Thg 2', 'Thg 3', 'Thg 4', 'Thg 5', 'Thg 6', 'Thg 7', 'Thg 8', 'Thg 9', 'Thg 10', - 'Thg 11', 'Thg 12' - ], - [ - 'Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6', 'Tháng 7', 'Tháng 8', - 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12' - ] - ], - [['tr. CN', 'sau CN'], ['Trước CN', 'sau CN'], u], - 1, - [6, 0], - ['dd/MM/y', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{0}, {1}', u, '{0} {1}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'VND', - '₫', - 'Đồng Việt Nam', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural, - [ - [ - ['nửa đêm', 'tr', 'sáng', 'chiều', 'tối', 'đêm'], - ['nửa đêm', 'TR', 'sáng', 'chiều', 'tối', 'đêm'], u - ], - [ - ['nửa đêm', 'trưa', 'sáng', 'chiều', 'tối', 'đêm'], - ['nửa đêm', 'TR', 'sáng', 'chiều', 'tối', 'đêm'], - ['nửa đêm', 'trưa', 'sáng', 'chiều', 'tối', 'đêm'] - ], - [ - '00:00', '12:00', ['04:00', '12:00'], ['12:00', '18:00'], ['18:00', '21:00'], - ['21:00', '04:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/vo.js b/packages/common/locales/global/vo.js deleted file mode 100644 index 97228d6b67..0000000000 --- a/packages/common/locales/global/vo.js +++ /dev/null @@ -1,49 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['vo'] = [ - 'vo', - [['AM', 'PM'], u, u], - u, - [['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], u, u], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'], u - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - u, - u, - u, - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/vun.js b/packages/common/locales/global/vun.js deleted file mode 100644 index 4ccc31d415..0000000000 --- a/packages/common/locales/global/vun.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['vun'] = [ - 'vun', - [['utuko', 'kyiukonyi'], u, u], - u, - [ - ['J', 'J', 'J', 'J', 'A', 'I', 'J'], ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - ['Jumapilyi', 'Jumatatuu', 'Jumanne', 'Jumatanu', 'Alhamisi', 'Ijumaa', 'Jumamosi'], - ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januari', 'Februari', 'Machi', 'Aprilyi', 'Mei', 'Junyi', 'Julyai', 'Agusti', 'Septemba', - 'Oktoba', 'Novemba', 'Desemba' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Kristu', 'Baada ya Kristu']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'TZS', - 'TSh', - 'Shilingi ya Tanzania', - {'JPY': ['JP¥', '¥'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/wae.js b/packages/common/locales/global/wae.js deleted file mode 100644 index 0377a80334..0000000000 --- a/packages/common/locales/global/wae.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['wae'] = [ - 'wae', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'Z', 'M', 'F', 'F', 'S'], ['Sun', 'Män', 'Ziš', 'Mit', 'Fró', 'Fri', 'Sam'], - ['Sunntag', 'Mäntag', 'Zištag', 'Mittwuč', 'Fróntag', 'Fritag', 'Samštag'], - ['Sun', 'Män', 'Ziš', 'Mit', 'Fró', 'Fri', 'Sam'] - ], - u, - [ - ['J', 'H', 'M', 'A', 'M', 'B', 'H', 'Ö', 'H', 'W', 'W', 'C'], - ['Jen', 'Hor', 'Mär', 'Abr', 'Mei', 'Brá', 'Hei', 'Öig', 'Her', 'Wím', 'Win', 'Chr'], - [ - 'Jenner', 'Hornig', 'Märze', 'Abrille', 'Meije', 'Bráčet', 'Heiwet', 'Öigšte', 'Herbštmánet', - 'Wímánet', 'Wintermánet', 'Chrištmánet' - ] - ], - u, - [['v. Chr.', 'n. Chr'], u, u], - 1, - [6, 0], - ['y-MM-dd', 'd. MMM y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '’', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'CHF', - 'CHF', - 'CHF', - {}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/wo.js b/packages/common/locales/global/wo.js deleted file mode 100644 index 141b2ac194..0000000000 --- a/packages/common/locales/global/wo.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['wo'] = [ - 'wo', - [['Sub', 'Ngo'], u, u], - u, - [ - ['Dib', 'Alt', 'Tal', 'Àla', 'Alx', 'Àjj', 'Ase'], u, - ['Dibéer', 'Altine', 'Talaata', 'Àlarba', 'Alxamis', 'Àjjuma', 'Aseer'], - ['Dib', 'Alt', 'Tal', 'Àla', 'Alx', 'Àjj', 'Ase'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['Sam', 'Few', 'Mar', 'Awr', 'Mee', 'Suw', 'Sul', 'Ut', 'Sàt', 'Okt', 'Now', 'Des'], - [ - 'Samwiyee', 'Fewriyee', 'Mars', 'Awril', 'Mee', 'Suwe', 'Sulet', 'Ut', 'Sàttumbar', - 'Oktoobar', 'Nowàmbar', 'Desàmbar' - ] - ], - u, - [['JC', 'AD'], u, ['av. JC', 'AD']], - 1, - [6, 0], - ['dd-MM-y', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} - {0}', u, '{1} \'ci\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'XOF', - 'CFA', - 'Franc CFA bu Afrik Sowwu-jant', - {'JPY': ['JP¥', '¥']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/xh.js b/packages/common/locales/global/xh.js deleted file mode 100644 index c745a81ff4..0000000000 --- a/packages/common/locales/global/xh.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['xh'] = [ - 'xh', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Caw', 'Mvu', 'Bin', 'Tha', 'Sin', 'Hla', 'Mgq'], - ['Cawe', 'Mvulo', 'Lwesibini', 'Lwesithathu', 'Lwesine', 'Lwesihlanu', 'Mgqibelo'], - ['Caw', 'Mvu', 'Bin', 'Tha', 'Sin', 'Hla', 'Mgq'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['Jan', 'Feb', 'Mat', 'Epr', 'Mey', 'Jun', 'Jul', 'Aga', 'Sep', 'Okt', 'Nov', 'Dis'], - [ - 'Janyuwari', 'Februwari', 'Matshi', 'Epreli', 'Meyi', 'Juni', 'Julayi', 'Agasti', 'Septemba', - 'Okthoba', 'Novemba', 'Disemba' - ] - ], - u, - [['BC', 'AD'], u, u], - 0, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZAR', - 'R', - 'iRandi yaseMzanzi Afrika', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'ZAR': ['R']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/xog.js b/packages/common/locales/global/xog.js deleted file mode 100644 index 8d2af6729d..0000000000 --- a/packages/common/locales/global/xog.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - if (n === 1) return 1; - return 5; -} -global.ng.common.locales['xog'] = [ - 'xog', - [['Munkyo', 'Eigulo'], u, u], - u, - [ - ['S', 'B', 'B', 'S', 'K', 'K', 'M'], ['Sabi', 'Bala', 'Kubi', 'Kusa', 'Kuna', 'Kuta', 'Muka'], - ['Sabiiti', 'Balaza', 'Owokubili', 'Owokusatu', 'Olokuna', 'Olokutaanu', 'Olomukaaga'], - ['Sabi', 'Bala', 'Kubi', 'Kusa', 'Kuna', 'Kuta', 'Muka'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apu', 'Maa', 'Juu', 'Jul', 'Agu', 'Seb', 'Oki', 'Nov', 'Des'], - [ - 'Janwaliyo', 'Febwaliyo', 'Marisi', 'Apuli', 'Maayi', 'Juuni', 'Julaayi', 'Agusito', - 'Sebuttemba', 'Okitobba', 'Novemba', 'Desemba' - ] - ], - u, - [['AZ', 'AF'], u, ['Kulisto nga azilawo', 'Kulisto nga affile']], - 1, - [0, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'UGX', - 'USh', - 'Silingi eya Yuganda', - {'JPY': ['JP¥', '¥'], 'UGX': ['USh'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/yav.js b/packages/common/locales/global/yav.js deleted file mode 100644 index d48272b169..0000000000 --- a/packages/common/locales/global/yav.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['yav'] = [ - 'yav', - [['kiɛmɛ́ɛm', 'kisɛ́ndɛ'], u, u], - u, - [ - ['s', 'm', 'm', 'e', 'k', 'f', 's'], ['sd', 'md', 'mw', 'et', 'kl', 'fl', 'ss'], - ['sɔ́ndiɛ', 'móndie', 'muányáŋmóndie', 'metúkpíápɛ', 'kúpélimetúkpiapɛ', 'feléte', 'séselé'], - ['sd', 'md', 'mw', 'et', 'kl', 'fl', 'ss'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['o.1', 'o.2', 'o.3', 'o.4', 'o.5', 'o.6', 'o.7', 'o.8', 'o.9', 'o.10', 'o.11', 'o.12'], - [ - 'pikítíkítie, oólí ú kutúan', 'siɛyɛ́, oóli ú kándíɛ', 'ɔnsúmbɔl, oóli ú kátátúɛ', - 'mesiŋ, oóli ú kénie', 'ensil, oóli ú kátánuɛ', 'ɔsɔn', 'efute', 'pisuyú', 'imɛŋ i puɔs', - 'imɛŋ i putúk,oóli ú kátíɛ', 'makandikɛ', 'pilɔndɔ́' - ] - ], - u, - [['k.Y.', '+J.C.'], u, ['katikupíen Yésuse', 'ékélémkúnupíén n']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'XAF', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/yi.js b/packages/common/locales/global/yi.js deleted file mode 100644 index a44e1f62e6..0000000000 --- a/packages/common/locales/global/yi.js +++ /dev/null @@ -1,64 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} -global.ng.common.locales['yi'] = [ - 'yi', - [['פֿאַרמיטאָג', 'נאָכמיטאָג'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - ['זונטיק', 'מאָנטיק', 'דינסטיק', 'מיטוואך', 'דאנערשטיק', 'פֿרײַטיק', 'שבת'], u, u - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'יאַנואַר', 'פֿעברואַר', 'מערץ', 'אַפּריל', 'מיי', 'יוני', 'יולי', 'אויגוסט', 'סעפּטעמבער', - 'אקטאבער', 'נאוועמבער', 'דעצעמבער' - ], - u - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['יאַנ', 'פֿעב', 'מערץ', 'אַפּר', 'מיי', 'יוני', 'יולי', 'אויג', 'סעפּ', 'אקט', 'נאוו', 'דעצ'], - [ - 'יאַנואַר', 'פֿעברואַר', 'מערץ', 'אַפּריל', 'מיי', 'יוני', 'יולי', 'אויגוסט', 'סעפּטעמבער', - 'אקטאבער', 'נאוועמבער', 'דעצעמבער' - ] - ], - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['dd/MM/yy', 'dטן MMM y', 'dטן MMMM y', 'EEEE, dטן MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1}, {0}', '{1} {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - u, - u, - u, - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'rtl', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/yo-BJ.js b/packages/common/locales/global/yo-BJ.js deleted file mode 100644 index b1321738dd..0000000000 --- a/packages/common/locales/global/yo-BJ.js +++ /dev/null @@ -1,66 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['yo-bj'] = [ - 'yo-BJ', - [['Àárɔ̀', 'Ɔ̀sán'], u, u], - u, - [ - ['À', 'A', 'Ì', 'Ɔ', 'Ɔ', 'Ɛ', 'À'], ['Àìk', 'Aj', 'Ìsɛ́g', 'Ɔjɔ́r', 'Ɔjɔ́b', 'Ɛt', 'Àbám'], - ['Ɔjɔ́ Àìkú', 'Ɔjɔ́ Ajé', 'Ɔjɔ́ Ìsɛ́gun', 'Ɔjɔ́rú', 'Ɔjɔ́bɔ', 'Ɔjɔ́ Ɛtì', 'Ɔjɔ́ Àbámɛ́ta'], - ['Àìkú', 'Ajé', 'Ìsɛ́gun', 'Ɔjɔ́rú', 'Ɔjɔ́bɔ', 'Ɛtì', 'Àbámɛ́ta'] - ], - [ - ['À', 'A', 'Ì', 'Ɔ', 'Ɔ', 'Ɛ', 'À'], ['Àìk', 'Aj', 'Ìsɛ́g', 'Ɔjɔ́r', 'Ɔjɔ́b', 'Ɛt', 'Àbám'], - ['Àìkú', 'Ajé', 'Ìsɛ́gun', 'Ɔjɔ́rú', 'Ɔjɔ́bɔ', 'Ɛtì', 'Àbámɛ́ta'], u - ], - [ - ['S', 'È', 'Ɛ', 'Ì', 'Ɛ̀', 'Ò', 'A', 'Ò', 'O', 'Ɔ̀', 'B', 'Ɔ̀'], - ['Shɛ́r', 'Èrèl', 'Ɛrɛ̀n', 'Ìgb', 'Ɛ̀bi', 'Òkú', 'Agɛ', 'Ògú', 'Owe', 'Ɔ̀wà', 'Bél', 'Ɔ̀pɛ'], - [ - 'Oshù Shɛ́rɛ́', 'Oshù Èrèlè', 'Oshù Ɛrɛ̀nà', 'Oshù Ìgbé', 'Oshù Ɛ̀bibi', 'Oshù Òkúdu', - 'Oshù Agɛmɔ', 'Oshù Ògún', 'Oshù Owewe', 'Oshù Ɔ̀wàrà', 'Oshù Bélú', 'Oshù Ɔ̀pɛ̀' - ] - ], - [ - ['S', 'È', 'Ɛ', 'Ì', 'Ɛ̀', 'Ò', 'A', 'Ò', 'O', 'Ɔ̀', 'B', 'Ɔ̀'], - ['Shɛ́', 'Èr', 'Ɛr', 'Ìg', 'Ɛ̀b', 'Òk', 'Ag', 'Òg', 'Ow', 'Ɔ̀w', 'Bé', 'Ɔ̀p'], - [ - 'Shɛ́rɛ́', 'Èrèlè', 'Ɛrɛ̀nà', 'Ìgbé', 'Ɛ̀bibi', 'Òkúdu', 'Agɛmɔ', 'Ògún', 'Owewe', 'Ɔ̀wàrà', - 'Bélú', 'Ɔ̀pɛ̀' - ] - ], - [['BCE', 'AD'], u, ['Saju Kristi', 'Lehin Kristi']], - 1, - [6, 0], - ['d/M/y', 'd MM y', 'd MMM y', 'EEEE, d MMM y'], - ['H:m', 'H:m:s', 'H:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XOF', - 'CFA', - 'Faransi ti Orílɛ́ède BIKEAO', - {'JPY': ['JP¥', '¥'], 'NGN': ['₦'], 'RUB': ['₽']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/yo.js b/packages/common/locales/global/yo.js deleted file mode 100644 index 9f9dbccf85..0000000000 --- a/packages/common/locales/global/yo.js +++ /dev/null @@ -1,66 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['yo'] = [ - 'yo', - [['Àárọ̀', 'Ọ̀sán'], u, u], - u, - [ - ['À', 'A', 'Ì', 'Ọ', 'Ọ', 'Ẹ', 'À'], ['Àìk', 'Aj', 'Ìsẹ́g', 'Ọjọ́r', 'Ọjọ́b', 'Ẹt', 'Àbám'], - ['Ọjọ́ Àìkú', 'Ọjọ́ Ajé', 'Ọjọ́ Ìsẹ́gun', 'Ọjọ́rú', 'Ọjọ́bọ', 'Ọjọ́ Ẹtì', 'Ọjọ́ Àbámẹ́ta'], - ['Àìkú', 'Ajé', 'Ìsẹ́gun', 'Ọjọ́rú', 'Ọjọ́bọ', 'Ẹtì', 'Àbámẹ́ta'] - ], - [ - ['À', 'A', 'Ì', 'Ọ', 'Ọ', 'Ẹ', 'À'], ['Àìk', 'Aj', 'Ìsẹ́g', 'Ọjọ́r', 'Ọjọ́b', 'Ẹt', 'Àbám'], - ['Àìkú', 'Ajé', 'Ìsẹ́gun', 'Ọjọ́rú', 'Ọjọ́bọ', 'Ẹtì', 'Àbámẹ́ta'], u - ], - [ - ['S', 'È', 'Ẹ', 'Ì', 'Ẹ̀', 'Ò', 'A', 'Ò', 'O', 'Ọ̀', 'B', 'Ọ̀'], - ['Ṣẹ́r', 'Èrèl', 'Ẹrẹ̀n', 'Ìgb', 'Ẹ̀bi', 'Òkú', 'Agẹ', 'Ògú', 'Owe', 'Ọ̀wà', 'Bél', 'Ọ̀pẹ'], - [ - 'Oṣù Ṣẹ́rẹ́', 'Oṣù Èrèlè', 'Oṣù Ẹrẹ̀nà', 'Oṣù Ìgbé', 'Oṣù Ẹ̀bibi', 'Oṣù Òkúdu', 'Oṣù Agẹmọ', - 'Oṣù Ògún', 'Oṣù Owewe', 'Oṣù Ọ̀wàrà', 'Oṣù Bélú', 'Oṣù Ọ̀pẹ̀' - ] - ], - [ - ['S', 'È', 'Ẹ', 'Ì', 'Ẹ̀', 'Ò', 'A', 'Ò', 'O', 'Ọ̀', 'B', 'Ọ̀'], - ['Ṣẹ́', 'Èr', 'Ẹr', 'Ìg', 'Ẹ̀b', 'Òk', 'Ag', 'Òg', 'Ow', 'Ọ̀w', 'Bé', 'Ọ̀p'], - [ - 'Ṣẹ́rẹ́', 'Èrèlè', 'Ẹrẹ̀nà', 'Ìgbé', 'Ẹ̀bibi', 'Òkúdu', 'Agẹmọ', 'Ògún', 'Owewe', 'Ọ̀wàrà', 'Bélú', - 'Ọ̀pẹ̀' - ] - ], - [['BCE', 'AD'], u, ['Saju Kristi', 'Lehin Kristi']], - 1, - [6, 0], - ['d/M/y', 'd MM y', 'd MMM y', 'EEEE, d MMM y'], - ['H:m', 'H:m:s', 'H:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'NGN', - '₦', - 'Náìrà ti Orílẹ̀-èdè Nàìjíríà', - {'JPY': ['JP¥', '¥'], 'NGN': ['₦'], 'RUB': ['₽']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/yue-Hans.js b/packages/common/locales/global/yue-Hans.js deleted file mode 100644 index 9e39aa6dee..0000000000 --- a/packages/common/locales/global/yue-Hans.js +++ /dev/null @@ -1,70 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['yue-hans'] = [ - 'yue-Hans', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], - [ - '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', - '十二月' - ] - ], - u, - [['西元前', '西元'], u, u], - 0, - [6, 0], - ['y/M/d', 'y年M月d日', u, 'y年M月d日EEEE'], - ['ah:mm', 'ah:mm:ss', 'z ah:mm:ss', 'zzzz ah:mm:ss'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', '非数值', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'CNY', - '¥', - '人民币', - { - 'AUD': ['AU$', '$'], - 'CNY': ['¥', '¥'], - 'JPY': ['JP¥', '¥'], - 'KRW': ['₩', '₩'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural, - [ - [['午夜', '清晨', '朝早', '中午', '下昼', '夜晚', '凌晨'], u, u], u, - [ - '00:00', ['05:00', '08:00'], ['08:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/yue-Hant.js b/packages/common/locales/global/yue-Hant.js deleted file mode 100644 index 27275ddc83..0000000000 --- a/packages/common/locales/global/yue-Hant.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['yue-hant'] = [ - 'yue-Hant', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], u, - ['日', '一', '二', '三', '四', '五', '六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], u - ], - u, - [['西元前', '西元'], u, u], - 0, - [6, 0], - ['y/M/d', 'y年M月d日', u, 'y年M月d日 EEEE'], - ['ah:mm', 'ah:mm:ss', 'ah:mm:ss [z]', 'ah:mm:ss [zzzz]'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', '非數值', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'HKD', - 'HK$', - '港幣', - {'AUD': ['AU$', '$'], 'KRW': ['₩', '₩'], 'USD': ['US$', '$'], 'XXX': []}, - 'ltr', - plural, - [ - [['午夜', '清晨', '朝早', '中午', '下晝', '夜晚', '凌晨'], u, u], u, - [ - '00:00', ['05:00', '08:00'], ['08:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/yue.js b/packages/common/locales/global/yue.js deleted file mode 100644 index 85653a263c..0000000000 --- a/packages/common/locales/global/yue.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['yue'] = [ - 'yue', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], u, - ['日', '一', '二', '三', '四', '五', '六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], u - ], - u, - [['西元前', '西元'], u, u], - 0, - [6, 0], - ['y/M/d', 'y年M月d日', u, 'y年M月d日 EEEE'], - ['ah:mm', 'ah:mm:ss', 'ah:mm:ss [z]', 'ah:mm:ss [zzzz]'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', '非數值', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'HKD', - 'HK$', - '港幣', - {'AUD': ['AU$', '$'], 'KRW': ['₩', '₩'], 'USD': ['US$', '$'], 'XXX': []}, - 'ltr', - plural, - [ - [['午夜', '清晨', '朝早', '中午', '下晝', '夜晚', '凌晨'], u, u], u, - [ - '00:00', ['05:00', '08:00'], ['08:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/zgh.js b/packages/common/locales/global/zgh.js deleted file mode 100644 index afab97bcb1..0000000000 --- a/packages/common/locales/global/zgh.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['zgh'] = [ - 'zgh', - [['ⵜⵉⴼⴰⵡⵜ', 'ⵜⴰⴷⴳⴳⵯⴰⵜ'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['ⴰⵙⴰ', 'ⴰⵢⵏ', 'ⴰⵙⵉ', 'ⴰⴽⵕ', 'ⴰⴽⵡ', 'ⴰⵙⵉⵎ', 'ⴰⵙⵉⴹ'], - ['ⴰⵙⴰⵎⴰⵙ', 'ⴰⵢⵏⴰⵙ', 'ⴰⵙⵉⵏⴰⵙ', 'ⴰⴽⵕⴰⵙ', 'ⴰⴽⵡⴰⵙ', 'ⴰⵙⵉⵎⵡⴰⵙ', 'ⴰⵙⵉⴹⵢⴰⵙ'], - ['ⴰⵙⴰ', 'ⴰⵢⵏ', 'ⴰⵙⵉ', 'ⴰⴽⵕ', 'ⴰⴽⵡ', 'ⴰⵙⵉⵎ', 'ⴰⵙⵉⴹ'] - ], - u, - [ - ['ⵉ', 'ⴱ', 'ⵎ', 'ⵉ', 'ⵎ', 'ⵢ', 'ⵢ', 'ⵖ', 'ⵛ', 'ⴽ', 'ⵏ', 'ⴷ'], - ['ⵉⵏⵏ', 'ⴱⵕⴰ', 'ⵎⴰⵕ', 'ⵉⴱⵔ', 'ⵎⴰⵢ', 'ⵢⵓⵏ', 'ⵢⵓⵍ', 'ⵖⵓⵛ', 'ⵛⵓⵜ', 'ⴽⵜⵓ', 'ⵏⵓⵡ', 'ⴷⵓⵊ'], - [ - 'ⵉⵏⵏⴰⵢⵔ', 'ⴱⵕⴰⵢⵕ', 'ⵎⴰⵕⵚ', 'ⵉⴱⵔⵉⵔ', 'ⵎⴰⵢⵢⵓ', 'ⵢⵓⵏⵢⵓ', 'ⵢⵓⵍⵢⵓⵣ', 'ⵖⵓⵛⵜ', 'ⵛⵓⵜⴰⵏⴱⵉⵔ', 'ⴽⵜⵓⴱⵔ', - 'ⵏⵓⵡⴰⵏⴱⵉⵔ', 'ⴷⵓⵊⴰⵏⴱⵉⵔ' - ] - ], - u, - [['ⴷⴰⵄ', 'ⴷⴼⵄ'], u, ['ⴷⴰⵜ ⵏ ⵄⵉⵙⴰ', 'ⴷⴼⴼⵉⵔ ⵏ ⵄⵉⵙⴰ']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00¤', '#E0'], - 'MAD', - 'MAD', - 'ⴰⴷⵔⵉⵎ ⵏ ⵍⵎⵖⵔⵉⴱ', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural, - [] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/zh-Hans-HK.js b/packages/common/locales/global/zh-Hans-HK.js deleted file mode 100644 index db3e1610a2..0000000000 --- a/packages/common/locales/global/zh-Hans-HK.js +++ /dev/null @@ -1,75 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['zh-hans-hk'] = [ - 'zh-Hans-HK', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], - [ - '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', - '十二月' - ] - ], - u, - [['公元前', '公元'], u, u], - 0, - [6, 0], - ['d/M/yy', 'y年M月d日', u, 'y年M月d日EEEE'], - ['ah:mm', 'ah:mm:ss', 'z ah:mm:ss', 'zzzz ah:mm:ss'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'HKD', - 'HK$', - '港元', - { - 'AUD': ['AU$', '$'], - 'ILR': ['ILS'], - 'JPY': ['JP¥', '¥'], - 'KRW': ['₩', '₩'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural, - [ - [ - ['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, - ['午夜', '清晨', '上午', '中午', '下午', '晚上', '凌晨'] - ], - [['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, u], - [ - '00:00', ['05:00', '08:00'], ['08:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/zh-Hans-MO.js b/packages/common/locales/global/zh-Hans-MO.js deleted file mode 100644 index c3716f4a49..0000000000 --- a/packages/common/locales/global/zh-Hans-MO.js +++ /dev/null @@ -1,76 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['zh-hans-mo'] = [ - 'zh-Hans-MO', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], - [ - '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', - '十二月' - ] - ], - u, - [['公元前', '公元'], u, u], - 0, - [6, 0], - ['d/M/yy', 'y年M月d日', u, 'y年M月d日EEEE'], - ['ah:mm', 'ah:mm:ss', 'z ah:mm:ss', 'zzzz ah:mm:ss'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'MOP', - 'MOP$', - '澳门币', - { - 'AUD': ['AU$', '$'], - 'ILR': ['ILS'], - 'JPY': ['JP¥', '¥'], - 'KRW': ['₩', '₩'], - 'MOP': ['MOP$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural, - [ - [ - ['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, - ['午夜', '清晨', '上午', '中午', '下午', '晚上', '凌晨'] - ], - [['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, u], - [ - '00:00', ['05:00', '08:00'], ['08:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/zh-Hans-SG.js b/packages/common/locales/global/zh-Hans-SG.js deleted file mode 100644 index 91fb96c63e..0000000000 --- a/packages/common/locales/global/zh-Hans-SG.js +++ /dev/null @@ -1,76 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['zh-hans-sg'] = [ - 'zh-Hans-SG', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], - [ - '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', - '十二月' - ] - ], - u, - [['公元前', '公元'], u, u], - 0, - [6, 0], - ['dd/MM/yy', 'y年M月d日', u, 'y年M月d日EEEE'], - ['ah:mm', 'ah:mm:ss', 'z ah:mm:ss', 'zzzz ah:mm:ss'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SGD', - '$', - '新加坡元', - { - 'AUD': ['AU$', '$'], - 'ILR': ['ILS'], - 'JPY': ['JP¥', '¥'], - 'KRW': ['₩', '₩'], - 'SGD': ['$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural, - [ - [ - ['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, - ['午夜', '清晨', '上午', '中午', '下午', '晚上', '凌晨'] - ], - [['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, u], - [ - '00:00', ['05:00', '08:00'], ['08:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/zh-Hans.js b/packages/common/locales/global/zh-Hans.js deleted file mode 100644 index ba2fbd9d03..0000000000 --- a/packages/common/locales/global/zh-Hans.js +++ /dev/null @@ -1,76 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['zh-hans'] = [ - 'zh-Hans', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], - [ - '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', - '十二月' - ] - ], - u, - [['公元前', '公元'], u, u], - 0, - [6, 0], - ['y/M/d', 'y年M月d日', u, 'y年M月d日EEEE'], - ['ah:mm', 'ah:mm:ss', 'z ah:mm:ss', 'zzzz ah:mm:ss'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'CNY', - '¥', - '人民币', - { - 'AUD': ['AU$', '$'], - 'CNY': ['¥'], - 'ILR': ['ILS'], - 'JPY': ['JP¥', '¥'], - 'KRW': ['₩', '₩'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural, - [ - [ - ['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, - ['午夜', '清晨', '上午', '中午', '下午', '晚上', '凌晨'] - ], - [['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, u], - [ - '00:00', ['05:00', '08:00'], ['08:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/zh-Hant-HK.js b/packages/common/locales/global/zh-Hant-HK.js deleted file mode 100644 index bd4e35ce25..0000000000 --- a/packages/common/locales/global/zh-Hant-HK.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['zh-hant-hk'] = [ - 'zh-Hant-HK', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['週日', '週一', '週二', '週三', '週四', '週五', '週六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - ['日', '一', '二', '三', '四', '五', '六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], u - ], - u, - [['公元前', '公元'], u, u], - 0, - [6, 0], - ['d/M/y', 'y年M月d日', u, 'y年M月d日EEEE'], - ['ah:mm', 'ah:mm:ss', 'ah:mm:ss [z]', 'ah:mm:ss [zzzz]'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', '非數值', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'HKD', - 'HK$', - '港元', - {'AUD': ['AU$', '$'], 'RON': [u, 'L'], 'USD': ['US$', '$'], 'XXX': []}, - 'ltr', - plural, - [ - [['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, u], u, - [ - '00:00', ['05:00', '08:00'], ['08:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/zh-Hant-MO.js b/packages/common/locales/global/zh-Hant-MO.js deleted file mode 100644 index d53a112d84..0000000000 --- a/packages/common/locales/global/zh-Hant-MO.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['zh-hant-mo'] = [ - 'zh-Hant-MO', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['週日', '週一', '週二', '週三', '週四', '週五', '週六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - ['日', '一', '二', '三', '四', '五', '六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], u - ], - u, - [['公元前', '公元'], u, u], - 0, - [6, 0], - ['d/M/y', 'y年M月d日', u, 'y年M月d日EEEE'], - ['ah:mm', 'ah:mm:ss', 'ah:mm:ss [z]', 'ah:mm:ss [zzzz]'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', '非數值', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'MOP', - 'MOP$', - '澳門元', - {'AUD': ['AU$', '$'], 'MOP': ['MOP$'], 'RON': [u, 'L'], 'USD': ['US$', '$'], 'XXX': []}, - 'ltr', - plural, - [ - [['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, u], u, - [ - '00:00', ['05:00', '08:00'], ['08:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/zh-Hant.js b/packages/common/locales/global/zh-Hant.js deleted file mode 100644 index 3bd00a2677..0000000000 --- a/packages/common/locales/global/zh-Hant.js +++ /dev/null @@ -1,66 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['zh-hant'] = [ - 'zh-Hant', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['週日', '週一', '週二', '週三', '週四', '週五', '週六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - ['日', '一', '二', '三', '四', '五', '六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], u - ], - u, - [['西元前', '西元'], u, u], - 0, - [6, 0], - ['y/M/d', 'y年M月d日', u, 'y年M月d日 EEEE'], - ['ah:mm', 'ah:mm:ss', 'ah:mm:ss [z]', 'ah:mm:ss [zzzz]'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', '非數值', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'TWD', - '$', - '新台幣', - { - 'AUD': ['AU$', '$'], - 'KRW': ['₩', '₩'], - 'RON': [u, 'L'], - 'TWD': ['$'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural, - [ - [['午夜', '清晨', '上午', '中午', '下午', '晚上', '凌晨'], u, u], u, - [ - '00:00', ['05:00', '08:00'], ['08:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/zh.js b/packages/common/locales/global/zh.js deleted file mode 100644 index d9acfb84b2..0000000000 --- a/packages/common/locales/global/zh.js +++ /dev/null @@ -1,76 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - return 5; -} -global.ng.common.locales['zh'] = [ - 'zh', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], - [ - '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', - '十二月' - ] - ], - u, - [['公元前', '公元'], u, u], - 0, - [6, 0], - ['y/M/d', 'y年M月d日', u, 'y年M月d日EEEE'], - ['ah:mm', 'ah:mm:ss', 'z ah:mm:ss', 'zzzz ah:mm:ss'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'CNY', - '¥', - '人民币', - { - 'AUD': ['AU$', '$'], - 'CNY': ['¥'], - 'ILR': ['ILS'], - 'JPY': ['JP¥', '¥'], - 'KRW': ['₩', '₩'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural, - [ - [ - ['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, - ['午夜', '清晨', '上午', '中午', '下午', '晚上', '凌晨'] - ], - [['午夜', '早上', '上午', '中午', '下午', '晚上', '凌晨'], u, u], - [ - '00:00', ['05:00', '08:00'], ['08:00', '12:00'], ['12:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'], ['00:00', '05:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/global/zu.js b/packages/common/locales/global/zu.js deleted file mode 100644 index 4a5253a1cf..0000000000 --- a/packages/common/locales/global/zu.js +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -(function(global) { -global.ng = global.ng || {}; -global.ng.common = global.ng.common || {}; -global.ng.common.locales = global.ng.common.locales || {}; -const u = undefined; -function plural(n) { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} -global.ng.common.locales['zu'] = [ - 'zu', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'B', 'T', 'S', 'H', 'M'], ['Son', 'Mso', 'Bil', 'Tha', 'Sin', 'Hla', 'Mgq'], - ['ISonto', 'UMsombuluko', 'ULwesibili', 'ULwesithathu', 'ULwesine', 'ULwesihlanu', 'UMgqibelo'], - ['Son', 'Mso', 'Bil', 'Tha', 'Sin', 'Hla', 'Mgq'] - ], - u, - [ - ['J', 'F', 'M', 'E', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mas', 'Eph', 'Mey', 'Jun', 'Jul', 'Aga', 'Sep', 'Okt', 'Nov', 'Dis'], - [ - 'Januwari', 'Februwari', 'Mashi', 'Ephreli', 'Meyi', 'Juni', 'Julayi', 'Agasti', 'Septhemba', - 'Okthoba', 'Novemba', 'Disemba' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mas', 'Eph', 'Mey', 'Jun', 'Jul', 'Aga', 'Sep', 'Okt', 'Nov', 'Dis'], - [ - 'Januwari', 'Februwari', 'Mashi', 'Ephreli', 'Meyi', 'Juni', 'Julayi', 'Agasti', 'Septhemba', - 'Okthoba', 'Novemba', 'Disemba' - ] - ], - [['BC', 'AD'], u, u], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZAR', - 'R', - 'i-South African Rand', - { - 'BYN': [u, 'P.'], - 'DKK': [u, 'Kr'], - 'HRK': [u, 'Kn'], - 'ISK': [u, 'Kr'], - 'JPY': ['JP¥', '¥'], - 'NOK': [u, 'Kr'], - 'PLN': [u, 'Zł'], - 'SEK': [u, 'Kr'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'ZAR': ['R'] - }, - 'ltr', - plural, - [ - [['entathakusa', 'ekuseni', 'emini', 'ntambama', 'ebusuku'], u, u], u, - [ - ['00:00', '06:00'], ['06:00', '10:00'], ['10:00', '13:00'], ['13:00', '19:00'], - ['19:00', '24:00'] - ] - ] -]; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || - typeof window !== 'undefined' && window); diff --git a/packages/common/locales/gsw-FR.ts b/packages/common/locales/gsw-FR.ts deleted file mode 100644 index 4f5195e004..0000000000 --- a/packages/common/locales/gsw-FR.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'gsw-FR', - [['vorm.', 'nam.'], u, ['am Vormittag', 'am Namittag']], - [['vorm.', 'nam.'], u, ['Vormittag', 'Namittag']], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['Su.', 'Mä.', 'Zi.', 'Mi.', 'Du.', 'Fr.', 'Sa.'], - ['Sunntig', 'Määntig', 'Ziischtig', 'Mittwuch', 'Dunschtig', 'Friitig', 'Samschtig'], - ['Su.', 'Mä.', 'Zi.', 'Mi.', 'Du.', 'Fr.', 'Sa.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'Auguscht', 'Septämber', - 'Oktoober', 'Novämber', 'Dezämber' - ] - ], - u, - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', '’', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - {'ATS': ['öS']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/gsw-LI.ts b/packages/common/locales/gsw-LI.ts deleted file mode 100644 index 3113f85796..0000000000 --- a/packages/common/locales/gsw-LI.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'gsw-LI', - [['vorm.', 'nam.'], u, ['am Vormittag', 'am Namittag']], - [['vorm.', 'nam.'], u, ['Vormittag', 'Namittag']], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['Su.', 'Mä.', 'Zi.', 'Mi.', 'Du.', 'Fr.', 'Sa.'], - ['Sunntig', 'Määntig', 'Ziischtig', 'Mittwuch', 'Dunschtig', 'Friitig', 'Samschtig'], - ['Su.', 'Mä.', 'Zi.', 'Mi.', 'Du.', 'Fr.', 'Sa.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'Auguscht', 'Septämber', - 'Oktoober', 'Novämber', 'Dezämber' - ] - ], - u, - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', '’', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'CHF', - 'CHF', - 'Schwiizer Franke', - {'ATS': ['öS']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/gsw.ts b/packages/common/locales/gsw.ts deleted file mode 100644 index 6f010ad236..0000000000 --- a/packages/common/locales/gsw.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'gsw', - [['vorm.', 'nam.'], u, ['am Vormittag', 'am Namittag']], - [['vorm.', 'nam.'], u, ['Vormittag', 'Namittag']], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['Su.', 'Mä.', 'Zi.', 'Mi.', 'Du.', 'Fr.', 'Sa.'], - ['Sunntig', 'Määntig', 'Ziischtig', 'Mittwuch', 'Dunschtig', 'Friitig', 'Samschtig'], - ['Su.', 'Mä.', 'Zi.', 'Mi.', 'Du.', 'Fr.', 'Sa.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'Auguscht', 'Septämber', - 'Oktoober', 'Novämber', 'Dezämber' - ] - ], - u, - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd.MM.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', '’', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'CHF', - 'CHF', - 'Schwiizer Franke', - {'ATS': ['öS']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/gu.ts b/packages/common/locales/gu.ts deleted file mode 100644 index 2aa2dad212..0000000000 --- a/packages/common/locales/gu.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} - -export default [ - 'gu', - [['AM', 'PM'], u, u], - u, - [ - ['ર', 'સો', 'મં', 'બુ', 'ગુ', 'શુ', 'શ'], ['રવિ', 'સોમ', 'મંગળ', 'બુધ', 'ગુરુ', 'શુક્ર', 'શનિ'], - ['રવિવાર', 'સોમવાર', 'મંગળવાર', 'બુધવાર', 'ગુરુવાર', 'શુક્રવાર', 'શનિવાર'], - ['ર', 'સો', 'મં', 'બુ', 'ગુ', 'શુ', 'શ'] - ], - u, - [ - ['જા', 'ફે', 'મા', 'એ', 'મે', 'જૂ', 'જુ', 'ઑ', 'સ', 'ઑ', 'ન', 'ડિ'], - ['જાન્યુ', 'ફેબ્રુ', 'માર્ચ', 'એપ્રિલ', 'મે', 'જૂન', 'જુલાઈ', 'ઑગસ્ટ', 'સપ્ટે', 'ઑક્ટો', 'નવે', 'ડિસે'], - [ - 'જાન્યુઆરી', 'ફેબ્રુઆરી', 'માર્ચ', 'એપ્રિલ', 'મે', 'જૂન', 'જુલાઈ', 'ઑગસ્ટ', 'સપ્ટેમ્બર', 'ઑક્ટોબર', 'નવેમ્બર', - 'ડિસેમ્બર' - ] - ], - u, - [['ઇ સ પુ', 'ઇસ'], ['ઈ.સ.પૂર્વે', 'ઈ.સ.'], ['ઈસવીસન પૂર્વે', 'ઇસવીસન']], - 0, - [0, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['hh:mm a', 'hh:mm:ss a', 'hh:mm:ss a z', 'hh:mm:ss a zzzz'], - ['{1} {0}', u, '{1} એ {0} વાગ્યે', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤#,##,##0.00', '[#E0]'], - 'INR', - '₹', - 'ભારતીય રૂપિયા', - {'JPY': ['JP¥', '¥'], 'MUR': [u, 'રૂ.'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/guz.ts b/packages/common/locales/guz.ts deleted file mode 100644 index c42a3dc61d..0000000000 --- a/packages/common/locales/guz.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'guz', - [['Ma', 'Mo'], u, ['Mambia', 'Mog']], - [['Ma', 'Mo'], u, u], - [ - ['C', 'C', 'C', 'C', 'A', 'I', 'E'], ['Cpr', 'Ctt', 'Cmn', 'Cmt', 'Ars', 'Icm', 'Est'], - ['Chumapiri', 'Chumatato', 'Chumaine', 'Chumatano', 'Aramisi', 'Ichuma', 'Esabato'], - ['Cpr', 'Ctt', 'Cmn', 'Cmt', 'Ars', 'Icm', 'Est'] - ], - u, - [ - ['C', 'F', 'M', 'A', 'M', 'J', 'C', 'A', 'S', 'O', 'N', 'D'], - ['Can', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Cul', 'Agt', 'Sep', 'Okt', 'Nob', 'Dis'], - [ - 'Chanuari', 'Feburari', 'Machi', 'Apiriri', 'Mei', 'Juni', 'Chulai', 'Agosti', 'Septemba', - 'Okitoba', 'Nobemba', 'Disemba' - ] - ], - u, - [['YA', 'YK'], u, ['Yeso ataiborwa', 'Yeso kaiboirwe']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Shilingi ya Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/gv.ts b/packages/common/locales/gv.ts deleted file mode 100644 index 078565302e..0000000000 --- a/packages/common/locales/gv.ts +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (v === 0 && i % 10 === 1) return 1; - if (v === 0 && i % 10 === 2) return 2; - if (v === 0 && - (i % 100 === 0 || i % 100 === 20 || i % 100 === 40 || i % 100 === 60 || i % 100 === 80)) - return 3; - if (!(v === 0)) return 4; - return 5; -} - -export default [ - 'gv', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Jed', 'Jel', 'Jem', 'Jerc', 'Jerd', 'Jeh', 'Jes'], - ['Jedoonee', 'Jelhein', 'Jemayrt', 'Jercean', 'Jerdein', 'Jeheiney', 'Jesarn'], - ['Jed', 'Jel', 'Jem', 'Jerc', 'Jerd', 'Jeh', 'Jes'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'J-guer', 'T-arree', 'Mayrnt', 'Avrril', 'Boaldyn', 'M-souree', 'J-souree', 'Luanistyn', - 'M-fouyir', 'J-fouyir', 'M-Houney', 'M-Nollick' - ], - [ - 'Jerrey-geuree', 'Toshiaght-arree', 'Mayrnt', 'Averil', 'Boaldyn', 'Mean-souree', - 'Jerrey-souree', 'Luanistyn', 'Mean-fouyir', 'Jerrey-fouyir', 'Mee Houney', 'Mee ny Nollick' - ] - ], - u, - [['RC', 'AD'], u, u], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GBP', - '£', - 'GBP', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ha-GH.ts b/packages/common/locales/ha-GH.ts deleted file mode 100644 index f6d0698727..0000000000 --- a/packages/common/locales/ha-GH.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ha-GH', - [['AM', 'PM'], u, ['Safiya', 'Yamma']], - [['AM', 'PM'], u, u], - [ - ['L', 'L', 'T', 'L', 'A', 'J', 'A'], ['Lah', 'Lit', 'Tal', 'Lar', 'Alh', 'Jum', 'Asa'], - ['Lahadi', 'Litinin', 'Talata', 'Laraba', 'Alhamis', 'Jummaʼa', 'Asabar'], - ['Lh', 'Li', 'Ta', 'Lr', 'Al', 'Ju', 'As'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'Y', 'Y', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Fab', 'Mar', 'Afi', 'May', 'Yun', 'Yul', 'Agu', 'Sat', 'Okt', 'Nuw', 'Dis'], - [ - 'Janairu', 'Faburairu', 'Maris', 'Afirilu', 'Mayu', 'Yuni', 'Yuli', 'Agusta', 'Satumba', - 'Oktoba', 'Nuwamba', 'Disamba' - ] - ], - u, - [['K.H', 'BHAI'], u, ['Kafin haihuwar annab', 'Bayan haihuwar annab']], - 1, - [6, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE d MMMM, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'GHS', - 'GH₵', - 'Kudin Ghana', - {'GHS': ['GH₵'], 'NGN': ['₦']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ha-NE.ts b/packages/common/locales/ha-NE.ts deleted file mode 100644 index 0f87b4dd23..0000000000 --- a/packages/common/locales/ha-NE.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ha-NE', - [['AM', 'PM'], u, ['Safiya', 'Yamma']], - [['AM', 'PM'], u, u], - [ - ['L', 'L', 'T', 'L', 'A', 'J', 'A'], ['Lah', 'Lit', 'Tal', 'Lar', 'Alh', 'Jum', 'Asa'], - ['Lahadi', 'Litinin', 'Talata', 'Laraba', 'Alhamis', 'Jummaʼa', 'Asabar'], - ['Lh', 'Li', 'Ta', 'Lr', 'Al', 'Ju', 'As'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'Y', 'Y', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Fab', 'Mar', 'Afi', 'May', 'Yun', 'Yul', 'Agu', 'Sat', 'Okt', 'Nuw', 'Dis'], - [ - 'Janairu', 'Faburairu', 'Maris', 'Afirilu', 'Mayu', 'Yuni', 'Yuli', 'Agusta', 'Satumba', - 'Oktoba', 'Nuwamba', 'Disamba' - ] - ], - u, - [['K.H', 'BHAI'], u, ['Kafin haihuwar annab', 'Bayan haihuwar annab']], - 1, - [6, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE d MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'XOF', - 'CFA', - 'Kuɗin Sefa na Afirka Ta Yamma', - {'NGN': ['₦']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ha.ts b/packages/common/locales/ha.ts deleted file mode 100644 index fe727f28c7..0000000000 --- a/packages/common/locales/ha.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ha', - [['AM', 'PM'], u, ['Safiya', 'Yamma']], - [['AM', 'PM'], u, u], - [ - ['L', 'L', 'T', 'L', 'A', 'J', 'A'], ['Lah', 'Lit', 'Tal', 'Lar', 'Alh', 'Jum', 'Asa'], - ['Lahadi', 'Litinin', 'Talata', 'Laraba', 'Alhamis', 'Jummaʼa', 'Asabar'], - ['Lh', 'Li', 'Ta', 'Lr', 'Al', 'Ju', 'As'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'Y', 'Y', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Fab', 'Mar', 'Afi', 'May', 'Yun', 'Yul', 'Agu', 'Sat', 'Okt', 'Nuw', 'Dis'], - [ - 'Janairu', 'Faburairu', 'Maris', 'Afirilu', 'Mayu', 'Yuni', 'Yuli', 'Agusta', 'Satumba', - 'Oktoba', 'Nuwamba', 'Disamba' - ] - ], - u, - [['K.H', 'BHAI'], u, ['Kafin haihuwar annab', 'Bayan haihuwar annab']], - 1, - [6, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE d MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'NGN', - '₦', - 'Nairar Najeriya', - {'NGN': ['₦']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/haw.ts b/packages/common/locales/haw.ts deleted file mode 100644 index 2eca76671f..0000000000 --- a/packages/common/locales/haw.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'haw', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['LP', 'P1', 'P2', 'P3', 'P4', 'P5', 'P6'], - ['Lāpule', 'Poʻakahi', 'Poʻalua', 'Poʻakolu', 'Poʻahā', 'Poʻalima', 'Poʻaono'], - ['LP', 'P1', 'P2', 'P3', 'P4', 'P5', 'P6'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['Ian.', 'Pep.', 'Mal.', 'ʻAp.', 'Mei', 'Iun.', 'Iul.', 'ʻAu.', 'Kep.', 'ʻOk.', 'Now.', 'Kek.'], - [ - 'Ianuali', 'Pepeluali', 'Malaki', 'ʻApelila', 'Mei', 'Iune', 'Iulai', 'ʻAukake', 'Kepakemapa', - 'ʻOkakopa', 'Nowemapa', 'Kekemapa' - ] - ], - u, - [['BCE', 'CE'], u, u], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'USD', - {'JPY': ['JP¥', '¥']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/he.ts b/packages/common/locales/he.ts deleted file mode 100644 index 242e0183af..0000000000 --- a/packages/common/locales/he.ts +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - if (i === 2 && v === 0) return 2; - if (v === 0 && !(n >= 0 && n <= 10) && n % 10 === 0) return 4; - return 5; -} - -export default [ - 'he', - [['לפנה״צ', 'אחה״צ'], u, u], - [['לפנה״צ', 'אחה״צ'], ['AM', 'PM'], u], - [ - ['א׳', 'ב׳', 'ג׳', 'ד׳', 'ה׳', 'ו׳', 'ש׳'], - ['יום א׳', 'יום ב׳', 'יום ג׳', 'יום ד׳', 'יום ה׳', 'יום ו׳', 'שבת'], - ['יום ראשון', 'יום שני', 'יום שלישי', 'יום רביעי', 'יום חמישי', 'יום שישי', 'יום שבת'], - ['א׳', 'ב׳', 'ג׳', 'ד׳', 'ה׳', 'ו׳', 'ש׳'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['ינו׳', 'פבר׳', 'מרץ', 'אפר׳', 'מאי', 'יוני', 'יולי', 'אוג׳', 'ספט׳', 'אוק׳', 'נוב׳', 'דצמ׳'], - [ - 'ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', - 'נובמבר', 'דצמבר' - ] - ], - u, - [['לפנה״ס', 'לספירה'], u, ['לפני הספירה', 'לספירה']], - 0, - [5, 6], - ['d.M.y', 'd בMMM y', 'd בMMMM y', 'EEEE, d בMMMM y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1}, {0}', u, '{1} בשעה {0}', u], - ['.', ',', ';', '%', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '\u200f#,##0.00 ¤;\u200f-#,##0.00 ¤', '#E0'], - 'ILS', - '₪', - 'שקל חדש', - {'BYN': [u, 'р'], 'CNY': ['\u200eCN¥\u200e', '¥'], 'ILP': ['ל״י'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'rtl', - plural -]; diff --git a/packages/common/locales/hi.ts b/packages/common/locales/hi.ts deleted file mode 100644 index 2c7726821d..0000000000 --- a/packages/common/locales/hi.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} - -export default [ - 'hi', - [['am', 'pm'], u, u], - u, - [ - ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'], ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'], - ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरुवार', 'शुक्रवार', 'शनिवार'], - ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'] - ], - u, - [ - ['ज', 'फ़', 'मा', 'अ', 'म', 'जू', 'जु', 'अ', 'सि', 'अ', 'न', 'दि'], - ['जन॰', 'फ़र॰', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुल॰', 'अग॰', 'सित॰', 'अक्तू॰', 'नव॰', 'दिस॰'], - [ - 'जनवरी', 'फ़रवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितंबर', 'अक्तूबर', 'नवंबर', - 'दिसंबर' - ] - ], - u, - [['ईसा-पूर्व', 'ईस्वी'], u, ['ईसा-पूर्व', 'ईसवी सन']], - 0, - [0, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} को {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤#,##,##0.00', '[#E0]'], - 'INR', - '₹', - 'भारतीय रुपया', - {'JPY': ['JP¥', '¥'], 'RON': [u, 'लेई'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/hr-BA.ts b/packages/common/locales/hr-BA.ts deleted file mode 100644 index 8e83488cb3..0000000000 --- a/packages/common/locales/hr-BA.ts +++ /dev/null @@ -1,87 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14) || - f % 10 === Math.floor(f % 10) && f % 10 >= 2 && f % 10 <= 4 && - !(f % 100 >= 12 && f % 100 <= 14)) - return 3; - return 5; -} - -export default [ - 'hr-BA', - [['AM', 'PM'], u, u], - u, - [ - ['N', 'P', 'U', 'S', 'Č', 'P', 'S'], ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'], - ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'] - ], - u, - [ - ['1.', '2.', '3.', '4.', '5.', '6.', '7.', '8.', '9.', '10.', '11.', '12.'], - ['sij', 'velj', 'ožu', 'tra', 'svi', 'lip', 'srp', 'kol', 'ruj', 'lis', 'stu', 'pro'], - [ - 'siječnja', 'veljače', 'ožujka', 'travnja', 'svibnja', 'lipnja', 'srpnja', 'kolovoza', - 'rujna', 'listopada', 'studenoga', 'prosinca' - ] - ], - [ - ['1.', '2.', '3.', '4.', '5.', '6.', '7.', '8.', '9.', '10.', '11.', '12.'], - ['sij', 'velj', 'ožu', 'tra', 'svi', 'lip', 'srp', 'kol', 'ruj', 'lis', 'stu', 'pro'], - [ - 'siječanj', 'veljača', 'ožujak', 'travanj', 'svibanj', 'lipanj', 'srpanj', 'kolovoz', 'rujan', - 'listopad', 'studeni', 'prosinac' - ] - ], - [['pr.n.e.', 'AD'], ['pr. Kr.', 'po. Kr.'], ['prije Krista', 'poslije Krista']], - 1, - [6, 0], - ['d. M. yy.', 'd. MMM y.', 'd. MMMM y.', 'EEEE, d. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss (zzzz)'], - ['{1} {0}', u, '{1} \'u\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'BAM', - 'KM', - 'konvertibilna marka', - { - 'AUD': [u, '$'], - 'BAM': ['KM'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XCD': [u, '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/hr.ts b/packages/common/locales/hr.ts deleted file mode 100644 index 590e7e3083..0000000000 --- a/packages/common/locales/hr.ts +++ /dev/null @@ -1,90 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14) || - f % 10 === Math.floor(f % 10) && f % 10 >= 2 && f % 10 <= 4 && - !(f % 100 >= 12 && f % 100 <= 14)) - return 3; - return 5; -} - -export default [ - 'hr', - [['AM', 'PM'], u, u], - u, - [ - ['N', 'P', 'U', 'S', 'Č', 'P', 'S'], ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'], - ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'] - ], - [ - ['n', 'p', 'u', 's', 'č', 'p', 's'], ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'], - ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'] - ], - [ - ['1.', '2.', '3.', '4.', '5.', '6.', '7.', '8.', '9.', '10.', '11.', '12.'], - ['sij', 'velj', 'ožu', 'tra', 'svi', 'lip', 'srp', 'kol', 'ruj', 'lis', 'stu', 'pro'], - [ - 'siječnja', 'veljače', 'ožujka', 'travnja', 'svibnja', 'lipnja', 'srpnja', 'kolovoza', - 'rujna', 'listopada', 'studenoga', 'prosinca' - ] - ], - [ - ['1.', '2.', '3.', '4.', '5.', '6.', '7.', '8.', '9.', '10.', '11.', '12.'], - ['sij', 'velj', 'ožu', 'tra', 'svi', 'lip', 'srp', 'kol', 'ruj', 'lis', 'stu', 'pro'], - [ - 'siječanj', 'veljača', 'ožujak', 'travanj', 'svibanj', 'lipanj', 'srpanj', 'kolovoz', 'rujan', - 'listopad', 'studeni', 'prosinac' - ] - ], - [['pr.n.e.', 'AD'], ['pr. Kr.', 'po. Kr.'], ['prije Krista', 'poslije Krista']], - 1, - [6, 0], - ['dd. MM. y.', 'd. MMM y.', 'd. MMMM y.', 'EEEE, d. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss (zzzz)'], - ['{1} {0}', u, '{1} \'u\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'HRK', - 'HRK', - 'hrvatska kuna', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XCD': [u, '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/hsb.ts b/packages/common/locales/hsb.ts deleted file mode 100644 index 12a8e3472c..0000000000 --- a/packages/common/locales/hsb.ts +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 100 === 1 || f % 100 === 1) return 1; - if (v === 0 && i % 100 === 2 || f % 100 === 2) return 2; - if (v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 3 && i % 100 <= 4 || - f % 100 === Math.floor(f % 100) && f % 100 >= 3 && f % 100 <= 4) - return 3; - return 5; -} - -export default [ - 'hsb', - [['dop.', 'pop.'], ['dopołdnja', 'popołdnju'], u], - [['dopołdnja', 'popołdnju'], u, u], - [ - ['n', 'p', 'w', 's', 'š', 'p', 's'], ['nje', 'pón', 'wut', 'srj', 'štw', 'pja', 'sob'], - ['njedźela', 'póndźela', 'wutora', 'srjeda', 'štwórtk', 'pjatk', 'sobota'], - ['nj', 'pó', 'wu', 'sr', 'št', 'pj', 'so'] - ], - u, - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - [ - 'jan.', 'feb.', 'měr.', 'apr.', 'mej.', 'jun.', 'jul.', 'awg.', 'sep.', 'okt.', 'now.', 'dec.' - ], - [ - 'januara', 'februara', 'měrca', 'apryla', 'meje', 'junija', 'julija', 'awgusta', 'septembra', - 'oktobra', 'nowembra', 'decembra' - ] - ], - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'měr', 'apr', 'mej', 'jun', 'jul', 'awg', 'sep', 'okt', 'now', 'dec'], - [ - 'januar', 'februar', 'měrc', 'apryl', 'meja', 'junij', 'julij', 'awgust', 'september', - 'oktober', 'nowember', 'december' - ] - ], - [['př.Chr.n.', 'po Chr.n.'], u, ['před Chrystowym narodźenjom', 'po Chrystowym narodźenju']], - 1, - [6, 0], - ['d.M.yy', 'd.M.y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['H:mm \'hodź\'.', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - {'AUD': [u, '$'], 'PLN': ['zł'], 'THB': ['฿']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/hu.ts b/packages/common/locales/hu.ts deleted file mode 100644 index c928382fb4..0000000000 --- a/packages/common/locales/hu.ts +++ /dev/null @@ -1,73 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'hu', - [['de.', 'du.'], u, u], - u, - [ - ['V', 'H', 'K', 'Sz', 'Cs', 'P', 'Sz'], ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'], - ['vasárnap', 'hétfő', 'kedd', 'szerda', 'csütörtök', 'péntek', 'szombat'], - ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'] - ], - u, - [ - ['J', 'F', 'M', 'Á', 'M', 'J', 'J', 'A', 'Sz', 'O', 'N', 'D'], - [ - 'jan.', 'febr.', 'márc.', 'ápr.', 'máj.', 'jún.', 'júl.', 'aug.', 'szept.', 'okt.', 'nov.', - 'dec.' - ], - [ - 'január', 'február', 'március', 'április', 'május', 'június', 'július', 'augusztus', - 'szeptember', 'október', 'november', 'december' - ] - ], - u, - [['ie.', 'isz.'], ['i. e.', 'i. sz.'], ['Krisztus előtt', 'időszámításunk szerint']], - 1, - [6, 0], - ['y. MM. dd.', 'y. MMM d.', 'y. MMMM d.', 'y. MMMM d., EEEE'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'HUF', - 'Ft', - 'magyar forint', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'HUF': ['Ft'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XCD': [u, '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/hy.ts b/packages/common/locales/hy.ts deleted file mode 100644 index e29c2badfa..0000000000 --- a/packages/common/locales/hy.ts +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'hy', - [['ա', 'հ'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['Կ', 'Ե', 'Ե', 'Չ', 'Հ', 'Ո', 'Շ'], ['կիր', 'երկ', 'երք', 'չրք', 'հնգ', 'ուր', 'շբթ'], - ['կիրակի', 'երկուշաբթի', 'երեքշաբթի', 'չորեքշաբթի', 'հինգշաբթի', 'ուրբաթ', 'շաբաթ'], - ['կր', 'եկ', 'եք', 'չք', 'հգ', 'ու', 'շբ'] - ], - u, - [ - ['Հ', 'Փ', 'Մ', 'Ա', 'Մ', 'Հ', 'Հ', 'Օ', 'Ս', 'Հ', 'Ն', 'Դ'], - ['հնվ', 'փտվ', 'մրտ', 'ապր', 'մյս', 'հնս', 'հլս', 'օգս', 'սեպ', 'հոկ', 'նոյ', 'դեկ'], - [ - 'հունվարի', 'փետրվարի', 'մարտի', 'ապրիլի', 'մայիսի', 'հունիսի', 'հուլիսի', 'օգոստոսի', - 'սեպտեմբերի', 'հոկտեմբերի', 'նոյեմբերի', 'դեկտեմբերի' - ] - ], - [ - ['Հ', 'Փ', 'Մ', 'Ա', 'Մ', 'Հ', 'Հ', 'Օ', 'Ս', 'Հ', 'Ն', 'Դ'], - ['հնվ', 'փտվ', 'մրտ', 'ապր', 'մյս', 'հնս', 'հլս', 'օգս', 'սեպ', 'հոկ', 'նոյ', 'դեկ'], - [ - 'հունվար', 'փետրվար', 'մարտ', 'ապրիլ', 'մայիս', 'հունիս', 'հուլիս', 'օգոստոս', 'սեպտեմբեր', - 'հոկտեմբեր', 'նոյեմբեր', 'դեկտեմբեր' - ] - ], - [['մ.թ.ա.', 'մ.թ.'], u, ['Քրիստոսից առաջ', 'Քրիստոսից հետո']], - 1, - [6, 0], - ['dd.MM.yy', 'dd MMM, y թ.', 'dd MMMM, y թ.', 'y թ. MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'ՈչԹ', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'AMD', - '֏', - 'հայկական դրամ', - {'AMD': ['֏'], 'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ia.ts b/packages/common/locales/ia.ts deleted file mode 100644 index e30dda5fa1..0000000000 --- a/packages/common/locales/ia.ts +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'ia', - [['AM', 'PM'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'j', 'v', 's'], ['dom', 'lun', 'mar', 'mer', 'jov', 'ven', 'sab'], - ['dominica', 'lunedi', 'martedi', 'mercuridi', 'jovedi', 'venerdi', 'sabbato'], - ['do', 'lu', 'ma', 'me', 'jo', 've', 'sa'] - ], - u, - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'], - [ - 'januario', 'februario', 'martio', 'april', 'maio', 'junio', 'julio', 'augusto', 'septembre', - 'octobre', 'novembre', 'decembre' - ] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'], - [ - 'januario', 'februario', 'martio', 'april', 'maio', 'junio', 'julio', 'augusto', 'septembre', - 'octobre', 'novembre', 'decembre' - ] - ], - [['a.Chr.', 'p.Chr.'], u, ['ante Christo', 'post Christo']], - 1, - [6, 0], - ['dd-MM-y', 'd MMM y', 'd \'de\' MMMM y', 'EEEE \'le\' d \'de\' MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'a\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - u, - u, - u, - {'JPY': ['JP¥', '¥'], 'NLG': ['ƒ'], 'RUB': ['₽'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/id.ts b/packages/common/locales/id.ts deleted file mode 100644 index 8ba733a9f1..0000000000 --- a/packages/common/locales/id.ts +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'id', - [['AM', 'PM'], u, u], - u, - [ - ['M', 'S', 'S', 'R', 'K', 'J', 'S'], ['Min', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab'], - ['Minggu', 'Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu'], - ['Min', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Agu', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', - 'Oktober', 'November', 'Desember' - ] - ], - u, - [['SM', 'M'], u, ['Sebelum Masehi', 'Masehi']], - 0, - [6, 0], - ['dd/MM/yy', 'd MMM y', 'd MMMM y', 'EEEE, dd MMMM y'], - ['HH.mm', 'HH.mm.ss', 'HH.mm.ss z', 'HH.mm.ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', '.'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'IDR', - 'Rp', - 'Rupiah Indonesia', - { - 'AUD': ['AU$', '$'], - 'IDR': ['Rp'], - 'INR': ['Rs', '₹'], - 'JPY': ['JP¥', '¥'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ig.ts b/packages/common/locales/ig.ts deleted file mode 100644 index fd1cb255ca..0000000000 --- a/packages/common/locales/ig.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'ig', - [['A.M.', 'P.M.'], u, ['N’ụtụtụ', 'N’abali']], - [['A.M.', 'P.M.'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Ụka', 'Mọn', 'Tiu', 'Wen', 'Tọọ', 'Fraị', 'Sat'], - ['Sọndee', 'Mọnde', 'Tiuzdee', 'Wenezdee', 'Tọọzdee', 'Fraịdee', 'Satọdee'], - ['Sọn', 'Mọn', 'Tiu', 'Wen', 'Tọọ', 'Fraị', 'Sat'] - ], - u, - [ - ['J', 'F', 'M', 'E', 'M', 'J', 'J', 'Ọ', 'S', 'Ọ', 'N', 'D'], - ['Jen', 'Feb', 'Maa', 'Epr', 'Mee', 'Juu', 'Jul', 'Ọgọ', 'Sep', 'Ọkt', 'Nov', 'Dis'], - [ - 'Jenụwarị', 'Febrụwarị', 'Maachị', 'Epreel', 'Mee', 'Juun', 'Julaị', 'Ọgọọst', 'Septemba', - 'Ọktoba', 'Novemba', 'Disemba' - ] - ], - u, - [['T.K.', 'A.K.'], u, ['Tupu Kraist', 'Afọ Kraịst']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'na\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'NGN', - '₦', - 'Naịra', - {'NGN': ['₦']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ii.ts b/packages/common/locales/ii.ts deleted file mode 100644 index 67957457bc..0000000000 --- a/packages/common/locales/ii.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'ii', - [['ꎸꄑ', 'ꁯꋒ'], u, u], - u, - [ - ['ꆏ', 'ꋍ', 'ꑍ', 'ꌕ', 'ꇖ', 'ꉬ', 'ꃘ'], - ['ꑭꆏ', 'ꆏꋍ', 'ꆏꑍ', 'ꆏꌕ', 'ꆏꇖ', 'ꆏꉬ', 'ꆏꃘ'], - ['ꑭꆏꑍ', 'ꆏꊂꋍ', 'ꆏꊂꑍ', 'ꆏꊂꌕ', 'ꆏꊂꇖ', 'ꆏꊂꉬ', 'ꆏꊂꃘ'], - ['ꑭꆏ', 'ꆏꋍ', 'ꆏꑍ', 'ꆏꌕ', 'ꆏꇖ', 'ꆏꉬ', 'ꆏꃘ'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'ꋍꆪ', 'ꑍꆪ', 'ꌕꆪ', 'ꇖꆪ', 'ꉬꆪ', 'ꃘꆪ', 'ꏃꆪ', 'ꉆꆪ', 'ꈬꆪ', 'ꊰꆪ', 'ꊰꊪꆪ', - 'ꊰꑋꆪ' - ], - u - ], - u, - [['ꃅꋊꂿ', 'ꃅꋊꊂ'], u, u], - 0, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'CNY', - '¥', - 'CNY', - {'CNY': ['¥'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/index.bzl b/packages/common/locales/index.bzl new file mode 100644 index 0000000000..8a1abf0e82 --- /dev/null +++ b/packages/common/locales/index.bzl @@ -0,0 +1,94 @@ +load("@cldr_data//:index.bzl", _ALL_CLDR_LOCALES = "LOCALES") + +# There are a couple of locales for which no data is present, even within the +# CLDR full tier packages. For these locales, we do not generate any data. +# TODO(devversion): Remove once we update to CLDR v39 where this problem no longer persists. +# Note that this worked before in the Gulp tooling without such an exclusion list because the +# `cldr-data-downloader` overwrote the `availableLocales` to only capture locales with data. +NO_DATA_LOCALES = [ + "ff-Adlm", + "ff-Adlm-BF", + "ff-Adlm-CM", + "ff-Adlm-GH", + "ff-Adlm-GM", + "ff-Adlm-GW", + "ff-Adlm-LR", + "ff-Adlm-MR", + "ff-Adlm-NE", + "ff-Adlm-NG", + "ff-Adlm-SL", + "ff-Adlm-SN", + "mai", + "mni", + "mni-Beng", + "ms-ID", + "pcm", + "sat", + "sat-Olck", + "sd-Deva", + "su", + "su-Latn", +] + +# List of locales the tool can generate files for. +LOCALES = [l for l in _ALL_CLDR_LOCALES if l not in NO_DATA_LOCALES] + +# Labels resolving to the individual `generate-locale-tool` entry-points +GENERATE_LOCALES_TOOL_BIN = "//packages/common/locales/generate-locales-tool/bin" +GET_BASE_CURRENCIES_FILE_BIN = "%s:get-base-currencies-file" % GENERATE_LOCALES_TOOL_BIN +GET_BASE_LOCALE_FILE_BIN = "%s:get-base-locale-file" % GENERATE_LOCALES_TOOL_BIN +GET_CLOSURE_LOCALE_FILE_BIN = "%s:get-closure-locale-file" % GENERATE_LOCALES_TOOL_BIN +WRITE_LOCALE_FILES_TO_DIST_BIN = "%s:write-locale-files-to-dist" % GENERATE_LOCALES_TOOL_BIN + +def _run_tool_with_single_output(name, output_file, tool, **kwargs): + native.genrule( + name = name, + outs = [output_file], + srcs = [], + exec_tools = [tool], + cmd = """$(location %s) > $@""" % tool, + **kwargs + ) + +def generate_base_currencies_file(name, output_file, **kwargs): + _run_tool_with_single_output( + name = name, + output_file = output_file, + tool = GET_BASE_CURRENCIES_FILE_BIN, + **kwargs + ) + +def generate_base_locale_file(name, output_file, **kwargs): + _run_tool_with_single_output( + name = name, + output_file = output_file, + tool = GET_BASE_LOCALE_FILE_BIN, + **kwargs + ) + +def generate_closure_locales_file(name, output_file, **kwargs): + _run_tool_with_single_output( + name = name, + output_file = output_file, + tool = GET_CLOSURE_LOCALE_FILE_BIN, + **kwargs + ) + +def generate_all_locale_files(name, **kwargs): + locale_files = [] + + for locale in LOCALES: + locale_files += [ + "%s.ts" % locale, + "global/%s.js" % locale, + "extra/%s.ts" % locale, + ] + + native.genrule( + name = name, + outs = locale_files, + srcs = [], + exec_tools = [WRITE_LOCALE_FILES_TO_DIST_BIN], + cmd = """$(location %s) $(@D)""" % WRITE_LOCALE_FILES_TO_DIST_BIN, + **kwargs + ) diff --git a/packages/common/locales/is.ts b/packages/common/locales/is.ts deleted file mode 100644 index aedaa79ef9..0000000000 --- a/packages/common/locales/is.ts +++ /dev/null @@ -1,71 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), - t = parseInt(n.toString().replace(/^[^.]*\.?|0+$/g, ''), 10) || 0; - if (t === 0 && i % 10 === 1 && !(i % 100 === 11) || !(t === 0)) return 1; - return 5; -} - -export default [ - 'is', - [['f.', 'e.'], ['f.h.', 'e.h.'], u], - [['f.h.', 'e.h.'], u, u], - [ - ['S', 'M', 'Þ', 'M', 'F', 'F', 'L'], ['sun.', 'mán.', 'þri.', 'mið.', 'fim.', 'fös.', 'lau.'], - [ - 'sunnudagur', 'mánudagur', 'þriðjudagur', 'miðvikudagur', 'fimmtudagur', 'föstudagur', - 'laugardagur' - ], - ['su.', 'má.', 'þr.', 'mi.', 'fi.', 'fö.', 'la.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'Á', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mar.', 'apr.', 'maí', 'jún.', 'júl.', 'ágú.', 'sep.', 'okt.', 'nóv.', 'des.'], - [ - 'janúar', 'febrúar', 'mars', 'apríl', 'maí', 'júní', 'júlí', 'ágúst', 'september', 'október', - 'nóvember', 'desember' - ] - ], - u, - [['f.k.', 'e.k.'], ['f.Kr.', 'e.Kr.'], ['fyrir Krist', 'eftir Krist']], - 1, - [6, 0], - ['d.M.y', 'd. MMM y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'kl\'. {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'ISK', - 'ISK', - 'íslensk króna', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'INR': [u, '₹'], - 'JPY': ['JP¥', '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/it-CH.ts b/packages/common/locales/it-CH.ts deleted file mode 100644 index 2841d9719b..0000000000 --- a/packages/common/locales/it-CH.ts +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'it-CH', - [['m.', 'p.'], ['AM', 'PM'], u], - u, - [ - ['D', 'L', 'M', 'M', 'G', 'V', 'S'], ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'], - ['domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato'], - ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'] - ], - u, - [ - ['G', 'F', 'M', 'A', 'M', 'G', 'L', 'A', 'S', 'O', 'N', 'D'], - ['gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago', 'set', 'ott', 'nov', 'dic'], - [ - 'gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', - 'ottobre', 'novembre', 'dicembre' - ] - ], - u, - [['aC', 'dC'], ['a.C.', 'd.C.'], ['avanti Cristo', 'dopo Cristo']], - 1, - [6, 0], - ['dd.MM.yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - ['.', '’', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤-#,##0.00', '#E0'], - 'CHF', - 'CHF', - 'franco svizzero', - { - 'BRL': [u, 'R$'], - 'BYN': [u, 'Br'], - 'EGP': [u, '£E'], - 'HKD': [u, '$'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NOK': [u, 'NKr'], - 'THB': ['฿'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/it-SM.ts b/packages/common/locales/it-SM.ts deleted file mode 100644 index 17475957ee..0000000000 --- a/packages/common/locales/it-SM.ts +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'it-SM', - [['m.', 'p.'], ['AM', 'PM'], u], - u, - [ - ['D', 'L', 'M', 'M', 'G', 'V', 'S'], ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'], - ['domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato'], - ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'] - ], - u, - [ - ['G', 'F', 'M', 'A', 'M', 'G', 'L', 'A', 'S', 'O', 'N', 'D'], - ['gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago', 'set', 'ott', 'nov', 'dic'], - [ - 'gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', - 'ottobre', 'novembre', 'dicembre' - ] - ], - u, - [['aC', 'dC'], ['a.C.', 'd.C.'], ['avanti Cristo', 'dopo Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'BRL': [u, 'R$'], - 'BYN': [u, 'Br'], - 'EGP': [u, '£E'], - 'HKD': [u, '$'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NOK': [u, 'NKr'], - 'THB': ['฿'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/it-VA.ts b/packages/common/locales/it-VA.ts deleted file mode 100644 index b089567335..0000000000 --- a/packages/common/locales/it-VA.ts +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'it-VA', - [['m.', 'p.'], ['AM', 'PM'], u], - u, - [ - ['D', 'L', 'M', 'M', 'G', 'V', 'S'], ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'], - ['domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato'], - ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'] - ], - u, - [ - ['G', 'F', 'M', 'A', 'M', 'G', 'L', 'A', 'S', 'O', 'N', 'D'], - ['gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago', 'set', 'ott', 'nov', 'dic'], - [ - 'gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', - 'ottobre', 'novembre', 'dicembre' - ] - ], - u, - [['aC', 'dC'], ['a.C.', 'd.C.'], ['avanti Cristo', 'dopo Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'BRL': [u, 'R$'], - 'BYN': [u, 'Br'], - 'EGP': [u, '£E'], - 'HKD': [u, '$'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NOK': [u, 'NKr'], - 'THB': ['฿'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/it.ts b/packages/common/locales/it.ts deleted file mode 100644 index ee8931d481..0000000000 --- a/packages/common/locales/it.ts +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'it', - [['m.', 'p.'], ['AM', 'PM'], u], - u, - [ - ['D', 'L', 'M', 'M', 'G', 'V', 'S'], ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'], - ['domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato'], - ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'] - ], - u, - [ - ['G', 'F', 'M', 'A', 'M', 'G', 'L', 'A', 'S', 'O', 'N', 'D'], - ['gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago', 'set', 'ott', 'nov', 'dic'], - [ - 'gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', - 'ottobre', 'novembre', 'dicembre' - ] - ], - u, - [['aC', 'dC'], ['a.C.', 'd.C.'], ['avanti Cristo', 'dopo Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'BRL': [u, 'R$'], - 'BYN': [u, 'Br'], - 'EGP': [u, '£E'], - 'HKD': [u, '$'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NOK': [u, 'NKr'], - 'THB': ['฿'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ja.ts b/packages/common/locales/ja.ts deleted file mode 100644 index 1b1b4f56a8..0000000000 --- a/packages/common/locales/ja.ts +++ /dev/null @@ -1,47 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'ja', - [['午前', '午後'], u, u], - u, - [ - ['日', '月', '火', '水', '木', '金', '土'], u, - ['日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日'], - ['日', '月', '火', '水', '木', '金', '土'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], u - ], - u, - [['BC', 'AD'], ['紀元前', '西暦'], u], - 0, - [6, 0], - ['y/MM/dd', u, 'y年M月d日', 'y年M月d日EEEE'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H時mm分ss秒 zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'JPY', - '¥', - '日本円', - {'CNY': ['元', '¥'], 'JPY': ['¥'], 'RON': [u, 'レイ'], 'XXX': []}, - 'ltr', - plural -]; diff --git a/packages/common/locales/jgo.ts b/packages/common/locales/jgo.ts deleted file mode 100644 index 741f98b863..0000000000 --- a/packages/common/locales/jgo.ts +++ /dev/null @@ -1,55 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'jgo', - [['mbaꞌmbaꞌ', 'ŋka mbɔ́t nji'], u, u], - u, - [ - ['Sɔ́', 'Mɔ́', 'ÁM', 'Wɛ́', 'Tɔ́', 'Fɛ', 'Sá'], - ['Sɔ́ndi', 'Mɔ́ndi', 'Ápta Mɔ́ndi', 'Wɛ́nɛsɛdɛ', 'Tɔ́sɛdɛ', 'Fɛlâyɛdɛ', 'Sásidɛ'], u, u - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'Nduŋmbi Saŋ', 'Pɛsaŋ Pɛ́pá', 'Pɛsaŋ Pɛ́tát', 'Pɛsaŋ Pɛ́nɛ́kwa', 'Pɛsaŋ Pataa', 'Pɛsaŋ Pɛ́nɛ́ntúkú', - 'Pɛsaŋ Saambá', 'Pɛsaŋ Pɛ́nɛ́fɔm', 'Pɛsaŋ Pɛ́nɛ́pfúꞋú', 'Pɛsaŋ Nɛgɛ́m', 'Pɛsaŋ Ntsɔ̌pmɔ́', - 'Pɛsaŋ Ntsɔ̌ppá' - ], - u - ], - u, - [ - ['BCE', 'CE'], u, - ['tsɛttsɛt mɛŋguꞌ mi ɛ́ lɛɛnɛ Kɛlísɛtɔ gɔ ńɔ́', 'tsɛttsɛt mɛŋguꞌ mi ɛ́ fúnɛ Kɛlísɛtɔ tɔ́ mɔ́'] - ], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'EEEE, y MMMM dd'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'XAF', - 'FCFA', - 'Fɛlâŋ', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/jmc.ts b/packages/common/locales/jmc.ts deleted file mode 100644 index 2f4654df6b..0000000000 --- a/packages/common/locales/jmc.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'jmc', - [['utuko', 'kyiukonyi'], u, u], - u, - [ - ['J', 'J', 'J', 'J', 'A', 'I', 'J'], ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - ['Jumapilyi', 'Jumatatuu', 'Jumanne', 'Jumatanu', 'Alhamisi', 'Ijumaa', 'Jumamosi'], - ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januari', 'Februari', 'Machi', 'Aprilyi', 'Mei', 'Junyi', 'Julyai', 'Agusti', 'Septemba', - 'Oktoba', 'Novemba', 'Desemba' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Kristu', 'Baada ya Kristu']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'TZS', - 'TSh', - 'Shilingi ya Tanzania', - {'JPY': ['JP¥', '¥'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/jv.ts b/packages/common/locales/jv.ts deleted file mode 100644 index 5125d52a90..0000000000 --- a/packages/common/locales/jv.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'jv', - [['Isuk', 'Wengi'], u, u], - u, - [ - ['A', 'S', 'S', 'R', 'K', 'J', 'S'], ['Ahad', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab'], - ['Ahad', 'Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu'], - ['Ahad', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Agt', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', - 'Oktober', 'November', 'Desember' - ] - ], - u, - [['SM', 'M'], u, ['Sakdurunge Masehi', 'Masehi']], - 0, - [6, 0], - ['dd-MM-y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'IDR', - 'Rp', - 'Rupiah Indonesia', - {'IDR': ['Rp'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ka.ts b/packages/common/locales/ka.ts deleted file mode 100644 index 59d739156c..0000000000 --- a/packages/common/locales/ka.ts +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ka', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['კ', 'ო', 'ს', 'ო', 'ხ', 'პ', 'შ'], ['კვი', 'ორშ', 'სამ', 'ოთხ', 'ხუთ', 'პარ', 'შაბ'], - ['კვირა', 'ორშაბათი', 'სამშაბათი', 'ოთხშაბათი', 'ხუთშაბათი', 'პარასკევი', 'შაბათი'], - ['კვ', 'ორ', 'სმ', 'ოთ', 'ხთ', 'პრ', 'შბ'] - ], - u, - [ - ['ი', 'თ', 'მ', 'ა', 'მ', 'ი', 'ი', 'ა', 'ს', 'ო', 'ნ', 'დ'], - ['იან', 'თებ', 'მარ', 'აპრ', 'მაი', 'ივნ', 'ივლ', 'აგვ', 'სექ', 'ოქტ', 'ნოე', 'დეკ'], - [ - 'იანვარი', 'თებერვალი', 'მარტი', 'აპრილი', 'მაისი', 'ივნისი', 'ივლისი', 'აგვისტო', - 'სექტემბერი', 'ოქტომბერი', 'ნოემბერი', 'დეკემბერი' - ] - ], - u, - [['ძვ. წ.', 'ახ. წ.'], u, ['ძველი წელთაღრიცხვით', 'ახალი წელთაღრიცხვით']], - 1, - [6, 0], - ['dd.MM.yy', 'd MMM. y', 'd MMMM, y', 'EEEE, dd MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'არ არის რიცხვი', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'GEL', - '₾', - 'ქართული ლარი', - { - 'AUD': [u, '$'], - 'CNY': [u, '¥'], - 'GEL': ['₾'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/kab.ts b/packages/common/locales/kab.ts deleted file mode 100644 index f85c6296c2..0000000000 --- a/packages/common/locales/kab.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || i === 1) return 1; - return 5; -} - -export default [ - 'kab', - [['n tufat', 'n tmeddit'], u, u], - u, - [ - ['Y', 'S', 'K', 'K', 'S', 'S', 'S'], ['Yan', 'San', 'Kraḍ', 'Kuẓ', 'Sam', 'Sḍis', 'Say'], - ['Yanass', 'Sanass', 'Kraḍass', 'Kuẓass', 'Samass', 'Sḍisass', 'Sayass'], - ['Yan', 'San', 'Kraḍ', 'Kuẓ', 'Sam', 'Sḍis', 'Say'] - ], - u, - [ - ['Y', 'F', 'M', 'Y', 'M', 'Y', 'Y', 'Ɣ', 'C', 'T', 'N', 'D'], - ['Yen', 'Fur', 'Meɣ', 'Yeb', 'May', 'Yun', 'Yul', 'Ɣuc', 'Cte', 'Tub', 'Nun', 'Duǧ'], - [ - 'Yennayer', 'Fuṛar', 'Meɣres', 'Yebrir', 'Mayyu', 'Yunyu', 'Yulyu', 'Ɣuct', 'Ctembeṛ', - 'Tubeṛ', 'Nunembeṛ', 'Duǧembeṛ' - ] - ], - u, - [['snd. T.Ɛ', 'sld. T.Ɛ'], u, ['send talalit n Ɛisa', 'seld talalit n Ɛisa']], - 6, - [5, 6], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'DZD', - 'DA', - 'Adinar Azzayri', - {'DZD': ['DA'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/kam.ts b/packages/common/locales/kam.ts deleted file mode 100644 index 50277106fa..0000000000 --- a/packages/common/locales/kam.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'kam', - [['Ĩyakwakya', 'Ĩyawĩoo'], u, u], - u, - [ - ['Y', 'W', 'E', 'A', 'A', 'A', 'A'], ['Wky', 'Wkw', 'Wkl', 'Wtũ', 'Wkn', 'Wtn', 'Wth'], - ['Wa kyumwa', 'Wa kwambĩlĩlya', 'Wa kelĩ', 'Wa katatũ', 'Wa kana', 'Wa katano', 'Wa thanthatũ'], - ['Wky', 'Wkw', 'Wkl', 'Wtũ', 'Wkn', 'Wtn', 'Wth'] - ], - u, - [ - ['M', 'K', 'K', 'K', 'K', 'T', 'M', 'N', 'K', 'Ĩ', 'Ĩ', 'Ĩ'], - ['Mbe', 'Kel', 'Ktũ', 'Kan', 'Ktn', 'Tha', 'Moo', 'Nya', 'Knd', 'Ĩku', 'Ĩkm', 'Ĩkl'], - [ - 'Mwai wa mbee', 'Mwai wa kelĩ', 'Mwai wa katatũ', 'Mwai wa kana', 'Mwai wa katano', - 'Mwai wa thanthatũ', 'Mwai wa muonza', 'Mwai wa nyaanya', 'Mwai wa kenda', 'Mwai wa ĩkumi', - 'Mwai wa ĩkumi na ĩmwe', 'Mwai wa ĩkumi na ilĩ' - ] - ], - u, - [['MY', 'IY'], u, ['Mbee wa Yesũ', 'Ĩtina wa Yesũ']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Silingi ya Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/kde.ts b/packages/common/locales/kde.ts deleted file mode 100644 index a8d508bb0c..0000000000 --- a/packages/common/locales/kde.ts +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'kde', - [['Muhi', 'Chilo'], u, u], - u, - [ - ['2', '3', '4', '5', '6', '7', '1'], ['Ll2', 'Ll3', 'Ll4', 'Ll5', 'Ll6', 'Ll7', 'Ll1'], - [ - 'Liduva lyapili', 'Liduva lyatatu', 'Liduva lyanchechi', 'Liduva lyannyano', - 'Liduva lyannyano na linji', 'Liduva lyannyano na mavili', 'Liduva litandi' - ], - ['Ll2', 'Ll3', 'Ll4', 'Ll5', 'Ll6', 'Ll7', 'Ll1'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Mwedi Ntandi', 'Mwedi wa Pili', 'Mwedi wa Tatu', 'Mwedi wa Nchechi', 'Mwedi wa Nnyano', - 'Mwedi wa Nnyano na Umo', 'Mwedi wa Nnyano na Mivili', 'Mwedi wa Nnyano na Mitatu', - 'Mwedi wa Nnyano na Nchechi', 'Mwedi wa Nnyano na Nnyano', 'Mwedi wa Nnyano na Nnyano na U', - 'Mwedi wa Nnyano na Nnyano na M' - ] - ], - u, - [['AY', 'NY'], u, ['Akanapawa Yesu', 'Nankuida Yesu']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'TZS', - 'TSh', - 'Shilingi ya Tanzania', - {'JPY': ['JP¥', '¥'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/kea.ts b/packages/common/locales/kea.ts deleted file mode 100644 index 46e52a5860..0000000000 --- a/packages/common/locales/kea.ts +++ /dev/null @@ -1,55 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'kea', - [['am', 'pm'], u, u], - u, - [ - ['D', 'S', 'T', 'K', 'K', 'S', 'S'], ['dum', 'sig', 'ter', 'kua', 'kin', 'ses', 'sab'], - ['dumingu', 'sigunda-fera', 'tersa-fera', 'kuarta-fera', 'kinta-fera', 'sesta-fera', 'sabadu'], - ['du', 'si', 'te', 'ku', 'ki', 'se', 'sa'] - ], - [ - ['D', 'S', 'T', 'K', 'K', 'S', 'S'], ['dum', 'sig', 'ter', 'kua', 'kin', 'ses', 'sab'], - ['dumingu', 'sigunda-fera', 'tersa-fera', 'kuarta-fera', 'kinta-fera', 'sesta-fera', 'sábadu'], - ['du', 'si', 'te', 'ku', 'ki', 'se', 'sa'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Otu', 'Nuv', 'Diz'], - [ - 'Janeru', 'Febreru', 'Marsu', 'Abril', 'Maiu', 'Junhu', 'Julhu', 'Agostu', 'Setenbru', - 'Otubru', 'Nuvenbru', 'Dizenbru' - ] - ], - u, - [['AK', 'DK'], u, ['antis di Kristu', 'dispos di Kristu']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd \'di\' MMMM \'di\' y', 'EEEE, d \'di\' MMMM \'di\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'CVE', - '​', - 'Skudu Kabuverdianu', - {'AUD': ['AU$', '$'], 'CVE': ['​'], 'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/khq.ts b/packages/common/locales/khq.ts deleted file mode 100644 index d00461f677..0000000000 --- a/packages/common/locales/khq.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'khq', - [['Adduha', 'Aluula'], u, u], - u, - [ - ['H', 'T', 'T', 'L', 'L', 'L', 'S'], ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alj', 'Ass'], - ['Alhadi', 'Atini', 'Atalata', 'Alarba', 'Alhamiisa', 'Aljuma', 'Assabdu'], - ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alj', 'Ass'] - ], - u, - [ - ['Ž', 'F', 'M', 'A', 'M', 'Ž', 'Ž', 'U', 'S', 'O', 'N', 'D'], - ['Žan', 'Fee', 'Mar', 'Awi', 'Me', 'Žuw', 'Žuy', 'Ut', 'Sek', 'Okt', 'Noo', 'Dee'], - [ - 'Žanwiye', 'Feewiriye', 'Marsi', 'Awiril', 'Me', 'Žuweŋ', 'Žuyye', 'Ut', 'Sektanbur', - 'Oktoobur', 'Noowanbur', 'Deesanbur' - ] - ], - u, - [['IJ', 'IZ'], u, ['Isaa jine', 'Isaa jamanoo']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'XOF', - 'CFA', - 'CFA Fraŋ (BCEAO)', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ki.ts b/packages/common/locales/ki.ts deleted file mode 100644 index ae9df92e94..0000000000 --- a/packages/common/locales/ki.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'ki', - [['Kiroko', 'Hwaĩ-inĩ'], u, u], - u, - [ - ['K', 'N', 'N', 'N', 'A', 'N', 'N'], ['KMA', 'NTT', 'NMN', 'NMT', 'ART', 'NMA', 'NMM'], - ['Kiumia', 'Njumatatũ', 'Njumaine', 'Njumatana', 'Aramithi', 'Njumaa', 'Njumamothi'], - ['KMA', 'NTT', 'NMN', 'NMT', 'ART', 'NMA', 'NMM'] - ], - u, - [ - ['J', 'K', 'G', 'K', 'G', 'G', 'M', 'K', 'K', 'I', 'I', 'D'], - ['JEN', 'WKR', 'WGT', 'WKN', 'WTN', 'WTD', 'WMJ', 'WNN', 'WKD', 'WIK', 'WMW', 'DIT'], - [ - 'Njenuarĩ', 'Mwere wa kerĩ', 'Mwere wa gatatũ', 'Mwere wa kana', 'Mwere wa gatano', - 'Mwere wa gatandatũ', 'Mwere wa mũgwanja', 'Mwere wa kanana', 'Mwere wa kenda', - 'Mwere wa ikũmi', 'Mwere wa ikũmi na ũmwe', 'Ndithemba' - ] - ], - u, - [['MK', 'TK'], u, ['Mbere ya Kristo', 'Thutha wa Kristo']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Ciringi ya Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/kk.ts b/packages/common/locales/kk.ts deleted file mode 100644 index f49b557864..0000000000 --- a/packages/common/locales/kk.ts +++ /dev/null @@ -1,63 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'kk', - [['AM', 'PM'], u, u], - u, - [ - ['Ж', 'Д', 'С', 'С', 'Б', 'Ж', 'С'], ['жс', 'дс', 'сс', 'ср', 'бс', 'жм', 'сб'], - ['жексенбі', 'дүйсенбі', 'сейсенбі', 'сәрсенбі', 'бейсенбі', 'жұма', 'сенбі'], - ['жс', 'дс', 'сс', 'ср', 'бс', 'жм', 'сб'] - ], - u, - [ - ['Қ', 'А', 'Н', 'С', 'М', 'М', 'Ш', 'Т', 'Қ', 'Қ', 'Қ', 'Ж'], - [ - 'қаң.', 'ақп.', 'нау.', 'сәу.', 'мам.', 'мау.', 'шіл.', 'там.', 'қыр.', 'қаз.', 'қар.', 'жел.' - ], - [ - 'қаңтар', 'ақпан', 'наурыз', 'сәуір', 'мамыр', 'маусым', 'шілде', 'тамыз', 'қыркүйек', - 'қазан', 'қараша', 'желтоқсан' - ] - ], - [ - ['Қ', 'А', 'Н', 'С', 'М', 'М', 'Ш', 'Т', 'Қ', 'Қ', 'Қ', 'Ж'], - [ - 'қаң.', 'ақп.', 'нау.', 'сәу.', 'мам.', 'мау.', 'шіл.', 'там.', 'қыр.', 'қаз.', 'қар.', 'жел.' - ], - [ - 'Қаңтар', 'Ақпан', 'Наурыз', 'Сәуір', 'Мамыр', 'Маусым', 'Шілде', 'Тамыз', 'Қыркүйек', - 'Қазан', 'Қараша', 'Желтоқсан' - ] - ], - [['б.з.д.', 'б.з.'], u, ['Біздің заманымызға дейін', 'біздің заманымыз']], - 1, - [6, 0], - ['dd.MM.yy', 'y \'ж\'. dd MMM', 'y \'ж\'. d MMMM', 'y \'ж\'. d MMMM, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'сан емес', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'KZT', - '₸', - 'Қазақстан теңгесі', - {'JPY': ['JP¥', '¥'], 'KZT': ['₸'], 'RUB': ['₽'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/kkj.ts b/packages/common/locales/kkj.ts deleted file mode 100644 index fb93a1e3bf..0000000000 --- a/packages/common/locales/kkj.ts +++ /dev/null @@ -1,55 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'kkj', - [['AM', 'PM'], u, u], - u, - [ - ['so', 'lu', 'ma', 'mɛ', 'ye', 'va', 'ms'], - ['sɔndi', 'lundi', 'mardi', 'mɛrkɛrɛdi', 'yedi', 'vaŋdɛrɛdi', 'mɔnɔ sɔndi'], u, u - ], - [ - ['so', 'lu', 'ma', 'mɛ', 'ye', 'va', 'ms'], - ['sɔndi', 'lundi', 'mardi', 'mɛrkɛrɛdi', 'yedi', 'vaŋdɛrɛdi', 'mɔnɔ sɔndi'], u, - ['so', 'lu', 'ma', 'mɛ', 'ye', 'va', 'ms'] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'pamba', 'wanja', 'mbiyɔ mɛndoŋgɔ', 'Nyɔlɔmbɔŋgɔ', 'Mɔnɔ ŋgbanja', 'Nyaŋgwɛ ŋgbanja', - 'kuŋgwɛ', 'fɛ', 'njapi', 'nyukul', 'M11', 'ɓulɓusɛ' - ], - u - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['dd/MM y', 'd MMM y', 'd MMMM y', 'EEEE dd MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'XAF', - 'FCFA', - 'Franc CFA', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/kl.ts b/packages/common/locales/kl.ts deleted file mode 100644 index 03d5a07805..0000000000 --- a/packages/common/locales/kl.ts +++ /dev/null @@ -1,62 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'kl', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['sap', 'ata', 'mar', 'pin', 'sis', 'tal', 'arf'], - [ - 'sapaat', 'ataasinngorneq', 'marlunngorneq', 'pingasunngorneq', 'sisamanngorneq', - 'tallimanngorneq', 'arfininngorneq' - ], - ['sap', 'ata', 'mar', 'pin', 'sis', 'tal', 'arf'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['jan', 'febr', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sept', 'okt', 'nov', 'dec'], - [ - 'januaarip', 'februaarip', 'marsip', 'apriilip', 'maajip', 'juunip', 'juulip', 'aggustip', - 'septembarip', 'oktobarip', 'novembarip', 'decembarip' - ] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['jan', 'febr', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sept', 'okt', 'nov', 'dec'], - [ - 'januaari', 'februaari', 'marsi', 'apriili', 'maaji', 'juuni', 'juuli', 'aggusti', - 'septembari', 'oktobari', 'novembari', 'decembari' - ] - ], - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH.mm', 'HH.mm.ss', 'HH.mm.ss z', 'HH.mm.ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤#,##0.00;¤-#,##0.00', '#E0'], - 'DKK', - 'kr.', - 'DKK', - {'DKK': ['kr.', 'kr'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/kln.ts b/packages/common/locales/kln.ts deleted file mode 100644 index 61c43777a2..0000000000 --- a/packages/common/locales/kln.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'kln', - [['krn', 'koosk'], u, ['karoon', 'kooskoliny']], - [['krn', 'koosk'], u, u], - [ - ['T', 'T', 'O', 'S', 'A', 'M', 'L'], ['Kts', 'Kot', 'Koo', 'Kos', 'Koa', 'Kom', 'Kol'], - ['Kotisap', 'Kotaai', 'Koaeng’', 'Kosomok', 'Koang’wan', 'Komuut', 'Kolo'], - ['Kts', 'Kot', 'Koo', 'Kos', 'Koa', 'Kom', 'Kol'] - ], - u, - [ - ['M', 'N', 'T', 'I', 'M', 'P', 'N', 'R', 'B', 'E', 'K', 'K'], - ['Mul', 'Ngat', 'Taa', 'Iwo', 'Mam', 'Paa', 'Nge', 'Roo', 'Bur', 'Epe', 'Kpt', 'Kpa'], - [ - 'Mulgul', 'Ng’atyaato', 'Kiptaamo', 'Iwootkuut', 'Mamuut', 'Paagi', 'Ng’eiyeet', 'Rooptui', - 'Bureet', 'Epeeso', 'Kipsuunde ne taai', 'Kipsuunde nebo aeng’' - ] - ], - u, - [['AM', 'KO'], u, ['Amait kesich Jesu', 'Kokakesich Jesu']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Silingitab ya Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/km.ts b/packages/common/locales/km.ts deleted file mode 100644 index f29ebc53e8..0000000000 --- a/packages/common/locales/km.ts +++ /dev/null @@ -1,49 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'km', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['អ', 'ច', 'អ', 'ព', 'ព', 'ស', 'ស'], ['អាទិត្យ', 'ចន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហ', 'សុក្រ', 'សៅរ៍'], - ['អាទិត្យ', 'ច័ន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហស្បតិ៍', 'សុក្រ', 'សៅរ៍'], ['អា', 'ច', 'អ', 'ពុ', 'ព្រ', 'សុ', 'ស'] - ], - [ - ['អ', 'ច', 'អ', 'ព', 'ព', 'ស', 'ស'], ['អាទិត្យ', 'ចន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហ', 'សុក្រ', 'សៅរ៍'], - ['អាទិត្យ', 'ចន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហស្បតិ៍', 'សុក្រ', 'សៅរ៍'], ['អា', 'ច', 'អ', 'ពុ', 'ព្រ', 'សុ', 'ស'] - ], - [ - ['ម', 'ក', 'ម', 'ម', 'ឧ', 'ម', 'ក', 'ស', 'ក', 'ត', 'វ', 'ធ'], - ['មករា', 'កុម្ភៈ', 'មីនា', 'មេសា', 'ឧសភា', 'មិថុនា', 'កក្កដា', 'សីហា', 'កញ្ញា', 'តុលា', 'វិច្ឆិកា', 'ធ្នូ'], u - ], - u, - [['មុន គ.ស.', 'គ.ស.'], u, ['មុន​គ្រិស្តសករាជ', 'គ្រិស្តសករាជ']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} នៅ​ម៉ោង {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'KHR', - '៛', - 'រៀល​កម្ពុជា', - {'JPY': ['JP¥', '¥'], 'KHR': ['៛'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/kn.ts b/packages/common/locales/kn.ts deleted file mode 100644 index 38181b8f1a..0000000000 --- a/packages/common/locales/kn.ts +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} - -export default [ - 'kn', - [['ಪೂ', 'ಅ'], ['ಪೂರ್ವಾಹ್ನ', 'ಅಪರಾಹ್ನ'], u], - [['ಪೂರ್ವಾಹ್ನ', 'ಅಪರಾಹ್ನ'], u, u], - [ - ['ಭಾ', 'ಸೋ', 'ಮಂ', 'ಬು', 'ಗು', 'ಶು', 'ಶ'], ['ಭಾನು', 'ಸೋಮ', 'ಮಂಗಳ', 'ಬುಧ', 'ಗುರು', 'ಶುಕ್ರ', 'ಶನಿ'], - ['ಭಾನುವಾರ', 'ಸೋಮವಾರ', 'ಮಂಗಳವಾರ', 'ಬುಧವಾರ', 'ಗುರುವಾರ', 'ಶುಕ್ರವಾರ', 'ಶನಿವಾರ'], - ['ಭಾನು', 'ಸೋಮ', 'ಮಂಗಳ', 'ಬುಧ', 'ಗುರು', 'ಶುಕ್ರ', 'ಶನಿ'] - ], - u, - [ - ['ಜ', 'ಫೆ', 'ಮಾ', 'ಏ', 'ಮೇ', 'ಜೂ', 'ಜು', 'ಆ', 'ಸೆ', 'ಅ', 'ನ', 'ಡಿ'], - ['ಜನವರಿ', 'ಫೆಬ್ರವರಿ', 'ಮಾರ್ಚ್', 'ಏಪ್ರಿ', 'ಮೇ', 'ಜೂನ್', 'ಜುಲೈ', 'ಆಗ', 'ಸೆಪ್ಟೆಂ', 'ಅಕ್ಟೋ', 'ನವೆಂ', 'ಡಿಸೆಂ'], - [ - 'ಜನವರಿ', 'ಫೆಬ್ರವರಿ', 'ಮಾರ್ಚ್', 'ಏಪ್ರಿಲ್', 'ಮೇ', 'ಜೂನ್', 'ಜುಲೈ', 'ಆಗಸ್ಟ್', 'ಸೆಪ್ಟೆಂಬರ್', 'ಅಕ್ಟೋಬರ್', 'ನವೆಂಬರ್', - 'ಡಿಸೆಂಬರ್' - ] - ], - [ - ['ಜ', 'ಫೆ', 'ಮಾ', 'ಏ', 'ಮೇ', 'ಜೂ', 'ಜು', 'ಆ', 'ಸೆ', 'ಅ', 'ನ', 'ಡಿ'], - ['ಜನ', 'ಫೆಬ್ರ', 'ಮಾರ್ಚ್', 'ಏಪ್ರಿ', 'ಮೇ', 'ಜೂನ್', 'ಜುಲೈ', 'ಆಗ', 'ಸೆಪ್ಟೆಂ', 'ಅಕ್ಟೋ', 'ನವೆಂ', 'ಡಿಸೆಂ'], - [ - 'ಜನವರಿ', 'ಫೆಬ್ರವರಿ', 'ಮಾರ್ಚ್', 'ಏಪ್ರಿಲ್', 'ಮೇ', 'ಜೂನ್', 'ಜುಲೈ', 'ಆಗಸ್ಟ್', 'ಸೆಪ್ಟೆಂಬರ್', 'ಅಕ್ಟೋಬರ್', 'ನವೆಂಬರ್', - 'ಡಿಸೆಂಬರ್' - ] - ], - [['ಕ್ರಿ.ಪೂ', 'ಕ್ರಿ.ಶ'], u, ['ಕ್ರಿಸ್ತ ಪೂರ್ವ', 'ಕ್ರಿಸ್ತ ಶಕ']], - 0, - [0, 0], - ['d/M/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['hh:mm a', 'hh:mm:ss a', 'hh:mm:ss a z', 'hh:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'INR', - '₹', - 'ಭಾರತೀಯ ರೂಪಾಯಿ', - {'JPY': ['JP¥', '¥'], 'RON': [u, 'ಲೀ'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ko-KP.ts b/packages/common/locales/ko-KP.ts deleted file mode 100644 index fd573178dd..0000000000 --- a/packages/common/locales/ko-KP.ts +++ /dev/null @@ -1,44 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'ko-KP', - [['AM', 'PM'], u, ['오전', '오후']], - u, - [ - ['일', '월', '화', '수', '목', '금', '토'], u, - ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'], - ['일', '월', '화', '수', '목', '금', '토'] - ], - u, - [['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'], u, u], - u, - [['BC', 'AD'], u, ['기원전', '서기']], - 1, - [6, 0], - ['yy. M. d.', 'y. M. d.', 'y년 M월 d일', 'y년 M월 d일 EEEE'], - ['a h:mm', 'a h:mm:ss', 'a h시 m분 s초 z', 'a h시 m분 s초 zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KPW', - 'KPW', - '조선 민주주의 인민 공화국 원', - {'AUD': ['AU$', '$'], 'JPY': ['JP¥', '¥'], 'RON': [u, 'L'], 'TWD': ['NT$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ko.ts b/packages/common/locales/ko.ts deleted file mode 100644 index 9d60d1eefa..0000000000 --- a/packages/common/locales/ko.ts +++ /dev/null @@ -1,44 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'ko', - [['AM', 'PM'], u, ['오전', '오후']], - u, - [ - ['일', '월', '화', '수', '목', '금', '토'], u, - ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'], - ['일', '월', '화', '수', '목', '금', '토'] - ], - u, - [['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'], u, u], - u, - [['BC', 'AD'], u, ['기원전', '서기']], - 0, - [6, 0], - ['yy. M. d.', 'y. M. d.', 'y년 M월 d일', 'y년 M월 d일 EEEE'], - ['a h:mm', 'a h:mm:ss', 'a h시 m분 s초 z', 'a h시 m분 s초 zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KRW', - '₩', - '대한민국 원', - {'AUD': ['AU$', '$'], 'JPY': ['JP¥', '¥'], 'RON': [u, 'L'], 'TWD': ['NT$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/kok.ts b/packages/common/locales/kok.ts deleted file mode 100644 index 0478643e56..0000000000 --- a/packages/common/locales/kok.ts +++ /dev/null @@ -1,62 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'kok', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['आ', 'सो', 'मं', 'बु', 'बि', 'शु', 'शे'], - ['आयतार', 'सोमार', 'मंगळार', 'बुधवार', 'बिरेस्तार', 'शुक्रार', 'शेनवार'], u, - ['आय', 'सोम', 'मंगळ', 'बुध', 'बिरे', 'शुक्र', 'शेन'] - ], - [ - ['आ', 'सो', 'मं', 'बु', 'ब', 'शु', 'शे'], - ['आयतार', 'सोमार', 'मंगळार', 'बुधवार', 'बिरेस्तार', 'शुक्रार', 'शेनवार'], u, - ['आय', 'सोम', 'मंगळ', 'बुध', 'बिरे', 'शुक्र', 'शेन'] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'जानेवारी', 'फेब्रुवारी', 'मार्च', 'एप्रिल', 'मे', 'जून', 'जुलय', 'ऑगस्ट', 'सप्टेंबर', 'ऑक्टोबर', 'नोव्हेंबर', - 'डिसेंबर' - ], - u - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['जाने', 'फेब्रु', 'मार्च', 'एप्री', 'मे', 'जून', 'जुल', 'ऑग', 'सप्टें', 'ऑक्टो', 'नो', 'डिसे'], - [ - 'जानेवारी', 'फेब्रुवारी', 'मार्च', 'एप्रिल', 'मे', 'जून', 'जुलय', 'ऑगस्ट', 'सप्टेंबर', 'ऑक्टोबर', 'नोव्हेंबर', - 'डिसेंबर' - ] - ], - [['क्रिस्तपूर्व', 'क्रिस्तशखा'], u, u], - 0, - [0, 0], - ['d-M-yy', 'dd-MM-y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'INR', - '₹', - 'भारतीय रुपया', - {'JPY': ['JP¥', '¥'], 'RON': ['रॉन', 'लेई'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ks.ts b/packages/common/locales/ks.ts deleted file mode 100644 index 867f4db664..0000000000 --- a/packages/common/locales/ks.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ks', - [['AM', 'PM'], u, u], - u, - [ - ['ا', 'ژ', 'ب', 'ب', 'ب', 'ج', 'ب'], - ['آتھوار', 'ژٔندٕروار', 'بۆموار', 'بودوار', 'برؠسوار', 'جُمہ', 'بٹوار'], - ['اَتھوار', 'ژٔندرٕروار', 'بۆموار', 'بودوار', 'برؠسوار', 'جُمہ', 'بٹوار'], - ['آتھوار', 'ژٔندٕروار', 'بۆموار', 'بودوار', 'برؠسوار', 'جُمہ', 'بٹوار'] - ], - u, - [ - ['ج', 'ف', 'م', 'ا', 'م', 'ج', 'ج', 'ا', 'س', 'س', 'ا', 'ن'], - [ - 'جنؤری', 'فرؤری', 'مارٕچ', 'اپریل', 'میٔ', 'جوٗن', 'جوٗلایی', 'اگست', 'ستمبر', 'اکتوٗبر', 'نومبر', - 'دسمبر' - ], - u - ], - u, - [['بی سی', 'اے ڈی'], u, ['قبٕل مسیٖح', 'عیٖسوی سنہٕ']], - 0, - [0, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤ #,##,##0.00', '#E0'], - 'INR', - '₹', - 'ہِندُستٲنۍ رۄپَے', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'rtl', - plural -]; diff --git a/packages/common/locales/ksb.ts b/packages/common/locales/ksb.ts deleted file mode 100644 index 97602c9bb2..0000000000 --- a/packages/common/locales/ksb.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ksb', - [['makeo', 'nyiaghuo'], u, u], - u, - [ - ['2', '3', '4', '5', 'A', 'I', '1'], ['Jpi', 'Jtt', 'Jmn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - ['Jumaapii', 'Jumaatatu', 'Jumaane', 'Jumaatano', 'Alhamisi', 'Ijumaa', 'Jumaamosi'], - ['Jpi', 'Jtt', 'Jmn', 'Jtn', 'Alh', 'Iju', 'Jmo'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januali', 'Febluali', 'Machi', 'Aplili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', - 'Oktoba', 'Novemba', 'Desemba' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Klisto', 'Baada ya Klisto']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'TZS', - 'TSh', - 'shilingi ya Tanzania', - {'JPY': ['JP¥', '¥'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ksf.ts b/packages/common/locales/ksf.ts deleted file mode 100644 index 8754c43841..0000000000 --- a/packages/common/locales/ksf.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'ksf', - [['sárúwá', 'cɛɛ́nko'], u, u], - u, - [ - ['s', 'l', 'm', 'm', 'j', 'j', 's'], ['sɔ́n', 'lǝn', 'maa', 'mɛk', 'jǝǝ', 'júm', 'sam'], - ['sɔ́ndǝ', 'lǝndí', 'maadí', 'mɛkrɛdí', 'jǝǝdí', 'júmbá', 'samdí'], - ['sɔ́n', 'lǝn', 'maa', 'mɛk', 'jǝǝ', 'júm', 'sam'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['ŋ1', 'ŋ2', 'ŋ3', 'ŋ4', 'ŋ5', 'ŋ6', 'ŋ7', 'ŋ8', 'ŋ9', 'ŋ10', 'ŋ11', 'ŋ12'], - [ - 'ŋwíí a ntɔ́ntɔ', 'ŋwíí akǝ bɛ́ɛ', 'ŋwíí akǝ ráá', 'ŋwíí akǝ nin', 'ŋwíí akǝ táan', - 'ŋwíí akǝ táafɔk', 'ŋwíí akǝ táabɛɛ', 'ŋwíí akǝ táaraa', 'ŋwíí akǝ táanin', 'ŋwíí akǝ ntɛk', - 'ŋwíí akǝ ntɛk di bɔ́k', 'ŋwíí akǝ ntɛk di bɛ́ɛ' - ] - ], - u, - [['d.Y.', 'k.Y.'], u, ['di Yɛ́sus aká yálɛ', 'cámɛɛn kǝ kǝbɔpka Y']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'fráŋ', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ksh.ts b/packages/common/locales/ksh.ts deleted file mode 100644 index 14b0fcc00e..0000000000 --- a/packages/common/locales/ksh.ts +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 0) return 0; - if (n === 1) return 1; - return 5; -} - -export default [ - 'ksh', - [['v.M.', 'n.M.'], u, ['Uhr vörmiddaachs', 'Uhr nommendaachs']], - [['v.M.', 'n.M.'], u, ['Vörmeddaach', 'Nommendaach']], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['Su.', 'Mo.', 'Di.', 'Me.', 'Du.', 'Fr.', 'Sa.'], - ['Sunndaach', 'Mohndaach', 'Dinnsdaach', 'Metwoch', 'Dunnersdaach', 'Friidaach', 'Samsdaach'], - ['Su', 'Mo', 'Di', 'Me', 'Du', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Fäb', 'Mäz', 'Apr', 'Mai', 'Jun', 'Jul', 'Ouj', 'Säp', 'Okt', 'Nov', 'Dez'], - [ - 'Jannewa', 'Fäbrowa', 'Määz', 'Aprell', 'Mai', 'Juuni', 'Juuli', 'Oujoß', 'Septämber', - 'Oktohber', 'Novämber', 'Dezämber' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'O', 'S', 'O', 'N', 'D'], - ['Jan.', 'Fäb.', 'Mäz.', 'Apr.', 'Mai', 'Jun.', 'Jul.', 'Ouj.', 'Säp.', 'Okt.', 'Nov.', 'Dez.'], - [ - 'Jannewa', 'Fäbrowa', 'Määz', 'Aprell', 'Mai', 'Juuni', 'Juuli', 'Oujoß', 'Septämber', - 'Oktohber', 'Novämber', 'Dezämber' - ] - ], - [['vC', 'nC'], ['v. Chr.', 'n. Chr.'], ['vür Krestos', 'noh Krestos']], - 1, - [6, 0], - ['d. M. y', 'd. MMM. y', 'd. MMMM y', 'EEEE, \'dä\' d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '−', '×10^', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ku.ts b/packages/common/locales/ku.ts deleted file mode 100644 index b55dd80d03..0000000000 --- a/packages/common/locales/ku.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ku', - [['BN', 'PN'], u, u], - u, - [ - ['Y', 'D', 'S', 'Ç', 'P', 'Î', 'Ş'], ['yş', 'dş', 'sş', 'çş', 'pş', 'în', 'ş'], - ['yekşem', 'duşem', 'sêşem', 'çarşem', 'pêncşem', 'în', 'şemî'], - ['yş', 'dş', 'sş', 'çş', 'pş', 'în', 'ş'] - ], - u, - [ - ['R', 'R', 'A', 'A', 'G', 'P', 'T', 'G', 'R', 'K', 'S', 'B'], - ['rêb', 'reş', 'ada', 'avr', 'gul', 'pûş', 'tîr', 'gel', 'rez', 'kew', 'ser', 'ber'], - [ - 'rêbendanê', 'reşemiyê', 'adarê', 'avrêlê', 'gulanê', 'pûşperê', 'tîrmehê', 'gelawêjê', - 'rezberê', 'kewçêrê', 'sermawezê', 'berfanbarê' - ] - ], - [ - ['R', 'R', 'A', 'A', 'G', 'P', 'T', 'G', 'R', 'K', 'S', 'B'], - ['rêb', 'reş', 'ada', 'avr', 'gul', 'pûş', 'tîr', 'gel', 'rez', 'kew', 'ser', 'ber'], - [ - 'rêbendan', 'reşemî', 'adar', 'avrêl', 'gulan', 'pûşper', 'tîrmeh', 'gelawêj', 'rezber', - 'kewçêr', 'sermawez', 'berfanbar' - ] - ], - [['BZ', 'PZ'], u, ['berî zayînê', 'piştî zayînê']], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '%#,##0', '#,##0.00 ¤', '#E0'], - 'TRY', - '₺', - 'TRY', - {'JPY': ['JP¥', '¥'], 'TRY': ['₺'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/kw.ts b/packages/common/locales/kw.ts deleted file mode 100644 index 25ac320193..0000000000 --- a/packages/common/locales/kw.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - if (n === 2) return 2; - return 5; -} - -export default [ - 'kw', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sul', 'Lun', 'Mth', 'Mhr', 'Yow', 'Gwe', 'Sad'], - ['dy Sul', 'dy Lun', 'dy Meurth', 'dy Merher', 'dy Yow', 'dy Gwener', 'dy Sadorn'], - ['Sul', 'Lun', 'Mth', 'Mhr', 'Yow', 'Gwe', 'Sad'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['Gen', 'Hwe', 'Meu', 'Ebr', 'Me', 'Met', 'Gor', 'Est', 'Gwn', 'Hed', 'Du', 'Kev'], - [ - 'mis Genver', 'mis Hwevrer', 'mis Meurth', 'mis Ebrel', 'mis Me', 'mis Metheven', - 'mis Gortheren', 'mis Est', 'mis Gwynngala', 'mis Hedra', 'mis Du', 'mis Kevardhu' - ] - ], - u, - [['RC', 'AD'], u, u], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'GBP', - '£', - 'GBP', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ky.ts b/packages/common/locales/ky.ts deleted file mode 100644 index 40f4f7a071..0000000000 --- a/packages/common/locales/ky.ts +++ /dev/null @@ -1,85 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ky', - [['тң', 'тк'], u, ['таңкы', 'түштөн кийинки']], - u, - [ - ['Ж', 'Д', 'Ш', 'Ш', 'Б', 'Ж', 'И'], - ['жек.', 'дүй.', 'шейш.', 'шарш.', 'бейш.', 'жума', 'ишм.'], - ['жекшемби', 'дүйшөмбү', 'шейшемби', 'шаршемби', 'бейшемби', 'жума', 'ишемби'], - ['жш.', 'дш.', 'шш.', 'шр.', 'бш.', 'жм.', 'иш.'] - ], - u, - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - ['янв.', 'фев.', 'мар.', 'апр.', 'май', 'июн.', 'июл.', 'авг.', 'сен.', 'окт.', 'ноя.', 'дек.'], - [ - 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', - 'ноябрь', 'декабрь' - ] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'], - [ - 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', - 'Ноябрь', 'Декабрь' - ] - ], - [['б.з.ч.', 'б.з.'], u, ['биздин заманга чейин', 'биздин заман']], - 1, - [6, 0], - ['d/M/yy', 'y-\'ж\'., d-MMM', 'y-\'ж\'., d-MMMM', 'y-\'ж\'., d-MMMM, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'сан эмес', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'KGS', - 'сом', - 'Кыргызстан сому', - { - 'AUD': [u, '$'], - 'BMD': [u, 'BD$'], - 'BRL': [u, 'R$'], - 'BSD': [u, 'B$'], - 'BZD': [u, 'BZ$'], - 'CAD': [u, 'C$'], - 'DOP': [u, 'RD$'], - 'EGP': [u, 'LE'], - 'GBP': [u, '£'], - 'HKD': [u, 'HK$'], - 'HRK': [u, 'Kn'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JMD': [u, 'J$'], - 'JPY': ['JP¥', '¥'], - 'KGS': ['сом'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'THB': ['฿'], - 'TTD': [u, 'TT$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'XCD': [u, '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/lag.ts b/packages/common/locales/lag.ts deleted file mode 100644 index afa6977761..0000000000 --- a/packages/common/locales/lag.ts +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (n === 0) return 0; - if ((i === 0 || i === 1) && !(n === 0)) return 1; - return 5; -} - -export default [ - 'lag', - [['TOO', 'MUU'], u, u], - u, - [ - ['P', 'T', 'E', 'O', 'A', 'I', 'M'], ['Píili', 'Táatu', 'Íne', 'Táano', 'Alh', 'Ijm', 'Móosi'], - ['Jumapíiri', 'Jumatátu', 'Jumaíne', 'Jumatáano', 'Alamíisi', 'Ijumáa', 'Jumamóosi'], - ['Píili', 'Táatu', 'Íne', 'Táano', 'Alh', 'Ijm', 'Móosi'] - ], - u, - [ - ['F', 'N', 'K', 'I', 'I', 'I', 'M', 'V', 'S', 'I', 'S', 'S'], - [ - 'Fúngatɨ', 'Naanɨ', 'Keenda', 'Ikúmi', 'Inyambala', 'Idwaata', 'Mʉʉnchɨ', 'Vɨɨrɨ', 'Saatʉ', - 'Inyi', 'Saano', 'Sasatʉ' - ], - [ - 'Kʉfúngatɨ', 'Kʉnaanɨ', 'Kʉkeenda', 'Kwiikumi', 'Kwiinyambála', 'Kwiidwaata', 'Kʉmʉʉnchɨ', - 'Kʉvɨɨrɨ', 'Kʉsaatʉ', 'Kwiinyi', 'Kʉsaano', 'Kʉsasatʉ' - ] - ], - u, - [['KSA', 'KA'], u, ['Kɨrɨsitʉ sɨ anavyaal', 'Kɨrɨsitʉ akavyaalwe']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'TZS', - 'TSh', - 'Shilíingi ya Taansanía', - {'JPY': ['JP¥', '¥'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/lb.ts b/packages/common/locales/lb.ts deleted file mode 100644 index da677ee74d..0000000000 --- a/packages/common/locales/lb.ts +++ /dev/null @@ -1,63 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'lb', - [['mo.', 'nomë.'], ['moies', 'nomëttes'], u], - [['moies', 'nomëttes'], u, u], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['Son.', 'Méi.', 'Dën.', 'Mët.', 'Don.', 'Fre.', 'Sam.'], - ['Sonndeg', 'Méindeg', 'Dënschdeg', 'Mëttwoch', 'Donneschdeg', 'Freideg', 'Samschdeg'], - ['So.', 'Mé.', 'Dë.', 'Më.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['S', 'M', 'D', 'M', 'D', 'F', 'S'], ['Son', 'Méi', 'Dën', 'Mët', 'Don', 'Fre', 'Sam'], - ['Sonndeg', 'Méindeg', 'Dënschdeg', 'Mëttwoch', 'Donneschdeg', 'Freideg', 'Samschdeg'], - ['So.', 'Mé.', 'Dë.', 'Më.', 'Do.', 'Fr.', 'Sa.'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan.', 'Feb.', 'Mäe.', 'Abr.', 'Mee', 'Juni', 'Juli', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Dez.'], - [ - 'Januar', 'Februar', 'Mäerz', 'Abrëll', 'Mee', 'Juni', 'Juli', 'August', 'September', - 'Oktober', 'November', 'Dezember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mäe', 'Abr', 'Mee', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - [ - 'Januar', 'Februar', 'Mäerz', 'Abrëll', 'Mee', 'Juni', 'Juli', 'August', 'September', - 'Oktober', 'November', 'Dezember' - ] - ], - [['v. Chr.', 'n. Chr.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'd. MMM y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euro', - {'ATS': ['öS'], 'AUD': ['AU$', '$'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/lg.ts b/packages/common/locales/lg.ts deleted file mode 100644 index 321c64f72b..0000000000 --- a/packages/common/locales/lg.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'lg', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'B', 'L', 'L', 'L', 'L', 'L'], ['Sab', 'Bal', 'Lw2', 'Lw3', 'Lw4', 'Lw5', 'Lw6'], - ['Sabbiiti', 'Balaza', 'Lwakubiri', 'Lwakusatu', 'Lwakuna', 'Lwakutaano', 'Lwamukaaga'], - ['Sab', 'Bal', 'Lw2', 'Lw3', 'Lw4', 'Lw5', 'Lw6'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apu', 'Maa', 'Juu', 'Jul', 'Agu', 'Seb', 'Oki', 'Nov', 'Des'], - [ - 'Janwaliyo', 'Febwaliyo', 'Marisi', 'Apuli', 'Maayi', 'Juuni', 'Julaayi', 'Agusito', - 'Sebuttemba', 'Okitobba', 'Novemba', 'Desemba' - ] - ], - u, - [['BC', 'AD'], u, ['Kulisito nga tannaza', 'Bukya Kulisito Azaal']], - 1, - [0, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'UGX', - 'USh', - 'Silingi eya Yuganda', - {'JPY': ['JP¥', '¥'], 'UGX': ['USh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/lkt.ts b/packages/common/locales/lkt.ts deleted file mode 100644 index 3bd7d3106b..0000000000 --- a/packages/common/locales/lkt.ts +++ /dev/null @@ -1,62 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'lkt', - [['AM', 'PM'], u, u], - u, - [ - ['A', 'W', 'N', 'Y', 'T', 'Z', 'O'], - [ - 'Aŋpétuwakȟaŋ', 'Aŋpétuwaŋži', 'Aŋpétunuŋpa', 'Aŋpétuyamni', 'Aŋpétutopa', 'Aŋpétuzaptaŋ', - 'Owáŋgyužažapi' - ], - u, u - ], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - [ - 'Aŋpétuwakȟaŋ', 'Aŋpétuwaŋži', 'Aŋpétunuŋpa', 'Aŋpétuyamni', 'Aŋpétutopa', 'Aŋpétuzaptaŋ', - 'Owáŋgyužažapi' - ], - u, u - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'Wiótheȟika Wí', 'Thiyóȟeyuŋka Wí', 'Ištáwičhayazaŋ Wí', 'Pȟežítȟo Wí', 'Čhaŋwápetȟo Wí', - 'Wípazukȟa-wašté Wí', 'Čhaŋpȟásapa Wí', 'Wasútȟuŋ Wí', 'Čhaŋwápeǧi Wí', 'Čhaŋwápe-kasná Wí', - 'Waníyetu Wí', 'Tȟahékapšuŋ Wí' - ], - u - ], - u, - [['BCE', 'CE'], u, u], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'USD', - '$', - 'USD', - {'JPY': ['JP¥', '¥']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ln-AO.ts b/packages/common/locales/ln-AO.ts deleted file mode 100644 index a32a7166dd..0000000000 --- a/packages/common/locales/ln-AO.ts +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === Math.floor(n) && n >= 0 && n <= 1) return 1; - return 5; -} - -export default [ - 'ln-AO', - [['ntɔ́ngɔ́', 'mpókwa'], u, u], - u, - [ - ['e', 'y', 'm', 'm', 'm', 'm', 'p'], ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'], - [ - 'eyenga', 'mokɔlɔ mwa yambo', 'mokɔlɔ mwa míbalé', 'mokɔlɔ mwa mísáto', 'mokɔlɔ ya mínéi', - 'mokɔlɔ ya mítáno', 'mpɔ́sɔ' - ], - ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'] - ], - u, - [ - ['y', 'f', 'm', 'a', 'm', 'y', 'y', 'a', 's', 'ɔ', 'n', 'd'], - ['yan', 'fbl', 'msi', 'apl', 'mai', 'yun', 'yul', 'agt', 'stb', 'ɔtb', 'nvb', 'dsb'], - [ - 'sánzá ya yambo', 'sánzá ya míbalé', 'sánzá ya mísáto', 'sánzá ya mínei', 'sánzá ya mítáno', - 'sánzá ya motóbá', 'sánzá ya nsambo', 'sánzá ya mwambe', 'sánzá ya libwa', 'sánzá ya zómi', - 'sánzá ya zómi na mɔ̌kɔ́', 'sánzá ya zómi na míbalé' - ] - ], - u, - [['libóso ya', 'nsima ya Y'], u, ['Yambo ya Yézu Krís', 'Nsima ya Yézu Krís']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'AOA', - 'Kz', - 'Kwanza ya Angóla', - {'AOA': ['Kz'], 'CDF': ['FC'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ln-CF.ts b/packages/common/locales/ln-CF.ts deleted file mode 100644 index e2ea004d75..0000000000 --- a/packages/common/locales/ln-CF.ts +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === Math.floor(n) && n >= 0 && n <= 1) return 1; - return 5; -} - -export default [ - 'ln-CF', - [['ntɔ́ngɔ́', 'mpókwa'], u, u], - u, - [ - ['e', 'y', 'm', 'm', 'm', 'm', 'p'], ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'], - [ - 'eyenga', 'mokɔlɔ mwa yambo', 'mokɔlɔ mwa míbalé', 'mokɔlɔ mwa mísáto', 'mokɔlɔ ya mínéi', - 'mokɔlɔ ya mítáno', 'mpɔ́sɔ' - ], - ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'] - ], - u, - [ - ['y', 'f', 'm', 'a', 'm', 'y', 'y', 'a', 's', 'ɔ', 'n', 'd'], - ['yan', 'fbl', 'msi', 'apl', 'mai', 'yun', 'yul', 'agt', 'stb', 'ɔtb', 'nvb', 'dsb'], - [ - 'sánzá ya yambo', 'sánzá ya míbalé', 'sánzá ya mísáto', 'sánzá ya mínei', 'sánzá ya mítáno', - 'sánzá ya motóbá', 'sánzá ya nsambo', 'sánzá ya mwambe', 'sánzá ya libwa', 'sánzá ya zómi', - 'sánzá ya zómi na mɔ̌kɔ́', 'sánzá ya zómi na míbalé' - ] - ], - u, - [['libóso ya', 'nsima ya Y'], u, ['Yambo ya Yézu Krís', 'Nsima ya Yézu Krís']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'Falánga CFA BEAC', - {'CDF': ['FC'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ln-CG.ts b/packages/common/locales/ln-CG.ts deleted file mode 100644 index a233a4af9d..0000000000 --- a/packages/common/locales/ln-CG.ts +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === Math.floor(n) && n >= 0 && n <= 1) return 1; - return 5; -} - -export default [ - 'ln-CG', - [['ntɔ́ngɔ́', 'mpókwa'], u, u], - u, - [ - ['e', 'y', 'm', 'm', 'm', 'm', 'p'], ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'], - [ - 'eyenga', 'mokɔlɔ mwa yambo', 'mokɔlɔ mwa míbalé', 'mokɔlɔ mwa mísáto', 'mokɔlɔ ya mínéi', - 'mokɔlɔ ya mítáno', 'mpɔ́sɔ' - ], - ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'] - ], - u, - [ - ['y', 'f', 'm', 'a', 'm', 'y', 'y', 'a', 's', 'ɔ', 'n', 'd'], - ['yan', 'fbl', 'msi', 'apl', 'mai', 'yun', 'yul', 'agt', 'stb', 'ɔtb', 'nvb', 'dsb'], - [ - 'sánzá ya yambo', 'sánzá ya míbalé', 'sánzá ya mísáto', 'sánzá ya mínei', 'sánzá ya mítáno', - 'sánzá ya motóbá', 'sánzá ya nsambo', 'sánzá ya mwambe', 'sánzá ya libwa', 'sánzá ya zómi', - 'sánzá ya zómi na mɔ̌kɔ́', 'sánzá ya zómi na míbalé' - ] - ], - u, - [['libóso ya', 'nsima ya Y'], u, ['Yambo ya Yézu Krís', 'Nsima ya Yézu Krís']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'Falánga CFA BEAC', - {'CDF': ['FC'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ln.ts b/packages/common/locales/ln.ts deleted file mode 100644 index 34538c1881..0000000000 --- a/packages/common/locales/ln.ts +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === Math.floor(n) && n >= 0 && n <= 1) return 1; - return 5; -} - -export default [ - 'ln', - [['ntɔ́ngɔ́', 'mpókwa'], u, u], - u, - [ - ['e', 'y', 'm', 'm', 'm', 'm', 'p'], ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'], - [ - 'eyenga', 'mokɔlɔ mwa yambo', 'mokɔlɔ mwa míbalé', 'mokɔlɔ mwa mísáto', 'mokɔlɔ ya mínéi', - 'mokɔlɔ ya mítáno', 'mpɔ́sɔ' - ], - ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'] - ], - u, - [ - ['y', 'f', 'm', 'a', 'm', 'y', 'y', 'a', 's', 'ɔ', 'n', 'd'], - ['yan', 'fbl', 'msi', 'apl', 'mai', 'yun', 'yul', 'agt', 'stb', 'ɔtb', 'nvb', 'dsb'], - [ - 'sánzá ya yambo', 'sánzá ya míbalé', 'sánzá ya mísáto', 'sánzá ya mínei', 'sánzá ya mítáno', - 'sánzá ya motóbá', 'sánzá ya nsambo', 'sánzá ya mwambe', 'sánzá ya libwa', 'sánzá ya zómi', - 'sánzá ya zómi na mɔ̌kɔ́', 'sánzá ya zómi na míbalé' - ] - ], - u, - [['libóso ya', 'nsima ya Y'], u, ['Yambo ya Yézu Krís', 'Nsima ya Yézu Krís']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'CDF', - 'FC', - 'Falánga ya Kongó', - {'CDF': ['FC'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/lo.ts b/packages/common/locales/lo.ts deleted file mode 100644 index 2ab6a85aa8..0000000000 --- a/packages/common/locales/lo.ts +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'lo', - [['ກ່ອນທ່ຽງ', 'ຫຼັງທ່ຽງ'], u, u], - u, - [ - ['ອາ', 'ຈ', 'ອ', 'ພ', 'ພຫ', 'ສຸ', 'ສ'], ['ອາທິດ', 'ຈັນ', 'ອັງຄານ', 'ພຸດ', 'ພະຫັດ', 'ສຸກ', 'ເສົາ'], - ['ວັນອາທິດ', 'ວັນຈັນ', 'ວັນອັງຄານ', 'ວັນພຸດ', 'ວັນພະຫັດ', 'ວັນສຸກ', 'ວັນເສົາ'], - ['ອາ.', 'ຈ.', 'ອ.', 'ພ.', 'ພຫ.', 'ສຸ.', 'ສ.'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'ມ.ກ.', 'ກ.ພ.', 'ມ.ນ.', 'ມ.ສ.', 'ພ.ພ.', 'ມິ.ຖ.', 'ກ.ລ.', 'ສ.ຫ.', 'ກ.ຍ.', 'ຕ.ລ.', 'ພ.ຈ.', 'ທ.ວ.' - ], - [ - 'ມັງກອນ', 'ກຸມພາ', 'ມີນາ', 'ເມສາ', 'ພຶດສະພາ', 'ມິຖຸນາ', 'ກໍລະກົດ', 'ສິງຫາ', 'ກັນຍາ', 'ຕຸລາ', 'ພະຈິກ', - 'ທັນວາ' - ] - ], - u, - [['ກ່ອນ ຄ.ສ.', 'ຄ.ສ.'], u, ['ກ່ອນຄຣິດສັກກະລາດ', 'ຄຣິດສັກກະລາດ']], - 0, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE ທີ d MMMM G y'], - ['H:mm', 'H:mm:ss', 'H ໂມງ m ນາທີ ss ວິນາທີ z', 'H ໂມງ m ນາທີ ss ວິນາທີ zzzz'], - ['{1}, {0}', u, u, u], - [ - ',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', - 'ບໍ່​ແມ່ນ​ໂຕ​ເລກ', ':' - ], - ['#,##0.###', '#,##0%', '¤#,##0.00;¤-#,##0.00', '#'], - 'LAK', - '₭', - 'ລາວ ກີບ', - {'JPY': ['JP¥', '¥'], 'LAK': ['₭'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/lrc-IQ.ts b/packages/common/locales/lrc-IQ.ts deleted file mode 100644 index e891e03ebe..0000000000 --- a/packages/common/locales/lrc-IQ.ts +++ /dev/null @@ -1,47 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'lrc-IQ', - [['AM', 'PM'], u, u], - u, - [['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], u, u], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'جانڤیە', 'فئڤریە', 'مارس', 'آڤریل', 'مئی', 'جوٙأن', 'جوٙلا', 'آگوست', 'سئپتامر', 'ئوکتوڤر', - 'نوڤامر', 'دئسامر' - ], - u - ], - u, - [['BCE', 'CE'], u, u], - 6, - [5, 6], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'IQD', - 'د.ع.\u200f', - 'IQD', - {'IQD': ['د.ع.\u200f'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'rtl', - plural -]; diff --git a/packages/common/locales/lrc.ts b/packages/common/locales/lrc.ts deleted file mode 100644 index 7f840e7b5c..0000000000 --- a/packages/common/locales/lrc.ts +++ /dev/null @@ -1,47 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'lrc', - [['AM', 'PM'], u, u], - u, - [['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], u, u], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'جانڤیە', 'فئڤریە', 'مارس', 'آڤریل', 'مئی', 'جوٙأن', 'جوٙلا', 'آگوست', 'سئپتامر', 'ئوکتوڤر', - 'نوڤامر', 'دئسامر' - ], - u - ], - u, - [['BCE', 'CE'], u, u], - 6, - [5, 5], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'IRR', - 'IRR', - 'IRR', - {'IQD': ['د.ع.\u200f'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'rtl', - plural -]; diff --git a/packages/common/locales/lt.ts b/packages/common/locales/lt.ts deleted file mode 100644 index 46bc5d3cdf..0000000000 --- a/packages/common/locales/lt.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (n % 10 === 1 && !(n % 100 >= 11 && n % 100 <= 19)) return 1; - if (n % 10 === Math.floor(n % 10) && n % 10 >= 2 && n % 10 <= 9 && - !(n % 100 >= 11 && n % 100 <= 19)) - return 3; - if (!(f === 0)) return 4; - return 5; -} - -export default [ - 'lt', - [['pr. p.', 'pop.'], ['priešpiet', 'popiet'], u], - u, - [ - ['S', 'P', 'A', 'T', 'K', 'P', 'Š'], ['sk', 'pr', 'an', 'tr', 'kt', 'pn', 'št'], - [ - 'sekmadienis', 'pirmadienis', 'antradienis', 'trečiadienis', 'ketvirtadienis', 'penktadienis', - 'šeštadienis' - ], - ['Sk', 'Pr', 'An', 'Tr', 'Kt', 'Pn', 'Št'] - ], - u, - [ - ['S', 'V', 'K', 'B', 'G', 'B', 'L', 'R', 'R', 'S', 'L', 'G'], - [ - 'saus.', 'vas.', 'kov.', 'bal.', 'geg.', 'birž.', 'liep.', 'rugp.', 'rugs.', 'spal.', - 'lapkr.', 'gruod.' - ], - [ - 'sausio', 'vasario', 'kovo', 'balandžio', 'gegužės', 'birželio', 'liepos', 'rugpjūčio', - 'rugsėjo', 'spalio', 'lapkričio', 'gruodžio' - ] - ], - [ - ['S', 'V', 'K', 'B', 'G', 'B', 'L', 'R', 'R', 'S', 'L', 'G'], - [ - 'saus.', 'vas.', 'kov.', 'bal.', 'geg.', 'birž.', 'liep.', 'rugp.', 'rugs.', 'spal.', - 'lapkr.', 'gruod.' - ], - [ - 'sausis', 'vasaris', 'kovas', 'balandis', 'gegužė', 'birželis', 'liepa', 'rugpjūtis', - 'rugsėjis', 'spalis', 'lapkritis', 'gruodis' - ] - ], - [['pr. Kr.', 'po Kr.'], u, ['prieš Kristų', 'po Kristaus']], - 1, - [6, 0], - ['y-MM-dd', u, 'y \'m\'. MMMM d \'d\'.', 'y \'m\'. MMMM d \'d\'., EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '−', '×10^', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euras', - { - 'AUD': [u, '$'], - 'BDT': [], - 'BRL': [u, 'R$'], - 'BYN': [u, 'Br'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [], - 'INR': [], - 'JPY': [u, '¥'], - 'KHR': [], - 'KRW': [u, '₩'], - 'LAK': [], - 'MNT': [], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'PLN': [u, 'zl'], - 'PYG': [u, 'Gs'], - 'RUB': [u, 'rb'], - 'TWD': [u, '$'], - 'USD': [u, '$'], - 'VND': [], - 'XAF': [], - 'XCD': [u, '$'], - 'XOF': [], - 'XPF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/lu.ts b/packages/common/locales/lu.ts deleted file mode 100644 index b7777fd4e5..0000000000 --- a/packages/common/locales/lu.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'lu', - [['Dinda', 'Dilolo'], u, u], - u, - [ - ['L', 'N', 'N', 'N', 'N', 'N', 'L'], ['Lum', 'Nko', 'Ndy', 'Ndg', 'Njw', 'Ngv', 'Lub'], - ['Lumingu', 'Nkodya', 'Ndàayà', 'Ndangù', 'Njòwa', 'Ngòvya', 'Lubingu'], - ['Lum', 'Nko', 'Ndy', 'Ndg', 'Njw', 'Ngv', 'Lub'] - ], - u, - [ - ['C', 'L', 'L', 'M', 'L', 'L', 'K', 'L', 'L', 'L', 'K', 'C'], - ['Cio', 'Lui', 'Lus', 'Muu', 'Lum', 'Luf', 'Kab', 'Lush', 'Lut', 'Lun', 'Kas', 'Cis'], - [ - 'Ciongo', 'Lùishi', 'Lusòlo', 'Mùuyà', 'Lumùngùlù', 'Lufuimi', 'Kabàlàshìpù', 'Lùshìkà', - 'Lutongolo', 'Lungùdi', 'Kaswèkèsè', 'Ciswà' - ] - ], - u, - [['kmp. Y.K.', 'kny. Y. K.'], u, ['Kumpala kwa Yezu Kli', 'Kunyima kwa Yezu Kli']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'CDF', - 'FC', - 'Nfalanga wa Kongu', - {'CDF': ['FC'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/luo.ts b/packages/common/locales/luo.ts deleted file mode 100644 index 616d396ad8..0000000000 --- a/packages/common/locales/luo.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'luo', - [['OD', 'OT'], u, u], - u, - [ - ['J', 'W', 'T', 'T', 'T', 'T', 'N'], ['JMP', 'WUT', 'TAR', 'TAD', 'TAN', 'TAB', 'NGS'], - ['Jumapil', 'Wuok Tich', 'Tich Ariyo', 'Tich Adek', 'Tich Ang’wen', 'Tich Abich', 'Ngeso'], - ['JMP', 'WUT', 'TAR', 'TAD', 'TAN', 'TAB', 'NGS'] - ], - u, - [ - ['C', 'R', 'D', 'N', 'B', 'U', 'B', 'B', 'C', 'P', 'C', 'P'], - ['DAC', 'DAR', 'DAD', 'DAN', 'DAH', 'DAU', 'DAO', 'DAB', 'DOC', 'DAP', 'DGI', 'DAG'], - [ - 'Dwe mar Achiel', 'Dwe mar Ariyo', 'Dwe mar Adek', 'Dwe mar Ang’wen', 'Dwe mar Abich', - 'Dwe mar Auchiel', 'Dwe mar Abiriyo', 'Dwe mar Aboro', 'Dwe mar Ochiko', 'Dwe mar Apar', - 'Dwe mar gi achiel', 'Dwe mar Apar gi ariyo' - ] - ], - u, - [['BC', 'AD'], u, ['Kapok Kristo obiro', 'Ka Kristo osebiro']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'KES', - 'Ksh', - 'Siling mar Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/luy.ts b/packages/common/locales/luy.ts deleted file mode 100644 index df69b58ae1..0000000000 --- a/packages/common/locales/luy.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'luy', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['J2', 'J3', 'J4', 'J5', 'Al', 'Ij', 'J1'], - [ - 'Jumapiri', 'Jumatatu', 'Jumanne', 'Jumatano', 'Murwa wa Kanne', 'Murwa wa Katano', 'Jumamosi' - ], - ['J2', 'J3', 'J4', 'J5', 'Al', 'Ij', 'J1'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', - 'Oktoba', 'Novemba', 'Desemba' - ] - ], - u, - [['BC', 'AD'], u, ['Imberi ya Kuuza Kwa', 'Muhiga Kuvita Kuuza']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00;¤- #,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Sirinji ya Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/lv.ts b/packages/common/locales/lv.ts deleted file mode 100644 index 72620f77df..0000000000 --- a/packages/common/locales/lv.ts +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (n % 10 === 0 || n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 19 || - v === 2 && f % 100 === Math.floor(f % 100) && f % 100 >= 11 && f % 100 <= 19) - return 0; - if (n % 10 === 1 && !(n % 100 === 11) || v === 2 && f % 10 === 1 && !(f % 100 === 11) || - !(v === 2) && f % 10 === 1) - return 1; - return 5; -} - -export default [ - 'lv', - [['priekšp.', 'pēcp.'], u, ['priekšpusdienā', 'pēcpusdienā']], - [['priekšp.', 'pēcpusd.'], u, ['priekšpusdiena', 'pēcpusdiena']], - [ - ['S', 'P', 'O', 'T', 'C', 'P', 'S'], - ['svētd.', 'pirmd.', 'otrd.', 'trešd.', 'ceturtd.', 'piektd.', 'sestd.'], - ['svētdiena', 'pirmdiena', 'otrdiena', 'trešdiena', 'ceturtdiena', 'piektdiena', 'sestdiena'], - ['Sv', 'Pr', 'Ot', 'Tr', 'Ce', 'Pk', 'Se'] - ], - [ - ['S', 'P', 'O', 'T', 'C', 'P', 'S'], - ['Svētd.', 'Pirmd.', 'Otrd.', 'Trešd.', 'Ceturtd.', 'Piektd.', 'Sestd.'], - ['Svētdiena', 'Pirmdiena', 'Otrdiena', 'Trešdiena', 'Ceturtdiena', 'Piektdiena', 'Sestdiena'], - ['Sv', 'Pr', 'Ot', 'Tr', 'Ce', 'Pk', 'Se'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'janv.', 'febr.', 'marts', 'apr.', 'maijs', 'jūn.', 'jūl.', 'aug.', 'sept.', 'okt.', 'nov.', - 'dec.' - ], - [ - 'janvāris', 'februāris', 'marts', 'aprīlis', 'maijs', 'jūnijs', 'jūlijs', 'augusts', - 'septembris', 'oktobris', 'novembris', 'decembris' - ] - ], - u, - [['p.m.ē.', 'm.ē.'], u, ['pirms mūsu ēras', 'mūsu ērā']], - 1, - [6, 0], - ['dd.MM.yy', 'y. \'gada\' d. MMM', 'y. \'gada\' d. MMMM', 'EEEE, y. \'gada\' d. MMMM'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NS', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'eiro', - {'AUD': ['AU$', '$'], 'LVL': ['Ls'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/mas-TZ.ts b/packages/common/locales/mas-TZ.ts deleted file mode 100644 index 4d45edc3ae..0000000000 --- a/packages/common/locales/mas-TZ.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'mas-TZ', - [['Ɛnkakɛnyá', 'Ɛndámâ'], u, u], - u, - [ - ['2', '3', '4', '5', '6', '7', '1'], ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - ['Jumapílí', 'Jumatátu', 'Jumane', 'Jumatánɔ', 'Alaámisi', 'Jumáa', 'Jumamósi'], - ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['Dal', 'Ará', 'Ɔɛn', 'Doy', 'Lép', 'Rok', 'Sás', 'Bɔ́r', 'Kús', 'Gís', 'Shʉ́', 'Ntʉ́'], - [ - 'Oladalʉ́', 'Arát', 'Ɔɛnɨ́ɔɨŋɔk', 'Olodoyíóríê inkókúâ', 'Oloilépūnyīē inkókúâ', 'Kújúɔrɔk', - 'Mórusásin', 'Ɔlɔ́ɨ́bɔ́rárɛ', 'Kúshîn', 'Olgísan', 'Pʉshʉ́ka', 'Ntʉ́ŋʉ́s' - ] - ], - u, - [['MY', 'EY'], u, ['Meínō Yɛ́sʉ', 'Eínō Yɛ́sʉ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'TZS', - 'TSh', - 'Iropiyianí e Tanzania', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/mas.ts b/packages/common/locales/mas.ts deleted file mode 100644 index 842ddddc27..0000000000 --- a/packages/common/locales/mas.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'mas', - [['Ɛnkakɛnyá', 'Ɛndámâ'], u, u], - u, - [ - ['2', '3', '4', '5', '6', '7', '1'], ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - ['Jumapílí', 'Jumatátu', 'Jumane', 'Jumatánɔ', 'Alaámisi', 'Jumáa', 'Jumamósi'], - ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['Dal', 'Ará', 'Ɔɛn', 'Doy', 'Lép', 'Rok', 'Sás', 'Bɔ́r', 'Kús', 'Gís', 'Shʉ́', 'Ntʉ́'], - [ - 'Oladalʉ́', 'Arát', 'Ɔɛnɨ́ɔɨŋɔk', 'Olodoyíóríê inkókúâ', 'Oloilépūnyīē inkókúâ', 'Kújúɔrɔk', - 'Mórusásin', 'Ɔlɔ́ɨ́bɔ́rárɛ', 'Kúshîn', 'Olgísan', 'Pʉshʉ́ka', 'Ntʉ́ŋʉ́s' - ] - ], - u, - [['MY', 'EY'], u, ['Meínō Yɛ́sʉ', 'Eínō Yɛ́sʉ']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Iropiyianí e Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/mer.ts b/packages/common/locales/mer.ts deleted file mode 100644 index f2e641465b..0000000000 --- a/packages/common/locales/mer.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'mer', - [['RŨ', 'ŨG'], u, u], - u, - [ - ['K', 'M', 'W', 'W', 'W', 'W', 'J'], ['KIU', 'MRA', 'WAI', 'WET', 'WEN', 'WTN', 'JUM'], - ['Kiumia', 'Muramuko', 'Wairi', 'Wethatu', 'Wena', 'Wetano', 'Jumamosi'], - ['KIU', 'MRA', 'WAI', 'WET', 'WEN', 'WTN', 'JUM'] - ], - u, - [ - ['J', 'F', 'M', 'Ĩ', 'M', 'N', 'N', 'A', 'S', 'O', 'N', 'D'], - ['JAN', 'FEB', 'MAC', 'ĨPU', 'MĨĨ', 'NJU', 'NJR', 'AGA', 'SPT', 'OKT', 'NOV', 'DEC'], - [ - 'Januarĩ', 'Feburuarĩ', 'Machi', 'Ĩpurũ', 'Mĩĩ', 'Njuni', 'Njuraĩ', 'Agasti', 'Septemba', - 'Oktũba', 'Novemba', 'Dicemba' - ] - ], - u, - [['MK', 'NK'], u, ['Mbere ya Kristũ', 'Nyuma ya Kristũ']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Shilingi ya Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/mfe.ts b/packages/common/locales/mfe.ts deleted file mode 100644 index 3deeff5470..0000000000 --- a/packages/common/locales/mfe.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'mfe', - [['AM', 'PM'], u, u], - u, - [ - ['d', 'l', 'm', 'm', 'z', 'v', 's'], ['dim', 'lin', 'mar', 'mer', 'ze', 'van', 'sam'], - ['dimans', 'lindi', 'mardi', 'merkredi', 'zedi', 'vandredi', 'samdi'], - ['dim', 'lin', 'mar', 'mer', 'ze', 'van', 'sam'] - ], - u, - [ - ['z', 'f', 'm', 'a', 'm', 'z', 'z', 'o', 's', 'o', 'n', 'd'], - ['zan', 'fev', 'mar', 'avr', 'me', 'zin', 'zil', 'out', 'sep', 'okt', 'nov', 'des'], - [ - 'zanvie', 'fevriye', 'mars', 'avril', 'me', 'zin', 'zilye', 'out', 'septam', 'oktob', 'novam', - 'desam' - ] - ], - u, - [['av. Z-K', 'ap. Z-K'], u, ['avan Zezi-Krist', 'apre Zezi-Krist']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'MUR', - 'Rs', - 'roupi morisien', - {'JPY': ['JP¥', '¥'], 'MUR': ['Rs'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/mg.ts b/packages/common/locales/mg.ts deleted file mode 100644 index a462792db8..0000000000 --- a/packages/common/locales/mg.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === Math.floor(n) && n >= 0 && n <= 1) return 1; - return 5; -} - -export default [ - 'mg', - [['AM', 'PM'], u, u], - u, - [ - ['A', 'A', 'T', 'A', 'A', 'Z', 'A'], ['Alah', 'Alats', 'Tal', 'Alar', 'Alak', 'Zom', 'Asab'], - ['Alahady', 'Alatsinainy', 'Talata', 'Alarobia', 'Alakamisy', 'Zoma', 'Asabotsy'], - ['Alah', 'Alats', 'Tal', 'Alar', 'Alak', 'Zom', 'Asab'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'Mey', 'Jon', 'Jol', 'Aog', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Janoary', 'Febroary', 'Martsa', 'Aprily', 'Mey', 'Jona', 'Jolay', 'Aogositra', 'Septambra', - 'Oktobra', 'Novambra', 'Desambra' - ] - ], - u, - [['BC', 'AD'], u, ['Alohan’i JK', 'Aorian’i JK']], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'MGA', - 'Ar', - 'Ariary', - {'JPY': ['JP¥', '¥'], 'MGA': ['Ar'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/mgh.ts b/packages/common/locales/mgh.ts deleted file mode 100644 index 68dbd90a26..0000000000 --- a/packages/common/locales/mgh.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'mgh', - [['wichishu', 'mchochil’l'], u, u], - u, - [ - ['S', 'J', 'J', 'J', 'A', 'I', 'J'], ['Sab', 'Jtt', 'Jnn', 'Jtn', 'Ara', 'Iju', 'Jmo'], - ['Sabato', 'Jumatatu', 'Jumanne', 'Jumatano', 'Arahamisi', 'Ijumaa', 'Jumamosi'], - ['Sab', 'Jtt', 'Jnn', 'Jtn', 'Ara', 'Iju', 'Jmo'] - ], - u, - [ - ['K', 'U', 'R', 'C', 'T', 'M', 'S', 'N', 'T', 'K', 'M', 'Y'], - ['Kwa', 'Una', 'Rar', 'Che', 'Tha', 'Moc', 'Sab', 'Nan', 'Tis', 'Kum', 'Moj', 'Yel'], - [ - 'Mweri wo kwanza', 'Mweri wo unayeli', 'Mweri wo uneraru', 'Mweri wo unecheshe', - 'Mweri wo unethanu', 'Mweri wo thanu na mocha', 'Mweri wo saba', 'Mweri wo nane', - 'Mweri wo tisa', 'Mweri wo kumi', 'Mweri wo kumi na moja', 'Mweri wo kumi na yel’li' - ] - ], - u, - [['HY', 'YY'], u, ['Hinapiya yesu', 'Yopia yesu']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'MZN', - 'MTn', - 'MZN', - {'JPY': ['JP¥', '¥'], 'MZN': ['MTn'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/mgo.ts b/packages/common/locales/mgo.ts deleted file mode 100644 index ab4057f0fd..0000000000 --- a/packages/common/locales/mgo.ts +++ /dev/null @@ -1,55 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'mgo', - [['AM', 'PM'], u, u], - u, - [ - ['A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7'], - ['Aneg 1', 'Aneg 2', 'Aneg 3', 'Aneg 4', 'Aneg 5', 'Aneg 6', 'Aneg 7'], u, - ['1', '2', '3', '4', '5', '6', '7'] - ], - u, - [ - ['M1', 'A2', 'M3', 'N4', 'F5', 'I6', 'A7', 'I8', 'K9', '10', '11', '12'], - [ - 'mbegtug', 'imeg àbùbì', 'imeg mbəŋchubi', 'iməg ngwə̀t', 'iməg fog', 'iməg ichiibɔd', - 'iməg àdùmbə̀ŋ', 'iməg ichika', 'iməg kud', 'iməg tèsiʼe', 'iməg zò', 'iməg krizmed' - ], - [ - 'iməg mbegtug', 'imeg àbùbì', 'imeg mbəŋchubi', 'iməg ngwə̀t', 'iməg fog', 'iməg ichiibɔd', - 'iməg àdùmbə̀ŋ', 'iməg ichika', 'iməg kud', 'iməg tèsiʼe', 'iməg zò', 'iməg krizmed' - ] - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'EEEE, y MMMM dd'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'XAF', - 'FCFA', - 'shirè', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/mi.ts b/packages/common/locales/mi.ts deleted file mode 100644 index 4df046beeb..0000000000 --- a/packages/common/locales/mi.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'mi', - [['AM', 'PM'], u, u], - u, - [ - ['T', 'H', 'T', 'A', 'P', 'M', 'H'], ['Tap', 'Hin', 'Tū', 'Apa', 'Par', 'Mer', 'Hor'], - ['Rātapu', 'Rāhina', 'Rātū', 'Rāapa', 'Rāpare', 'Rāmere', 'Rāhoroi'], - ['Tap', 'Hin', 'Tū', 'Apa', 'Par', 'Mer', 'Hor'] - ], - u, - [ - ['K', 'H', 'P', 'P', 'H', 'P', 'H', 'H', 'M', 'N', 'R', 'H'], - ['Kohi', 'Hui', 'Pou', 'Pae', 'Hara', 'Pipi', 'Hōngo', 'Here', 'Mahu', 'Nuku', 'Rangi', 'Haki'], - [ - 'Kohitātea', 'Huitanguru', 'Poutūterangi', 'Paengawhāwhā', 'Haratua', 'Pipiri', 'Hōngongoi', - 'Hereturikōkā', 'Mahuru', 'Whiringa-ā-nuku', 'Whiringa-ā-rangi', 'Hakihea' - ] - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['dd-MM-y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'NZD', - '$', - 'Tāra o Aotearoa', - {'NZD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/mk.ts b/packages/common/locales/mk.ts deleted file mode 100644 index d00d424272..0000000000 --- a/packages/common/locales/mk.ts +++ /dev/null @@ -1,75 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - return 5; -} - -export default [ - 'mk', - [['претпл.', 'попл.'], u, ['претпладне', 'попладне']], - u, - [ - ['н', 'п', 'в', 'с', 'ч', 'п', 'с'], ['нед.', 'пон.', 'вт.', 'сре.', 'чет.', 'пет.', 'саб.'], - ['недела', 'понеделник', 'вторник', 'среда', 'четврток', 'петок', 'сабота'], - ['нед.', 'пон.', 'вто.', 'сре.', 'чет.', 'пет.', 'саб.'] - ], - [ - ['н', 'п', 'в', 'с', 'ч', 'п', 'с'], ['нед.', 'пон.', 'вто.', 'сре.', 'чет.', 'пет.', 'саб.'], - ['недела', 'понеделник', 'вторник', 'среда', 'четврток', 'петок', 'сабота'], - ['нед.', 'пон.', 'вто.', 'сре.', 'чет.', 'пет.', 'саб.'] - ], - [ - ['ј', 'ф', 'м', 'а', 'м', 'ј', 'ј', 'а', 'с', 'о', 'н', 'д'], - [ - 'јан.', 'фев.', 'мар.', 'апр.', 'мај', 'јун.', 'јул.', 'авг.', 'септ.', 'окт.', 'ноем.', - 'дек.' - ], - [ - 'јануари', 'февруари', 'март', 'април', 'мај', 'јуни', 'јули', 'август', 'септември', - 'октомври', 'ноември', 'декември' - ] - ], - u, - [['пр.н.е.', 'н.е.'], u, ['пред нашата ера', 'од нашата ера']], - 1, - [6, 0], - ['d.M.yy', 'd.M.y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'MKD', - 'ден.', - 'Македонски денар', - { - 'AUD': [u, '$'], - 'CNY': [u, '¥'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MKD': ['ден.'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ml.ts b/packages/common/locales/ml.ts deleted file mode 100644 index b35809f106..0000000000 --- a/packages/common/locales/ml.ts +++ /dev/null @@ -1,64 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ml', - [['AM', 'PM'], u, u], - u, - [ - ['ഞ', 'തി', 'ചൊ', 'ബു', 'വ്യാ', 'വെ', 'ശ'], - ['ഞായർ', 'തിങ്കൾ', 'ചൊവ്വ', 'ബുധൻ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'], - [ - 'ഞായറാഴ്\u200cച', 'തിങ്കളാഴ്\u200cച', 'ചൊവ്വാഴ്ച', 'ബുധനാഴ്\u200cച', 'വ്യാഴാഴ്\u200cച', - 'വെള്ളിയാഴ്\u200cച', 'ശനിയാഴ്\u200cച' - ], - ['ഞാ', 'തി', 'ചൊ', 'ബു', 'വ്യാ', 'വെ', 'ശ'] - ], - [ - ['ഞാ', 'തി', 'ചൊ', 'ബു', 'വ്യാ', 'വെ', 'ശ'], - ['ഞായർ', 'തിങ്കൾ', 'ചൊവ്വ', 'ബുധൻ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'], - [ - 'ഞായറാഴ്\u200cച', 'തിങ്കളാഴ്\u200cച', 'ചൊവ്വാഴ്\u200cച', 'ബുധനാഴ്\u200cച', 'വ്യാഴാഴ്\u200cച', - 'വെള്ളിയാഴ്\u200cച', 'ശനിയാഴ്\u200cച' - ], - ['ഞാ', 'തി', 'ചൊ', 'ബു', 'വ്യാ', 'വെ', 'ശ'] - ], - [ - ['ജ', 'ഫെ', 'മാ', 'ഏ', 'മെ', 'ജൂൺ', 'ജൂ', 'ഓ', 'സെ', 'ഒ', 'ന', 'ഡി'], - ['ജനു', 'ഫെബ്രു', 'മാർ', 'ഏപ്രി', 'മേയ്', 'ജൂൺ', 'ജൂലൈ', 'ഓഗ', 'സെപ്റ്റം', 'ഒക്ടോ', 'നവം', 'ഡിസം'], - [ - 'ജനുവരി', 'ഫെബ്രുവരി', 'മാർച്ച്', 'ഏപ്രിൽ', 'മേയ്', 'ജൂൺ', 'ജൂലൈ', 'ഓഗസ്റ്റ്', 'സെപ്റ്റംബർ', 'ഒക്\u200cടോബർ', - 'നവംബർ', 'ഡിസംബർ' - ] - ], - u, - [['ക്രി.മു.', 'എഡി'], u, ['ക്രിസ്\u200cതുവിന് മുമ്പ്', 'ആന്നോ ഡൊമിനി']], - 0, - [0, 0], - ['d/M/yy', 'y, MMM d', 'y, MMMM d', 'y, MMMM d, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'INR', - '₹', - 'ഇന്ത്യൻ രൂപ', - {'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/mn.ts b/packages/common/locales/mn.ts deleted file mode 100644 index fd093dd5e4..0000000000 --- a/packages/common/locales/mn.ts +++ /dev/null @@ -1,74 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'mn', - [['ү.ө.', 'ү.х.'], u, u], - u, - [ - ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'], u, - ['ням', 'даваа', 'мягмар', 'лхагва', 'пүрэв', 'баасан', 'бямба'], - ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'] - ], - [ - ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'], u, - ['Ням', 'Даваа', 'Мягмар', 'Лхагва', 'Пүрэв', 'Баасан', 'Бямба'], - ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'] - ], - [ - ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII'], - [ - '1-р сар', '2-р сар', '3-р сар', '4-р сар', '5-р сар', '6-р сар', '7-р сар', '8-р сар', - '9-р сар', '10-р сар', '11-р сар', '12-р сар' - ], - [ - 'нэгдүгээр сар', 'хоёрдугаар сар', 'гуравдугаар сар', 'дөрөвдүгээр сар', 'тавдугаар сар', - 'зургаадугаар сар', 'долоодугаар сар', 'наймдугаар сар', 'есдүгээр сар', 'аравдугаар сар', - 'арван нэгдүгээр сар', 'арван хоёрдугаар сар' - ] - ], - [ - ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII'], - [ - '1-р сар', '2-р сар', '3-р сар', '4-р сар', '5-р сар', '6-р сар', '7-р сар', '8-р сар', - '9-р сар', '10-р сар', '11-р сар', '12-р сар' - ], - [ - 'Нэгдүгээр сар', 'Хоёрдугаар сар', 'Гуравдугаар сар', 'Дөрөвдүгээр сар', 'Тавдугаар сар', - 'Зургаадугаар сар', 'Долоодугаар сар', 'Наймдугаар сар', 'Есдүгээр сар', 'Аравдугаар сар', - 'Арван нэгдүгээр сар', 'Арван хоёрдугаар сар' - ] - ], - [['МЭӨ', 'МЭ'], u, ['манай эриний өмнөх', 'манай эриний']], - 1, - [6, 0], - [ - 'y.MM.dd', 'y \'оны\' MMM\'ын\' d', 'y \'оны\' MMMM\'ын\' d', - 'y \'оны\' MMMM\'ын\' d, EEEE \'гараг\'' - ], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss (z)', 'HH:mm:ss (zzzz)'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'MNT', - '₮', - 'Монгол төгрөг', - {'JPY': ['JP¥', '¥'], 'MNT': ['₮'], 'SEK': [u, 'кр'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/mr.ts b/packages/common/locales/mr.ts deleted file mode 100644 index 4d9202949d..0000000000 --- a/packages/common/locales/mr.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} - -export default [ - 'mr', - [['स', 'सं'], ['म.पू.', 'म.उ.'], u], - [['म.पू.', 'म.उ.'], u, u], - [ - ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'], ['रवि', 'सोम', 'मंगळ', 'बुध', 'गुरु', 'शुक्र', 'शनि'], - ['रविवार', 'सोमवार', 'मंगळवार', 'बुधवार', 'गुरुवार', 'शुक्रवार', 'शनिवार'], - ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'] - ], - u, - [ - ['जा', 'फे', 'मा', 'ए', 'मे', 'जू', 'जु', 'ऑ', 'स', 'ऑ', 'नो', 'डि'], - ['जाने', 'फेब्रु', 'मार्च', 'एप्रि', 'मे', 'जून', 'जुलै', 'ऑग', 'सप्टें', 'ऑक्टो', 'नोव्हें', 'डिसें'], - [ - 'जानेवारी', 'फेब्रुवारी', 'मार्च', 'एप्रिल', 'मे', 'जून', 'जुलै', 'ऑगस्ट', 'सप्टेंबर', 'ऑक्टोबर', 'नोव्हेंबर', - 'डिसेंबर' - ] - ], - u, - [['इ. स. पू.', 'इ. स.'], u, ['ईसवीसनपूर्व', 'ईसवीसन']], - 0, - [0, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} रोजी {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##0%', '¤#,##0.00', '[#E0]'], - 'INR', - '₹', - 'भारतीय रुपया', - {'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ms-BN.ts b/packages/common/locales/ms-BN.ts deleted file mode 100644 index de590f0da4..0000000000 --- a/packages/common/locales/ms-BN.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'ms-BN', - [['a', 'p'], ['PG', 'PTG'], u], - u, - [ - ['A', 'I', 'S', 'R', 'K', 'J', 'S'], ['Ahd', 'Isn', 'Sel', 'Rab', 'Kha', 'Jum', 'Sab'], - ['Ahad', 'Isnin', 'Selasa', 'Rabu', 'Khamis', 'Jumaat', 'Sabtu'], - ['Ah', 'Is', 'Se', 'Ra', 'Kh', 'Ju', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ogo', 'Sep', 'Okt', 'Nov', 'Dis'], - [ - 'Januari', 'Februari', 'Mac', 'April', 'Mei', 'Jun', 'Julai', 'Ogos', 'September', 'Oktober', - 'November', 'Disember' - ] - ], - u, - [['S.M.', 'TM'], u, u], - 1, - [6, 0], - ['d/MM/yy', 'd MMM y', 'd MMMM y', 'dd MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'BND', - '$', - 'Dolar Brunei', - { - 'BND': ['$'], - 'CAD': [u, '$'], - 'JPY': ['JP¥', '¥'], - 'MXN': [u, '$'], - 'MYR': ['RM'], - 'TWD': ['NT$'], - 'USD': [u, '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ms-SG.ts b/packages/common/locales/ms-SG.ts deleted file mode 100644 index 4af66501ef..0000000000 --- a/packages/common/locales/ms-SG.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'ms-SG', - [['a', 'p'], ['PG', 'PTG'], u], - u, - [ - ['A', 'I', 'S', 'R', 'K', 'J', 'S'], ['Ahd', 'Isn', 'Sel', 'Rab', 'Kha', 'Jum', 'Sab'], - ['Ahad', 'Isnin', 'Selasa', 'Rabu', 'Khamis', 'Jumaat', 'Sabtu'], - ['Ah', 'Is', 'Se', 'Ra', 'Kh', 'Ju', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ogo', 'Sep', 'Okt', 'Nov', 'Dis'], - [ - 'Januari', 'Februari', 'Mac', 'April', 'Mei', 'Jun', 'Julai', 'Ogos', 'September', 'Oktober', - 'November', 'Disember' - ] - ], - u, - [['S.M.', 'TM'], u, u], - 0, - [6, 0], - ['d/MM/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SGD', - '$', - 'Dolar Singapura', - { - 'CAD': [u, '$'], - 'JPY': ['JP¥', '¥'], - 'MXN': [u, '$'], - 'MYR': ['RM'], - 'SGD': ['$'], - 'TWD': ['NT$'], - 'USD': [u, '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ms.ts b/packages/common/locales/ms.ts deleted file mode 100644 index 2375911ae3..0000000000 --- a/packages/common/locales/ms.ts +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'ms', - [['a', 'p'], ['PG', 'PTG'], u], - u, - [ - ['A', 'I', 'S', 'R', 'K', 'J', 'S'], ['Ahd', 'Isn', 'Sel', 'Rab', 'Kha', 'Jum', 'Sab'], - ['Ahad', 'Isnin', 'Selasa', 'Rabu', 'Khamis', 'Jumaat', 'Sabtu'], - ['Ah', 'Is', 'Se', 'Ra', 'Kh', 'Ju', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ogo', 'Sep', 'Okt', 'Nov', 'Dis'], - [ - 'Januari', 'Februari', 'Mac', 'April', 'Mei', 'Jun', 'Julai', 'Ogos', 'September', 'Oktober', - 'November', 'Disember' - ] - ], - u, - [['S.M.', 'TM'], u, u], - 1, - [6, 0], - ['d/MM/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'MYR', - 'RM', - 'Ringgit Malaysia', - { - 'CAD': [u, '$'], - 'JPY': ['JP¥', '¥'], - 'MXN': [u, '$'], - 'MYR': ['RM'], - 'TWD': ['NT$'], - 'USD': [u, '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/mt.ts b/packages/common/locales/mt.ts deleted file mode 100644 index 0991d0bd96..0000000000 --- a/packages/common/locales/mt.ts +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - if (n === 0 || n % 100 === Math.floor(n % 100) && n % 100 >= 2 && n % 100 <= 10) return 3; - if (n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 19) return 4; - return 5; -} - -export default [ - 'mt', - [['am', 'pm'], ['AM', 'PM'], u], - u, - [ - ['Ħd', 'T', 'Tl', 'Er', 'Ħm', 'Ġm', 'Sb'], ['Ħad', 'Tne', 'Tli', 'Erb', 'Ħam', 'Ġim', 'Sib'], - ['Il-Ħadd', 'It-Tnejn', 'It-Tlieta', 'L-Erbgħa', 'Il-Ħamis', 'Il-Ġimgħa', 'Is-Sibt'], - ['Ħad', 'Tne', 'Tli', 'Erb', 'Ħam', 'Ġim', 'Sib'] - ], - [ - ['Ħd', 'Tn', 'Tl', 'Er', 'Ħm', 'Ġm', 'Sb'], ['Ħad', 'Tne', 'Tli', 'Erb', 'Ħam', 'Ġim', 'Sib'], - ['Il-Ħadd', 'It-Tnejn', 'It-Tlieta', 'L-Erbgħa', 'Il-Ħamis', 'Il-Ġimgħa', 'Is-Sibt'], - ['Ħad', 'Tne', 'Tli', 'Erb', 'Ħam', 'Ġim', 'Sib'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'Ġ', 'L', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Fra', 'Mar', 'Apr', 'Mej', 'Ġun', 'Lul', 'Aww', 'Set', 'Ott', 'Nov', 'Diċ'], - [ - 'Jannar', 'Frar', 'Marzu', 'April', 'Mejju', 'Ġunju', 'Lulju', 'Awwissu', 'Settembru', - 'Ottubru', 'Novembru', 'Diċembru' - ] - ], - [ - ['Jn', 'Fr', 'Mz', 'Ap', 'Mj', 'Ġn', 'Lj', 'Aw', 'St', 'Ob', 'Nv', 'Dċ'], - ['Jan', 'Fra', 'Mar', 'Apr', 'Mej', 'Ġun', 'Lul', 'Aww', 'Set', 'Ott', 'Nov', 'Diċ'], - [ - 'Jannar', 'Frar', 'Marzu', 'April', 'Mejju', 'Ġunju', 'Lulju', 'Awwissu', 'Settembru', - 'Ottubru', 'Novembru', 'Diċembru' - ] - ], - [['QK', 'WK'], u, ['Qabel Kristu', 'Wara Kristu']], - 0, - [6, 0], - ['dd/MM/y', 'dd MMM y', 'd \'ta\'’ MMMM y', 'EEEE, d \'ta\'’ MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'EUR', - '€', - 'ewro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/mua.ts b/packages/common/locales/mua.ts deleted file mode 100644 index 04c92a85c0..0000000000 --- a/packages/common/locales/mua.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'mua', - [['comme', 'lilli'], u, u], - u, - [ - ['Y', 'L', 'Z', 'O', 'A', 'G', 'E'], ['Cya', 'Cla', 'Czi', 'Cko', 'Cka', 'Cga', 'Cze'], - ['Com’yakke', 'Comlaaɗii', 'Comzyiiɗii', 'Comkolle', 'Comkaldǝɓlii', 'Comgaisuu', 'Comzyeɓsuu'], - ['Cya', 'Cla', 'Czi', 'Cko', 'Cka', 'Cga', 'Cze'] - ], - u, - [ - ['O', 'A', 'I', 'F', 'D', 'B', 'L', 'M', 'E', 'U', 'W', 'Y'], - ['FLO', 'CLA', 'CKI', 'FMF', 'MAD', 'MBI', 'MLI', 'MAM', 'FDE', 'FMU', 'FGW', 'FYU'], - [ - 'Fĩi Loo', 'Cokcwaklaŋne', 'Cokcwaklii', 'Fĩi Marfoo', 'Madǝǝuutǝbijaŋ', 'Mamǝŋgwãafahbii', - 'Mamǝŋgwãalii', 'Madǝmbii', 'Fĩi Dǝɓlii', 'Fĩi Mundaŋ', 'Fĩi Gwahlle', 'Fĩi Yuru' - ] - ], - u, - [['KK', 'PK'], u, ['KǝPel Kristu', 'Pel Kristu']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XAF', - 'FCFA', - 'solai BEAC', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/my.ts b/packages/common/locales/my.ts deleted file mode 100644 index 77d2c188b3..0000000000 --- a/packages/common/locales/my.ts +++ /dev/null @@ -1,62 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'my', - [['နံနက်', 'ညနေ'], u, u], - u, - [ - ['တ', 'တ', 'အ', 'ဗ', 'က', 'သ', 'စ'], - ['တနင်္ဂနွေ', 'တနင်္လာ', 'အင်္ဂါ', 'ဗုဒ္ဓဟူး', 'ကြာသပတေး', 'သောကြာ', 'စနေ'], u, u - ], - u, - [ - ['ဇ', 'ဖ', 'မ', 'ဧ', 'မ', 'ဇ', 'ဇ', 'ဩ', 'စ', 'အ', 'န', 'ဒ'], - ['ဇန်', 'ဖေ', 'မတ်', 'ဧ', 'မေ', 'ဇွန်', 'ဇူ', 'ဩ', 'စက်', 'အောက်', 'နို', 'ဒီ'], - [ - 'ဇန်နဝါရီ', 'ဖေဖော်ဝါရီ', 'မတ်', 'ဧပြီ', 'မေ', 'ဇွန်', 'ဇူလိုင်', 'ဩဂုတ်', 'စက်တင်ဘာ', 'အောက်တိုဘာ', 'နိုဝင်ဘာ', - 'ဒီဇင်ဘာ' - ] - ], - u, - [['ဘီစီ', 'အဒေီ'], u, ['ခရစ်တော် မပေါ်မီနှစ်', 'ခရစ်နှစ်']], - 0, - [6, 0], - ['dd-MM-yy', 'y၊ MMM d', 'y၊ d MMMM', 'y၊ MMMM d၊ EEEE'], - ['B H:mm', 'B HH:mm:ss', 'z HH:mm:ss', 'zzzz HH:mm:ss'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'ဂဏန်းမဟုတ်သော', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'MMK', - 'K', - 'မြန်မာ ကျပ်', - { - 'ANG': ['NAf'], - 'AWG': ['Afl'], - 'BBD': [u, 'Bds$'], - 'BSD': [u, 'B$'], - 'HTG': ['G'], - 'JPY': ['JP¥', '¥'], - 'MMK': ['K'], - 'PAB': ['B/.'], - 'THB': ['฿'], - 'TTD': ['TT$', '$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/mzn.ts b/packages/common/locales/mzn.ts deleted file mode 100644 index 6bf9719913..0000000000 --- a/packages/common/locales/mzn.ts +++ /dev/null @@ -1,47 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'mzn', - [['AM', 'PM'], u, u], - u, - [['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], u, u], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن', 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', - 'نوامبر', 'دسامبر' - ], - u - ], - u, - [['پ.م', 'م.'], u, ['قبل میلاد', 'بعد میلاد']], - 6, - [5, 5], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'IRR', - 'IRR', - 'ایران ریال', - {'JPY': ['JP¥', '¥']}, - 'rtl', - plural -]; diff --git a/packages/common/locales/naq.ts b/packages/common/locales/naq.ts deleted file mode 100644 index 2bd7ef1cc1..0000000000 --- a/packages/common/locales/naq.ts +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - if (n === 2) return 2; - return 5; -} - -export default [ - 'naq', - [['ǁgoagas', 'ǃuias'], u, u], - u, - [ - ['S', 'M', 'E', 'W', 'D', 'F', 'A'], ['Son', 'Ma', 'De', 'Wu', 'Do', 'Fr', 'Sat'], - [ - 'Sontaxtsees', 'Mantaxtsees', 'Denstaxtsees', 'Wunstaxtsees', 'Dondertaxtsees', - 'Fraitaxtsees', 'Satertaxtsees' - ], - ['Son', 'Ma', 'De', 'Wu', 'Do', 'Fr', 'Sat'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'ǃKhanni', 'ǃKhanǀgôab', 'ǀKhuuǁkhâb', 'ǃHôaǂkhaib', 'ǃKhaitsâb', 'Gamaǀaeb', 'ǂKhoesaob', - 'Aoǁkhuumûǁkhâb', 'Taraǀkhuumûǁkhâb', 'ǂNûǁnâiseb', 'ǀHooǂgaeb', 'Hôasoreǁkhâb' - ] - ], - u, - [['BC', 'AD'], u, ['Xristub aiǃâ', 'Xristub khaoǃgâ']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZAR', - 'ZAR', - 'South African Randi', - {'JPY': ['JP¥', '¥'], 'NAD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/nb-SJ.ts b/packages/common/locales/nb-SJ.ts deleted file mode 100644 index bdc5626545..0000000000 --- a/packages/common/locales/nb-SJ.ts +++ /dev/null @@ -1,80 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'nb-SJ', - [['a', 'p'], ['a.m.', 'p.m.'], u], - [['a.m.', 'p.m.'], u, u], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['søn.', 'man.', 'tir.', 'ons.', 'tor.', 'fre.', 'lør.'], - ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'], - ['sø.', 'ma.', 'ti.', 'on.', 'to.', 'fr.', 'lø.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mar.', 'apr.', 'mai', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'des.'], - [ - 'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', - 'november', 'desember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'], - [ - 'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', - 'november', 'desember' - ] - ], - [['f.Kr.', 'e.Kr.'], u, ['før Kristus', 'etter Kristus']], - 1, - [6, 0], - ['dd.MM.y', 'd. MMM y', 'd. MMMM y', 'EEEE d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'kl\'. {0}', '{1} {0}'], - [',', ' ', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'NOK', - 'kr', - 'norske kroner', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NOK': ['kr'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/nb.ts b/packages/common/locales/nb.ts deleted file mode 100644 index 919eb40886..0000000000 --- a/packages/common/locales/nb.ts +++ /dev/null @@ -1,80 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'nb', - [['a', 'p'], ['a.m.', 'p.m.'], u], - [['a.m.', 'p.m.'], u, u], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['søn.', 'man.', 'tir.', 'ons.', 'tor.', 'fre.', 'lør.'], - ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'], - ['sø.', 'ma.', 'ti.', 'on.', 'to.', 'fr.', 'lø.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mar.', 'apr.', 'mai', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'des.'], - [ - 'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', - 'november', 'desember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'], - [ - 'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', - 'november', 'desember' - ] - ], - [['f.Kr.', 'e.Kr.'], u, ['før Kristus', 'etter Kristus']], - 1, - [6, 0], - ['dd.MM.y', 'd. MMM y', 'd. MMMM y', 'EEEE d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'kl\'. {0}', '{1} {0}'], - [',', ' ', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'NOK', - 'kr', - 'norske kroner', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NOK': ['kr'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/nd.ts b/packages/common/locales/nd.ts deleted file mode 100644 index 73aecbe124..0000000000 --- a/packages/common/locales/nd.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'nd', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'S', 'S', 'S', 'S', 'M'], ['Son', 'Mvu', 'Sib', 'Sit', 'Sin', 'Sih', 'Mgq'], - ['Sonto', 'Mvulo', 'Sibili', 'Sithathu', 'Sine', 'Sihlanu', 'Mgqibelo'], - ['Son', 'Mvu', 'Sib', 'Sit', 'Sin', 'Sih', 'Mgq'] - ], - u, - [ - ['Z', 'N', 'M', 'M', 'N', 'N', 'N', 'N', 'M', 'M', 'L', 'M'], - ['Zib', 'Nhlo', 'Mbi', 'Mab', 'Nkw', 'Nhla', 'Ntu', 'Ncw', 'Mpan', 'Mfu', 'Lwe', 'Mpal'], - [ - 'Zibandlela', 'Nhlolanja', 'Mbimbitho', 'Mabasa', 'Nkwenkwezi', 'Nhlangula', 'Ntulikazi', - 'Ncwabakazi', 'Mpandula', 'Mfumfu', 'Lwezi', 'Mpalakazi' - ] - ], - u, - [['BC', 'AD'], u, ['UKristo angakabuyi', 'Ukristo ebuyile']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - 'US$', - 'Dola yase Amelika', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/nds-NL.ts b/packages/common/locales/nds-NL.ts deleted file mode 100644 index f0a3a90482..0000000000 --- a/packages/common/locales/nds-NL.ts +++ /dev/null @@ -1,43 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'nds-NL', - [['AM', 'PM'], u, u], - u, - [['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], u, u], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'], u - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'EUR', - '€', - 'EUR', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/nds.ts b/packages/common/locales/nds.ts deleted file mode 100644 index d546daf0df..0000000000 --- a/packages/common/locales/nds.ts +++ /dev/null @@ -1,43 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'nds', - [['AM', 'PM'], u, u], - u, - [['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], u, u], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'], u - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'EUR', - '€', - 'EUR', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ne-IN.ts b/packages/common/locales/ne-IN.ts deleted file mode 100644 index e2c84beb2f..0000000000 --- a/packages/common/locales/ne-IN.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ne-IN', - [['पूर्वाह्न', 'अपराह्न'], u, u], - u, - [ - ['आ', 'सो', 'म', 'बु', 'बि', 'शु', 'श'], ['आइत', 'सोम', 'मङ्गल', 'बुध', 'बिहि', 'शुक्र', 'शनि'], - ['आइतबार', 'सोमबार', 'मङ्गलबार', 'बुधबार', 'बिहिबार', 'शुक्रबार', 'शनिबार'], - ['आइत', 'सोम', 'मङ्गल', 'बुध', 'बिहि', 'शुक्र', 'शनि'] - ], - u, - [ - ['जन', 'फेब', 'मार्च', 'अप्र', 'मे', 'जुन', 'जुल', 'अग', 'सेप', 'अक्टो', 'नोभे', 'डिसे'], - [ - 'जनवरी', 'फेब्रुअरी', 'मार्च', 'अप्रिल', 'मे', 'जुन', 'जुलाई', 'अगस्ट', 'सेप्टेम्बर', 'अक्टोबर', 'नोभेम्बर', - 'डिसेम्बर' - ], - u - ], - [ - ['जन', 'फेेब', 'मार्च', 'अप्र', 'मे', 'जुन', 'जुल', 'अग', 'सेप', 'अक्टो', 'नोभे', 'डिसे'], - [ - 'जनवरी', 'फेब्रुअरी', 'मार्च', 'अप्रिल', 'मे', 'जुन', 'जुलाई', 'अगस्ट', 'सेप्टेम्बर', 'अक्टोबर', 'नोभेम्बर', - 'डिसेम्बर' - ], - u - ], - [['ईसा पूर्व', 'सन्'], u, u], - 0, - [0, 0], - ['yy/M/d', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤ #,##,##0.00', '#E0'], - 'INR', - '₹', - 'भारतीय रूपिँया', - {'JPY': ['JP¥', '¥'], 'NPR': ['नेरू', 'रू'], 'THB': ['฿'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ne.ts b/packages/common/locales/ne.ts deleted file mode 100644 index 4da8cb7012..0000000000 --- a/packages/common/locales/ne.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ne', - [['पूर्वाह्न', 'अपराह्न'], u, u], - u, - [ - ['आ', 'सो', 'म', 'बु', 'बि', 'शु', 'श'], ['आइत', 'सोम', 'मङ्गल', 'बुध', 'बिहि', 'शुक्र', 'शनि'], - ['आइतबार', 'सोमबार', 'मङ्गलबार', 'बुधबार', 'बिहिबार', 'शुक्रबार', 'शनिबार'], - ['आइत', 'सोम', 'मङ्गल', 'बुध', 'बिहि', 'शुक्र', 'शनि'] - ], - u, - [ - ['जन', 'फेब', 'मार्च', 'अप्र', 'मे', 'जुन', 'जुल', 'अग', 'सेप', 'अक्टो', 'नोभे', 'डिसे'], - [ - 'जनवरी', 'फेब्रुअरी', 'मार्च', 'अप्रिल', 'मे', 'जुन', 'जुलाई', 'अगस्ट', 'सेप्टेम्बर', 'अक्टोबर', 'नोभेम्बर', - 'डिसेम्बर' - ], - u - ], - [ - ['जन', 'फेेब', 'मार्च', 'अप्र', 'मे', 'जुन', 'जुल', 'अग', 'सेप', 'अक्टो', 'नोभे', 'डिसे'], - [ - 'जनवरी', 'फेब्रुअरी', 'मार्च', 'अप्रिल', 'मे', 'जुन', 'जुलाई', 'अगस्ट', 'सेप्टेम्बर', 'अक्टोबर', 'नोभेम्बर', - 'डिसेम्बर' - ], - u - ], - [['ईसा पूर्व', 'सन्'], u, u], - 0, - [6, 0], - ['yy/M/d', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤ #,##,##0.00', '#E0'], - 'NPR', - 'नेरू', - 'नेपाली रूपैयाँ', - {'JPY': ['JP¥', '¥'], 'NPR': ['नेरू', 'रू'], 'THB': ['฿'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/nl-AW.ts b/packages/common/locales/nl-AW.ts deleted file mode 100644 index c07e03c7c6..0000000000 --- a/packages/common/locales/nl-AW.ts +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'nl-AW', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['Z', 'M', 'D', 'W', 'D', 'V', 'Z'], ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], - ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], - ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['v.C.', 'n.C.'], ['v.Chr.', 'n.Chr.'], ['voor Christus', 'na Christus']], - 1, - [6, 0], - ['dd-MM-y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'om\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤ -#,##0.00', '#E0'], - 'AWG', - 'Afl.', - 'Arubaanse gulden', - { - 'AUD': ['AU$', '$'], - 'AWG': ['Afl.'], - 'CAD': ['C$', '$'], - 'FJD': ['FJ$', '$'], - 'JPY': ['JP¥', '¥'], - 'SBD': ['SI$', '$'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/nl-BE.ts b/packages/common/locales/nl-BE.ts deleted file mode 100644 index 87c7ae5e4a..0000000000 --- a/packages/common/locales/nl-BE.ts +++ /dev/null @@ -1,64 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'nl-BE', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['Z', 'M', 'D', 'W', 'D', 'V', 'Z'], ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], - ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], - ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['v.C.', 'n.C.'], ['v.Chr.', 'n.Chr.'], ['voor Christus', 'na Christus']], - 1, - [6, 0], - ['d/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'om\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤ -#,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - { - 'AUD': ['AU$', '$'], - 'CAD': ['C$', '$'], - 'FJD': ['FJ$', '$'], - 'JPY': ['JP¥', '¥'], - 'SBD': ['SI$', '$'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/nl-BQ.ts b/packages/common/locales/nl-BQ.ts deleted file mode 100644 index 4dada76780..0000000000 --- a/packages/common/locales/nl-BQ.ts +++ /dev/null @@ -1,63 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'nl-BQ', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['Z', 'M', 'D', 'W', 'D', 'V', 'Z'], ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], - ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], - ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['v.C.', 'n.C.'], ['v.Chr.', 'n.Chr.'], ['voor Christus', 'na Christus']], - 1, - [6, 0], - ['dd-MM-y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'om\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤ -#,##0.00', '#E0'], - 'USD', - '$', - 'Amerikaanse dollar', - { - 'AUD': ['AU$', '$'], - 'CAD': ['C$', '$'], - 'FJD': ['FJ$', '$'], - 'JPY': ['JP¥', '¥'], - 'SBD': ['SI$', '$'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/nl-CW.ts b/packages/common/locales/nl-CW.ts deleted file mode 100644 index 48c1ddcacd..0000000000 --- a/packages/common/locales/nl-CW.ts +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'nl-CW', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['Z', 'M', 'D', 'W', 'D', 'V', 'Z'], ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], - ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], - ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['v.C.', 'n.C.'], ['v.Chr.', 'n.Chr.'], ['voor Christus', 'na Christus']], - 1, - [6, 0], - ['dd-MM-y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'om\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤ -#,##0.00', '#E0'], - 'ANG', - 'NAf.', - 'Nederlands-Antilliaanse gulden', - { - 'ANG': ['NAf.'], - 'AUD': ['AU$', '$'], - 'CAD': ['C$', '$'], - 'FJD': ['FJ$', '$'], - 'JPY': ['JP¥', '¥'], - 'SBD': ['SI$', '$'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/nl-SR.ts b/packages/common/locales/nl-SR.ts deleted file mode 100644 index f31ce9f74b..0000000000 --- a/packages/common/locales/nl-SR.ts +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'nl-SR', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['Z', 'M', 'D', 'W', 'D', 'V', 'Z'], ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], - ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], - ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['v.C.', 'n.C.'], ['v.Chr.', 'n.Chr.'], ['voor Christus', 'na Christus']], - 1, - [6, 0], - ['dd-MM-y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'om\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤ -#,##0.00', '#E0'], - 'SRD', - '$', - 'Surinaamse dollar', - { - 'AUD': ['AU$', '$'], - 'CAD': ['C$', '$'], - 'FJD': ['FJ$', '$'], - 'JPY': ['JP¥', '¥'], - 'SBD': ['SI$', '$'], - 'SRD': ['$'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/nl-SX.ts b/packages/common/locales/nl-SX.ts deleted file mode 100644 index 0bc8ce252d..0000000000 --- a/packages/common/locales/nl-SX.ts +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'nl-SX', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['Z', 'M', 'D', 'W', 'D', 'V', 'Z'], ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], - ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], - ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['v.C.', 'n.C.'], ['v.Chr.', 'n.Chr.'], ['voor Christus', 'na Christus']], - 1, - [6, 0], - ['dd-MM-y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'om\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤ -#,##0.00', '#E0'], - 'ANG', - 'NAf.', - 'Nederlands-Antilliaanse gulden', - { - 'ANG': ['NAf.'], - 'AUD': ['AU$', '$'], - 'CAD': ['C$', '$'], - 'FJD': ['FJ$', '$'], - 'JPY': ['JP¥', '¥'], - 'SBD': ['SI$', '$'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/nl.ts b/packages/common/locales/nl.ts deleted file mode 100644 index 12ed1c7abd..0000000000 --- a/packages/common/locales/nl.ts +++ /dev/null @@ -1,64 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'nl', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['Z', 'M', 'D', 'W', 'D', 'V', 'Z'], ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], - ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], - ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['v.C.', 'n.C.'], ['v.Chr.', 'n.Chr.'], ['voor Christus', 'na Christus']], - 1, - [6, 0], - ['dd-MM-y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1} \'om\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00;¤ -#,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - { - 'AUD': ['AU$', '$'], - 'CAD': ['C$', '$'], - 'FJD': ['FJ$', '$'], - 'JPY': ['JP¥', '¥'], - 'SBD': ['SI$', '$'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XPF': [], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/nmg.ts b/packages/common/locales/nmg.ts deleted file mode 100644 index ac9ef306e7..0000000000 --- a/packages/common/locales/nmg.ts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'nmg', - [['maná', 'kugú'], u, u], - u, - [ - ['s', 'm', 's', 's', 's', 'm', 's'], ['sɔ́n', 'mɔ́n', 'smb', 'sml', 'smn', 'mbs', 'sas'], - [ - 'sɔ́ndɔ', 'mɔ́ndɔ', 'sɔ́ndɔ mafú mába', 'sɔ́ndɔ mafú málal', 'sɔ́ndɔ mafú mána', 'mabágá má sukul', - 'sásadi' - ], - ['sɔ́n', 'mɔ́n', 'smb', 'sml', 'smn', 'mbs', 'sas'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['ng1', 'ng2', 'ng3', 'ng4', 'ng5', 'ng6', 'ng7', 'ng8', 'ng9', 'ng10', 'ng11', 'kris'], - [ - 'ngwɛn matáhra', 'ngwɛn ńmba', 'ngwɛn ńlal', 'ngwɛn ńna', 'ngwɛn ńtan', 'ngwɛn ńtuó', - 'ngwɛn hɛmbuɛrí', 'ngwɛn lɔmbi', 'ngwɛn rɛbvuâ', 'ngwɛn wum', 'ngwɛn wum navǔr', 'krísimin' - ] - ], - u, - [['BL', 'PB'], u, ['Bó Lahlɛ̄', 'Pfiɛ Burī']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'Fraŋ CFA BEAC', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/nn.ts b/packages/common/locales/nn.ts deleted file mode 100644 index 477b2266f1..0000000000 --- a/packages/common/locales/nn.ts +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'nn', - [['f.m.', 'e.m.'], u, ['formiddag', 'ettermiddag']], - [['f.m.', 'e.m.'], u, u], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['sø.', 'må.', 'ty.', 'on.', 'to.', 'fr.', 'la.'], - ['søndag', 'måndag', 'tysdag', 'onsdag', 'torsdag', 'fredag', 'laurdag'], - ['sø.', 'må.', 'ty.', 'on.', 'to.', 'fr.', 'la.'] - ], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['søn', 'mån', 'tys', 'ons', 'tor', 'fre', 'lau'], - ['søndag', 'måndag', 'tysdag', 'onsdag', 'torsdag', 'fredag', 'laurdag'], - ['sø.', 'må.', 'ty.', 'on.', 'to.', 'fr.', 'la.'] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mars', 'apr.', 'mai', 'juni', 'juli', 'aug.', 'sep.', 'okt.', 'nov.', 'des.'], - [ - 'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', - 'november', 'desember' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'], - [ - 'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', - 'november', 'desember' - ] - ], - [['f.Kr.', 'e.Kr.'], u, u], - 1, - [6, 0], - ['dd.MM.y', 'd. MMM y', 'd. MMMM y', 'EEEE d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', '\'kl\'. HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'kl\'. {0}', '{1} {0}'], - [',', ' ', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'NOK', - 'kr', - 'norske kroner', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NOK': ['kr'], - 'NZD': [u, '$'], - 'TWD': [u, '$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XAF': [], - 'XCD': [u, '$'], - 'XPF': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/nnh.ts b/packages/common/locales/nnh.ts deleted file mode 100644 index de2025368c..0000000000 --- a/packages/common/locales/nnh.ts +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'nnh', - [['mbaʼámbaʼ', 'ncwònzém'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - [ - 'lyɛʼɛ́ sẅíŋtè', 'mvfò lyɛ̌ʼ', 'mbɔ́ɔntè mvfò lyɛ̌ʼ', 'tsètsɛ̀ɛ lyɛ̌ʼ', 'mbɔ́ɔntè tsetsɛ̀ɛ lyɛ̌ʼ', - 'mvfò màga lyɛ̌ʼ', 'màga lyɛ̌ʼ' - ], - u, u - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'saŋ tsetsɛ̀ɛ lùm', 'saŋ kàg ngwóŋ', 'saŋ lepyè shúm', 'saŋ cÿó', 'saŋ tsɛ̀ɛ cÿó', - 'saŋ njÿoláʼ', 'saŋ tyɛ̀b tyɛ̀b mbʉ̀ŋ', 'saŋ mbʉ̀ŋ', 'saŋ ngwɔ̀ʼ mbÿɛ', 'saŋ tàŋa tsetsáʼ', - 'saŋ mejwoŋó', 'saŋ lùm' - ], - u - ], - u, - [['m.z.Y.', 'm.g.n.Y.'], u, ['mé zyé Yěsô', 'mé gÿo ńzyé Yěsô']], - 1, - [6, 0], - ['dd/MM/yy', 'd MMM, y', '\'lyɛ\'̌ʼ d \'na\' MMMM, y', 'EEEE , \'lyɛ\'̌ʼ d \'na\' MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{1}, {0}', '{1},{0}'], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'XAF', - 'FCFA', - 'feláŋ CFA', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/nus.ts b/packages/common/locales/nus.ts deleted file mode 100644 index 5e008e1627..0000000000 --- a/packages/common/locales/nus.ts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'nus', - [['RW', 'TŊ'], u, u], - u, - [ - ['C', 'J', 'R', 'D', 'Ŋ', 'D', 'B'], ['Cäŋ', 'Jiec', 'Rɛw', 'Diɔ̱k', 'Ŋuaan', 'Dhieec', 'Bäkɛl'], - [ - 'Cäŋ kuɔth', 'Jiec la̱t', 'Rɛw lätni', 'Diɔ̱k lätni', 'Ŋuaan lätni', 'Dhieec lätni', - 'Bäkɛl lätni' - ], - ['Cäŋ', 'Jiec', 'Rɛw', 'Diɔ̱k', 'Ŋuaan', 'Dhieec', 'Bäkɛl'] - ], - u, - [ - ['T', 'P', 'D', 'G', 'D', 'K', 'P', 'T', 'T', 'L', 'K', 'T'], - ['Tiop', 'Pɛt', 'Duɔ̱ɔ̱', 'Guak', 'Duä', 'Kor', 'Pay', 'Thoo', 'Tɛɛ', 'Laa', 'Kur', 'Tid'], - [ - 'Tiop thar pɛt', 'Pɛt', 'Duɔ̱ɔ̱ŋ', 'Guak', 'Duät', 'Kornyoot', 'Pay yie̱tni', 'Tho̱o̱r', 'Tɛɛr', - 'Laath', 'Kur', 'Tio̱p in di̱i̱t' - ] - ], - u, - [['AY', 'ƐY'], u, ['A ka̱n Yecu ni dap', 'Ɛ ca Yecu dap']], - 1, - [6, 0], - ['d/MM/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'z h:mm:ss a', 'zzzz h:mm:ss a'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SSP', - '£', - 'SSP', - {'GBP': ['GB£', '£'], 'JPY': ['JP¥', '¥'], 'SSP': ['£'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/nyn.ts b/packages/common/locales/nyn.ts deleted file mode 100644 index f8ae2dd472..0000000000 --- a/packages/common/locales/nyn.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'nyn', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'K', 'R', 'S', 'N', 'T', 'M'], ['SAN', 'ORK', 'OKB', 'OKS', 'OKN', 'OKT', 'OMK'], - ['Sande', 'Orwokubanza', 'Orwakabiri', 'Orwakashatu', 'Orwakana', 'Orwakataano', 'Orwamukaaga'], - ['SAN', 'ORK', 'OKB', 'OKS', 'OKN', 'OKT', 'OMK'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['KBZ', 'KBR', 'KST', 'KKN', 'KTN', 'KMK', 'KMS', 'KMN', 'KMW', 'KKM', 'KNK', 'KNB'], - [ - 'Okwokubanza', 'Okwakabiri', 'Okwakashatu', 'Okwakana', 'Okwakataana', 'Okwamukaaga', - 'Okwamushanju', 'Okwamunaana', 'Okwamwenda', 'Okwaikumi', 'Okwaikumi na kumwe', - 'Okwaikumi na ibiri' - ] - ], - u, - [['BC', 'AD'], u, ['Kurisito Atakaijire', 'Kurisito Yaijire']], - 1, - [0, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'UGX', - 'USh', - 'Eshiringi ya Uganda', - {'JPY': ['JP¥', '¥'], 'UGX': ['USh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/om-KE.ts b/packages/common/locales/om-KE.ts deleted file mode 100644 index a9b3d8813d..0000000000 --- a/packages/common/locales/om-KE.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'om-KE', - [['WD', 'WB'], u, u], - u, - [ - ['D', 'W', 'Q', 'R', 'K', 'J', 'S'], ['Dil', 'Wix', 'Qib', 'Rob', 'Kam', 'Jim', 'San'], - ['Dilbata', 'Wiixata', 'Qibxata', 'Roobii', 'Kamiisa', 'Jimaata', 'Sanbata'], - ['Dil', 'Wix', 'Qib', 'Rob', 'Kam', 'Jim', 'San'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Ama', 'Gur', 'Bit', 'Elb', 'Cam', 'Wax', 'Ado', 'Hag', 'Ful', 'Onk', 'Sad', 'Mud'], - [ - 'Amajjii', 'Guraandhala', 'Bitooteessa', 'Elba', 'Caamsa', 'Waxabajjii', 'Adooleessa', - 'Hagayya', 'Fuulbana', 'Onkololeessa', 'Sadaasa', 'Muddee' - ] - ], - [ - ['A', 'G', 'B', 'E', 'C', 'W', 'A', 'H', 'F', 'O', 'S', 'M'], - ['Ama', 'Gur', 'Bit', 'Elb', 'Cam', 'Wax', 'Ado', 'Hag', 'Ful', 'Onk', 'Sad', 'Mud'], - [ - 'Amajjii', 'Guraandhala', 'Bitooteessa', 'Elba', 'Caamsa', 'Waxabajjii', 'Adooleessa', - 'Hagayya', 'Fuulbana', 'Onkololeessa', 'Sadaasa', 'Muddee' - ] - ], - [['KD', 'CE'], u, ['Dheengadda Jeesu', 'CE']], - 0, - [6, 0], - ['dd/MM/yy', 'dd-MMM-y', 'dd MMMM y', 'EEEE, MMMM d, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'KES', - {'ETB': ['Br'], 'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/om.ts b/packages/common/locales/om.ts deleted file mode 100644 index 20825edaa1..0000000000 --- a/packages/common/locales/om.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'om', - [['WD', 'WB'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Dil', 'Wix', 'Qib', 'Rob', 'Kam', 'Jim', 'San'], - ['Dilbata', 'Wiixata', 'Qibxata', 'Roobii', 'Kamiisa', 'Jimaata', 'Sanbata'], - ['Dil', 'Wix', 'Qib', 'Rob', 'Kam', 'Jim', 'San'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Ama', 'Gur', 'Bit', 'Elb', 'Cam', 'Wax', 'Ado', 'Hag', 'Ful', 'Onk', 'Sad', 'Mud'], - [ - 'Amajjii', 'Guraandhala', 'Bitooteessa', 'Elba', 'Caamsa', 'Waxabajjii', 'Adooleessa', - 'Hagayya', 'Fuulbana', 'Onkololeessa', 'Sadaasa', 'Muddee' - ] - ], - u, - [['BCE', 'CE'], u, ['Dheengadda Jeesu', 'CE']], - 0, - [6, 0], - ['dd/MM/yy', 'dd-MMM-y', 'dd MMMM y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ETB', - 'Br', - 'Itoophiyaa Birrii', - {'ETB': ['Br'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/or.ts b/packages/common/locales/or.ts deleted file mode 100644 index cc790449cf..0000000000 --- a/packages/common/locales/or.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'or', - [['ପୂ', 'ଅ'], ['AM', 'PM'], u], - [['AM', 'ଅପରାହ୍ନ'], ['ପୂର୍ବାହ୍ନ', 'ଅପରାହ୍ନ'], u], - [ - ['ର', 'ସୋ', 'ମ', 'ବୁ', 'ଗୁ', 'ଶୁ', 'ଶ'], ['ରବି', 'ସୋମ', 'ମଙ୍ଗଳ', 'ବୁଧ', 'ଗୁରୁ', 'ଶୁକ୍ର', 'ଶନି'], - ['ରବିବାର', 'ସୋମବାର', 'ମଙ୍ଗଳବାର', 'ବୁଧବାର', 'ଗୁରୁବାର', 'ଶୁକ୍ରବାର', 'ଶନିବାର'], - ['ରବି', 'ସୋମ', 'ମଙ୍ଗଳ', 'ବୁଧ', 'ଗୁରୁ', 'ଶୁକ୍ର', 'ଶନି'] - ], - u, - [ - ['ଜା', 'ଫେ', 'ମା', 'ଅ', 'ମଇ', 'ଜୁ', 'ଜୁ', 'ଅ', 'ସେ', 'ଅ', 'ନ', 'ଡି'], - [ - 'ଜାନୁଆରୀ', 'ଫେବୃଆରୀ', 'ମାର୍ଚ୍ଚ', 'ଅପ୍ରେଲ', 'ମଇ', 'ଜୁନ', 'ଜୁଲାଇ', 'ଅଗଷ୍ଟ', 'ସେପ୍ଟେମ୍ବର', 'ଅକ୍ଟୋବର', - 'ନଭେମ୍ବର', 'ଡିସେମ୍ବର' - ], - u - ], - u, - [['BC', 'AD'], u, ['ଖ୍ରୀଷ୍ଟପୂର୍ବ', 'ଖ୍ରୀଷ୍ଟାବ୍ଦ']], - 0, - [0, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{0} ଠାରେ {1}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'INR', - '₹', - 'ଭାରତୀୟ ଟଙ୍କା', - {}, - 'ltr', - plural -]; diff --git a/packages/common/locales/os-RU.ts b/packages/common/locales/os-RU.ts deleted file mode 100644 index ee2a62ab1b..0000000000 --- a/packages/common/locales/os-RU.ts +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'os-RU', - [['AM', 'PM'], u, ['ӕмбисбоны размӕ', 'ӕмбисбоны фӕстӕ']], - [['AM', 'PM'], u, u], - [ - ['Х', 'К', 'Д', 'Ӕ', 'Ц', 'М', 'С'], ['хцб', 'крс', 'дцг', 'ӕрт', 'цпр', 'мрб', 'сбт'], - ['хуыцаубон', 'къуырисӕр', 'дыццӕг', 'ӕртыццӕг', 'цыппӕрӕм', 'майрӕмбон', 'сабат'], - ['хцб', 'крс', 'дцг', 'ӕрт', 'цпр', 'мрб', 'сбт'] - ], - [ - ['Х', 'К', 'Д', 'Ӕ', 'Ц', 'М', 'С'], ['Хцб', 'Крс', 'Дцг', 'Ӕрт', 'Цпр', 'Мрб', 'Сбт'], - ['Хуыцаубон', 'Къуырисӕр', 'Дыццӕг', 'Ӕртыццӕг', 'Цыппӕрӕм', 'Майрӕмбон', 'Сабат'], - ['хцб', 'крс', 'дцг', 'ӕрт', 'цпр', 'мрб', 'сбт'] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'фев.', 'мар.', 'апр.', 'майы', 'июны', 'июлы', 'авг.', 'сен.', 'окт.', 'ноя.', 'дек.' - ], - [ - 'январы', 'февралы', 'мартъийы', 'апрелы', 'майы', 'июны', 'июлы', 'августы', 'сентябры', - 'октябры', 'ноябры', 'декабры' - ] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'Янв.', 'Февр.', 'Март.', 'Апр.', 'Май', 'Июнь', 'Июль', 'Авг.', 'Сент.', 'Окт.', 'Нояб.', - 'Дек.' - ], - [ - 'Январь', 'Февраль', 'Мартъи', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', - 'Октябрь', 'Ноябрь', 'Декабрь' - ] - ], - [['н.д.а.', 'н.д.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd MMM y \'аз\'', 'd MMMM, y \'аз\'', 'EEEE, d MMMM, y \'аз\''], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'НН', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'RUB', - '₽', - 'Сом', - {'JPY': ['JP¥', '¥'], 'RUB': ['₽']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/os.ts b/packages/common/locales/os.ts deleted file mode 100644 index 32787318c0..0000000000 --- a/packages/common/locales/os.ts +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'os', - [['AM', 'PM'], u, ['ӕмбисбоны размӕ', 'ӕмбисбоны фӕстӕ']], - [['AM', 'PM'], u, u], - [ - ['Х', 'К', 'Д', 'Ӕ', 'Ц', 'М', 'С'], ['хцб', 'крс', 'дцг', 'ӕрт', 'цпр', 'мрб', 'сбт'], - ['хуыцаубон', 'къуырисӕр', 'дыццӕг', 'ӕртыццӕг', 'цыппӕрӕм', 'майрӕмбон', 'сабат'], - ['хцб', 'крс', 'дцг', 'ӕрт', 'цпр', 'мрб', 'сбт'] - ], - [ - ['Х', 'К', 'Д', 'Ӕ', 'Ц', 'М', 'С'], ['Хцб', 'Крс', 'Дцг', 'Ӕрт', 'Цпр', 'Мрб', 'Сбт'], - ['Хуыцаубон', 'Къуырисӕр', 'Дыццӕг', 'Ӕртыццӕг', 'Цыппӕрӕм', 'Майрӕмбон', 'Сабат'], - ['хцб', 'крс', 'дцг', 'ӕрт', 'цпр', 'мрб', 'сбт'] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'фев.', 'мар.', 'апр.', 'майы', 'июны', 'июлы', 'авг.', 'сен.', 'окт.', 'ноя.', 'дек.' - ], - [ - 'январы', 'февралы', 'мартъийы', 'апрелы', 'майы', 'июны', 'июлы', 'августы', 'сентябры', - 'октябры', 'ноябры', 'декабры' - ] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'Янв.', 'Февр.', 'Март.', 'Апр.', 'Май', 'Июнь', 'Июль', 'Авг.', 'Сент.', 'Окт.', 'Нояб.', - 'Дек.' - ], - [ - 'Январь', 'Февраль', 'Мартъи', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', - 'Октябрь', 'Ноябрь', 'Декабрь' - ] - ], - [['н.д.а.', 'н.д.'], u, u], - 1, - [6, 0], - ['dd.MM.yy', 'dd MMM y \'аз\'', 'd MMMM, y \'аз\'', 'EEEE, d MMMM, y \'аз\''], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'НН', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'GEL', - '₾', - 'Лар', - {'GEL': ['₾'], 'JPY': ['JP¥', '¥']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/pa-Arab.ts b/packages/common/locales/pa-Arab.ts deleted file mode 100644 index 6e88c0e034..0000000000 --- a/packages/common/locales/pa-Arab.ts +++ /dev/null @@ -1,50 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'pa-Arab', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['اتوار', 'پیر', 'منگل', 'بُدھ', 'جمعرات', 'جمعہ', 'ہفتہ'], - u, u - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'جنوری', 'فروری', 'مارچ', 'اپریل', 'مئ', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', - 'دسمبر' - ], - u - ], - u, - [['ايساپورو', 'سں'], u, u], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, dd MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'PKR', - 'ر', - 'روپئیہ', - {'JPY': ['JP¥', '¥'], 'PKR': ['ر', 'Rs'], 'USD': ['US$', '$']}, - 'rtl', - plural -]; diff --git a/packages/common/locales/pa-Guru.ts b/packages/common/locales/pa-Guru.ts deleted file mode 100644 index 90023bbd8e..0000000000 --- a/packages/common/locales/pa-Guru.ts +++ /dev/null @@ -1,49 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === Math.floor(n) && n >= 0 && n <= 1) return 1; - return 5; -} - -export default [ - 'pa-Guru', - [['ਸ.', 'ਸ਼.'], ['ਪੂ.ਦੁ.', 'ਬਾ.ਦੁ.'], u], - [['ਪੂ.ਦੁ.', 'ਬਾ.ਦੁ.'], u, u], - [ - ['ਐ', 'ਸੋ', 'ਮੰ', 'ਬੁੱ', 'ਵੀ', 'ਸ਼ੁੱ', 'ਸ਼'], ['ਐਤ', 'ਸੋਮ', 'ਮੰਗਲ', 'ਬੁੱਧ', 'ਵੀਰ', 'ਸ਼ੁੱਕਰ', 'ਸ਼ਨਿੱਚਰ'], - ['ਐਤਵਾਰ', 'ਸੋਮਵਾਰ', 'ਮੰਗਲਵਾਰ', 'ਬੁੱਧਵਾਰ', 'ਵੀਰਵਾਰ', 'ਸ਼ੁੱਕਰਵਾਰ', 'ਸ਼ਨਿੱਚਰਵਾਰ'], - ['ਐਤ', 'ਸੋਮ', 'ਮੰਗ', 'ਬੁੱਧ', 'ਵੀਰ', 'ਸ਼ੁੱਕ', 'ਸ਼ਨਿੱ'] - ], - u, - [ - ['ਜ', 'ਫ਼', 'ਮਾ', 'ਅ', 'ਮ', 'ਜੂ', 'ਜੁ', 'ਅ', 'ਸ', 'ਅ', 'ਨ', 'ਦ'], - ['ਜਨ', 'ਫ਼ਰ', 'ਮਾਰਚ', 'ਅਪ੍ਰੈ', 'ਮਈ', 'ਜੂਨ', 'ਜੁਲਾ', 'ਅਗ', 'ਸਤੰ', 'ਅਕਤੂ', 'ਨਵੰ', 'ਦਸੰ'], - ['ਜਨਵਰੀ', 'ਫ਼ਰਵਰੀ', 'ਮਾਰਚ', 'ਅਪ੍ਰੈਲ', 'ਮਈ', 'ਜੂਨ', 'ਜੁਲਾਈ', 'ਅਗਸਤ', 'ਸਤੰਬਰ', 'ਅਕਤੂਬਰ', 'ਨਵੰਬਰ', 'ਦਸੰਬਰ'] - ], - u, - [['ਈ.ਪੂ.', 'ਸੰਨ'], ['ਈ. ਪੂ.', 'ਸੰਨ'], ['ਈਸਵੀ ਪੂਰਵ', 'ਈਸਵੀ ਸੰਨ']], - 0, - [0, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤ #,##,##0.00', '[#E0]'], - 'INR', - '₹', - 'ਭਾਰਤੀ ਰੁਪਇਆ', - {'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$'], 'XXX': []}, - 'ltr', - plural -]; diff --git a/packages/common/locales/pa.ts b/packages/common/locales/pa.ts deleted file mode 100644 index d1216cdeab..0000000000 --- a/packages/common/locales/pa.ts +++ /dev/null @@ -1,49 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === Math.floor(n) && n >= 0 && n <= 1) return 1; - return 5; -} - -export default [ - 'pa', - [['ਸ.', 'ਸ਼.'], ['ਪੂ.ਦੁ.', 'ਬਾ.ਦੁ.'], u], - [['ਪੂ.ਦੁ.', 'ਬਾ.ਦੁ.'], u, u], - [ - ['ਐ', 'ਸੋ', 'ਮੰ', 'ਬੁੱ', 'ਵੀ', 'ਸ਼ੁੱ', 'ਸ਼'], ['ਐਤ', 'ਸੋਮ', 'ਮੰਗਲ', 'ਬੁੱਧ', 'ਵੀਰ', 'ਸ਼ੁੱਕਰ', 'ਸ਼ਨਿੱਚਰ'], - ['ਐਤਵਾਰ', 'ਸੋਮਵਾਰ', 'ਮੰਗਲਵਾਰ', 'ਬੁੱਧਵਾਰ', 'ਵੀਰਵਾਰ', 'ਸ਼ੁੱਕਰਵਾਰ', 'ਸ਼ਨਿੱਚਰਵਾਰ'], - ['ਐਤ', 'ਸੋਮ', 'ਮੰਗ', 'ਬੁੱਧ', 'ਵੀਰ', 'ਸ਼ੁੱਕ', 'ਸ਼ਨਿੱ'] - ], - u, - [ - ['ਜ', 'ਫ਼', 'ਮਾ', 'ਅ', 'ਮ', 'ਜੂ', 'ਜੁ', 'ਅ', 'ਸ', 'ਅ', 'ਨ', 'ਦ'], - ['ਜਨ', 'ਫ਼ਰ', 'ਮਾਰਚ', 'ਅਪ੍ਰੈ', 'ਮਈ', 'ਜੂਨ', 'ਜੁਲਾ', 'ਅਗ', 'ਸਤੰ', 'ਅਕਤੂ', 'ਨਵੰ', 'ਦਸੰ'], - ['ਜਨਵਰੀ', 'ਫ਼ਰਵਰੀ', 'ਮਾਰਚ', 'ਅਪ੍ਰੈਲ', 'ਮਈ', 'ਜੂਨ', 'ਜੁਲਾਈ', 'ਅਗਸਤ', 'ਸਤੰਬਰ', 'ਅਕਤੂਬਰ', 'ਨਵੰਬਰ', 'ਦਸੰਬਰ'] - ], - u, - [['ਈ.ਪੂ.', 'ਸੰਨ'], ['ਈ. ਪੂ.', 'ਸੰਨ'], ['ਈਸਵੀ ਪੂਰਵ', 'ਈਸਵੀ ਸੰਨ']], - 0, - [0, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤ #,##,##0.00', '[#E0]'], - 'INR', - '₹', - 'ਭਾਰਤੀ ਰੁਪਇਆ', - {'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$'], 'XXX': []}, - 'ltr', - plural -]; diff --git a/packages/common/locales/pl.ts b/packages/common/locales/pl.ts deleted file mode 100644 index b8152c5e55..0000000000 --- a/packages/common/locales/pl.ts +++ /dev/null @@ -1,88 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14)) - return 3; - if (v === 0 && !(i === 1) && i % 10 === Math.floor(i % 10) && i % 10 >= 0 && i % 10 <= 1 || - v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 5 && i % 10 <= 9 || - v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 12 && i % 100 <= 14) - return 4; - return 5; -} - -export default [ - 'pl', - [['a', 'p'], ['AM', 'PM'], u], - u, - [ - ['n', 'p', 'w', 'ś', 'c', 'p', 's'], ['niedz.', 'pon.', 'wt.', 'śr.', 'czw.', 'pt.', 'sob.'], - ['niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota'], - ['nie', 'pon', 'wto', 'śro', 'czw', 'pią', 'sob'] - ], - [ - ['N', 'P', 'W', 'Ś', 'C', 'P', 'S'], ['niedz.', 'pon.', 'wt.', 'śr.', 'czw.', 'pt.', 'sob.'], - ['niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota'], - ['nie', 'pon', 'wto', 'śro', 'czw', 'pią', 'sob'] - ], - [ - ['s', 'l', 'm', 'k', 'm', 'c', 'l', 's', 'w', 'p', 'l', 'g'], - ['sty', 'lut', 'mar', 'kwi', 'maj', 'cze', 'lip', 'sie', 'wrz', 'paź', 'lis', 'gru'], - [ - 'stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'września', - 'października', 'listopada', 'grudnia' - ] - ], - [ - ['S', 'L', 'M', 'K', 'M', 'C', 'L', 'S', 'W', 'P', 'L', 'G'], - ['sty', 'lut', 'mar', 'kwi', 'maj', 'cze', 'lip', 'sie', 'wrz', 'paź', 'lis', 'gru'], - [ - 'styczeń', 'luty', 'marzec', 'kwiecień', 'maj', 'czerwiec', 'lipiec', 'sierpień', 'wrzesień', - 'październik', 'listopad', 'grudzień' - ] - ], - [['p.n.e.', 'n.e.'], u, ['przed naszą erą', 'naszej ery']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'PLN', - 'zł', - 'złoty polski', - { - 'AUD': [u, '$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'PLN': ['zł'], - 'RON': [u, 'lej'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/prg.ts b/packages/common/locales/prg.ts deleted file mode 100644 index eb5aa71a5d..0000000000 --- a/packages/common/locales/prg.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (n % 10 === 0 || n % 100 === Math.floor(n % 100) && n % 100 >= 11 && n % 100 <= 19 || - v === 2 && f % 100 === Math.floor(f % 100) && f % 100 >= 11 && f % 100 <= 19) - return 0; - if (n % 10 === 1 && !(n % 100 === 11) || v === 2 && f % 10 === 1 && !(f % 100 === 11) || - !(v === 2) && f % 10 === 1) - return 1; - return 5; -} - -export default [ - 'prg', - [['AM', 'PM'], u, u], - u, - [['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], u, u], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'], u - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - u, - u, - u, - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ps-PK.ts b/packages/common/locales/ps-PK.ts deleted file mode 100644 index faa3199fc1..0000000000 --- a/packages/common/locales/ps-PK.ts +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ps-PK', - [['غ.م.', 'غ.و.'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - ['يونۍ', 'دونۍ', 'درېنۍ', 'څلرنۍ', 'پينځنۍ', 'جمعه', 'اونۍ'], u, u - ], - u, - [ - ['ج', 'ف', 'م', 'ا', 'م', 'ج', 'ج', 'ا', 'س', 'ا', 'ن', 'د'], - [ - 'جنوري', 'فبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اګست', 'سېپتمبر', 'اکتوبر', - 'نومبر', 'دسمبر' - ], - u - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'جنوري', 'فبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اګست', 'سپتمبر', 'اکتوبر', 'نومبر', - 'دسمبر' - ], - [ - 'جنوري', 'فېبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اګست', 'سپتمبر', 'اکتوبر', - 'نومبر', 'دسمبر' - ] - ], - [['له میلاد وړاندې', 'م.'], u, ['له میلاد څخه وړاندې', 'له میلاد څخه وروسته']], - 0, - [6, 0], - ['y/M/d', 'y MMM d', 'د y د MMMM d', 'EEEE د y د MMMM d'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '\u200e+', '\u200e−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'PKR', - 'Rs', - 'پاکستانۍ کلداره', - {'AFN': ['؋'], 'JPY': ['JP¥', '¥'], 'PKR': ['Rs']}, - 'rtl', - plural -]; diff --git a/packages/common/locales/ps.ts b/packages/common/locales/ps.ts deleted file mode 100644 index 4b6543e3dc..0000000000 --- a/packages/common/locales/ps.ts +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ps', - [['غ.م.', 'غ.و.'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - ['يونۍ', 'دونۍ', 'درېنۍ', 'څلرنۍ', 'پينځنۍ', 'جمعه', 'اونۍ'], u, u - ], - u, - [ - ['ج', 'ف', 'م', 'ا', 'م', 'ج', 'ج', 'ا', 'س', 'ا', 'ن', 'د'], - [ - 'جنوري', 'فبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اګست', 'سېپتمبر', 'اکتوبر', - 'نومبر', 'دسمبر' - ], - u - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'جنوري', 'فبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اګست', 'سپتمبر', 'اکتوبر', 'نومبر', - 'دسمبر' - ], - [ - 'جنوري', 'فېبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اګست', 'سپتمبر', 'اکتوبر', - 'نومبر', 'دسمبر' - ] - ], - [['له میلاد وړاندې', 'م.'], u, ['له میلاد څخه وړاندې', 'له میلاد څخه وروسته']], - 6, - [4, 5], - ['y/M/d', 'y MMM d', 'د y د MMMM d', 'EEEE د y د MMMM d'], - ['H:mm', 'H:mm:ss', 'H:mm:ss (z)', 'H:mm:ss (zzzz)'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '\u200e+', '\u200e−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'AFN', - '؋', - 'افغانۍ', - {'AFN': ['؋'], 'JPY': ['JP¥', '¥']}, - 'rtl', - plural -]; diff --git a/packages/common/locales/pt-AO.ts b/packages/common/locales/pt-AO.ts deleted file mode 100644 index 078d046006..0000000000 --- a/packages/common/locales/pt-AO.ts +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} - -export default [ - 'pt-AO', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'AOA', - 'Kz', - 'kwanza angolano', - { - 'AOA': ['Kz'], - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'PTE': ['​'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/pt-CH.ts b/packages/common/locales/pt-CH.ts deleted file mode 100644 index 44c6a82eda..0000000000 --- a/packages/common/locales/pt-CH.ts +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} - -export default [ - 'pt-CH', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'CHF', - 'CHF', - 'franco suíço', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'PTE': ['​'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/pt-CV.ts b/packages/common/locales/pt-CV.ts deleted file mode 100644 index 995ed819d8..0000000000 --- a/packages/common/locales/pt-CV.ts +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} - -export default [ - 'pt-CV', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'CVE', - '​', - 'escudo cabo-verdiano', - { - 'AUD': ['AU$', '$'], - 'CVE': ['​'], - 'JPY': ['JP¥', '¥'], - 'PTE': ['​PTE'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/pt-GQ.ts b/packages/common/locales/pt-GQ.ts deleted file mode 100644 index 2e47c34cb0..0000000000 --- a/packages/common/locales/pt-GQ.ts +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} - -export default [ - 'pt-GQ', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'franco CFA (BEAC)', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'PTE': ['​'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/pt-GW.ts b/packages/common/locales/pt-GW.ts deleted file mode 100644 index 0d77fad805..0000000000 --- a/packages/common/locales/pt-GW.ts +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} - -export default [ - 'pt-GW', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XOF', - 'CFA', - 'franco CFA (BCEAO)', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'PTE': ['​'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/pt-LU.ts b/packages/common/locales/pt-LU.ts deleted file mode 100644 index 8cb0548df6..0000000000 --- a/packages/common/locales/pt-LU.ts +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} - -export default [ - 'pt-LU', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'LUF': ['F'], - 'PTE': ['​'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/pt-MO.ts b/packages/common/locales/pt-MO.ts deleted file mode 100644 index 410b13d144..0000000000 --- a/packages/common/locales/pt-MO.ts +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} - -export default [ - 'pt-MO', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 0, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'MOP', - 'MOP$', - 'pataca macaense', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'MOP': ['MOP$'], - 'PTE': ['​'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/pt-MZ.ts b/packages/common/locales/pt-MZ.ts deleted file mode 100644 index 998099502a..0000000000 --- a/packages/common/locales/pt-MZ.ts +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} - -export default [ - 'pt-MZ', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 0, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'MZN', - 'MTn', - 'metical moçambicano', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'MZN': ['MTn'], - 'PTE': ['​'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/pt-PT.ts b/packages/common/locales/pt-PT.ts deleted file mode 100644 index 14e1ec342f..0000000000 --- a/packages/common/locales/pt-PT.ts +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} - -export default [ - 'pt-PT', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 0, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'PTE': ['​'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/pt-ST.ts b/packages/common/locales/pt-ST.ts deleted file mode 100644 index bdc521f361..0000000000 --- a/packages/common/locales/pt-ST.ts +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} - -export default [ - 'pt-ST', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'STN', - 'Db', - 'dobra de São Tomé e Príncipe', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'PTE': ['​'], - 'RON': [u, 'L'], - 'STN': ['Db'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/pt-TL.ts b/packages/common/locales/pt-TL.ts deleted file mode 100644 index 73ff2e7e45..0000000000 --- a/packages/common/locales/pt-TL.ts +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} - -export default [ - 'pt-TL', - [['a.m.', 'p.m.'], u, ['da manhã', 'da tarde']], - [['a.m.', 'p.m.'], u, ['manhã', 'tarde']], - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 1, - [6, 0], - ['dd/MM/yy', 'dd/MM/y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'às\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'USD', - 'US$', - 'dólar dos Estados Unidos', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'PTE': ['​'], - 'RON': [u, 'L'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/pt.ts b/packages/common/locales/pt.ts deleted file mode 100644 index 313b20e73a..0000000000 --- a/packages/common/locales/pt.ts +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === Math.floor(i) && i >= 0 && i <= 1) return 1; - return 5; -} - -export default [ - 'pt', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'], ['dom.', 'seg.', 'ter.', 'qua.', 'qui.', 'sex.', 'sáb.'], - [ - 'domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', - 'sábado' - ], - ['dom.', 'seg.', 'ter.', 'qua.', 'qui.', 'sex.', 'sáb.'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'jan.', 'fev.', 'mar.', 'abr.', 'mai.', 'jun.', 'jul.', 'ago.', 'set.', 'out.', 'nov.', 'dez.' - ], - [ - 'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', - 'outubro', 'novembro', 'dezembro' - ] - ], - u, - [['a.C.', 'd.C.'], u, ['antes de Cristo', 'depois de Cristo']], - 0, - [6, 0], - ['dd/MM/y', 'd \'de\' MMM \'de\' y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'BRL', - 'R$', - 'Real brasileiro', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'PTE': ['Esc.'], - 'RON': [u, 'L'], - 'SYP': [u, 'S£'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/qu-BO.ts b/packages/common/locales/qu-BO.ts deleted file mode 100644 index 01f09fdf7d..0000000000 --- a/packages/common/locales/qu-BO.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'qu-BO', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['D', 'L', 'M', 'X', 'J', 'V', 'S'], ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sab'], - ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'], - ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sab'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Set', 'Oct', 'Nov', 'Dic'], - [ - 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Setiembre', - 'Octubre', 'Noviembre', 'Diciembre' - ] - ], - u, - [['BCE', 'dC'], ['BCE', 'd.C.'], u], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{0} {1}', '{1} {0}'], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'BOB', - 'Bs', - 'Boliviano', - { - 'BBD': ['BBG', '$'], - 'BMD': ['DBM', '$'], - 'BOB': ['Bs'], - 'BZD': ['DBZ', '$'], - 'CAD': ['$CA', '$'], - 'JPY': ['JP¥', '¥'], - 'USD': ['$US', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/qu-EC.ts b/packages/common/locales/qu-EC.ts deleted file mode 100644 index 43168c26a3..0000000000 --- a/packages/common/locales/qu-EC.ts +++ /dev/null @@ -1,57 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'qu-EC', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['D', 'L', 'M', 'X', 'J', 'V', 'S'], ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sab'], - ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'], - ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sab'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Set', 'Oct', 'Nov', 'Dic'], - [ - 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Setiembre', - 'Octubre', 'Noviembre', 'Diciembre' - ] - ], - u, - [['BCE', 'dC'], ['BCE', 'd.C.'], u], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{0} {1}', '{1} {0}'], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'USD', - '$', - 'Dólar Americano', - { - 'BBD': ['BBG', '$'], - 'BMD': ['DBM', '$'], - 'BZD': ['DBZ', '$'], - 'CAD': ['$CA', '$'], - 'JPY': ['JP¥', '¥'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/qu.ts b/packages/common/locales/qu.ts deleted file mode 100644 index 44ebad19a5..0000000000 --- a/packages/common/locales/qu.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'qu', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['D', 'L', 'M', 'X', 'J', 'V', 'S'], ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sab'], - ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'], - ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sab'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Set', 'Oct', 'Nov', 'Dic'], - [ - 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Setiembre', - 'Octubre', 'Noviembre', 'Diciembre' - ] - ], - u, - [['BCE', 'dC'], ['BCE', 'd.C.'], u], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, '{0} {1}', '{1} {0}'], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '¤ #,##0.00', '#E0'], - 'PEN', - 'S/', - 'Sol Peruano', - { - 'BBD': ['BBG', '$'], - 'BMD': ['DBM', '$'], - 'BZD': ['DBZ', '$'], - 'CAD': ['$CA', '$'], - 'JPY': ['JP¥', '¥'], - 'PEN': ['S/'], - 'USD': ['$US', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/rm.ts b/packages/common/locales/rm.ts deleted file mode 100644 index 0396200a54..0000000000 --- a/packages/common/locales/rm.ts +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'rm', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'G', 'M', 'M', 'G', 'V', 'S'], ['du', 'gli', 'ma', 'me', 'gie', 've', 'so'], - ['dumengia', 'glindesdi', 'mardi', 'mesemna', 'gievgia', 'venderdi', 'sonda'], - ['du', 'gli', 'ma', 'me', 'gie', 've', 'so'] - ], - u, - [ - ['S', 'F', 'M', 'A', 'M', 'Z', 'F', 'A', 'S', 'O', 'N', 'D'], - [ - 'schan.', 'favr.', 'mars', 'avr.', 'matg', 'zercl.', 'fan.', 'avust', 'sett.', 'oct.', 'nov.', - 'dec.' - ], - [ - 'da schaner', 'da favrer', 'da mars', 'd’avrigl', 'da matg', 'da zercladur', 'da fanadur', - 'd’avust', 'da settember', 'd’october', 'da november', 'da december' - ] - ], - [ - ['S', 'F', 'M', 'A', 'M', 'Z', 'F', 'A', 'S', 'O', 'N', 'D'], - [ - 'schan.', 'favr.', 'mars', 'avr.', 'matg', 'zercl.', 'fan.', 'avust', 'sett.', 'oct.', 'nov.', - 'dec.' - ], - [ - 'schaner', 'favrer', 'mars', 'avrigl', 'matg', 'zercladur', 'fanadur', 'avust', 'settember', - 'october', 'november', 'december' - ] - ], - [['av. Cr.', 's. Cr.'], u, ['avant Cristus', 'suenter Cristus']], - 1, - [6, 0], - ['dd-MM-yy', 'dd-MM-y', 'd MMMM y', 'EEEE, \'ils\' d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', '’', ';', '%', '+', '−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'CHF', - 'CHF', - 'franc svizzer', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/rn.ts b/packages/common/locales/rn.ts deleted file mode 100644 index 50d1c5b967..0000000000 --- a/packages/common/locales/rn.ts +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'rn', - [['Z.MU.', 'Z.MW.'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['cu.', 'mbe.', 'kab.', 'gtu.', 'kan.', 'gnu.', 'gnd.'], - [ - 'Ku w’indwi', 'Ku wa mbere', 'Ku wa kabiri', 'Ku wa gatatu', 'Ku wa kane', 'Ku wa gatanu', - 'Ku wa gatandatu' - ], - ['cu.', 'mbe.', 'kab.', 'gtu.', 'kan.', 'gnu.', 'gnd.'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'Mut.', 'Gas.', 'Wer.', 'Mat.', 'Gic.', 'Kam.', 'Nya.', 'Kan.', 'Nze.', 'Ukw.', 'Ugu.', 'Uku.' - ], - [ - 'Nzero', 'Ruhuhuma', 'Ntwarante', 'Ndamukiza', 'Rusama', 'Ruheshi', 'Mukakaro', 'Nyandagaro', - 'Nyakanga', 'Gitugutu', 'Munyonyo', 'Kigarama' - ] - ], - u, - [['Mb.Y.', 'Ny.Y'], u, ['Mbere ya Yezu', 'Nyuma ya Yezu']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00¤', '#E0'], - 'BIF', - 'FBu', - 'Ifaranga ry’Uburundi', - {'BIF': ['FBu'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ro-MD.ts b/packages/common/locales/ro-MD.ts deleted file mode 100644 index cf40de974b..0000000000 --- a/packages/common/locales/ro-MD.ts +++ /dev/null @@ -1,77 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - if (!(v === 0) || n === 0 || - !(n === 1) && n % 100 === Math.floor(n % 100) && n % 100 >= 1 && n % 100 <= 19) - return 3; - return 5; -} - -export default [ - 'ro-MD', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['D', 'L', 'Ma', 'Mi', 'J', 'V', 'S'], ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'], - ['duminică', 'luni', 'marți', 'miercuri', 'joi', 'vineri', 'sâmbătă'], - ['Du', 'Lu', 'Ma', 'Mi', 'Jo', 'Vi', 'Sâ'] - ], - u, - [ - ['I', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'], - [ - 'ian.', 'feb.', 'mar.', 'apr.', 'mai', 'iun.', 'iul.', 'aug.', 'sept.', 'oct.', 'nov.', 'dec.' - ], - [ - 'ianuarie', 'februarie', 'martie', 'aprilie', 'mai', 'iunie', 'iulie', 'august', 'septembrie', - 'octombrie', 'noiembrie', 'decembrie' - ] - ], - u, - [['î.Hr.', 'd.Hr.'], u, ['înainte de Hristos', 'după Hristos']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'MDL', - 'L', - 'leu moldovenesc', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MDL': ['L'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XCD': [u, '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ro.ts b/packages/common/locales/ro.ts deleted file mode 100644 index d1b3674371..0000000000 --- a/packages/common/locales/ro.ts +++ /dev/null @@ -1,76 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - if (!(v === 0) || n === 0 || - !(n === 1) && n % 100 === Math.floor(n % 100) && n % 100 >= 1 && n % 100 <= 19) - return 3; - return 5; -} - -export default [ - 'ro', - [['a.m.', 'p.m.'], u, u], - u, - [ - ['D', 'L', 'M', 'M', 'J', 'V', 'S'], ['dum.', 'lun.', 'mar.', 'mie.', 'joi', 'vin.', 'sâm.'], - ['duminică', 'luni', 'marți', 'miercuri', 'joi', 'vineri', 'sâmbătă'], - ['du.', 'lu.', 'ma.', 'mi.', 'joi', 'vi.', 'sâ.'] - ], - u, - [ - ['I', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'], - [ - 'ian.', 'feb.', 'mar.', 'apr.', 'mai', 'iun.', 'iul.', 'aug.', 'sept.', 'oct.', 'nov.', 'dec.' - ], - [ - 'ianuarie', 'februarie', 'martie', 'aprilie', 'mai', 'iunie', 'iulie', 'august', 'septembrie', - 'octombrie', 'noiembrie', 'decembrie' - ] - ], - u, - [['î.Hr.', 'd.Hr.'], u, ['înainte de Hristos', 'după Hristos']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'RON', - 'RON', - 'leu românesc', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XCD': [u, '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/rof.ts b/packages/common/locales/rof.ts deleted file mode 100644 index bffbbc1983..0000000000 --- a/packages/common/locales/rof.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'rof', - [['kang’ama', 'kingoto'], u, u], - u, - [ - ['2', '3', '4', '5', '6', '7', '1'], ['Ijp', 'Ijt', 'Ijn', 'Ijtn', 'Alh', 'Iju', 'Ijm'], - ['Ijumapili', 'Ijumatatu', 'Ijumanne', 'Ijumatano', 'Alhamisi', 'Ijumaa', 'Ijumamosi'], - ['Ijp', 'Ijt', 'Ijn', 'Ijtn', 'Alh', 'Iju', 'Ijm'] - ], - u, - [ - ['K', 'K', 'K', 'K', 'T', 'S', 'S', 'N', 'T', 'I', 'I', 'I'], - ['M1', 'M2', 'M3', 'M4', 'M5', 'M6', 'M7', 'M8', 'M9', 'M10', 'M11', 'M12'], - [ - 'Mweri wa kwanza', 'Mweri wa kaili', 'Mweri wa katatu', 'Mweri wa kaana', 'Mweri wa tanu', - 'Mweri wa sita', 'Mweri wa saba', 'Mweri wa nane', 'Mweri wa tisa', 'Mweri wa ikumi', - 'Mweri wa ikumi na moja', 'Mweri wa ikumi na mbili' - ] - ], - u, - [['KM', 'BM'], u, ['Kabla ya Mayesu', 'Baada ya Mayesu']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'TZS', - 'TSh', - 'heleri sa Tanzania', - {'JPY': ['JP¥', '¥'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/root.ts b/packages/common/locales/root.ts deleted file mode 100644 index b4a522ffb2..0000000000 --- a/packages/common/locales/root.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'root', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - [ - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', - 'October', 'November', 'December' - ] - ], - u, - [['B', 'A'], ['BC', 'AD'], ['Before Christ', 'Anno Domini']], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}, {0}', u, '{1} \'at\' {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - '$', - 'US Dollar', - {}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ru-BY.ts b/packages/common/locales/ru-BY.ts deleted file mode 100644 index 9b101280ca..0000000000 --- a/packages/common/locales/ru-BY.ts +++ /dev/null @@ -1,87 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14)) - return 3; - if (v === 0 && i % 10 === 0 || - v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 5 && i % 10 <= 9 || - v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 11 && i % 100 <= 14) - return 4; - return 5; -} - -export default [ - 'ru-BY', - [['AM', 'PM'], u, u], - u, - [ - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], u, - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['В', 'П', 'В', 'С', 'Ч', 'П', 'С'], ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'мар.', 'апр.', 'мая', 'июн.', 'июл.', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', - 'октября', 'ноября', 'декабря' - ] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'март', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', - 'ноябрь', 'декабрь' - ] - ], - [['до н.э.', 'н.э.'], ['до н. э.', 'н. э.'], ['до Рождества Христова', 'от Рождества Христова']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y \'г\'.', 'd MMMM y \'г\'.', 'EEEE, d MMMM y \'г\'.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'не число', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'BYN', - 'Br', - 'белорусский рубль', - { - 'BYN': ['Br'], - 'GEL': [u, 'ლ'], - 'RON': [u, 'L'], - 'RUB': ['₽'], - 'THB': ['฿'], - 'TMT': ['ТМТ'], - 'TWD': ['NT$'], - 'UAH': ['₴'], - 'XXX': ['XXXX'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ru-KG.ts b/packages/common/locales/ru-KG.ts deleted file mode 100644 index a912e47d2c..0000000000 --- a/packages/common/locales/ru-KG.ts +++ /dev/null @@ -1,88 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14)) - return 3; - if (v === 0 && i % 10 === 0 || - v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 5 && i % 10 <= 9 || - v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 11 && i % 100 <= 14) - return 4; - return 5; -} - -export default [ - 'ru-KG', - [['AM', 'PM'], u, u], - u, - [ - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], u, - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['В', 'П', 'В', 'С', 'Ч', 'П', 'С'], ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'мар.', 'апр.', 'мая', 'июн.', 'июл.', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', - 'октября', 'ноября', 'декабря' - ] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'март', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', - 'ноябрь', 'декабрь' - ] - ], - [['до н.э.', 'н.э.'], ['до н. э.', 'н. э.'], ['до Рождества Христова', 'от Рождества Христова']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y \'г\'.', 'd MMMM y \'г\'.', 'EEEE, d MMMM y \'г\'.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'не число', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'KGS', - 'сом', - 'киргизский сом', - { - 'GEL': [u, 'ლ'], - 'KGS': ['сом'], - 'RON': [u, 'L'], - 'RUB': ['₽'], - 'RUR': ['р.'], - 'THB': ['฿'], - 'TMT': ['ТМТ'], - 'TWD': ['NT$'], - 'UAH': ['₴'], - 'XXX': ['XXXX'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ru-KZ.ts b/packages/common/locales/ru-KZ.ts deleted file mode 100644 index ca2b132dfa..0000000000 --- a/packages/common/locales/ru-KZ.ts +++ /dev/null @@ -1,88 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14)) - return 3; - if (v === 0 && i % 10 === 0 || - v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 5 && i % 10 <= 9 || - v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 11 && i % 100 <= 14) - return 4; - return 5; -} - -export default [ - 'ru-KZ', - [['AM', 'PM'], u, u], - u, - [ - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], u, - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['В', 'П', 'В', 'С', 'Ч', 'П', 'С'], ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'мар.', 'апр.', 'мая', 'июн.', 'июл.', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', - 'октября', 'ноября', 'декабря' - ] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'март', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', - 'ноябрь', 'декабрь' - ] - ], - [['до н.э.', 'н.э.'], ['до н. э.', 'н. э.'], ['до Рождества Христова', 'от Рождества Христова']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y \'г\'.', 'd MMMM y \'г\'.', 'EEEE, d MMMM y \'г\'.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'не число', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'KZT', - '₸', - 'казахский тенге', - { - 'GEL': [u, 'ლ'], - 'KZT': ['₸'], - 'RON': [u, 'L'], - 'RUB': ['₽'], - 'RUR': ['р.'], - 'THB': ['฿'], - 'TMT': ['ТМТ'], - 'TWD': ['NT$'], - 'UAH': ['₴'], - 'XXX': ['XXXX'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ru-MD.ts b/packages/common/locales/ru-MD.ts deleted file mode 100644 index 3927935a41..0000000000 --- a/packages/common/locales/ru-MD.ts +++ /dev/null @@ -1,88 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14)) - return 3; - if (v === 0 && i % 10 === 0 || - v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 5 && i % 10 <= 9 || - v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 11 && i % 100 <= 14) - return 4; - return 5; -} - -export default [ - 'ru-MD', - [['AM', 'PM'], u, u], - u, - [ - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], u, - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['В', 'П', 'В', 'С', 'Ч', 'П', 'С'], ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'мар.', 'апр.', 'мая', 'июн.', 'июл.', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', - 'октября', 'ноября', 'декабря' - ] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'март', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', - 'ноябрь', 'декабрь' - ] - ], - [['до н.э.', 'н.э.'], ['до н. э.', 'н. э.'], ['до Рождества Христова', 'от Рождества Христова']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y \'г\'.', 'd MMMM y \'г\'.', 'EEEE, d MMMM y \'г\'.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'не число', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'MDL', - 'L', - 'молдавский лей', - { - 'GEL': [u, 'ლ'], - 'MDL': ['L'], - 'RON': [u, 'L'], - 'RUB': ['₽'], - 'RUR': ['р.'], - 'THB': ['฿'], - 'TMT': ['ТМТ'], - 'TWD': ['NT$'], - 'UAH': ['₴'], - 'XXX': ['XXXX'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ru-UA.ts b/packages/common/locales/ru-UA.ts deleted file mode 100644 index 2d4255de18..0000000000 --- a/packages/common/locales/ru-UA.ts +++ /dev/null @@ -1,87 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14)) - return 3; - if (v === 0 && i % 10 === 0 || - v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 5 && i % 10 <= 9 || - v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 11 && i % 100 <= 14) - return 4; - return 5; -} - -export default [ - 'ru-UA', - [['AM', 'PM'], u, u], - u, - [ - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], u, - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['В', 'П', 'В', 'С', 'Ч', 'П', 'С'], ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'мар.', 'апр.', 'мая', 'июн.', 'июл.', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', - 'октября', 'ноября', 'декабря' - ] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'март', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', - 'ноябрь', 'декабрь' - ] - ], - [['до н.э.', 'н.э.'], ['до н. э.', 'н. э.'], ['до Рождества Христова', 'от Рождества Христова']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y \'г\'.', 'd MMMM y \'г\'.', 'EEEE, d MMMM y \'г\'.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'не число', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'UAH', - '₴', - 'украинская гривна', - { - 'GEL': [u, 'ლ'], - 'RON': [u, 'L'], - 'RUB': ['₽'], - 'RUR': ['р.'], - 'THB': ['฿'], - 'TMT': ['ТМТ'], - 'TWD': ['NT$'], - 'UAH': ['₴'], - 'XXX': ['XXXX'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ru.ts b/packages/common/locales/ru.ts deleted file mode 100644 index 87f20d2444..0000000000 --- a/packages/common/locales/ru.ts +++ /dev/null @@ -1,87 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14)) - return 3; - if (v === 0 && i % 10 === 0 || - v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 5 && i % 10 <= 9 || - v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 11 && i % 100 <= 14) - return 4; - return 5; -} - -export default [ - 'ru', - [['AM', 'PM'], u, u], - u, - [ - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], u, - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['В', 'П', 'В', 'С', 'Ч', 'П', 'С'], ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'мар.', 'апр.', 'мая', 'июн.', 'июл.', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', - 'октября', 'ноября', 'декабря' - ] - ], - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - [ - 'янв.', 'февр.', 'март', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', - 'ноябрь', 'декабрь' - ] - ], - [['до н.э.', 'н.э.'], ['до н. э.', 'н. э.'], ['до Рождества Христова', 'от Рождества Христова']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y \'г\'.', 'd MMMM y \'г\'.', 'EEEE, d MMMM y \'г\'.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'не число', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'RUB', - '₽', - 'российский рубль', - { - 'GEL': [u, 'ლ'], - 'RON': [u, 'L'], - 'RUB': ['₽'], - 'RUR': ['р.'], - 'THB': ['฿'], - 'TMT': ['ТМТ'], - 'TWD': ['NT$'], - 'UAH': ['₴'], - 'XXX': ['XXXX'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/rw.ts b/packages/common/locales/rw.ts deleted file mode 100644 index 0803f6994f..0000000000 --- a/packages/common/locales/rw.ts +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'rw', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['cyu.', 'mbe.', 'kab.', 'gtu.', 'kan.', 'gnu.', 'gnd.'], - [ - 'Ku cyumweru', 'Kuwa mbere', 'Kuwa kabiri', 'Kuwa gatatu', 'Kuwa kane', 'Kuwa gatanu', - 'Kuwa gatandatu' - ], - ['cyu.', 'mbe.', 'kab.', 'gtu.', 'kan.', 'gnu.', 'gnd.'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'mut.', 'gas.', 'wer.', 'mat.', 'gic.', 'kam.', 'nya.', 'kan.', 'nze.', 'ukw.', 'ugu.', 'uku.' - ], - [ - 'Mutarama', 'Gashyantare', 'Werurwe', 'Mata', 'Gicuransi', 'Kamena', 'Nyakanga', 'Kanama', - 'Nzeli', 'Ukwakira', 'Ugushyingo', 'Ukuboza' - ] - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'RWF', - 'RF', - 'RWF', - {'JPY': ['JP¥', '¥'], 'RWF': ['RF'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/rwk.ts b/packages/common/locales/rwk.ts deleted file mode 100644 index 7a98098b49..0000000000 --- a/packages/common/locales/rwk.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'rwk', - [['utuko', 'kyiukonyi'], u, u], - u, - [ - ['J', 'J', 'J', 'J', 'A', 'I', 'J'], ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - ['Jumapilyi', 'Jumatatuu', 'Jumanne', 'Jumatanu', 'Alhamisi', 'Ijumaa', 'Jumamosi'], - ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januari', 'Februari', 'Machi', 'Aprilyi', 'Mei', 'Junyi', 'Julyai', 'Agusti', 'Septemba', - 'Oktoba', 'Novemba', 'Desemba' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Kristu', 'Baada ya Kristu']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'TZS', - 'TSh', - 'Shilingi ya Tanzania', - {'JPY': ['JP¥', '¥'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/sah.ts b/packages/common/locales/sah.ts deleted file mode 100644 index 801ff3b02c..0000000000 --- a/packages/common/locales/sah.ts +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'sah', - [['ЭИ', 'ЭК'], u, u], - u, - [ - ['Б', 'Б', 'О', 'С', 'Ч', 'Б', 'С'], ['бс', 'бн', 'оп', 'сэ', 'чп', 'бэ', 'сб'], - ['баскыһыанньа', 'бэнидиэнньик', 'оптуорунньук', 'сэрэдэ', 'чэппиэр', 'Бээтиҥсэ', 'субуота'], - ['бс', 'бн', 'оп', 'сэ', 'чп', 'бэ', 'сб'] - ], - u, - [ - ['Т', 'О', 'К', 'М', 'Ы', 'Б', 'О', 'А', 'Б', 'А', 'С', 'А'], - ['Тохс', 'Олун', 'Клн', 'Мсу', 'Ыам', 'Бэс', 'Отй', 'Атр', 'Блҕ', 'Алт', 'Сэт', 'Ахс'], - [ - 'Тохсунньу', 'Олунньу', 'Кулун тутар', 'Муус устар', 'Ыам ыйын', 'Бэс ыйын', 'От ыйын', - 'Атырдьых ыйын', 'Балаҕан ыйын', 'Алтынньы', 'Сэтинньи', 'ахсынньы' - ] - ], - [ - ['Т', 'О', 'К', 'М', 'Ы', 'Б', 'О', 'А', 'Б', 'А', 'С', 'А'], - ['Тохс', 'Олун', 'Клн', 'Мсу', 'Ыам', 'Бэс', 'Отй', 'Атр', 'Блҕ', 'Алт', 'Сэт', 'Ахс'], - [ - 'тохсунньу', 'олунньу', 'кулун тутар', 'муус устар', 'ыам ыйа', 'бэс ыйа', 'от ыйа', - 'атырдьых ыйа', 'балаҕан ыйа', 'алтынньы', 'сэтинньи', 'ахсынньы' - ] - ], - [['б. э. и.', 'б. э'], u, u], - 1, - [6, 0], - ['yy/M/d', 'y, MMM d', 'y, MMMM d', 'y \'сыл\' MMMM d \'күнэ\', EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'чыыһыла буотах', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'RUB', - '₽', - 'Арассыыйа солкуобайа', - {'JPY': ['JP¥', '¥'], 'RUB': ['₽'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/saq.ts b/packages/common/locales/saq.ts deleted file mode 100644 index 776a1dc6e7..0000000000 --- a/packages/common/locales/saq.ts +++ /dev/null @@ -1,56 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'saq', - [['Tesiran', 'Teipa'], u, u], - u, - [ - ['A', 'K', 'O', 'I', 'I', 'S', 'K'], ['Are', 'Kun', 'Ong', 'Ine', 'Ile', 'Sap', 'Kwe'], - [ - 'Mderot ee are', 'Mderot ee kuni', 'Mderot ee ong’wan', 'Mderot ee inet', 'Mderot ee ile', - 'Mderot ee sapa', 'Mderot ee kwe' - ], - ['Are', 'Kun', 'Ong', 'Ine', 'Ile', 'Sap', 'Kwe'] - ], - u, - [ - ['O', 'W', 'O', 'O', 'I', 'I', 'S', 'I', 'S', 'T', 'T', 'T'], - ['Obo', 'Waa', 'Oku', 'Ong', 'Ime', 'Ile', 'Sap', 'Isi', 'Saa', 'Tom', 'Tob', 'Tow'], - [ - 'Lapa le obo', 'Lapa le waare', 'Lapa le okuni', 'Lapa le ong’wan', 'Lapa le imet', - 'Lapa le ile', 'Lapa le sapa', 'Lapa le isiet', 'Lapa le saal', 'Lapa le tomon', - 'Lapa le tomon obo', 'Lapa le tomon waare' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Christo', 'Baada ya Christo']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Njilingi eel Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/sbp.ts b/packages/common/locales/sbp.ts deleted file mode 100644 index 04de9d26ae..0000000000 --- a/packages/common/locales/sbp.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'sbp', - [['Lwamilawu', 'Pashamihe'], u, u], - u, - [ - ['M', 'J', 'J', 'J', 'A', 'I', 'J'], ['Mul', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - ['Mulungu', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alahamisi', 'Ijumaa', 'Jumamosi'], - ['Mul', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['Mup', 'Mwi', 'Msh', 'Mun', 'Mag', 'Muj', 'Msp', 'Mpg', 'Mye', 'Mok', 'Mus', 'Muh'], - [ - 'Mupalangulwa', 'Mwitope', 'Mushende', 'Munyi', 'Mushende Magali', 'Mujimbi', 'Mushipepo', - 'Mupuguto', 'Munyense', 'Mokhu', 'Musongandembwe', 'Muhaano' - ] - ], - u, - [['AK', 'PK'], u, ['Ashanali uKilisito', 'Pamwandi ya Kilisto']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'TZS', - 'TSh', - 'Ihela ya Tansaniya', - {'JPY': ['JP¥', '¥'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/sd.ts b/packages/common/locales/sd.ts deleted file mode 100644 index 06ce624fc9..0000000000 --- a/packages/common/locales/sd.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'sd', - [['صبح، منجهند', 'منجهند، شام'], ['صبح، منجهند', 'شام، منجهند'], ['صبح، منجهند', 'منجهند، شام']], - [['صبح، منجهند', 'منجهند، شام'], u, u], - [ - ['آچر', 'سو', 'اڱارو', 'اربع', 'خم', 'جمعو', 'ڇنڇر'], - ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمعو', 'ڇنڇر'], u, u - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'جنوري', 'فيبروري', 'مارچ', 'اپريل', 'مئي', 'جون', 'جولاءِ', 'آگسٽ', 'سيپٽمبر', 'آڪٽوبر', - 'نومبر', 'ڊسمبر' - ], - u - ], - u, - [['BC', 'CD'], u, ['مسيح کان اڳ', 'عيسوي کان پهرين']], - 0, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'PKR', - 'Rs', - 'پاڪستاني رپي', - {'JPY': ['JP¥', '¥'], 'PKR': ['Rs'], 'USD': ['US$', '$']}, - 'rtl', - plural -]; diff --git a/packages/common/locales/se-FI.ts b/packages/common/locales/se-FI.ts deleted file mode 100644 index 9f6026a667..0000000000 --- a/packages/common/locales/se-FI.ts +++ /dev/null @@ -1,62 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - if (n === 2) return 2; - return 5; -} - -export default [ - 'se-FI', - [['i', 'e'], ['ib', 'eb'], u], - [['ib', 'eb'], u, u], - [ - ['S', 'M', 'D', 'G', 'D', 'B', 'L'], ['so', 'má', 'di', 'ga', 'du', 'be', 'lá'], - ['sotnabeaivi', 'mánnodat', 'disdat', 'gaskavahkku', 'duorastat', 'bearjadat', 'lávvordat'], - ['so', 'má', 'di', 'ga', 'du', 'be', 'lá'] - ], - u, - [ - ['O', 'G', 'N', 'C', 'M', 'G', 'S', 'B', 'Č', 'G', 'S', 'J'], - [ - 'ođđj', 'guov', 'njuk', 'cuoŋ', 'mies', 'geas', 'suoi', 'borg', 'čakč', 'golg', 'skáb', 'juov' - ], - [ - 'ođđajagemánnu', 'guovvamánnu', 'njukčamánnu', 'cuoŋománnu', 'miessemánnu', 'geassemánnu', - 'suoidnemánnu', 'borgemánnu', 'čakčamánnu', 'golggotmánnu', 'skábmamánnu', 'juovlamánnu' - ] - ], - u, - [['oKr.', 'mKr.'], u, ['ovdal Kristusa', 'maŋŋel Kristusa']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '−', '·10^', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'DKK': ['Dkr', 'kr'], - 'JPY': ['JP¥', '¥'], - 'NOK': ['kr'], - 'SEK': ['Skr', 'kr'], - 'THB': ['฿'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/se-SE.ts b/packages/common/locales/se-SE.ts deleted file mode 100644 index 01b9ec8cac..0000000000 --- a/packages/common/locales/se-SE.ts +++ /dev/null @@ -1,62 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - if (n === 2) return 2; - return 5; -} - -export default [ - 'se-SE', - [['i.b.', 'e.b.'], u, ['iđitbeaivet', 'eahketbeaivet']], - [['i.b.', 'e.b.'], u, ['iđitbeaivi', 'eahketbeaivi']], - [ - ['S', 'V', 'M', 'G', 'D', 'B', 'L'], ['sotn', 'vuos', 'maŋ', 'gask', 'duor', 'bear', 'láv'], - [ - 'sotnabeaivi', 'vuossárga', 'maŋŋebárga', 'gaskavahkku', 'duorasdat', 'bearjadat', 'lávvardat' - ], - ['sotn', 'vuos', 'maŋ', 'gask', 'duor', 'bear', 'láv'] - ], - u, - [ - ['O', 'G', 'N', 'C', 'M', 'G', 'S', 'B', 'Č', 'G', 'S', 'J'], - ['ođđj', 'guov', 'njuk', 'cuo', 'mies', 'geas', 'suoi', 'borg', 'čakč', 'golg', 'skáb', 'juov'], - [ - 'ođđajagemánnu', 'guovvamánnu', 'njukčamánnu', 'cuoŋománnu', 'miessemánnu', 'geassemánnu', - 'suoidnemánnu', 'borgemánnu', 'čakčamánnu', 'golggotmánnu', 'skábmamánnu', 'juovlamánnu' - ] - ], - u, - [['o.Kr.', 'm.Kr.'], u, ['ovdal Kristtusa', 'maŋŋel Kristtusa']], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '−', '·10^', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'SEK', - 'kr', - 'ruoŧŧa kruvdno', - { - 'DKK': ['Dkr', 'kr'], - 'JPY': ['JP¥', '¥'], - 'NOK': ['Nkr', 'kr'], - 'SEK': ['kr'], - 'THB': ['฿'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/se.ts b/packages/common/locales/se.ts deleted file mode 100644 index bcdec22b19..0000000000 --- a/packages/common/locales/se.ts +++ /dev/null @@ -1,62 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - if (n === 2) return 2; - return 5; -} - -export default [ - 'se', - [['i.b.', 'e.b.'], u, ['iđitbeaivet', 'eahketbeaivet']], - [['i.b.', 'e.b.'], u, ['iđitbeaivi', 'eahketbeaivi']], - [ - ['S', 'V', 'M', 'G', 'D', 'B', 'L'], ['sotn', 'vuos', 'maŋ', 'gask', 'duor', 'bear', 'láv'], - [ - 'sotnabeaivi', 'vuossárga', 'maŋŋebárga', 'gaskavahkku', 'duorasdat', 'bearjadat', 'lávvardat' - ], - ['sotn', 'vuos', 'maŋ', 'gask', 'duor', 'bear', 'láv'] - ], - u, - [ - ['O', 'G', 'N', 'C', 'M', 'G', 'S', 'B', 'Č', 'G', 'S', 'J'], - ['ođđj', 'guov', 'njuk', 'cuo', 'mies', 'geas', 'suoi', 'borg', 'čakč', 'golg', 'skáb', 'juov'], - [ - 'ođđajagemánnu', 'guovvamánnu', 'njukčamánnu', 'cuoŋománnu', 'miessemánnu', 'geassemánnu', - 'suoidnemánnu', 'borgemánnu', 'čakčamánnu', 'golggotmánnu', 'skábmamánnu', 'juovlamánnu' - ] - ], - u, - [['o.Kr.', 'm.Kr.'], u, ['ovdal Kristtusa', 'maŋŋel Kristtusa']], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '−', '·10^', '·', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'NOK', - 'kr', - 'norgga kruvdno', - { - 'DKK': ['Dkr', 'kr'], - 'JPY': ['JP¥', '¥'], - 'NOK': ['kr'], - 'SEK': ['Skr', 'kr'], - 'THB': ['฿'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/seh.ts b/packages/common/locales/seh.ts deleted file mode 100644 index c68180eb1a..0000000000 --- a/packages/common/locales/seh.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'seh', - [['AM', 'PM'], u, u], - u, - [ - ['D', 'P', 'C', 'T', 'N', 'S', 'S'], ['Dim', 'Pos', 'Pir', 'Tat', 'Nai', 'Sha', 'Sab'], - ['Dimingu', 'Chiposi', 'Chipiri', 'Chitatu', 'Chinai', 'Chishanu', 'Sabudu'], - ['Dim', 'Pos', 'Pir', 'Tat', 'Nai', 'Sha', 'Sab'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Aug', 'Set', 'Otu', 'Nov', 'Dec'], - [ - 'Janeiro', 'Fevreiro', 'Marco', 'Abril', 'Maio', 'Junho', 'Julho', 'Augusto', 'Setembro', - 'Otubro', 'Novembro', 'Decembro' - ] - ], - u, - [['AC', 'AD'], u, ['Antes de Cristo', 'Anno Domini']], - 0, - [6, 0], - ['d/M/y', 'd \'de\' MMM \'de\' y', 'd \'de\' MMMM \'de\' y', 'EEEE, d \'de\' MMMM \'de\' y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'MZN', - 'MTn', - 'Metical de Moçambique', - {'JPY': ['JP¥', '¥'], 'MZN': ['MTn'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ses.ts b/packages/common/locales/ses.ts deleted file mode 100644 index 1c5abb1aff..0000000000 --- a/packages/common/locales/ses.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'ses', - [['Adduha', 'Aluula'], u, u], - u, - [ - ['H', 'T', 'T', 'L', 'L', 'L', 'S'], ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'], - ['Alhadi', 'Atinni', 'Atalaata', 'Alarba', 'Alhamiisa', 'Alzuma', 'Asibti'], - ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'] - ], - u, - [ - ['Ž', 'F', 'M', 'A', 'M', 'Ž', 'Ž', 'U', 'S', 'O', 'N', 'D'], - ['Žan', 'Fee', 'Mar', 'Awi', 'Me', 'Žuw', 'Žuy', 'Ut', 'Sek', 'Okt', 'Noo', 'Dee'], - [ - 'Žanwiye', 'Feewiriye', 'Marsi', 'Awiril', 'Me', 'Žuweŋ', 'Žuyye', 'Ut', 'Sektanbur', - 'Oktoobur', 'Noowanbur', 'Deesanbur' - ] - ], - u, - [['IJ', 'IZ'], u, ['Isaa jine', 'Isaa zamanoo']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'XOF', - 'CFA', - 'CFA Fraŋ (BCEAO)', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/sg.ts b/packages/common/locales/sg.ts deleted file mode 100644 index d36e6c5a6a..0000000000 --- a/packages/common/locales/sg.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'sg', - [['ND', 'LK'], u, u], - u, - [ - ['K', 'S', 'T', 'S', 'K', 'P', 'Y'], ['Bk1', 'Bk2', 'Bk3', 'Bk4', 'Bk5', 'Lâp', 'Lây'], - ['Bikua-ôko', 'Bïkua-ûse', 'Bïkua-ptâ', 'Bïkua-usïö', 'Bïkua-okü', 'Lâpôsö', 'Lâyenga'], - ['Bk1', 'Bk2', 'Bk3', 'Bk4', 'Bk5', 'Lâp', 'Lây'] - ], - u, - [ - ['N', 'F', 'M', 'N', 'B', 'F', 'L', 'K', 'M', 'N', 'N', 'K'], - ['Nye', 'Ful', 'Mbä', 'Ngu', 'Bêl', 'Fön', 'Len', 'Kük', 'Mvu', 'Ngb', 'Nab', 'Kak'], - [ - 'Nyenye', 'Fulundïgi', 'Mbängü', 'Ngubùe', 'Bêläwü', 'Föndo', 'Lengua', 'Kükürü', 'Mvuka', - 'Ngberere', 'Nabändüru', 'Kakauka' - ] - ], - u, - [['KnK', 'NpK'], u, ['Kôzo na Krîstu', 'Na pekô tî Krîstu']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00;¤-#,##0.00', '#E0'], - 'XAF', - 'FCFA', - 'farânga CFA (BEAC)', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/shi-Latn.ts b/packages/common/locales/shi-Latn.ts deleted file mode 100644 index 9d5ab87164..0000000000 --- a/packages/common/locales/shi-Latn.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'shi-Latn', - [['tifawt', 'tadggʷat'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['asa', 'ayn', 'asi', 'akṛ', 'akw', 'asim', 'asiḍ'], - ['asamas', 'aynas', 'asinas', 'akṛas', 'akwas', 'asimwas', 'asiḍyas'], - ['asa', 'ayn', 'asi', 'akṛ', 'akw', 'asim', 'asiḍ'] - ], - u, - [ - ['i', 'b', 'm', 'i', 'm', 'y', 'y', 'ɣ', 'c', 'k', 'n', 'd'], - ['inn', 'bṛa', 'maṛ', 'ibr', 'may', 'yun', 'yul', 'ɣuc', 'cut', 'ktu', 'nuw', 'duj'], - [ - 'innayr', 'bṛayṛ', 'maṛṣ', 'ibrir', 'mayyu', 'yunyu', 'yulyuz', 'ɣuct', 'cutanbir', 'ktubr', - 'nuwanbir', 'dujanbir' - ] - ], - u, - [['daɛ', 'dfɛ'], u, ['dat n ɛisa', 'dffir n ɛisa']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'MAD', - 'MAD', - 'adrim n lmɣrib', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/shi-Tfng.ts b/packages/common/locales/shi-Tfng.ts deleted file mode 100644 index 47e9b7fe09..0000000000 --- a/packages/common/locales/shi-Tfng.ts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - if (n === Math.floor(n) && n >= 2 && n <= 10) return 3; - return 5; -} - -export default [ - 'shi-Tfng', - [['ⵜⵉⴼⴰⵡⵜ', 'ⵜⴰⴷⴳⴳⵯⴰⵜ'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['ⴰⵙⴰ', 'ⴰⵢⵏ', 'ⴰⵙⵉ', 'ⴰⴽⵕ', 'ⴰⴽⵡ', 'ⴰⵙⵉⵎ', 'ⴰⵙⵉⴹ'], - ['ⴰⵙⴰⵎⴰⵙ', 'ⴰⵢⵏⴰⵙ', 'ⴰⵙⵉⵏⴰⵙ', 'ⴰⴽⵕⴰⵙ', 'ⴰⴽⵡⴰⵙ', 'ⵙⵉⵎⵡⴰⵙ', 'ⴰⵙⵉⴹⵢⴰⵙ'], - ['ⴰⵙⴰ', 'ⴰⵢⵏ', 'ⴰⵙⵉ', 'ⴰⴽⵕ', 'ⴰⴽⵡ', 'ⴰⵙⵉⵎ', 'ⴰⵙⵉⴹ'] - ], - u, - [ - ['ⵉ', 'ⴱ', 'ⵎ', 'ⵉ', 'ⵎ', 'ⵢ', 'ⵢ', 'ⵖ', 'ⵛ', 'ⴽ', 'ⵏ', 'ⴷ'], - ['ⵉⵏⵏ', 'ⴱⵕⴰ', 'ⵎⴰⵕ', 'ⵉⴱⵔ', 'ⵎⴰⵢ', 'ⵢⵓⵏ', 'ⵢⵓⵍ', 'ⵖⵓⵛ', 'ⵛⵓⵜ', 'ⴽⵜⵓ', 'ⵏⵓⵡ', 'ⴷⵓⵊ'], - [ - 'ⵉⵏⵏⴰⵢⵔ', 'ⴱⵕⴰⵢⵕ', 'ⵎⴰⵕⵚ', 'ⵉⴱⵔⵉⵔ', 'ⵎⴰⵢⵢⵓ', 'ⵢⵓⵏⵢⵓ', 'ⵢⵓⵍⵢⵓⵣ', 'ⵖⵓⵛⵜ', 'ⵛⵓⵜⴰⵏⴱⵉⵔ', 'ⴽⵜⵓⴱⵔ', - 'ⵏⵓⵡⴰⵏⴱⵉⵔ', 'ⴷⵓⵊⴰⵏⴱⵉⵔ' - ] - ], - u, - [['ⴷⴰⵄ', 'ⴷⴼⵄ'], u, ['ⴷⴰⵜ ⵏ ⵄⵉⵙⴰ', 'ⴷⴼⴼⵉⵔ ⵏ ⵄⵉⵙⴰ']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'MAD', - 'MAD', - 'ⴰⴷⵔⵉⵎ ⵏ ⵍⵎⵖⵔⵉⴱ', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/shi.ts b/packages/common/locales/shi.ts deleted file mode 100644 index cf5f61213f..0000000000 --- a/packages/common/locales/shi.ts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - if (n === Math.floor(n) && n >= 2 && n <= 10) return 3; - return 5; -} - -export default [ - 'shi', - [['ⵜⵉⴼⴰⵡⵜ', 'ⵜⴰⴷⴳⴳⵯⴰⵜ'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['ⴰⵙⴰ', 'ⴰⵢⵏ', 'ⴰⵙⵉ', 'ⴰⴽⵕ', 'ⴰⴽⵡ', 'ⴰⵙⵉⵎ', 'ⴰⵙⵉⴹ'], - ['ⴰⵙⴰⵎⴰⵙ', 'ⴰⵢⵏⴰⵙ', 'ⴰⵙⵉⵏⴰⵙ', 'ⴰⴽⵕⴰⵙ', 'ⴰⴽⵡⴰⵙ', 'ⵙⵉⵎⵡⴰⵙ', 'ⴰⵙⵉⴹⵢⴰⵙ'], - ['ⴰⵙⴰ', 'ⴰⵢⵏ', 'ⴰⵙⵉ', 'ⴰⴽⵕ', 'ⴰⴽⵡ', 'ⴰⵙⵉⵎ', 'ⴰⵙⵉⴹ'] - ], - u, - [ - ['ⵉ', 'ⴱ', 'ⵎ', 'ⵉ', 'ⵎ', 'ⵢ', 'ⵢ', 'ⵖ', 'ⵛ', 'ⴽ', 'ⵏ', 'ⴷ'], - ['ⵉⵏⵏ', 'ⴱⵕⴰ', 'ⵎⴰⵕ', 'ⵉⴱⵔ', 'ⵎⴰⵢ', 'ⵢⵓⵏ', 'ⵢⵓⵍ', 'ⵖⵓⵛ', 'ⵛⵓⵜ', 'ⴽⵜⵓ', 'ⵏⵓⵡ', 'ⴷⵓⵊ'], - [ - 'ⵉⵏⵏⴰⵢⵔ', 'ⴱⵕⴰⵢⵕ', 'ⵎⴰⵕⵚ', 'ⵉⴱⵔⵉⵔ', 'ⵎⴰⵢⵢⵓ', 'ⵢⵓⵏⵢⵓ', 'ⵢⵓⵍⵢⵓⵣ', 'ⵖⵓⵛⵜ', 'ⵛⵓⵜⴰⵏⴱⵉⵔ', 'ⴽⵜⵓⴱⵔ', - 'ⵏⵓⵡⴰⵏⴱⵉⵔ', 'ⴷⵓⵊⴰⵏⴱⵉⵔ' - ] - ], - u, - [['ⴷⴰⵄ', 'ⴷⴼⵄ'], u, ['ⴷⴰⵜ ⵏ ⵄⵉⵙⴰ', 'ⴷⴼⴼⵉⵔ ⵏ ⵄⵉⵙⴰ']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'MAD', - 'MAD', - 'ⴰⴷⵔⵉⵎ ⵏ ⵍⵎⵖⵔⵉⴱ', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/si.ts b/packages/common/locales/si.ts deleted file mode 100644 index 0b8cc14ab4..0000000000 --- a/packages/common/locales/si.ts +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (n === 0 || n === 1 || i === 0 && f === 1) return 1; - return 5; -} - -export default [ - 'si', - [['පෙ', 'ප'], ['පෙ.ව.', 'ප.ව.'], u], - [['පෙ.ව.', 'ප.ව.'], u, u], - [ - ['ඉ', 'ස', 'අ', 'බ', 'බ්\u200dර', 'සි', 'සෙ'], - ['ඉරිදා', 'සඳුදා', 'අඟහ', 'බදාදා', 'බ්\u200dරහස්', 'සිකු', 'සෙන'], - ['ඉරිදා', 'සඳුදා', 'අඟහරුවාදා', 'බදාදා', 'බ්\u200dරහස්පතින්දා', 'සිකුරාදා', 'සෙනසුරාදා'], - ['ඉරි', 'සඳු', 'අඟ', 'බදා', 'බ්\u200dරහ', 'සිකු', 'සෙන'] - ], - u, - [ - ['ජ', 'පෙ', 'මා', 'අ', 'මැ', 'ජූ', 'ජූ', 'අ', 'සැ', 'ඔ', 'නෙ', 'දෙ'], - ['ජන', 'පෙබ', 'මාර්තු', 'අප්\u200dරේල්', 'මැයි', 'ජූනි', 'ජූලි', 'අගෝ', 'සැප්', 'ඔක්', 'නොවැ', 'දෙසැ'], - [ - 'ජනවාරි', 'පෙබරවාරි', 'මාර්තු', 'අප්\u200dරේල්', 'මැයි', 'ජූනි', 'ජූලි', 'අගෝස්තු', 'සැප්තැම්බර්', 'ඔක්තෝබර්', - 'නොවැම්බර්', 'දෙසැම්බර්' - ] - ], - [ - ['ජ', 'පෙ', 'මා', 'අ', 'මැ', 'ජූ', 'ජූ', 'අ', 'සැ', 'ඔ', 'නෙ', 'දෙ'], - ['ජන', 'පෙබ', 'මාර්', 'අප්\u200dරේල්', 'මැයි', 'ජූනි', 'ජූලි', 'අගෝ', 'සැප්', 'ඔක්', 'නොවැ', 'දෙසැ'], - [ - 'ජනවාරි', 'පෙබරවාරි', 'මාර්තු', 'අප්\u200dරේල්', 'මැයි', 'ජූනි', 'ජූලි', 'අගෝස්තු', 'සැප්තැම්බර්', 'ඔක්තෝබර්', - 'නොවැම්බර්', 'දෙසැම්බර්' - ] - ], - [['ක්\u200dරි.පූ.', 'ක්\u200dරි.ව.'], u, ['ක්\u200dරිස්තු පූර්ව', 'ක්\u200dරිස්තු වර්ෂ']], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH.mm', 'HH.mm.ss', 'HH.mm.ss z', 'HH.mm.ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', '.'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#'], - 'LKR', - 'රු.', - 'ශ්\u200dරී ලංකා රුපියල', - { - 'JPY': ['JP¥', '¥'], - 'LKR': ['රු.'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XOF': ['සිෆ්එ'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/sk.ts b/packages/common/locales/sk.ts deleted file mode 100644 index d20b2de4c0..0000000000 --- a/packages/common/locales/sk.ts +++ /dev/null @@ -1,78 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - if (i === Math.floor(i) && i >= 2 && i <= 4 && v === 0) return 3; - if (!(v === 0)) return 4; - return 5; -} - -export default [ - 'sk', - [['AM', 'PM'], u, u], - u, - [ - ['n', 'p', 'u', 's', 'š', 'p', 's'], ['ne', 'po', 'ut', 'st', 'št', 'pi', 'so'], - ['nedeľa', 'pondelok', 'utorok', 'streda', 'štvrtok', 'piatok', 'sobota'], - ['ne', 'po', 'ut', 'st', 'št', 'pi', 'so'] - ], - u, - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'mar', 'apr', 'máj', 'jún', 'júl', 'aug', 'sep', 'okt', 'nov', 'dec'], - [ - 'januára', 'februára', 'marca', 'apríla', 'mája', 'júna', 'júla', 'augusta', 'septembra', - 'októbra', 'novembra', 'decembra' - ] - ], - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'mar', 'apr', 'máj', 'jún', 'júl', 'aug', 'sep', 'okt', 'nov', 'dec'], - [ - 'január', 'február', 'marec', 'apríl', 'máj', 'jún', 'júl', 'august', 'september', 'október', - 'november', 'december' - ] - ], - [['pred Kr.', 'po Kr.'], u, ['pred Kristom', 'po Kristovi']], - 1, - [6, 0], - ['d. M. y', u, 'd. MMMM y', 'EEEE d. MMMM y'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1} {0}', '{1}, {0}', u, u], - [',', ' ', ';', '%', '+', '-', 'e', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': ['NIS', '₪'], - 'INR': [u, '₹'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/sl.ts b/packages/common/locales/sl.ts deleted file mode 100644 index d45cd5df45..0000000000 --- a/packages/common/locales/sl.ts +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (v === 0 && i % 100 === 1) return 1; - if (v === 0 && i % 100 === 2) return 2; - if (v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 3 && i % 100 <= 4 || !(v === 0)) - return 3; - return 5; -} - -export default [ - 'sl', - [['d', 'p'], ['dop.', 'pop.'], u], - [['d', 'p'], ['dop.', 'pop.'], ['dopoldne', 'popoldne']], - [ - ['n', 'p', 't', 's', 'č', 'p', 's'], ['ned.', 'pon.', 'tor.', 'sre.', 'čet.', 'pet.', 'sob.'], - ['nedelja', 'ponedeljek', 'torek', 'sreda', 'četrtek', 'petek', 'sobota'], - ['ned.', 'pon.', 'tor.', 'sre.', 'čet.', 'pet.', 'sob.'] - ], - u, - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun.', 'jul.', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januar', 'februar', 'marec', 'april', 'maj', 'junij', 'julij', 'avgust', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['pr. Kr.', 'po Kr.'], u, ['pred Kristusom', 'po Kristusu']], - 1, - [6, 0], - ['d. MM. yy', 'd. MMM y', 'dd. MMMM y', 'EEEE, dd. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '−', 'e', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'evro', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'GBP': [u, '£'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, 'NT$'], - 'XCD': [u, '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/smn.ts b/packages/common/locales/smn.ts deleted file mode 100644 index 1822cfec80..0000000000 --- a/packages/common/locales/smn.ts +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - if (n === 2) return 2; - return 5; -} - -export default [ - 'smn', - [['ip.', 'ep.'], u, u], - u, - [ - ['p', 'V', 'M', 'K', 'T', 'V', 'L'], ['pas', 'vuo', 'maj', 'kos', 'tuo', 'vás', 'láv'], - ['pasepeeivi', 'vuossaargâ', 'majebaargâ', 'koskoho', 'tuorâstuv', 'vástuppeeivi', 'lávurduv'], - ['pa', 'vu', 'ma', 'ko', 'tu', 'vá', 'lá'] - ], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['pas', 'vuo', 'maj', 'kos', 'tuo', 'vás', 'láv'], - ['pasepeivi', 'vuossargâ', 'majebargâ', 'koskokko', 'tuorâstâh', 'vástuppeivi', 'lávurdâh'], - ['pa', 'vu', 'ma', 'ko', 'tu', 'vá', 'lá'] - ], - [ - ['U', 'K', 'NJ', 'C', 'V', 'K', 'S', 'P', 'Č', 'R', 'S', 'J'], - [ - 'uđiv', 'kuovâ', 'njuhčâ', 'cuáŋui', 'vyesi', 'kesi', 'syeini', 'porge', 'čohčâ', 'roovvâd', - 'skammâ', 'juovlâ' - ], - [ - 'uđđâivemáánu', 'kuovâmáánu', 'njuhčâmáánu', 'cuáŋuimáánu', 'vyesimáánu', 'kesimáánu', - 'syeinimáánu', 'porgemáánu', 'čohčâmáánu', 'roovvâdmáánu', 'skammâmáánu', 'juovlâmáánu' - ] - ], - u, - [['oKr.', 'mKr.'], u, ['Ovdil Kristus šoddâm', 'maŋa Kristus šoddâm']], - 1, - [6, 0], - ['d.M.y', 'MMM d. y', 'MMMM d. y', 'cccc, MMMM d. y'], - ['H.mm', 'H.mm.ss', 'H.mm.ss z', 'H.mm.ss zzzz'], - ['{1} {0}', '{1} \'tme\' {0}', u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'epiloho', '.'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/sn.ts b/packages/common/locales/sn.ts deleted file mode 100644 index b161f41a5d..0000000000 --- a/packages/common/locales/sn.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'sn', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'C', 'C', 'C', 'C', 'M'], ['Svo', 'Muv', 'Chp', 'Cht', 'Chn', 'Chs', 'Mug'], - ['Svondo', 'Muvhuro', 'Chipiri', 'Chitatu', 'China', 'Chishanu', 'Mugovera'], - ['Sv', 'Mu', 'Cp', 'Ct', 'Cn', 'Cs', 'Mg'] - ], - u, - [ - ['N', 'K', 'K', 'K', 'C', 'C', 'C', 'N', 'G', 'G', 'M', 'Z'], - ['Ndi', 'Kuk', 'Kur', 'Kub', 'Chv', 'Chk', 'Chg', 'Nya', 'Gun', 'Gum', 'Mbu', 'Zvi'], - [ - 'Ndira', 'Kukadzi', 'Kurume', 'Kubvumbi', 'Chivabvu', 'Chikumi', 'Chikunguru', 'Nyamavhuvhu', - 'Gunyana', 'Gumiguru', 'Mbudzi', 'Zvita' - ] - ], - u, - [['BC', 'AD'], u, ['Kristo asati auya', 'mugore ramambo vedu']], - 0, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'USD', - 'US$', - 'Dora re Amerika', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/so-DJ.ts b/packages/common/locales/so-DJ.ts deleted file mode 100644 index 1eab976804..0000000000 --- a/packages/common/locales/so-DJ.ts +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'so-DJ', - [['h', 'd'], ['GH', 'GD'], u], - [['GH', 'GD'], u, u], - [ - ['A', 'I', 'T', 'A', 'Kh', 'J', 'S'], ['Axd', 'Isn', 'Tldo', 'Arbc', 'Khms', 'Jmc', 'Sbti'], - ['Axad', 'Isniin', 'Talaado', 'Arbaco', 'Khamiis', 'Jimco', 'Sabti'], - ['Axd', 'Isn', 'Tldo', 'Arbc', 'Khms', 'Jmc', 'Sbti'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'L', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Lul', 'Ogs', 'Seb', 'Okt', 'Nof', 'Dis'], - [ - 'Bisha Koobaad', 'Bisha Labaad', 'Bisha Saddexaad', 'Bisha Afraad', 'Bisha Shanaad', - 'Bisha Lixaad', 'Bisha Todobaad', 'Bisha Sideedaad', 'Bisha Sagaalaad', 'Bisha Tobnaad', - 'Bisha Kow iyo Tobnaad', 'Bisha Laba iyo Tobnaad' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'L', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Lul', 'Ogs', 'Seb', 'Okt', 'Nof', 'Dis'], - [ - 'Jannaayo', 'Febraayo', 'Maarso', 'Abriil', 'May', 'Juun', 'Luuliyo', 'Ogost', 'Sebtembar', - 'Oktoobar', 'Nofembar', 'Desembar' - ] - ], - [['B', 'A'], ['CH', 'CD'], ['Ciise Hortii', 'Ciise Dabadii']], - 6, - [6, 0], - ['dd/MM/yy', 'dd-MMM-y', 'dd MMMM y', 'EEEE, MMMM dd, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'MaL', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'DJF', - 'Fdj', - 'Faran Jabuuti', - {'BBD': ['DBB', '$'], 'DJF': ['Fdj'], 'JPY': ['JP¥', '¥'], 'SOS': ['S'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/so-ET.ts b/packages/common/locales/so-ET.ts deleted file mode 100644 index 161609df76..0000000000 --- a/packages/common/locales/so-ET.ts +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'so-ET', - [['h', 'd'], ['GH', 'GD'], u], - [['GH', 'GD'], u, u], - [ - ['A', 'I', 'T', 'A', 'Kh', 'J', 'S'], ['Axd', 'Isn', 'Tldo', 'Arbc', 'Khms', 'Jmc', 'Sbti'], - ['Axad', 'Isniin', 'Talaado', 'Arbaco', 'Khamiis', 'Jimco', 'Sabti'], - ['Axd', 'Isn', 'Tldo', 'Arbc', 'Khms', 'Jmc', 'Sbti'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'L', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Lul', 'Ogs', 'Seb', 'Okt', 'Nof', 'Dis'], - [ - 'Bisha Koobaad', 'Bisha Labaad', 'Bisha Saddexaad', 'Bisha Afraad', 'Bisha Shanaad', - 'Bisha Lixaad', 'Bisha Todobaad', 'Bisha Sideedaad', 'Bisha Sagaalaad', 'Bisha Tobnaad', - 'Bisha Kow iyo Tobnaad', 'Bisha Laba iyo Tobnaad' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'L', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Lul', 'Ogs', 'Seb', 'Okt', 'Nof', 'Dis'], - [ - 'Jannaayo', 'Febraayo', 'Maarso', 'Abriil', 'May', 'Juun', 'Luuliyo', 'Ogost', 'Sebtembar', - 'Oktoobar', 'Nofembar', 'Desembar' - ] - ], - [['B', 'A'], ['CH', 'CD'], ['Ciise Hortii', 'Ciise Dabadii']], - 0, - [6, 0], - ['dd/MM/yy', 'dd-MMM-y', 'dd MMMM y', 'EEEE, MMMM dd, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'MaL', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ETB', - 'Br', - 'Birta Itoobbiya', - {'BBD': ['DBB', '$'], 'ETB': ['Br'], 'JPY': ['JP¥', '¥'], 'SOS': ['S'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/so-KE.ts b/packages/common/locales/so-KE.ts deleted file mode 100644 index c8a64a2e90..0000000000 --- a/packages/common/locales/so-KE.ts +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'so-KE', - [['h', 'd'], ['GH', 'GD'], u], - [['GH', 'GD'], u, u], - [ - ['A', 'I', 'T', 'A', 'Kh', 'J', 'S'], ['Axd', 'Isn', 'Tldo', 'Arbc', 'Khms', 'Jmc', 'Sbti'], - ['Axad', 'Isniin', 'Talaado', 'Arbaco', 'Khamiis', 'Jimco', 'Sabti'], - ['Axd', 'Isn', 'Tldo', 'Arbc', 'Khms', 'Jmc', 'Sbti'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'L', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Lul', 'Ogs', 'Seb', 'Okt', 'Nof', 'Dis'], - [ - 'Bisha Koobaad', 'Bisha Labaad', 'Bisha Saddexaad', 'Bisha Afraad', 'Bisha Shanaad', - 'Bisha Lixaad', 'Bisha Todobaad', 'Bisha Sideedaad', 'Bisha Sagaalaad', 'Bisha Tobnaad', - 'Bisha Kow iyo Tobnaad', 'Bisha Laba iyo Tobnaad' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'L', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Lul', 'Ogs', 'Seb', 'Okt', 'Nof', 'Dis'], - [ - 'Jannaayo', 'Febraayo', 'Maarso', 'Abriil', 'May', 'Juun', 'Luuliyo', 'Ogost', 'Sebtembar', - 'Oktoobar', 'Nofembar', 'Desembar' - ] - ], - [['B', 'A'], ['CH', 'CD'], ['Ciise Hortii', 'Ciise Dabadii']], - 0, - [6, 0], - ['dd/MM/yy', 'dd-MMM-y', 'dd MMMM y', 'EEEE, MMMM dd, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'MaL', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Shilingka Kenya', - {'BBD': ['DBB', '$'], 'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'SOS': ['S'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/so.ts b/packages/common/locales/so.ts deleted file mode 100644 index 58ecb51b9d..0000000000 --- a/packages/common/locales/so.ts +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'so', - [['h', 'd'], ['GH', 'GD'], u], - [['GH', 'GD'], u, u], - [ - ['A', 'I', 'T', 'A', 'Kh', 'J', 'S'], ['Axd', 'Isn', 'Tldo', 'Arbc', 'Khms', 'Jmc', 'Sbti'], - ['Axad', 'Isniin', 'Talaado', 'Arbaco', 'Khamiis', 'Jimco', 'Sabti'], - ['Axd', 'Isn', 'Tldo', 'Arbc', 'Khms', 'Jmc', 'Sbti'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'L', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Lul', 'Ogs', 'Seb', 'Okt', 'Nof', 'Dis'], - [ - 'Bisha Koobaad', 'Bisha Labaad', 'Bisha Saddexaad', 'Bisha Afraad', 'Bisha Shanaad', - 'Bisha Lixaad', 'Bisha Todobaad', 'Bisha Sideedaad', 'Bisha Sagaalaad', 'Bisha Tobnaad', - 'Bisha Kow iyo Tobnaad', 'Bisha Laba iyo Tobnaad' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'L', 'O', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Lul', 'Ogs', 'Seb', 'Okt', 'Nof', 'Dis'], - [ - 'Jannaayo', 'Febraayo', 'Maarso', 'Abriil', 'May', 'Juun', 'Luuliyo', 'Ogost', 'Sebtembar', - 'Oktoobar', 'Nofembar', 'Desembar' - ] - ], - [['B', 'A'], ['CH', 'CD'], ['Ciise Hortii', 'Ciise Dabadii']], - 1, - [6, 0], - ['dd/MM/yy', 'dd-MMM-y', 'dd MMMM y', 'EEEE, MMMM dd, y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'MaL', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SOS', - 'S', - 'Shilingka Soomaaliya', - {'BBD': ['DBB', '$'], 'JPY': ['JP¥', '¥'], 'SOS': ['S'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/sq-MK.ts b/packages/common/locales/sq-MK.ts deleted file mode 100644 index 20de326ba2..0000000000 --- a/packages/common/locales/sq-MK.ts +++ /dev/null @@ -1,152 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'sq-MK', - [['p.d.', 'm.d.'], u, ['e paradites', 'e pasdites']], - [['p.d.', 'm.d.'], u, ['paradite', 'pasdite']], - [ - ['d', 'h', 'm', 'm', 'e', 'p', 'sh'], ['Die', 'Hën', 'Mar', 'Mër', 'Enj', 'Pre', 'Sht'], - ['e diel', 'e hënë', 'e martë', 'e mërkurë', 'e enjte', 'e premte', 'e shtunë'], - ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'] - ], - [ - ['d', 'h', 'm', 'm', 'e', 'p', 'sh'], ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'], - ['e diel', 'e hënë', 'e martë', 'e mërkurë', 'e enjte', 'e premte', 'e shtunë'], - ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'] - ], - [ - ['j', 'sh', 'm', 'p', 'm', 'q', 'k', 'g', 'sh', 't', 'n', 'dh'], - ['jan', 'shk', 'mar', 'pri', 'maj', 'qer', 'korr', 'gush', 'sht', 'tet', 'nën', 'dhj'], - [ - 'janar', 'shkurt', 'mars', 'prill', 'maj', 'qershor', 'korrik', 'gusht', 'shtator', 'tetor', - 'nëntor', 'dhjetor' - ] - ], - u, - [['p.K.', 'mb.K.'], u, ['para Krishtit', 'mbas Krishtit']], - 1, - [6, 0], - ['d.M.yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'në\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'MKD', - 'den', - 'Denari maqedonas', - { - 'ALL': ['Lekë'], - 'AOA': [], - 'ARS': [], - 'AUD': ['A$', 'AUD'], - 'BAM': [], - 'BBD': [], - 'BDT': [], - 'BMD': [], - 'BND': [], - 'BOB': [], - 'BRL': [], - 'BSD': [], - 'BWP': [], - 'BYN': [], - 'BZD': [], - 'CAD': ['CA$', 'CAD'], - 'CLP': [], - 'CNY': ['CN¥', 'CNY'], - 'COP': [], - 'CRC': [], - 'CUC': [], - 'CUP': [], - 'CZK': [], - 'DKK': [], - 'DOP': [], - 'EGP': [], - 'EUR': ['€', 'EUR'], - 'FJD': [], - 'FKP': [], - 'GBP': ['£', 'GBP'], - 'GEL': [], - 'GIP': [], - 'GNF': [], - 'GTQ': [], - 'GYD': [], - 'HKD': ['HK$', 'HKS'], - 'HNL': [], - 'HRK': [], - 'HUF': [], - 'IDR': [], - 'ILS': ['₪', 'ILS'], - 'INR': ['₹', 'INR'], - 'ISK': [], - 'JMD': [], - 'JPY': ['JP¥', 'JPY'], - 'KHR': [], - 'KMF': [], - 'KPW': [], - 'KRW': ['₩', 'KRW'], - 'KYD': [], - 'KZT': [], - 'LAK': [], - 'LBP': [], - 'LKR': [], - 'LRD': [], - 'MGA': [], - 'MKD': ['den'], - 'MMK': [], - 'MNT': [], - 'MUR': [], - 'MXN': ['MX$', 'MXN'], - 'MYR': [], - 'NAD': [], - 'NGN': [], - 'NIO': [], - 'NOK': [], - 'NPR': [], - 'NZD': ['NZ$', 'NZD'], - 'PHP': [], - 'PKR': [], - 'PLN': [], - 'PYG': [], - 'RON': [], - 'RUB': [], - 'RWF': [], - 'SBD': [], - 'SEK': [], - 'SGD': [], - 'SHP': [], - 'SRD': [], - 'SSP': [], - 'STN': [], - 'SYP': [], - 'THB': ['฿', 'THB'], - 'TOP': [], - 'TRY': [], - 'TTD': [], - 'TWD': ['NT$', 'TWD'], - 'UAH': [], - 'USD': ['US$', 'USD'], - 'UYU': [], - 'VND': ['₫', 'VND'], - 'XCD': ['EC$', 'XCD'], - 'ZAR': [], - 'ZMW': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/sq-XK.ts b/packages/common/locales/sq-XK.ts deleted file mode 100644 index 4a80c645f2..0000000000 --- a/packages/common/locales/sq-XK.ts +++ /dev/null @@ -1,151 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'sq-XK', - [['p.d.', 'm.d.'], u, ['e paradites', 'e pasdites']], - [['p.d.', 'm.d.'], u, ['paradite', 'pasdite']], - [ - ['d', 'h', 'm', 'm', 'e', 'p', 'sh'], ['Die', 'Hën', 'Mar', 'Mër', 'Enj', 'Pre', 'Sht'], - ['e diel', 'e hënë', 'e martë', 'e mërkurë', 'e enjte', 'e premte', 'e shtunë'], - ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'] - ], - [ - ['d', 'h', 'm', 'm', 'e', 'p', 'sh'], ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'], - ['e diel', 'e hënë', 'e martë', 'e mërkurë', 'e enjte', 'e premte', 'e shtunë'], - ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'] - ], - [ - ['j', 'sh', 'm', 'p', 'm', 'q', 'k', 'g', 'sh', 't', 'n', 'dh'], - ['jan', 'shk', 'mar', 'pri', 'maj', 'qer', 'korr', 'gush', 'sht', 'tet', 'nën', 'dhj'], - [ - 'janar', 'shkurt', 'mars', 'prill', 'maj', 'qershor', 'korrik', 'gusht', 'shtator', 'tetor', - 'nëntor', 'dhjetor' - ] - ], - u, - [['p.K.', 'mb.K.'], u, ['para Krishtit', 'mbas Krishtit']], - 1, - [6, 0], - ['d.M.yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'në\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Euroja', - { - 'ALL': ['Lekë'], - 'AOA': [], - 'ARS': [], - 'AUD': ['A$', 'AUD'], - 'BAM': [], - 'BBD': [], - 'BDT': [], - 'BMD': [], - 'BND': [], - 'BOB': [], - 'BRL': [], - 'BSD': [], - 'BWP': [], - 'BYN': [], - 'BZD': [], - 'CAD': ['CA$', 'CAD'], - 'CLP': [], - 'CNY': ['CN¥', 'CNY'], - 'COP': [], - 'CRC': [], - 'CUC': [], - 'CUP': [], - 'CZK': [], - 'DKK': [], - 'DOP': [], - 'EGP': [], - 'EUR': ['€', 'EUR'], - 'FJD': [], - 'FKP': [], - 'GBP': ['£', 'GBP'], - 'GEL': [], - 'GIP': [], - 'GNF': [], - 'GTQ': [], - 'GYD': [], - 'HKD': ['HK$', 'HKS'], - 'HNL': [], - 'HRK': [], - 'HUF': [], - 'IDR': [], - 'ILS': ['₪', 'ILS'], - 'INR': ['₹', 'INR'], - 'ISK': [], - 'JMD': [], - 'JPY': ['JP¥', 'JPY'], - 'KHR': [], - 'KMF': [], - 'KPW': [], - 'KRW': ['₩', 'KRW'], - 'KYD': [], - 'KZT': [], - 'LAK': [], - 'LBP': [], - 'LKR': [], - 'LRD': [], - 'MGA': [], - 'MMK': [], - 'MNT': [], - 'MUR': [], - 'MXN': ['MX$', 'MXN'], - 'MYR': [], - 'NAD': [], - 'NGN': [], - 'NIO': [], - 'NOK': [], - 'NPR': [], - 'NZD': ['NZ$', 'NZD'], - 'PHP': [], - 'PKR': [], - 'PLN': [], - 'PYG': [], - 'RON': [], - 'RUB': [], - 'RWF': [], - 'SBD': [], - 'SEK': [], - 'SGD': [], - 'SHP': [], - 'SRD': [], - 'SSP': [], - 'STN': [], - 'SYP': [], - 'THB': ['฿', 'THB'], - 'TOP': [], - 'TRY': [], - 'TTD': [], - 'TWD': ['NT$', 'TWD'], - 'UAH': [], - 'USD': ['US$', 'USD'], - 'UYU': [], - 'VND': ['₫', 'VND'], - 'XCD': ['EC$', 'XCD'], - 'ZAR': [], - 'ZMW': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/sq.ts b/packages/common/locales/sq.ts deleted file mode 100644 index a156ac262a..0000000000 --- a/packages/common/locales/sq.ts +++ /dev/null @@ -1,151 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'sq', - [['p.d.', 'm.d.'], u, ['e paradites', 'e pasdites']], - [['p.d.', 'm.d.'], u, ['paradite', 'pasdite']], - [ - ['d', 'h', 'm', 'm', 'e', 'p', 'sh'], ['Die', 'Hën', 'Mar', 'Mër', 'Enj', 'Pre', 'Sht'], - ['e diel', 'e hënë', 'e martë', 'e mërkurë', 'e enjte', 'e premte', 'e shtunë'], - ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'] - ], - [ - ['d', 'h', 'm', 'm', 'e', 'p', 'sh'], ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'], - ['e diel', 'e hënë', 'e martë', 'e mërkurë', 'e enjte', 'e premte', 'e shtunë'], - ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'] - ], - [ - ['j', 'sh', 'm', 'p', 'm', 'q', 'k', 'g', 'sh', 't', 'n', 'dh'], - ['jan', 'shk', 'mar', 'pri', 'maj', 'qer', 'korr', 'gush', 'sht', 'tet', 'nën', 'dhj'], - [ - 'janar', 'shkurt', 'mars', 'prill', 'maj', 'qershor', 'korrik', 'gusht', 'shtator', 'tetor', - 'nëntor', 'dhjetor' - ] - ], - u, - [['p.K.', 'mb.K.'], u, ['para Krishtit', 'mbas Krishtit']], - 1, - [6, 0], - ['d.M.yy', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a, z', 'h:mm:ss a, zzzz'], - ['{1}, {0}', u, '{1} \'në\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'ALL', - 'Lekë', - 'Leku shqiptar', - { - 'ALL': ['Lekë'], - 'AOA': [], - 'ARS': [], - 'AUD': ['A$', 'AUD'], - 'BAM': [], - 'BBD': [], - 'BDT': [], - 'BMD': [], - 'BND': [], - 'BOB': [], - 'BRL': [], - 'BSD': [], - 'BWP': [], - 'BYN': [], - 'BZD': [], - 'CAD': ['CA$', 'CAD'], - 'CLP': [], - 'CNY': ['CN¥', 'CNY'], - 'COP': [], - 'CRC': [], - 'CUC': [], - 'CUP': [], - 'CZK': [], - 'DKK': [], - 'DOP': [], - 'EGP': [], - 'EUR': ['€', 'EUR'], - 'FJD': [], - 'FKP': [], - 'GBP': ['£', 'GBP'], - 'GEL': [], - 'GIP': [], - 'GNF': [], - 'GTQ': [], - 'GYD': [], - 'HKD': ['HK$', 'HKS'], - 'HNL': [], - 'HRK': [], - 'HUF': [], - 'IDR': [], - 'ILS': ['₪', 'ILS'], - 'INR': ['₹', 'INR'], - 'ISK': [], - 'JMD': [], - 'JPY': ['JP¥', 'JPY'], - 'KHR': [], - 'KMF': [], - 'KPW': [], - 'KRW': ['₩', 'KRW'], - 'KYD': [], - 'KZT': [], - 'LAK': [], - 'LBP': [], - 'LKR': [], - 'LRD': [], - 'MGA': [], - 'MMK': [], - 'MNT': [], - 'MUR': [], - 'MXN': ['MX$', 'MXN'], - 'MYR': [], - 'NAD': [], - 'NGN': [], - 'NIO': [], - 'NOK': [], - 'NPR': [], - 'NZD': ['NZ$', 'NZD'], - 'PHP': [], - 'PKR': [], - 'PLN': [], - 'PYG': [], - 'RON': [], - 'RUB': [], - 'RWF': [], - 'SBD': [], - 'SEK': [], - 'SGD': [], - 'SHP': [], - 'SRD': [], - 'SSP': [], - 'STN': [], - 'SYP': [], - 'THB': ['฿', 'THB'], - 'TOP': [], - 'TRY': [], - 'TTD': [], - 'TWD': ['NT$', 'TWD'], - 'UAH': [], - 'USD': ['US$', 'USD'], - 'UYU': [], - 'VND': ['₫', 'VND'], - 'XCD': ['EC$', 'XCD'], - 'ZAR': [], - 'ZMW': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/sr-Cyrl-BA.ts b/packages/common/locales/sr-Cyrl-BA.ts deleted file mode 100644 index 5e44436aab..0000000000 --- a/packages/common/locales/sr-Cyrl-BA.ts +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14) || - f % 10 === Math.floor(f % 10) && f % 10 >= 2 && f % 10 <= 4 && - !(f % 100 >= 12 && f % 100 <= 14)) - return 3; - return 5; -} - -export default [ - 'sr-Cyrl-BA', - [['a', 'p'], ['прије подне', 'по подне'], u], - [['а', 'p'], ['прије подне', 'по подне'], u], - [ - ['н', 'п', 'у', 'с', 'ч', 'п', 'с'], ['нед', 'пон', 'ут', 'ср', 'чет', 'пет', 'суб'], - ['недјеља', 'понедељак', 'уторак', 'сриједа', 'четвртак', 'петак', 'субота'], - ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'] - ], - u, - [ - ['ј', 'ф', 'м', 'а', 'м', 'ј', 'ј', 'а', 'с', 'о', 'н', 'д'], - ['јан', 'феб', 'мар', 'апр', 'мај', 'јун', 'јул', 'авг', 'сеп', 'окт', 'нов', 'дец'], - [ - 'јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', - 'новембар', 'децембар' - ] - ], - u, - [['п.н.е.', 'н.е.'], ['п. н. е.', 'н. е.'], ['прије нове ере', 'нове ере']], - 1, - [6, 0], - ['d.M.yy.', 'dd.MM.y.', 'dd. MMMM y.', 'EEEE, dd. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'BAM', - 'КМ', - 'Босанско-херцеговачка конвертибилна марка', - { - 'AUD': [u, '$'], - 'BAM': ['КМ', 'KM'], - 'GEL': [u, 'ლ'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/sr-Cyrl-ME.ts b/packages/common/locales/sr-Cyrl-ME.ts deleted file mode 100644 index 74a2455620..0000000000 --- a/packages/common/locales/sr-Cyrl-ME.ts +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14) || - f % 10 === Math.floor(f % 10) && f % 10 >= 2 && f % 10 <= 4 && - !(f % 100 >= 12 && f % 100 <= 14)) - return 3; - return 5; -} - -export default [ - 'sr-Cyrl-ME', - [['a', 'p'], ['прије подне', 'по подне'], u], - u, - [ - ['н', 'п', 'у', 'с', 'ч', 'п', 'с'], ['нед', 'пон', 'уто', 'сре', 'чет', 'пет', 'суб'], - ['недјеља', 'понедељак', 'уторак', 'сриједа', 'четвртак', 'петак', 'субота'], - ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'] - ], - u, - [ - ['ј', 'ф', 'м', 'а', 'м', 'ј', 'ј', 'а', 'с', 'о', 'н', 'д'], - ['јан', 'феб', 'март', 'апр', 'мај', 'јун', 'јул', 'авг', 'септ', 'окт', 'нов', 'дец'], - [ - 'јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', - 'новембар', 'децембар' - ] - ], - u, - [['п.н.е.', 'н.е.'], ['п. н. е.', 'н. е.'], ['прије нове ере', 'нове ере']], - 1, - [6, 0], - ['d.M.yy.', 'dd.MM.y.', 'dd. MMMM y.', 'EEEE, dd. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Евро', - { - 'AUD': [u, '$'], - 'BAM': ['КМ', 'KM'], - 'GEL': [u, 'ლ'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/sr-Cyrl-XK.ts b/packages/common/locales/sr-Cyrl-XK.ts deleted file mode 100644 index 8f3e63b4f0..0000000000 --- a/packages/common/locales/sr-Cyrl-XK.ts +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14) || - f % 10 === Math.floor(f % 10) && f % 10 >= 2 && f % 10 <= 4 && - !(f % 100 >= 12 && f % 100 <= 14)) - return 3; - return 5; -} - -export default [ - 'sr-Cyrl-XK', - [['a', 'p'], ['пре подне', 'по подне'], u], - u, - [ - ['н', 'п', 'у', 'с', 'ч', 'п', 'с'], ['нед', 'пон', 'уто', 'сре', 'чет', 'пет', 'суб'], - ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'], - ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'] - ], - u, - [ - ['ј', 'ф', 'м', 'а', 'м', 'ј', 'ј', 'а', 'с', 'о', 'н', 'д'], - ['јан', 'феб', 'март', 'апр', 'мај', 'јун', 'јул', 'авг', 'септ', 'окт', 'нов', 'дец'], - [ - 'јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', - 'новембар', 'децембар' - ] - ], - u, - [['п.н.е.', 'н.е.'], ['п. н. е.', 'н. е.'], ['пре нове ере', 'нове ере']], - 1, - [6, 0], - ['d.M.yy.', 'dd.MM.y.', 'dd. MMMM y.', 'EEEE, dd. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Евро', - { - 'AUD': [u, '$'], - 'BAM': ['КМ', 'KM'], - 'GEL': [u, 'ლ'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/sr-Cyrl.ts b/packages/common/locales/sr-Cyrl.ts deleted file mode 100644 index 344ad7bfc7..0000000000 --- a/packages/common/locales/sr-Cyrl.ts +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14) || - f % 10 === Math.floor(f % 10) && f % 10 >= 2 && f % 10 <= 4 && - !(f % 100 >= 12 && f % 100 <= 14)) - return 3; - return 5; -} - -export default [ - 'sr-Cyrl', - [['a', 'p'], ['пре подне', 'по подне'], u], - [['пре подне', 'по подне'], u, u], - [ - ['н', 'п', 'у', 'с', 'ч', 'п', 'с'], ['нед', 'пон', 'уто', 'сре', 'чет', 'пет', 'суб'], - ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'], - ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'] - ], - u, - [ - ['ј', 'ф', 'м', 'а', 'м', 'ј', 'ј', 'а', 'с', 'о', 'н', 'д'], - ['јан', 'феб', 'мар', 'апр', 'мај', 'јун', 'јул', 'авг', 'сеп', 'окт', 'нов', 'дец'], - [ - 'јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', - 'новембар', 'децембар' - ] - ], - u, - [['п.н.е.', 'н.е.'], ['п. н. е.', 'н. е.'], ['пре нове ере', 'нове ере']], - 1, - [6, 0], - ['d.M.yy.', 'dd.MM.y.', 'dd. MMMM y.', 'EEEE, dd. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'RSD', - 'RSD', - 'Српски динар', - { - 'AUD': [u, '$'], - 'BAM': ['КМ', 'KM'], - 'GEL': [u, 'ლ'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/sr-Latn-BA.ts b/packages/common/locales/sr-Latn-BA.ts deleted file mode 100644 index 39b41a8eb6..0000000000 --- a/packages/common/locales/sr-Latn-BA.ts +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'sr-Latn-BA', - [['a', 'p'], ['prije podne', 'po podne'], u], - u, - [ - ['n', 'p', 'u', 's', 'č', 'p', 's'], ['ned', 'pon', 'ut', 'sr', 'čet', 'pet', 'sub'], - ['nedjelja', 'ponedeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'] - ], - u, - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'avg', 'sep', 'okt', 'nov', 'dec'], - [ - 'januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', - 'novembar', 'decembar' - ] - ], - u, - [['p.n.e.', 'n.e.'], ['p. n. e.', 'n. e.'], ['prije nove ere', 'nove ere']], - 1, - [6, 0], - ['d.M.yy.', 'dd.MM.y.', 'dd. MMMM y.', 'EEEE, dd. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'BAM', - 'KM', - 'Bosansko-hercegovačka konvertibilna marka', - { - 'AUD': [u, '$'], - 'BAM': ['KM'], - 'BYN': [u, 'r.'], - 'GEL': [u, 'ლ'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/sr-Latn-ME.ts b/packages/common/locales/sr-Latn-ME.ts deleted file mode 100644 index 2df9557d60..0000000000 --- a/packages/common/locales/sr-Latn-ME.ts +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'sr-Latn-ME', - [['a', 'p'], ['prije podne', 'po podne'], u], - u, - [ - ['n', 'p', 'u', 's', 'č', 'p', 's'], ['ned', 'pon', 'uto', 'sre', 'čet', 'pet', 'sub'], - ['nedjelja', 'ponedeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'] - ], - u, - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'mart', 'apr', 'maj', 'jun', 'jul', 'avg', 'sept', 'okt', 'nov', 'dec'], - [ - 'januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', - 'novembar', 'decembar' - ] - ], - u, - [['p.n.e.', 'n.e.'], ['p. n. e.', 'n. e.'], ['prije nove ere', 'nove ere']], - 1, - [6, 0], - ['d.M.yy.', 'dd.MM.y.', 'dd. MMMM y.', 'EEEE, dd. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Evro', - { - 'AUD': [u, '$'], - 'BAM': ['KM'], - 'BYN': [u, 'r.'], - 'GEL': [u, 'ლ'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/sr-Latn-XK.ts b/packages/common/locales/sr-Latn-XK.ts deleted file mode 100644 index c2d1d54bb7..0000000000 --- a/packages/common/locales/sr-Latn-XK.ts +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'sr-Latn-XK', - [['a', 'p'], ['pre podne', 'po podne'], u], - u, - [ - ['n', 'p', 'u', 's', 'č', 'p', 's'], ['ned', 'pon', 'uto', 'sre', 'čet', 'pet', 'sub'], - ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'], - ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'] - ], - u, - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'mart', 'apr', 'maj', 'jun', 'jul', 'avg', 'sept', 'okt', 'nov', 'dec'], - [ - 'januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', - 'novembar', 'decembar' - ] - ], - u, - [['p.n.e.', 'n.e.'], ['p. n. e.', 'n. e.'], ['pre nove ere', 'nove ere']], - 1, - [6, 0], - ['d.M.yy.', 'dd.MM.y.', 'dd. MMMM y.', 'EEEE, dd. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'Evro', - { - 'AUD': [u, '$'], - 'BAM': ['KM'], - 'BYN': [u, 'r.'], - 'GEL': [u, 'ლ'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/sr-Latn.ts b/packages/common/locales/sr-Latn.ts deleted file mode 100644 index 745e0c5125..0000000000 --- a/packages/common/locales/sr-Latn.ts +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'sr-Latn', - [['a', 'p'], ['pre podne', 'po podne'], u], - [['pre podne', 'po podne'], u, u], - [ - ['n', 'p', 'u', 's', 'č', 'p', 's'], ['ned', 'pon', 'uto', 'sre', 'čet', 'pet', 'sub'], - ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'], - ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'] - ], - u, - [ - ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'], - ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'avg', 'sep', 'okt', 'nov', 'dec'], - [ - 'januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', - 'novembar', 'decembar' - ] - ], - u, - [['p.n.e.', 'n.e.'], ['p. n. e.', 'n. e.'], ['pre nove ere', 'nove ere']], - 1, - [6, 0], - ['d.M.yy.', 'dd.MM.y.', 'dd. MMMM y.', 'EEEE, dd. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'RSD', - 'RSD', - 'Srpski dinar', - { - 'AUD': [u, '$'], - 'BAM': ['KM'], - 'BYN': [u, 'r.'], - 'GEL': [u, 'ლ'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/sr.ts b/packages/common/locales/sr.ts deleted file mode 100644 index e8eda30513..0000000000 --- a/packages/common/locales/sr.ts +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length, - f = parseInt(n.toString().replace(/^[^.]*\.?/, ''), 10) || 0; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11) || f % 10 === 1 && !(f % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14) || - f % 10 === Math.floor(f % 10) && f % 10 >= 2 && f % 10 <= 4 && - !(f % 100 >= 12 && f % 100 <= 14)) - return 3; - return 5; -} - -export default [ - 'sr', - [['a', 'p'], ['пре подне', 'по подне'], u], - [['пре подне', 'по подне'], u, u], - [ - ['н', 'п', 'у', 'с', 'ч', 'п', 'с'], ['нед', 'пон', 'уто', 'сре', 'чет', 'пет', 'суб'], - ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'], - ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'] - ], - u, - [ - ['ј', 'ф', 'м', 'а', 'м', 'ј', 'ј', 'а', 'с', 'о', 'н', 'д'], - ['јан', 'феб', 'мар', 'апр', 'мај', 'јун', 'јул', 'авг', 'сеп', 'окт', 'нов', 'дец'], - [ - 'јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', - 'новембар', 'децембар' - ] - ], - u, - [['п.н.е.', 'н.е.'], ['п. н. е.', 'н. е.'], ['пре нове ере', 'нове ере']], - 1, - [6, 0], - ['d.M.yy.', 'dd.MM.y.', 'dd. MMMM y.', 'EEEE, dd. MMMM y.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'RSD', - 'RSD', - 'Српски динар', - { - 'AUD': [u, '$'], - 'BAM': ['КМ', 'KM'], - 'GEL': [u, 'ლ'], - 'KRW': [u, '₩'], - 'NZD': [u, '$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/sv-AX.ts b/packages/common/locales/sv-AX.ts deleted file mode 100644 index 3ad69c56e0..0000000000 --- a/packages/common/locales/sv-AX.ts +++ /dev/null @@ -1,81 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'sv-AX', - [['fm', 'em'], u, u], - [['fm', 'em'], ['f.m.', 'e.m.'], ['förmiddag', 'eftermiddag']], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['sön', 'mån', 'tis', 'ons', 'tors', 'fre', 'lör'], - ['söndag', 'måndag', 'tisdag', 'onsdag', 'torsdag', 'fredag', 'lördag'], - ['sö', 'må', 'ti', 'on', 'to', 'fr', 'lö'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mars', 'apr.', 'maj', 'juni', 'juli', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januari', 'februari', 'mars', 'april', 'maj', 'juni', 'juli', 'augusti', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['f.Kr.', 'e.Kr.'], u, ['före Kristus', 'efter Kristus']], - 1, - [6, 0], - ['y-MM-dd', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', '\'kl\'. HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '−', '×10^', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': [u, '$'], - 'BBD': ['Bds$', '$'], - 'BMD': ['BM$', '$'], - 'BRL': ['BR$', 'R$'], - 'BSD': ['BS$', '$'], - 'BZD': ['BZ$', '$'], - 'CNY': [u, '¥'], - 'DKK': ['Dkr', 'kr'], - 'DOP': ['RD$', '$'], - 'EEK': ['Ekr'], - 'EGP': ['EG£', 'E£'], - 'ESP': [], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'IEP': ['IE£'], - 'INR': [u, '₹'], - 'ISK': ['Ikr', 'kr'], - 'JMD': ['JM$', '$'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'NOK': ['Nkr', 'kr'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SEK': ['kr'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/sv-FI.ts b/packages/common/locales/sv-FI.ts deleted file mode 100644 index 4ecf50dcc2..0000000000 --- a/packages/common/locales/sv-FI.ts +++ /dev/null @@ -1,81 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'sv-FI', - [['fm', 'em'], u, u], - [['fm', 'em'], ['f.m.', 'e.m.'], ['förmiddag', 'eftermiddag']], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['sön', 'mån', 'tis', 'ons', 'tors', 'fre', 'lör'], - ['söndag', 'måndag', 'tisdag', 'onsdag', 'torsdag', 'fredag', 'lördag'], - ['sö', 'må', 'ti', 'on', 'to', 'fr', 'lö'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mars', 'apr.', 'maj', 'juni', 'juli', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januari', 'februari', 'mars', 'april', 'maj', 'juni', 'juli', 'augusti', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['f.Kr.', 'e.Kr.'], u, ['före Kristus', 'efter Kristus']], - 1, - [6, 0], - ['y-MM-dd', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', '\'kl\'. HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '−', '×10^', '×', '‰', '∞', 'NaN', '.'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'EUR', - '€', - 'euro', - { - 'AUD': [u, '$'], - 'BBD': ['Bds$', '$'], - 'BMD': ['BM$', '$'], - 'BRL': ['BR$', 'R$'], - 'BSD': ['BS$', '$'], - 'BZD': ['BZ$', '$'], - 'CNY': [u, '¥'], - 'DKK': ['Dkr', 'kr'], - 'DOP': ['RD$', '$'], - 'EEK': ['Ekr'], - 'EGP': ['EG£', 'E£'], - 'ESP': [], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'IEP': ['IE£'], - 'INR': [u, '₹'], - 'ISK': ['Ikr', 'kr'], - 'JMD': ['JM$', '$'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'NOK': ['Nkr', 'kr'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SEK': ['kr'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/sv.ts b/packages/common/locales/sv.ts deleted file mode 100644 index 66d84b42e4..0000000000 --- a/packages/common/locales/sv.ts +++ /dev/null @@ -1,81 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'sv', - [['fm', 'em'], u, u], - [['fm', 'em'], ['f.m.', 'e.m.'], ['förmiddag', 'eftermiddag']], - [ - ['S', 'M', 'T', 'O', 'T', 'F', 'L'], ['sön', 'mån', 'tis', 'ons', 'tors', 'fre', 'lör'], - ['söndag', 'måndag', 'tisdag', 'onsdag', 'torsdag', 'fredag', 'lördag'], - ['sö', 'må', 'ti', 'on', 'to', 'fr', 'lö'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['jan.', 'feb.', 'mars', 'apr.', 'maj', 'juni', 'juli', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - [ - 'januari', 'februari', 'mars', 'april', 'maj', 'juni', 'juli', 'augusti', 'september', - 'oktober', 'november', 'december' - ] - ], - u, - [['f.Kr.', 'e.Kr.'], u, ['före Kristus', 'efter Kristus']], - 1, - [6, 0], - ['y-MM-dd', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', '\'kl\'. HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '−', '×10^', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'SEK', - 'kr', - 'svensk krona', - { - 'AUD': [u, '$'], - 'BBD': ['Bds$', '$'], - 'BMD': ['BM$', '$'], - 'BRL': ['BR$', 'R$'], - 'BSD': ['BS$', '$'], - 'BZD': ['BZ$', '$'], - 'CNY': [u, '¥'], - 'DKK': ['Dkr', 'kr'], - 'DOP': ['RD$', '$'], - 'EEK': ['Ekr'], - 'EGP': ['EG£', 'E£'], - 'ESP': [], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'IEP': ['IE£'], - 'INR': [u, '₹'], - 'ISK': ['Ikr', 'kr'], - 'JMD': ['JM$', '$'], - 'JPY': [u, '¥'], - 'KRW': [u, '₩'], - 'NOK': ['Nkr', 'kr'], - 'NZD': [u, '$'], - 'RON': [u, 'L'], - 'SEK': ['kr'], - 'TWD': [u, 'NT$'], - 'USD': ['US$', '$'], - 'VND': [u, '₫'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/sw-CD.ts b/packages/common/locales/sw-CD.ts deleted file mode 100644 index 25dbcaad1b..0000000000 --- a/packages/common/locales/sw-CD.ts +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'sw-CD', - [['am', 'pm'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'], u, u - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', - 'Oktoba', 'Novemba', 'Desemba' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Kristo', 'Baada ya Kristo']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'CDF', - 'FC', - 'Faranga ya Kongo', - { - 'CDF': ['FC'], - 'JPY': ['JP¥', '¥'], - 'KES': ['Ksh'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'TZS': ['TSh'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/sw-KE.ts b/packages/common/locales/sw-KE.ts deleted file mode 100644 index e45b848e8a..0000000000 --- a/packages/common/locales/sw-KE.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'sw-KE', - [['am', 'pm'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'], u, u - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', - 'Oktoba', 'Novemba', 'Desemba' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Kristo', 'Baada ya Kristo']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Shilingi ya Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'THB': ['฿'], 'TWD': ['NT$'], 'TZS': ['TSh']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/sw-UG.ts b/packages/common/locales/sw-UG.ts deleted file mode 100644 index 99d317206e..0000000000 --- a/packages/common/locales/sw-UG.ts +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'sw-UG', - [['am', 'pm'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'], u, u - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', - 'Oktoba', 'Novemba', 'Desemba' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Kristo', 'Baada ya Kristo']], - 1, - [0, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'UGX', - 'USh', - 'Shilingi ya Uganda', - { - 'JPY': ['JP¥', '¥'], - 'KES': ['Ksh'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'TZS': ['TSh'], - 'UGX': ['USh'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/sw.ts b/packages/common/locales/sw.ts deleted file mode 100644 index 0d9ae6eb91..0000000000 --- a/packages/common/locales/sw.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'sw', - [['am', 'pm'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'], u, u - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', - 'Oktoba', 'Novemba', 'Desemba' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Kristo', 'Baada ya Kristo']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'TZS', - 'TSh', - 'Shilingi ya Tanzania', - { - 'JPY': ['JP¥', '¥'], - 'KES': ['Ksh'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'TZS': ['TSh'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ta-LK.ts b/packages/common/locales/ta-LK.ts deleted file mode 100644 index d11cb90430..0000000000 --- a/packages/common/locales/ta-LK.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ta-LK', - [['மு.ப', 'பி.ப'], ['முற்பகல்', 'பிற்பகல்'], u], - u, - [ - ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'], - ['ஞாயி.', 'திங்.', 'செவ்.', 'புத.', 'வியா.', 'வெள்.', 'சனி'], - ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'], - ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'] - ], - u, - [ - ['ஜ', 'பி', 'மா', 'ஏ', 'மே', 'ஜூ', 'ஜூ', 'ஆ', 'செ', 'அ', 'ந', 'டி'], - ['ஜன.', 'பிப்.', 'மார்.', 'ஏப்.', 'மே', 'ஜூன்', 'ஜூலை', 'ஆக.', 'செப்.', 'அக்.', 'நவ.', 'டிச.'], - [ - 'ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டம்பர்', 'அக்டோபர்', 'நவம்பர்', - 'டிசம்பர்' - ] - ], - u, - [['கி.மு.', 'கி.பி.'], u, ['கிறிஸ்துவுக்கு முன்', 'அன்னோ டோமினி']], - 1, - [6, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} ’அன்று’ {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤ #,##,##0.00', '#E0'], - 'LKR', - 'Rs.', - 'இலங்கை ரூபாய்', - {'LKR': ['Rs.', 'Rs'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ta-MY.ts b/packages/common/locales/ta-MY.ts deleted file mode 100644 index 51828555b6..0000000000 --- a/packages/common/locales/ta-MY.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ta-MY', - [['மு.ப', 'பி.ப'], ['முற்பகல்', 'பிற்பகல்'], u], - u, - [ - ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'], - ['ஞாயி.', 'திங்.', 'செவ்.', 'புத.', 'வியா.', 'வெள்.', 'சனி'], - ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'], - ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'] - ], - u, - [ - ['ஜ', 'பி', 'மா', 'ஏ', 'மே', 'ஜூ', 'ஜூ', 'ஆ', 'செ', 'அ', 'ந', 'டி'], - ['ஜன.', 'பிப்.', 'மார்.', 'ஏப்.', 'மே', 'ஜூன்', 'ஜூலை', 'ஆக.', 'செப்.', 'அக்.', 'நவ.', 'டிச.'], - [ - 'ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டம்பர்', 'அக்டோபர்', 'நவம்பர்', - 'டிசம்பர்' - ] - ], - u, - [['கி.மு.', 'கி.பி.'], u, ['கிறிஸ்துவுக்கு முன்', 'அன்னோ டோமினி']], - 1, - [6, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['a h:mm', 'a h:mm:ss', 'a h:mm:ss z', 'a h:mm:ss zzzz'], - ['{1}, {0}', u, '{1} ’அன்று’ {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'MYR', - 'RM', - 'மலேஷியன் ரிங்கிட்', - {'MYR': ['RM'], 'SGD': ['S$', '$'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ta-SG.ts b/packages/common/locales/ta-SG.ts deleted file mode 100644 index ac231335e2..0000000000 --- a/packages/common/locales/ta-SG.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ta-SG', - [['மு.ப', 'பி.ப'], ['முற்பகல்', 'பிற்பகல்'], u], - u, - [ - ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'], - ['ஞாயி.', 'திங்.', 'செவ்.', 'புத.', 'வியா.', 'வெள்.', 'சனி'], - ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'], - ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'] - ], - u, - [ - ['ஜ', 'பி', 'மா', 'ஏ', 'மே', 'ஜூ', 'ஜூ', 'ஆ', 'செ', 'அ', 'ந', 'டி'], - ['ஜன.', 'பிப்.', 'மார்.', 'ஏப்.', 'மே', 'ஜூன்', 'ஜூலை', 'ஆக.', 'செப்.', 'அக்.', 'நவ.', 'டிச.'], - [ - 'ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டம்பர்', 'அக்டோபர்', 'நவம்பர்', - 'டிசம்பர்' - ] - ], - u, - [['கி.மு.', 'கி.பி.'], u, ['கிறிஸ்துவுக்கு முன்', 'அன்னோ டோமினி']], - 0, - [6, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['a h:mm', 'a h:mm:ss', 'a h:mm:ss z', 'a h:mm:ss zzzz'], - ['{1}, {0}', u, '{1} ’அன்று’ {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'SGD', - '$', - 'சிங்கப்பூர் டாலர்', - {'MYR': ['RM'], 'SGD': ['$'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ta.ts b/packages/common/locales/ta.ts deleted file mode 100644 index c7a1691c10..0000000000 --- a/packages/common/locales/ta.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ta', - [['மு.ப', 'பி.ப'], ['முற்பகல்', 'பிற்பகல்'], u], - u, - [ - ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'], - ['ஞாயி.', 'திங்.', 'செவ்.', 'புத.', 'வியா.', 'வெள்.', 'சனி'], - ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'], - ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'] - ], - u, - [ - ['ஜ', 'பி', 'மா', 'ஏ', 'மே', 'ஜூ', 'ஜூ', 'ஆ', 'செ', 'அ', 'ந', 'டி'], - ['ஜன.', 'பிப்.', 'மார்.', 'ஏப்.', 'மே', 'ஜூன்', 'ஜூலை', 'ஆக.', 'செப்.', 'அக்.', 'நவ.', 'டிச.'], - [ - 'ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டம்பர்', 'அக்டோபர்', 'நவம்பர்', - 'டிசம்பர்' - ] - ], - u, - [['கி.மு.', 'கி.பி.'], u, ['கிறிஸ்துவுக்கு முன்', 'அன்னோ டோமினி']], - 0, - [0, 0], - ['d/M/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['a h:mm', 'a h:mm:ss', 'a h:mm:ss z', 'a h:mm:ss zzzz'], - ['{1}, {0}', u, '{1} ’அன்று’ {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##,##0%', '¤ #,##,##0.00', '#E0'], - 'INR', - '₹', - 'இந்திய ரூபாய்', - {'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/te.ts b/packages/common/locales/te.ts deleted file mode 100644 index 9f7460e9ee..0000000000 --- a/packages/common/locales/te.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'te', - [['ఉ', 'సా'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['ఆ', 'సో', 'మ', 'బు', 'గు', 'శు', 'శ'], ['ఆది', 'సోమ', 'మంగళ', 'బుధ', 'గురు', 'శుక్ర', 'శని'], - ['ఆదివారం', 'సోమవారం', 'మంగళవారం', 'బుధవారం', 'గురువారం', 'శుక్రవారం', 'శనివారం'], - ['ఆది', 'సోమ', 'మం', 'బుధ', 'గురు', 'శుక్ర', 'శని'] - ], - u, - [ - ['జ', 'ఫి', 'మా', 'ఏ', 'మే', 'జూ', 'జు', 'ఆ', 'సె', 'అ', 'న', 'డి'], - ['జన', 'ఫిబ్ర', 'మార్చి', 'ఏప్రి', 'మే', 'జూన్', 'జులై', 'ఆగ', 'సెప్టెం', 'అక్టో', 'నవం', 'డిసెం'], - [ - 'జనవరి', 'ఫిబ్రవరి', 'మార్చి', 'ఏప్రిల్', 'మే', 'జూన్', 'జులై', 'ఆగస్టు', 'సెప్టెంబర్', 'అక్టోబర్', 'నవంబర్', - 'డిసెంబర్' - ] - ], - u, - [['క్రీపూ', 'క్రీశ'], u, ['క్రీస్తు పూర్వం', 'క్రీస్తు శకం']], - 0, - [0, 0], - ['dd-MM-yy', 'd MMM, y', 'd MMMM, y', 'd, MMMM y, EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, '{1} {0}కి', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##,##0.###', '#,##0%', '¤#,##,##0.00', '#E0'], - 'INR', - '₹', - 'రూపాయి', - {'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/teo-KE.ts b/packages/common/locales/teo-KE.ts deleted file mode 100644 index 8f92821238..0000000000 --- a/packages/common/locales/teo-KE.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'teo-KE', - [['Taparachu', 'Ebongi'], u, u], - u, - [ - ['J', 'B', 'A', 'U', 'U', 'K', 'S'], ['Jum', 'Bar', 'Aar', 'Uni', 'Ung', 'Kan', 'Sab'], - ['Nakaejuma', 'Nakaebarasa', 'Nakaare', 'Nakauni', 'Nakaung’on', 'Nakakany', 'Nakasabiti'], - ['Jum', 'Bar', 'Aar', 'Uni', 'Ung', 'Kan', 'Sab'] - ], - u, - [ - ['R', 'M', 'K', 'D', 'M', 'M', 'J', 'P', 'S', 'T', 'L', 'P'], - ['Rar', 'Muk', 'Kwa', 'Dun', 'Mar', 'Mod', 'Jol', 'Ped', 'Sok', 'Tib', 'Lab', 'Poo'], - [ - 'Orara', 'Omuk', 'Okwamg’', 'Odung’el', 'Omaruk', 'Omodok’king’ol', 'Ojola', 'Opedel', - 'Osokosokoma', 'Otibar', 'Olabor', 'Opoo' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Christo', 'Baada ya Christo']], - 0, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'KES', - 'Ksh', - 'Ango’otol lok’ Kenya', - {'JPY': ['JP¥', '¥'], 'KES': ['Ksh'], 'UGX': ['USh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/teo.ts b/packages/common/locales/teo.ts deleted file mode 100644 index 042ebb7f48..0000000000 --- a/packages/common/locales/teo.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'teo', - [['Taparachu', 'Ebongi'], u, u], - u, - [ - ['J', 'B', 'A', 'U', 'U', 'K', 'S'], ['Jum', 'Bar', 'Aar', 'Uni', 'Ung', 'Kan', 'Sab'], - ['Nakaejuma', 'Nakaebarasa', 'Nakaare', 'Nakauni', 'Nakaung’on', 'Nakakany', 'Nakasabiti'], - ['Jum', 'Bar', 'Aar', 'Uni', 'Ung', 'Kan', 'Sab'] - ], - u, - [ - ['R', 'M', 'K', 'D', 'M', 'M', 'J', 'P', 'S', 'T', 'L', 'P'], - ['Rar', 'Muk', 'Kwa', 'Dun', 'Mar', 'Mod', 'Jol', 'Ped', 'Sok', 'Tib', 'Lab', 'Poo'], - [ - 'Orara', 'Omuk', 'Okwamg’', 'Odung’el', 'Omaruk', 'Omodok’king’ol', 'Ojola', 'Opedel', - 'Osokosokoma', 'Otibar', 'Olabor', 'Opoo' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Christo', 'Baada ya Christo']], - 1, - [0, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'UGX', - 'USh', - 'Ango’otol lok’ Uganda', - {'JPY': ['JP¥', '¥'], 'UGX': ['USh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/tg.ts b/packages/common/locales/tg.ts deleted file mode 100644 index f0b82c4463..0000000000 --- a/packages/common/locales/tg.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'tg', - [['AM', 'PM'], u, u], - u, - [ - ['Я', 'Д', 'С', 'Ч', 'П', 'Ҷ', 'Ш'], ['Яшб', 'Дшб', 'Сшб', 'Чшб', 'Пшб', 'Ҷмъ', 'Шнб'], - ['Якшанбе', 'Душанбе', 'Сешанбе', 'Чоршанбе', 'Панҷшанбе', 'Ҷумъа', 'Шанбе'], - ['Яшб', 'Дшб', 'Сшб', 'Чшб', 'Пшб', 'Ҷмъ', 'Шнб'] - ], - u, - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'], - [ - 'Январ', 'Феврал', 'Март', 'Апрел', 'Май', 'Июн', 'Июл', 'Август', 'Сентябр', 'Октябр', - 'Ноябр', 'Декабр' - ] - ], - u, - [['ПеМ', 'ПаМ'], u, ['Пеш аз милод', 'ПаМ']], - 1, - [6, 0], - ['dd/MM/yy', 'dd MMM y', 'dd MMMM y', 'EEEE, dd MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'TJS', - 'сом.', - 'Сомонӣ', - {'JPY': ['JP¥', '¥'], 'TJS': ['сом.']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/th.ts b/packages/common/locales/th.ts deleted file mode 100644 index e3d98ad26f..0000000000 --- a/packages/common/locales/th.ts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'th', - [['a', 'p'], ['ก่อนเที่ยง', 'หลังเที่ยง'], u], - [['ก่อนเที่ยง', 'หลังเที่ยง'], u, u], - [ - ['อา', 'จ', 'อ', 'พ', 'พฤ', 'ศ', 'ส'], ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'], - ['วันอาทิตย์', 'วันจันทร์', 'วันอังคาร', 'วันพุธ', 'วันพฤหัสบดี', 'วันศุกร์', 'วันเสาร์'], - ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'] - ], - u, - [ - [ - 'ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', - 'ธ.ค.' - ], - u, - [ - 'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', - 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม' - ] - ], - u, - [['ก่อน ค.ศ.', 'ค.ศ.'], u, ['ปีก่อนคริสตกาล', 'คริสต์ศักราช']], - 0, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM G y', 'EEEEที่ d MMMM G y'], - ['HH:mm', 'HH:mm:ss', 'H นาฬิกา mm นาที ss วินาที z', 'H นาฬิกา mm นาที ss วินาที zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'THB', - '฿', - 'บาท', - {'AUD': ['AU$', '$'], 'THB': ['฿'], 'TWD': ['NT$'], 'USD': ['US$', '$'], 'XXX': []}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ti-ER.ts b/packages/common/locales/ti-ER.ts deleted file mode 100644 index 5cb9de196c..0000000000 --- a/packages/common/locales/ti-ER.ts +++ /dev/null @@ -1,48 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === Math.floor(n) && n >= 0 && n <= 1) return 1; - return 5; -} - -export default [ - 'ti-ER', - [['ንጉሆ ሰዓተ', 'ድሕር ሰዓት'], u, u], - u, - [ - ['ሰ', 'ሰ', 'ሰ', 'ረ', 'ሓ', 'ዓ', 'ቀ'], ['ሰን', 'ሰኑ', 'ሰሉ', 'ረቡ', 'ሓሙ', 'ዓር', 'ቀዳ'], - ['ሰንበት', 'ሰኑይ', 'ሠሉስ', 'ረቡዕ', 'ኃሙስ', 'ዓርቢ', 'ቀዳም'], ['ሰን', 'ሰኑ', 'ሰሉ', 'ረቡ', 'ሓሙ', 'ዓር', 'ቀዳ'] - ], - u, - [ - ['ጥ', 'ለ', 'መ', 'ሚ', 'ግ', 'ሰ', 'ሓ', 'ነ', 'መ', 'ጥ', 'ሕ', 'ታ'], - ['ጥሪ', 'ለካ', 'መጋ', 'ሚያ', 'ግን', 'ሰነ', 'ሓም', 'ነሓ', 'መስ', 'ጥቅ', 'ሕዳ', 'ታሕ'], - ['ጥሪ', 'ለካቲት', 'መጋቢት', 'ሚያዝያ', 'ግንቦት', 'ሰነ', 'ሓምለ', 'ነሓሰ', 'መስከረም', 'ጥቅምቲ', 'ሕዳር', 'ታሕሳስ'] - ], - u, - [['ዓ/ዓ', 'ዓ/ም'], u, ['ዓመተ ዓለም', 'ዓመተ ምህረት']], - 1, - [6, 0], - ['dd/MM/yy', 'dd-MMM-y', 'dd MMMM y', 'EEEE፣ dd MMMM መዓልቲ y G'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ERN', - 'Nfk', - 'ERN', - {'ERN': ['Nfk'], 'ETB': ['Br'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ti.ts b/packages/common/locales/ti.ts deleted file mode 100644 index fd10fad223..0000000000 --- a/packages/common/locales/ti.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === Math.floor(n) && n >= 0 && n <= 1) return 1; - return 5; -} - -export default [ - 'ti', - [['ንጉሆ ሰዓተ', 'ድሕር ሰዓት'], u, u], - u, - [ - ['ሰ', 'ሰ', 'ሰ', 'ረ', 'ሓ', 'ዓ', 'ቀ'], ['ሰን', 'ሰኑ', 'ሰሉ', 'ረቡ', 'ሓሙ', 'ዓር', 'ቀዳ'], - ['ሰንበት', 'ሰኑይ', 'ሠሉስ', 'ረቡዕ', 'ኃሙስ', 'ዓርቢ', 'ቀዳም'], ['ሰን', 'ሰኑ', 'ሰሉ', 'ረቡ', 'ሓሙ', 'ዓር', 'ቀዳ'] - ], - [ - ['ሰ', 'ሰ', 'ሠ', 'ረ', 'ሓ', 'ዓ', 'ቀ'], ['ሰን', 'ሰኑ', 'ሰሉ', 'ረቡ', 'ሓሙ', 'ዓር', 'ቀዳ'], - ['ሰንበት', 'ሰኑይ', 'ሠሉስ', 'ረቡዕ', 'ኃሙስ', 'ዓርቢ', 'ቀዳም'], ['ሰን', 'ሰኑ', 'ሰሉ', 'ረቡ', 'ሓሙ', 'ዓር', 'ቀዳ'] - ], - [ - ['ጥ', 'ለ', 'መ', 'ሚ', 'ግ', 'ሰ', 'ሓ', 'ነ', 'መ', 'ጥ', 'ሕ', 'ታ'], - ['ጥሪ', 'ለካ', 'መጋ', 'ሚያ', 'ግን', 'ሰነ', 'ሓም', 'ነሓ', 'መስ', 'ጥቅ', 'ሕዳ', 'ታሕ'], - ['ጥሪ', 'ለካቲት', 'መጋቢት', 'ሚያዝያ', 'ግንቦት', 'ሰነ', 'ሓምለ', 'ነሓሰ', 'መስከረም', 'ጥቅምቲ', 'ሕዳር', 'ታሕሳስ'] - ], - u, - [['ዓ/ዓ', 'ዓ/ም'], u, ['ዓ/ዓ', 'ዓመተ ምህረት']], - 0, - [6, 0], - ['dd/MM/yy', 'dd-MMM-y', 'dd MMMM y', 'EEEE፣ dd MMMM መዓልቲ y G'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ETB', - 'Br', - 'የኢትዮጵያ ብር', - {'ETB': ['Br'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/tk.ts b/packages/common/locales/tk.ts deleted file mode 100644 index b25d68fff2..0000000000 --- a/packages/common/locales/tk.ts +++ /dev/null @@ -1,63 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'tk', - [['öň', 'soň'], ['go.öň', 'go.soň'], ['günortadan öň', 'günortadan soň']], - [['öň', 'soň'], ['g.öň', 'g.soň'], ['günortadan öň', 'günortadan soň']], - [ - ['Ý', 'D', 'S', 'Ç', 'P', 'A', 'Ş'], ['ýek', 'duş', 'siş', 'çar', 'pen', 'ann', 'şen'], - ['ýekşenbe', 'duşenbe', 'sişenbe', 'çarşenbe', 'penşenbe', 'anna', 'şenbe'], - ['ýb', 'db', 'sb', 'çb', 'pb', 'an', 'şb'] - ], - [ - ['Ý', 'D', 'S', 'Ç', 'P', 'A', 'Ş'], ['Ýek', 'Duş', 'Siş', 'Çar', 'Pen', 'Ann', 'Şen'], - ['Ýekşenbe', 'Duşenbe', 'Sişenbe', 'Çarşenbe', 'Penşenbe', 'Anna', 'Şenbe'], - ['Ýb', 'Db', 'Sb', 'Çb', 'Pb', 'An', 'Şb'] - ], - [ - ['Ý', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'], - ['ýan', 'few', 'mart', 'apr', 'maý', 'iýun', 'iýul', 'awg', 'sen', 'okt', 'noý', 'dek'], - [ - 'ýanwar', 'fewral', 'mart', 'aprel', 'maý', 'iýun', 'iýul', 'awgust', 'sentýabr', 'oktýabr', - 'noýabr', 'dekabr' - ] - ], - [ - ['Ý', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'], - ['Ýan', 'Few', 'Mar', 'Apr', 'Maý', 'Iýun', 'Iýul', 'Awg', 'Sen', 'Okt', 'Noý', 'Dek'], - [ - 'Ýanwar', 'Fewral', 'Mart', 'Aprel', 'Maý', 'Iýun', 'Iýul', 'Awgust', 'Sentýabr', 'Oktýabr', - 'Noýabr', 'Dekabr' - ] - ], - [['B.e.öň', 'B.e.'], u, ['Isadan öň', 'Isadan soň']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM y', 'd MMMM y', 'd MMMM y EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'san däl', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'TMT', - 'TMT', - 'Türkmen manady', - {'EUR': [u, '€'], 'GBP': [u, '£'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/to.ts b/packages/common/locales/to.ts deleted file mode 100644 index 3d4075884a..0000000000 --- a/packages/common/locales/to.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'to', - [['AM', 'PM'], u, ['hengihengi', 'efiafi']], - [['AM', 'PM'], u, ['HH', 'EA']], - [ - ['S', 'M', 'T', 'P', 'T', 'F', 'T'], ['Sāp', 'Mōn', 'Tūs', 'Pul', 'Tuʻa', 'Fal', 'Tok'], - ['Sāpate', 'Mōnite', 'Tūsite', 'Pulelulu', 'Tuʻapulelulu', 'Falaite', 'Tokonaki'], - ['Sāp', 'Mōn', 'Tūs', 'Pul', 'Tuʻa', 'Fal', 'Tok'] - ], - u, - [ - ['S', 'F', 'M', 'E', 'M', 'S', 'S', 'A', 'S', 'O', 'N', 'T'], - ['Sān', 'Fēp', 'Maʻa', 'ʻEpe', 'Mē', 'Sun', 'Siu', 'ʻAok', 'Sep', 'ʻOka', 'Nōv', 'Tīs'], - [ - 'Sānuali', 'Fēpueli', 'Maʻasi', 'ʻEpeleli', 'Mē', 'Sune', 'Siulai', 'ʻAokosi', 'Sepitema', - 'ʻOkatopa', 'Nōvema', 'Tīsema' - ] - ], - u, - [['KM', 'TS'], u, ['ki muʻa', 'taʻu ʻo Sīsū']], - 1, - [6, 0], - ['d/M/yy', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', '{1}, {0}', u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'TF', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'TOP', - 'T$', - 'Paʻanga fakatonga', - { - 'AUD': ['AUD$', 'AU$'], - 'FJD': [u, 'F$'], - 'JPY': ['JP¥', '¥'], - 'NZD': ['NZD$', 'NZ$'], - 'SBD': [u, 'S$'], - 'TOP': ['T$'], - 'USD': ['US$', '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/tr-CY.ts b/packages/common/locales/tr-CY.ts deleted file mode 100644 index 9069d6d4bf..0000000000 --- a/packages/common/locales/tr-CY.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'tr-CY', - [['öö', 'ös'], ['ÖÖ', 'ÖS'], u], - [['ÖÖ', 'ÖS'], u, u], - [ - ['P', 'P', 'S', 'Ç', 'P', 'C', 'C'], ['Paz', 'Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cmt'], - ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'], - ['Pa', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'] - ], - u, - [ - ['O', 'Ş', 'M', 'N', 'M', 'H', 'T', 'A', 'E', 'E', 'K', 'A'], - ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara'], - [ - 'Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', - 'Kasım', 'Aralık' - ] - ], - u, - [['MÖ', 'MS'], u, ['Milattan Önce', 'Milattan Sonra']], - 1, - [6, 0], - ['d.MM.y', 'd MMM y', 'd MMMM y', 'd MMMM y EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '%#,##0', '¤#,##0.00', '#E0'], - 'EUR', - '€', - 'Euro', - {'AUD': ['AU$', '$'], 'RON': [u, 'L'], 'THB': ['฿'], 'TRY': ['₺'], 'TWD': ['NT$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/tr.ts b/packages/common/locales/tr.ts deleted file mode 100644 index fb82f0450d..0000000000 --- a/packages/common/locales/tr.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'tr', - [['öö', 'ös'], ['ÖÖ', 'ÖS'], u], - [['ÖÖ', 'ÖS'], u, u], - [ - ['P', 'P', 'S', 'Ç', 'P', 'C', 'C'], ['Paz', 'Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cmt'], - ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'], - ['Pa', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'] - ], - u, - [ - ['O', 'Ş', 'M', 'N', 'M', 'H', 'T', 'A', 'E', 'E', 'K', 'A'], - ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara'], - [ - 'Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', - 'Kasım', 'Aralık' - ] - ], - u, - [['MÖ', 'MS'], u, ['Milattan Önce', 'Milattan Sonra']], - 1, - [6, 0], - ['d.MM.y', 'd MMM y', 'd MMMM y', 'd MMMM y EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '%#,##0', '¤#,##0.00', '#E0'], - 'TRY', - '₺', - 'Türk Lirası', - {'AUD': ['AU$', '$'], 'RON': [u, 'L'], 'THB': ['฿'], 'TRY': ['₺'], 'TWD': ['NT$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/tt.ts b/packages/common/locales/tt.ts deleted file mode 100644 index 0a7fdac4a1..0000000000 --- a/packages/common/locales/tt.ts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'tt', - [['AM', 'PM'], u, u], - u, - [ - ['Я', 'Д', 'С', 'Ч', 'П', 'Җ', 'Ш'], ['якш.', 'дүш.', 'сиш.', 'чәр.', 'пәнҗ.', 'җом.', 'шим.'], - ['якшәмбе', 'дүшәмбе', 'сишәмбе', 'чәршәмбе', 'пәнҗешәмбе', 'җомга', 'шимбә'], - ['якш.', 'дүш.', 'сиш.', 'чәр.', 'пәнҗ.', 'җом.', 'шим.'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'гыйн.', 'фев.', 'мар.', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', - 'дек.' - ], - [ - 'гыйнвар', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', - 'октябрь', 'ноябрь', 'декабрь' - ] - ], - u, - [['б.э.к.', 'милади'], u, ['безнең эрага кадәр', 'безнең эра']], - 1, - [6, 0], - ['dd.MM.y', 'd MMM, y \'ел\'', 'd MMMM, y \'ел\'', 'd MMMM, y \'ел\', EEEE'], - ['H:mm', 'H:mm:ss', 'H:mm:ss z', 'H:mm:ss zzzz'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00 ¤', '#E0'], - 'RUB', - '₽', - 'Россия сумы', - {'JPY': ['JP¥', '¥'], 'RUB': ['₽']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/twq.ts b/packages/common/locales/twq.ts deleted file mode 100644 index 714d0892b1..0000000000 --- a/packages/common/locales/twq.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'twq', - [['Subbaahi', 'Zaarikay b'], u, u], - u, - [ - ['H', 'T', 'T', 'L', 'L', 'L', 'S'], ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'], - ['Alhadi', 'Atinni', 'Atalaata', 'Alarba', 'Alhamiisa', 'Alzuma', 'Asibti'], - ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'] - ], - u, - [ - ['Ž', 'F', 'M', 'A', 'M', 'Ž', 'Ž', 'U', 'S', 'O', 'N', 'D'], - ['Žan', 'Fee', 'Mar', 'Awi', 'Me', 'Žuw', 'Žuy', 'Ut', 'Sek', 'Okt', 'Noo', 'Dee'], - [ - 'Žanwiye', 'Feewiriye', 'Marsi', 'Awiril', 'Me', 'Žuweŋ', 'Žuyye', 'Ut', 'Sektanbur', - 'Oktoobur', 'Noowanbur', 'Deesanbur' - ] - ], - u, - [['IJ', 'IZ'], u, ['Isaa jine', 'Isaa zamanoo']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00¤', '#E0'], - 'XOF', - 'CFA', - 'CFA Fraŋ (BCEAO)', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/tzm.ts b/packages/common/locales/tzm.ts deleted file mode 100644 index 8a68d3a027..0000000000 --- a/packages/common/locales/tzm.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === Math.floor(n) && n >= 0 && n <= 1 || n === Math.floor(n) && n >= 11 && n <= 99) - return 1; - return 5; -} - -export default [ - 'tzm', - [['Zdat azal', 'Ḍeffir aza'], u, u], - u, - [ - ['A', 'A', 'A', 'A', 'A', 'A', 'A'], ['Asa', 'Ayn', 'Asn', 'Akr', 'Akw', 'Asm', 'Asḍ'], - ['Asamas', 'Aynas', 'Asinas', 'Akras', 'Akwas', 'Asimwas', 'Asiḍyas'], - ['Asa', 'Ayn', 'Asn', 'Akr', 'Akw', 'Asm', 'Asḍ'] - ], - u, - [ - ['Y', 'Y', 'M', 'I', 'M', 'Y', 'Y', 'Ɣ', 'C', 'K', 'N', 'D'], - ['Yen', 'Yeb', 'Mar', 'Ibr', 'May', 'Yun', 'Yul', 'Ɣuc', 'Cut', 'Kṭu', 'Nwa', 'Duj'], - [ - 'Yennayer', 'Yebrayer', 'Mars', 'Ibrir', 'Mayyu', 'Yunyu', 'Yulyuz', 'Ɣuct', 'Cutanbir', - 'Kṭuber', 'Nwanbir', 'Dujanbir' - ] - ], - u, - [['ZƐ', 'ḌƐ'], u, ['Zdat Ɛisa (TAƔ)', 'Ḍeffir Ɛisa (TAƔ)']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'MAD', - 'MAD', - 'Derhem Umeṛṛuki', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/ug.ts b/packages/common/locales/ug.ts deleted file mode 100644 index 75e35ef84c..0000000000 --- a/packages/common/locales/ug.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'ug', - [['ب', 'ك'], ['چ.ب', 'چ.ك'], ['چۈشتىن بۇرۇن', 'چۈشتىن كېيىن']], - [['چ.ب', 'چ.ك'], u, u], - [ - ['ي', 'د', 'س', 'چ', 'پ', 'ج', 'ش'], ['يە', 'دۈ', 'سە', 'چا', 'پە', 'جۈ', 'شە'], - ['يەكشەنبە', 'دۈشەنبە', 'سەيشەنبە', 'چارشەنبە', 'پەيشەنبە', 'جۈمە', 'شەنبە'], - ['ي', 'د', 'س', 'چ', 'پ', 'ج', 'ش'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'يانۋار', 'فېۋرال', 'مارت', 'ئاپرېل', 'ماي', 'ئىيۇن', 'ئىيۇل', 'ئاۋغۇست', 'سېنتەبىر', - 'ئۆكتەبىر', 'نويابىر', 'دېكابىر' - ], - u - ], - u, - [['BCE', 'مىلادىيە'], u, ['مىلادىيەدىن بۇرۇن', 'مىلادىيە']], - 0, - [6, 0], - ['y-MM-dd', 'd-MMM، y', 'd-MMMM، y', 'y d-MMMM، EEEE'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1}، {0}', u, '{1} {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'CNY', - '¥', - 'جۇڭگو يۈەنى', - {'CNY': ['¥', '¥'], 'JPY': ['JP¥', '¥']}, - 'rtl', - plural -]; diff --git a/packages/common/locales/uk.ts b/packages/common/locales/uk.ts deleted file mode 100644 index 11cd4a7e86..0000000000 --- a/packages/common/locales/uk.ts +++ /dev/null @@ -1,89 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (v === 0 && i % 10 === 1 && !(i % 100 === 11)) return 1; - if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && - !(i % 100 >= 12 && i % 100 <= 14)) - return 3; - if (v === 0 && i % 10 === 0 || - v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 5 && i % 10 <= 9 || - v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 11 && i % 100 <= 14) - return 4; - return 5; -} - -export default [ - 'uk', - [['дп', 'пп'], u, u], - u, - [ - ['Н', 'П', 'В', 'С', 'Ч', 'П', 'С'], ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - ['неділя', 'понеділок', 'вівторок', 'середа', 'четвер', 'пʼятниця', 'субота'], - ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'] - ], - u, - [ - ['с', 'л', 'б', 'к', 'т', 'ч', 'л', 'с', 'в', 'ж', 'л', 'г'], - [ - 'січ.', 'лют.', 'бер.', 'квіт.', 'трав.', 'черв.', 'лип.', 'серп.', 'вер.', 'жовт.', 'лист.', - 'груд.' - ], - [ - 'січня', 'лютого', 'березня', 'квітня', 'травня', 'червня', 'липня', 'серпня', 'вересня', - 'жовтня', 'листопада', 'грудня' - ] - ], - [ - ['С', 'Л', 'Б', 'К', 'Т', 'Ч', 'Л', 'С', 'В', 'Ж', 'Л', 'Г'], - ['січ', 'лют', 'бер', 'кві', 'тра', 'чер', 'лип', 'сер', 'вер', 'жов', 'лис', 'гру'], - [ - 'січень', 'лютий', 'березень', 'квітень', 'травень', 'червень', 'липень', 'серпень', - 'вересень', 'жовтень', 'листопад', 'грудень' - ] - ], - [['до н.е.', 'н.е.'], ['до н. е.', 'н. е.'], ['до нашої ери', 'нашої ери']], - 1, - [6, 0], - ['dd.MM.yy', 'd MMM y \'р\'.', 'd MMMM y \'р\'.', 'EEEE, d MMMM y \'р\'.'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1}, {0}', u, '{1} \'о\' {0}', u], - [',', ' ', ';', '%', '+', '-', 'Е', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'UAH', - '₴', - 'українська гривня', - { - 'AUD': [u, '$'], - 'BRL': [u, 'R$'], - 'CAD': [u, '$'], - 'CNY': [u, '¥'], - 'EUR': [u, '€'], - 'GBP': [u, '£'], - 'HKD': [u, '$'], - 'ILS': [u, '₪'], - 'INR': [u, '₹'], - 'KRW': [u, '₩'], - 'MXN': [u, '$'], - 'NZD': [u, '$'], - 'TWD': [u, '$'], - 'UAH': ['₴'], - 'UAK': ['крб.'], - 'USD': [u, '$'], - 'VND': [u, '₫'], - 'XCD': [u, '$'] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/ur-IN.ts b/packages/common/locales/ur-IN.ts deleted file mode 100644 index 0a7ef6194c..0000000000 --- a/packages/common/locales/ur-IN.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'ur-IN', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'], - u, u - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', - 'دسمبر' - ], - u - ], - u, - [['قبل مسیح', 'عیسوی'], u, u], - 0, - [0, 0], - ['d/M/yy', 'd MMM، y', 'd MMMM، y', 'EEEE، d MMMM، y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'INR', - '₹', - 'بھارتی روپیہ', - {'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'rtl', - plural -]; diff --git a/packages/common/locales/ur.ts b/packages/common/locales/ur.ts deleted file mode 100644 index c4eb30439a..0000000000 --- a/packages/common/locales/ur.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'ur', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'], - u, u - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - [ - 'جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', - 'دسمبر' - ], - u - ], - u, - [['قبل مسیح', 'عیسوی'], u, u], - 0, - [6, 0], - ['d/M/yy', 'd MMM، y', 'd MMMM، y', 'EEEE، d MMMM، y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '\u200e+', '\u200e-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'PKR', - 'Rs', - 'پاکستانی روپیہ', - {'JPY': ['JP¥', '¥'], 'PKR': ['Rs'], 'THB': ['฿'], 'TWD': ['NT$']}, - 'rtl', - plural -]; diff --git a/packages/common/locales/uz-Arab.ts b/packages/common/locales/uz-Arab.ts deleted file mode 100644 index 8f079ee6ba..0000000000 --- a/packages/common/locales/uz-Arab.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'uz-Arab', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['ی.', 'د.', 'س.', 'چ.', 'پ.', 'ج.', 'ش.'], - ['یکشنبه', 'دوشنبه', 'سه\u200cشنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'], - ['ی.', 'د.', 'س.', 'چ.', 'پ.', 'ج.', 'ش.'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['جنو', 'فبر', 'مار', 'اپر', 'می', 'جون', 'جول', 'اگس', 'سپت', 'اکت', 'نوم', 'دسم'], - [ - 'جنوری', 'فبروری', 'مارچ', 'اپریل', 'می', 'جون', 'جولای', 'اگست', 'سپتمبر', 'اکتوبر', 'نومبر', - 'دسمبر' - ] - ], - u, - [['BCE', 'CE'], u, u], - 6, - [4, 5], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '.', ';', '%', '\u200e+', '\u200e−', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'AFN', - '؋', - 'افغانی', - {'AFN': ['؋'], 'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'rtl', - plural -]; diff --git a/packages/common/locales/uz-Cyrl.ts b/packages/common/locales/uz-Cyrl.ts deleted file mode 100644 index ff29e0ec07..0000000000 --- a/packages/common/locales/uz-Cyrl.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'uz-Cyrl', - [['ТО', 'ТК'], u, u], - u, - [ - ['Я', 'Д', 'С', 'Ч', 'П', 'Ж', 'Ш'], ['якш', 'душ', 'сеш', 'чор', 'пай', 'жум', 'шан'], - ['якшанба', 'душанба', 'сешанба', 'чоршанба', 'пайшанба', 'жума', 'шанба'], - ['як', 'ду', 'се', 'чо', 'па', 'жу', 'ша'] - ], - u, - [ - ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], - ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'], - [ - 'январ', 'феврал', 'март', 'апрел', 'май', 'июн', 'июл', 'август', 'сентябр', 'октябр', - 'ноябр', 'декабр' - ] - ], - u, - [['м.а.', 'милодий'], u, ['милоддан аввалги', 'милодий']], - 1, - [6, 0], - ['dd/MM/yy', 'd MMM, y', 'd MMMM, y', 'EEEE, dd MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss (z)', 'HH:mm:ss (zzzz)'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'ҳақиқий сон эмас', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'UZS', - 'сўм', - 'Ўзбекистон сўм', - {'JPY': ['JP¥', '¥'], 'THB': ['฿'], 'USD': ['US$', '$'], 'UZS': ['сўм']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/uz-Latn.ts b/packages/common/locales/uz-Latn.ts deleted file mode 100644 index 78a7d3c1fd..0000000000 --- a/packages/common/locales/uz-Latn.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'uz-Latn', - [['TO', 'TK'], u, u], - u, - [ - ['Y', 'D', 'S', 'C', 'P', 'J', 'S'], ['Yak', 'Dush', 'Sesh', 'Chor', 'Pay', 'Jum', 'Shan'], - ['yakshanba', 'dushanba', 'seshanba', 'chorshanba', 'payshanba', 'juma', 'shanba'], - ['Ya', 'Du', 'Se', 'Ch', 'Pa', 'Ju', 'Sh'] - ], - u, - [ - ['Y', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'], - ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avg', 'sen', 'okt', 'noy', 'dek'], - [ - 'yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avgust', 'sentabr', 'oktabr', - 'noyabr', 'dekabr' - ] - ], - [ - ['Y', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'], - ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'Iyn', 'Iyl', 'Avg', 'Sen', 'Okt', 'Noy', 'Dek'], - [ - 'Yanvar', 'Fevral', 'Mart', 'Aprel', 'May', 'Iyun', 'Iyul', 'Avgust', 'Sentabr', 'Oktabr', - 'Noyabr', 'Dekabr' - ] - ], - [['m.a.', 'milodiy'], u, ['miloddan avvalgi', 'milodiy']], - 1, - [6, 0], - ['dd/MM/yy', 'd-MMM, y', 'd-MMMM, y', 'EEEE, d-MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'H:mm:ss (z)', 'H:mm:ss (zzzz)'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'son emas', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'UZS', - 'soʻm', - 'O‘zbekiston so‘mi', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'UZS': ['soʻm']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/uz.ts b/packages/common/locales/uz.ts deleted file mode 100644 index 3505f9defd..0000000000 --- a/packages/common/locales/uz.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'uz', - [['TO', 'TK'], u, u], - u, - [ - ['Y', 'D', 'S', 'C', 'P', 'J', 'S'], ['Yak', 'Dush', 'Sesh', 'Chor', 'Pay', 'Jum', 'Shan'], - ['yakshanba', 'dushanba', 'seshanba', 'chorshanba', 'payshanba', 'juma', 'shanba'], - ['Ya', 'Du', 'Se', 'Ch', 'Pa', 'Ju', 'Sh'] - ], - u, - [ - ['Y', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'], - ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avg', 'sen', 'okt', 'noy', 'dek'], - [ - 'yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avgust', 'sentabr', 'oktabr', - 'noyabr', 'dekabr' - ] - ], - [ - ['Y', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'], - ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'Iyn', 'Iyl', 'Avg', 'Sen', 'Okt', 'Noy', 'Dek'], - [ - 'Yanvar', 'Fevral', 'Mart', 'Aprel', 'May', 'Iyun', 'Iyul', 'Avgust', 'Sentabr', 'Oktabr', - 'Noyabr', 'Dekabr' - ] - ], - [['m.a.', 'milodiy'], u, ['miloddan avvalgi', 'milodiy']], - 1, - [6, 0], - ['dd/MM/yy', 'd-MMM, y', 'd-MMMM, y', 'EEEE, d-MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'H:mm:ss (z)', 'H:mm:ss (zzzz)'], - ['{1}, {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'son emas', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'UZS', - 'soʻm', - 'O‘zbekiston so‘mi', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'UZS': ['soʻm']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/vai-Latn.ts b/packages/common/locales/vai-Latn.ts deleted file mode 100644 index 1feb039f35..0000000000 --- a/packages/common/locales/vai-Latn.ts +++ /dev/null @@ -1,46 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'vai-Latn', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - ['lahadi', 'tɛɛnɛɛ', 'talata', 'alaba', 'aimisa', 'aijima', 'siɓiti'], u, u - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'], u - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'LRD', - '$', - 'Laibhiya Dala', - {'JPY': ['JP¥', '¥'], 'LRD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/vai-Vaii.ts b/packages/common/locales/vai-Vaii.ts deleted file mode 100644 index 79f736ed44..0000000000 --- a/packages/common/locales/vai-Vaii.ts +++ /dev/null @@ -1,47 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'vai-Vaii', - [['AM', 'PM'], u, u], - u, - [['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['ꕞꕌꔵ', 'ꗳꗡꘉ', 'ꕚꕞꕚ', 'ꕉꕞꕒ', 'ꕉꔤꕆꕢ', 'ꕉꔤꕀꕮ', 'ꔻꔬꔳ'], u, u], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['ꖨꖕꔞ', 'ꕒꕡ', 'ꕾꖺ', 'ꖢꖕ', 'ꖑꕱ', 'ꖱꘋ', 'ꖱꕞ', 'ꗛꔕ', 'ꕢꕌ', 'ꕭꖃ', 'ꔞꘋ', 'ꖨꖕꗏ'], - [ - 'ꖨꖕ ꕪꕴ ꔞꔀꕮꕊ', 'ꕒꕡꖝꖕ', 'ꕾꖺ', 'ꖢꖕ', 'ꖑꕱ', 'ꖱꘋ', 'ꖱꕞꔤ', 'ꗛꔕ', 'ꕢꕌ', 'ꕭꖃ', 'ꔞꘋꕔꕿ ꕸꖃꗏ', - 'ꖨꖕ ꕪꕴ ꗏꖺꕮꕊ' - ] - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'LRD', - '$', - 'ꕞꔤꔫꕩ ꕜꕞꕌ', - {'JPY': ['JP¥', '¥'], 'LRD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/vai.ts b/packages/common/locales/vai.ts deleted file mode 100644 index 32c89abc23..0000000000 --- a/packages/common/locales/vai.ts +++ /dev/null @@ -1,47 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'vai', - [['AM', 'PM'], u, u], - u, - [['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['ꕞꕌꔵ', 'ꗳꗡꘉ', 'ꕚꕞꕚ', 'ꕉꕞꕒ', 'ꕉꔤꕆꕢ', 'ꕉꔤꕀꕮ', 'ꔻꔬꔳ'], u, u], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['ꖨꖕꔞ', 'ꕒꕡ', 'ꕾꖺ', 'ꖢꖕ', 'ꖑꕱ', 'ꖱꘋ', 'ꖱꕞ', 'ꗛꔕ', 'ꕢꕌ', 'ꕭꖃ', 'ꔞꘋ', 'ꖨꖕꗏ'], - [ - 'ꖨꖕ ꕪꕴ ꔞꔀꕮꕊ', 'ꕒꕡꖝꖕ', 'ꕾꖺ', 'ꖢꖕ', 'ꖑꕱ', 'ꖱꘋ', 'ꖱꕞꔤ', 'ꗛꔕ', 'ꕢꕌ', 'ꕭꖃ', 'ꔞꘋꕔꕿ ꕸꖃꗏ', - 'ꖨꖕ ꕪꕴ ꗏꖺꕮꕊ' - ] - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['h:mm a', 'h:mm:ss a', 'h:mm:ss a z', 'h:mm:ss a zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'LRD', - '$', - 'ꕞꔤꔫꕩ ꕜꕞꕌ', - {'JPY': ['JP¥', '¥'], 'LRD': ['$'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/vi.ts b/packages/common/locales/vi.ts deleted file mode 100644 index b69601e5fb..0000000000 --- a/packages/common/locales/vi.ts +++ /dev/null @@ -1,72 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'vi', - [['s', 'c'], ['SA', 'CH'], u], - [['SA', 'CH'], u, u], - [ - ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], - ['CN', 'Th 2', 'Th 3', 'Th 4', 'Th 5', 'Th 6', 'Th 7'], - ['Chủ Nhật', 'Thứ Hai', 'Thứ Ba', 'Thứ Tư', 'Thứ Năm', 'Thứ Sáu', 'Thứ Bảy'], - ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'thg 1', 'thg 2', 'thg 3', 'thg 4', 'thg 5', 'thg 6', 'thg 7', 'thg 8', 'thg 9', 'thg 10', - 'thg 11', 'thg 12' - ], - [ - 'tháng 1', 'tháng 2', 'tháng 3', 'tháng 4', 'tháng 5', 'tháng 6', 'tháng 7', 'tháng 8', - 'tháng 9', 'tháng 10', 'tháng 11', 'tháng 12' - ] - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'Thg 1', 'Thg 2', 'Thg 3', 'Thg 4', 'Thg 5', 'Thg 6', 'Thg 7', 'Thg 8', 'Thg 9', 'Thg 10', - 'Thg 11', 'Thg 12' - ], - [ - 'Tháng 1', 'Tháng 2', 'Tháng 3', 'Tháng 4', 'Tháng 5', 'Tháng 6', 'Tháng 7', 'Tháng 8', - 'Tháng 9', 'Tháng 10', 'Tháng 11', 'Tháng 12' - ] - ], - [['tr. CN', 'sau CN'], ['Trước CN', 'sau CN'], u], - 1, - [6, 0], - ['dd/MM/y', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{0}, {1}', u, '{0} {1}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'VND', - '₫', - 'Đồng Việt Nam', - { - 'AUD': ['AU$', '$'], - 'JPY': ['JP¥', '¥'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/vo.ts b/packages/common/locales/vo.ts deleted file mode 100644 index 7dc1ad310f..0000000000 --- a/packages/common/locales/vo.ts +++ /dev/null @@ -1,44 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'vo', - [['AM', 'PM'], u, u], - u, - [['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], u, u], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'], u - ], - u, - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - u, - u, - u, - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/vun.ts b/packages/common/locales/vun.ts deleted file mode 100644 index 9bbf62e354..0000000000 --- a/packages/common/locales/vun.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'vun', - [['utuko', 'kyiukonyi'], u, u], - u, - [ - ['J', 'J', 'J', 'J', 'A', 'I', 'J'], ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - ['Jumapilyi', 'Jumatatuu', 'Jumanne', 'Jumatanu', 'Alhamisi', 'Ijumaa', 'Jumamosi'], - ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - [ - 'Januari', 'Februari', 'Machi', 'Aprilyi', 'Mei', 'Junyi', 'Julyai', 'Agusti', 'Septemba', - 'Oktoba', 'Novemba', 'Desemba' - ] - ], - u, - [['KK', 'BK'], u, ['Kabla ya Kristu', 'Baada ya Kristu']], - 1, - [6, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'TZS', - 'TSh', - 'Shilingi ya Tanzania', - {'JPY': ['JP¥', '¥'], 'TZS': ['TSh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/wae.ts b/packages/common/locales/wae.ts deleted file mode 100644 index a427cd4499..0000000000 --- a/packages/common/locales/wae.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'wae', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'Z', 'M', 'F', 'F', 'S'], ['Sun', 'Män', 'Ziš', 'Mit', 'Fró', 'Fri', 'Sam'], - ['Sunntag', 'Mäntag', 'Zištag', 'Mittwuč', 'Fróntag', 'Fritag', 'Samštag'], - ['Sun', 'Män', 'Ziš', 'Mit', 'Fró', 'Fri', 'Sam'] - ], - u, - [ - ['J', 'H', 'M', 'A', 'M', 'B', 'H', 'Ö', 'H', 'W', 'W', 'C'], - ['Jen', 'Hor', 'Mär', 'Abr', 'Mei', 'Brá', 'Hei', 'Öig', 'Her', 'Wím', 'Win', 'Chr'], - [ - 'Jenner', 'Hornig', 'Märze', 'Abrille', 'Meije', 'Bráčet', 'Heiwet', 'Öigšte', 'Herbštmánet', - 'Wímánet', 'Wintermánet', 'Chrištmánet' - ] - ], - u, - [['v. Chr.', 'n. Chr'], u, u], - 1, - [6, 0], - ['y-MM-dd', 'd. MMM y', 'd. MMMM y', 'EEEE, d. MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', '’', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'CHF', - 'CHF', - 'CHF', - {}, - 'ltr', - plural -]; diff --git a/packages/common/locales/wo.ts b/packages/common/locales/wo.ts deleted file mode 100644 index ec294b4f4c..0000000000 --- a/packages/common/locales/wo.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'wo', - [['Sub', 'Ngo'], u, u], - u, - [ - ['Dib', 'Alt', 'Tal', 'Àla', 'Alx', 'Àjj', 'Ase'], u, - ['Dibéer', 'Altine', 'Talaata', 'Àlarba', 'Alxamis', 'Àjjuma', 'Aseer'], - ['Dib', 'Alt', 'Tal', 'Àla', 'Alx', 'Àjj', 'Ase'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['Sam', 'Few', 'Mar', 'Awr', 'Mee', 'Suw', 'Sul', 'Ut', 'Sàt', 'Okt', 'Now', 'Des'], - [ - 'Samwiyee', 'Fewriyee', 'Mars', 'Awril', 'Mee', 'Suwe', 'Sulet', 'Ut', 'Sàttumbar', - 'Oktoobar', 'Nowàmbar', 'Desàmbar' - ] - ], - u, - [['JC', 'AD'], u, ['av. JC', 'AD']], - 1, - [6, 0], - ['dd-MM-y', 'd MMM, y', 'd MMMM, y', 'EEEE, d MMM, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} - {0}', u, '{1} \'ci\' {0}', u], - [',', '.', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - 'XOF', - 'CFA', - 'Franc CFA bu Afrik Sowwu-jant', - {'JPY': ['JP¥', '¥']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/xh.ts b/packages/common/locales/xh.ts deleted file mode 100644 index e2cf6f5f8c..0000000000 --- a/packages/common/locales/xh.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'xh', - [['AM', 'PM'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['Caw', 'Mvu', 'Bin', 'Tha', 'Sin', 'Hla', 'Mgq'], - ['Cawe', 'Mvulo', 'Lwesibini', 'Lwesithathu', 'Lwesine', 'Lwesihlanu', 'Mgqibelo'], - ['Caw', 'Mvu', 'Bin', 'Tha', 'Sin', 'Hla', 'Mgq'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['Jan', 'Feb', 'Mat', 'Epr', 'Mey', 'Jun', 'Jul', 'Aga', 'Sep', 'Okt', 'Nov', 'Dis'], - [ - 'Janyuwari', 'Februwari', 'Matshi', 'Epreli', 'Meyi', 'Juni', 'Julayi', 'Agasti', 'Septemba', - 'Okthoba', 'Novemba', 'Disemba' - ] - ], - u, - [['BC', 'AD'], u, u], - 0, - [6, 0], - ['y-MM-dd', 'y MMM d', 'y MMMM d', 'y MMMM d, EEEE'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZAR', - 'R', - 'iRandi yaseMzanzi Afrika', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$'], 'ZAR': ['R']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/xog.ts b/packages/common/locales/xog.ts deleted file mode 100644 index 1f0fb8e576..0000000000 --- a/packages/common/locales/xog.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - if (n === 1) return 1; - return 5; -} - -export default [ - 'xog', - [['Munkyo', 'Eigulo'], u, u], - u, - [ - ['S', 'B', 'B', 'S', 'K', 'K', 'M'], ['Sabi', 'Bala', 'Kubi', 'Kusa', 'Kuna', 'Kuta', 'Muka'], - ['Sabiiti', 'Balaza', 'Owokubili', 'Owokusatu', 'Olokuna', 'Olokutaanu', 'Olomukaaga'], - ['Sabi', 'Bala', 'Kubi', 'Kusa', 'Kuna', 'Kuta', 'Muka'] - ], - u, - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mar', 'Apu', 'Maa', 'Juu', 'Jul', 'Agu', 'Seb', 'Oki', 'Nov', 'Des'], - [ - 'Janwaliyo', 'Febwaliyo', 'Marisi', 'Apuli', 'Maayi', 'Juuni', 'Julaayi', 'Agusito', - 'Sebuttemba', 'Okitobba', 'Novemba', 'Desemba' - ] - ], - u, - [['AZ', 'AF'], u, ['Kulisto nga azilawo', 'Kulisto nga affile']], - 1, - [0, 0], - ['dd/MM/y', 'd MMM y', 'd MMMM y', 'EEEE, d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'UGX', - 'USh', - 'Silingi eya Yuganda', - {'JPY': ['JP¥', '¥'], 'UGX': ['USh'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/yav.ts b/packages/common/locales/yav.ts deleted file mode 100644 index ee9646b7ff..0000000000 --- a/packages/common/locales/yav.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'yav', - [['kiɛmɛ́ɛm', 'kisɛ́ndɛ'], u, u], - u, - [ - ['s', 'm', 'm', 'e', 'k', 'f', 's'], ['sd', 'md', 'mw', 'et', 'kl', 'fl', 'ss'], - ['sɔ́ndiɛ', 'móndie', 'muányáŋmóndie', 'metúkpíápɛ', 'kúpélimetúkpiapɛ', 'feléte', 'séselé'], - ['sd', 'md', 'mw', 'et', 'kl', 'fl', 'ss'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['o.1', 'o.2', 'o.3', 'o.4', 'o.5', 'o.6', 'o.7', 'o.8', 'o.9', 'o.10', 'o.11', 'o.12'], - [ - 'pikítíkítie, oólí ú kutúan', 'siɛyɛ́, oóli ú kándíɛ', 'ɔnsúmbɔl, oóli ú kátátúɛ', - 'mesiŋ, oóli ú kénie', 'ensil, oóli ú kátánuɛ', 'ɔsɔn', 'efute', 'pisuyú', 'imɛŋ i puɔs', - 'imɛŋ i putúk,oóli ú kátíɛ', 'makandikɛ', 'pilɔndɔ́' - ] - ], - u, - [['k.Y.', '+J.C.'], u, ['katikupíen Yésuse', 'ékélémkúnupíén n']], - 1, - [6, 0], - ['d/M/y', 'd MMM y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '#,##0.00 ¤', '#E0'], - 'XAF', - 'FCFA', - 'XAF', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/yi.ts b/packages/common/locales/yi.ts deleted file mode 100644 index 1bf8fde28e..0000000000 --- a/packages/common/locales/yi.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)), v = n.toString().replace(/^[^.]*\.?/, '').length; - if (i === 1 && v === 0) return 1; - return 5; -} - -export default [ - 'yi', - [['פֿאַרמיטאָג', 'נאָכמיטאָג'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - ['זונטיק', 'מאָנטיק', 'דינסטיק', 'מיטוואך', 'דאנערשטיק', 'פֿרײַטיק', 'שבת'], u, u - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - [ - 'יאַנואַר', 'פֿעברואַר', 'מערץ', 'אַפּריל', 'מיי', 'יוני', 'יולי', 'אויגוסט', 'סעפּטעמבער', - 'אקטאבער', 'נאוועמבער', 'דעצעמבער' - ], - u - ], - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['יאַנ', 'פֿעב', 'מערץ', 'אַפּר', 'מיי', 'יוני', 'יולי', 'אויג', 'סעפּ', 'אקט', 'נאוו', 'דעצ'], - [ - 'יאַנואַר', 'פֿעברואַר', 'מערץ', 'אַפּריל', 'מיי', 'יוני', 'יולי', 'אויגוסט', 'סעפּטעמבער', - 'אקטאבער', 'נאוועמבער', 'דעצעמבער' - ] - ], - [['BCE', 'CE'], u, u], - 1, - [6, 0], - ['dd/MM/yy', 'dטן MMM y', 'dטן MMMM y', 'EEEE, dטן MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', '{1}, {0}', '{1} {0}', u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤ #,##0.00', '#E0'], - u, - u, - u, - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'rtl', - plural -]; diff --git a/packages/common/locales/yo-BJ.ts b/packages/common/locales/yo-BJ.ts deleted file mode 100644 index 38ea383135..0000000000 --- a/packages/common/locales/yo-BJ.ts +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'yo-BJ', - [['Àárɔ̀', 'Ɔ̀sán'], u, u], - u, - [ - ['À', 'A', 'Ì', 'Ɔ', 'Ɔ', 'Ɛ', 'À'], ['Àìk', 'Aj', 'Ìsɛ́g', 'Ɔjɔ́r', 'Ɔjɔ́b', 'Ɛt', 'Àbám'], - ['Ɔjɔ́ Àìkú', 'Ɔjɔ́ Ajé', 'Ɔjɔ́ Ìsɛ́gun', 'Ɔjɔ́rú', 'Ɔjɔ́bɔ', 'Ɔjɔ́ Ɛtì', 'Ɔjɔ́ Àbámɛ́ta'], - ['Àìkú', 'Ajé', 'Ìsɛ́gun', 'Ɔjɔ́rú', 'Ɔjɔ́bɔ', 'Ɛtì', 'Àbámɛ́ta'] - ], - [ - ['À', 'A', 'Ì', 'Ɔ', 'Ɔ', 'Ɛ', 'À'], ['Àìk', 'Aj', 'Ìsɛ́g', 'Ɔjɔ́r', 'Ɔjɔ́b', 'Ɛt', 'Àbám'], - ['Àìkú', 'Ajé', 'Ìsɛ́gun', 'Ɔjɔ́rú', 'Ɔjɔ́bɔ', 'Ɛtì', 'Àbámɛ́ta'], u - ], - [ - ['S', 'È', 'Ɛ', 'Ì', 'Ɛ̀', 'Ò', 'A', 'Ò', 'O', 'Ɔ̀', 'B', 'Ɔ̀'], - ['Shɛ́r', 'Èrèl', 'Ɛrɛ̀n', 'Ìgb', 'Ɛ̀bi', 'Òkú', 'Agɛ', 'Ògú', 'Owe', 'Ɔ̀wà', 'Bél', 'Ɔ̀pɛ'], - [ - 'Oshù Shɛ́rɛ́', 'Oshù Èrèlè', 'Oshù Ɛrɛ̀nà', 'Oshù Ìgbé', 'Oshù Ɛ̀bibi', 'Oshù Òkúdu', - 'Oshù Agɛmɔ', 'Oshù Ògún', 'Oshù Owewe', 'Oshù Ɔ̀wàrà', 'Oshù Bélú', 'Oshù Ɔ̀pɛ̀' - ] - ], - [ - ['S', 'È', 'Ɛ', 'Ì', 'Ɛ̀', 'Ò', 'A', 'Ò', 'O', 'Ɔ̀', 'B', 'Ɔ̀'], - ['Shɛ́', 'Èr', 'Ɛr', 'Ìg', 'Ɛ̀b', 'Òk', 'Ag', 'Òg', 'Ow', 'Ɔ̀w', 'Bé', 'Ɔ̀p'], - [ - 'Shɛ́rɛ́', 'Èrèlè', 'Ɛrɛ̀nà', 'Ìgbé', 'Ɛ̀bibi', 'Òkúdu', 'Agɛmɔ', 'Ògún', 'Owewe', 'Ɔ̀wàrà', - 'Bélú', 'Ɔ̀pɛ̀' - ] - ], - [['BCE', 'AD'], u, ['Saju Kristi', 'Lehin Kristi']], - 1, - [6, 0], - ['d/M/y', 'd MM y', 'd MMM y', 'EEEE, d MMM y'], - ['H:m', 'H:m:s', 'H:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'XOF', - 'CFA', - 'Faransi ti Orílɛ́ède BIKEAO', - {'JPY': ['JP¥', '¥'], 'NGN': ['₦'], 'RUB': ['₽']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/yo.ts b/packages/common/locales/yo.ts deleted file mode 100644 index 766cf7fab9..0000000000 --- a/packages/common/locales/yo.ts +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'yo', - [['Àárọ̀', 'Ọ̀sán'], u, u], - u, - [ - ['À', 'A', 'Ì', 'Ọ', 'Ọ', 'Ẹ', 'À'], ['Àìk', 'Aj', 'Ìsẹ́g', 'Ọjọ́r', 'Ọjọ́b', 'Ẹt', 'Àbám'], - ['Ọjọ́ Àìkú', 'Ọjọ́ Ajé', 'Ọjọ́ Ìsẹ́gun', 'Ọjọ́rú', 'Ọjọ́bọ', 'Ọjọ́ Ẹtì', 'Ọjọ́ Àbámẹ́ta'], - ['Àìkú', 'Ajé', 'Ìsẹ́gun', 'Ọjọ́rú', 'Ọjọ́bọ', 'Ẹtì', 'Àbámẹ́ta'] - ], - [ - ['À', 'A', 'Ì', 'Ọ', 'Ọ', 'Ẹ', 'À'], ['Àìk', 'Aj', 'Ìsẹ́g', 'Ọjọ́r', 'Ọjọ́b', 'Ẹt', 'Àbám'], - ['Àìkú', 'Ajé', 'Ìsẹ́gun', 'Ọjọ́rú', 'Ọjọ́bọ', 'Ẹtì', 'Àbámẹ́ta'], u - ], - [ - ['S', 'È', 'Ẹ', 'Ì', 'Ẹ̀', 'Ò', 'A', 'Ò', 'O', 'Ọ̀', 'B', 'Ọ̀'], - ['Ṣẹ́r', 'Èrèl', 'Ẹrẹ̀n', 'Ìgb', 'Ẹ̀bi', 'Òkú', 'Agẹ', 'Ògú', 'Owe', 'Ọ̀wà', 'Bél', 'Ọ̀pẹ'], - [ - 'Oṣù Ṣẹ́rẹ́', 'Oṣù Èrèlè', 'Oṣù Ẹrẹ̀nà', 'Oṣù Ìgbé', 'Oṣù Ẹ̀bibi', 'Oṣù Òkúdu', 'Oṣù Agẹmọ', - 'Oṣù Ògún', 'Oṣù Owewe', 'Oṣù Ọ̀wàrà', 'Oṣù Bélú', 'Oṣù Ọ̀pẹ̀' - ] - ], - [ - ['S', 'È', 'Ẹ', 'Ì', 'Ẹ̀', 'Ò', 'A', 'Ò', 'O', 'Ọ̀', 'B', 'Ọ̀'], - ['Ṣẹ́', 'Èr', 'Ẹr', 'Ìg', 'Ẹ̀b', 'Òk', 'Ag', 'Òg', 'Ow', 'Ọ̀w', 'Bé', 'Ọ̀p'], - [ - 'Ṣẹ́rẹ́', 'Èrèlè', 'Ẹrẹ̀nà', 'Ìgbé', 'Ẹ̀bibi', 'Òkúdu', 'Agẹmọ', 'Ògún', 'Owewe', 'Ọ̀wàrà', 'Bélú', - 'Ọ̀pẹ̀' - ] - ], - [['BCE', 'AD'], u, ['Saju Kristi', 'Lehin Kristi']], - 1, - [6, 0], - ['d/M/y', 'd MM y', 'd MMM y', 'EEEE, d MMM y'], - ['H:m', 'H:m:s', 'H:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'NGN', - '₦', - 'Náìrà ti Orílẹ̀-èdè Nàìjíríà', - {'JPY': ['JP¥', '¥'], 'NGN': ['₦'], 'RUB': ['₽']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/yue-Hans.ts b/packages/common/locales/yue-Hans.ts deleted file mode 100644 index 426d137776..0000000000 --- a/packages/common/locales/yue-Hans.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'yue-Hans', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], - [ - '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', - '十二月' - ] - ], - u, - [['西元前', '西元'], u, u], - 0, - [6, 0], - ['y/M/d', 'y年M月d日', u, 'y年M月d日EEEE'], - ['ah:mm', 'ah:mm:ss', 'z ah:mm:ss', 'zzzz ah:mm:ss'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', '非数值', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'CNY', - '¥', - '人民币', - { - 'AUD': ['AU$', '$'], - 'CNY': ['¥', '¥'], - 'JPY': ['JP¥', '¥'], - 'KRW': ['₩', '₩'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/yue-Hant.ts b/packages/common/locales/yue-Hant.ts deleted file mode 100644 index 1102f4d64c..0000000000 --- a/packages/common/locales/yue-Hant.ts +++ /dev/null @@ -1,47 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'yue-Hant', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], u, - ['日', '一', '二', '三', '四', '五', '六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], u - ], - u, - [['西元前', '西元'], u, u], - 0, - [6, 0], - ['y/M/d', 'y年M月d日', u, 'y年M月d日 EEEE'], - ['ah:mm', 'ah:mm:ss', 'ah:mm:ss [z]', 'ah:mm:ss [zzzz]'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', '非數值', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'HKD', - 'HK$', - '港幣', - {'AUD': ['AU$', '$'], 'KRW': ['₩', '₩'], 'USD': ['US$', '$'], 'XXX': []}, - 'ltr', - plural -]; diff --git a/packages/common/locales/yue.ts b/packages/common/locales/yue.ts deleted file mode 100644 index d18e631649..0000000000 --- a/packages/common/locales/yue.ts +++ /dev/null @@ -1,47 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'yue', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], u, - ['日', '一', '二', '三', '四', '五', '六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], u - ], - u, - [['西元前', '西元'], u, u], - 0, - [6, 0], - ['y/M/d', 'y年M月d日', u, 'y年M月d日 EEEE'], - ['ah:mm', 'ah:mm:ss', 'ah:mm:ss [z]', 'ah:mm:ss [zzzz]'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', '非數值', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'HKD', - 'HK$', - '港幣', - {'AUD': ['AU$', '$'], 'KRW': ['₩', '₩'], 'USD': ['US$', '$'], 'XXX': []}, - 'ltr', - plural -]; diff --git a/packages/common/locales/zgh.ts b/packages/common/locales/zgh.ts deleted file mode 100644 index 49e7fe94ca..0000000000 --- a/packages/common/locales/zgh.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'zgh', - [['ⵜⵉⴼⴰⵡⵜ', 'ⵜⴰⴷⴳⴳⵯⴰⵜ'], u, u], - u, - [ - ['S', 'M', 'T', 'W', 'T', 'F', 'S'], ['ⴰⵙⴰ', 'ⴰⵢⵏ', 'ⴰⵙⵉ', 'ⴰⴽⵕ', 'ⴰⴽⵡ', 'ⴰⵙⵉⵎ', 'ⴰⵙⵉⴹ'], - ['ⴰⵙⴰⵎⴰⵙ', 'ⴰⵢⵏⴰⵙ', 'ⴰⵙⵉⵏⴰⵙ', 'ⴰⴽⵕⴰⵙ', 'ⴰⴽⵡⴰⵙ', 'ⴰⵙⵉⵎⵡⴰⵙ', 'ⴰⵙⵉⴹⵢⴰⵙ'], - ['ⴰⵙⴰ', 'ⴰⵢⵏ', 'ⴰⵙⵉ', 'ⴰⴽⵕ', 'ⴰⴽⵡ', 'ⴰⵙⵉⵎ', 'ⴰⵙⵉⴹ'] - ], - u, - [ - ['ⵉ', 'ⴱ', 'ⵎ', 'ⵉ', 'ⵎ', 'ⵢ', 'ⵢ', 'ⵖ', 'ⵛ', 'ⴽ', 'ⵏ', 'ⴷ'], - ['ⵉⵏⵏ', 'ⴱⵕⴰ', 'ⵎⴰⵕ', 'ⵉⴱⵔ', 'ⵎⴰⵢ', 'ⵢⵓⵏ', 'ⵢⵓⵍ', 'ⵖⵓⵛ', 'ⵛⵓⵜ', 'ⴽⵜⵓ', 'ⵏⵓⵡ', 'ⴷⵓⵊ'], - [ - 'ⵉⵏⵏⴰⵢⵔ', 'ⴱⵕⴰⵢⵕ', 'ⵎⴰⵕⵚ', 'ⵉⴱⵔⵉⵔ', 'ⵎⴰⵢⵢⵓ', 'ⵢⵓⵏⵢⵓ', 'ⵢⵓⵍⵢⵓⵣ', 'ⵖⵓⵛⵜ', 'ⵛⵓⵜⴰⵏⴱⵉⵔ', 'ⴽⵜⵓⴱⵔ', - 'ⵏⵓⵡⴰⵏⴱⵉⵔ', 'ⴷⵓⵊⴰⵏⴱⵉⵔ' - ] - ], - u, - [['ⴷⴰⵄ', 'ⴷⴼⵄ'], u, ['ⴷⴰⵜ ⵏ ⵄⵉⵙⴰ', 'ⴷⴼⴼⵉⵔ ⵏ ⵄⵉⵙⴰ']], - 1, - [6, 0], - ['d/M/y', 'd MMM, y', 'd MMMM y', 'EEEE d MMMM y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - [',', ' ', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0 %', '#,##0.00¤', '#E0'], - 'MAD', - 'MAD', - 'ⴰⴷⵔⵉⵎ ⵏ ⵍⵎⵖⵔⵉⴱ', - {'JPY': ['JP¥', '¥'], 'USD': ['US$', '$']}, - 'ltr', - plural -]; diff --git a/packages/common/locales/zh-Hans-HK.ts b/packages/common/locales/zh-Hans-HK.ts deleted file mode 100644 index 1fb49b3195..0000000000 --- a/packages/common/locales/zh-Hans-HK.ts +++ /dev/null @@ -1,60 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'zh-Hans-HK', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], - [ - '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', - '十二月' - ] - ], - u, - [['公元前', '公元'], u, u], - 0, - [6, 0], - ['d/M/yy', 'y年M月d日', u, 'y年M月d日EEEE'], - ['ah:mm', 'ah:mm:ss', 'z ah:mm:ss', 'zzzz ah:mm:ss'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'HKD', - 'HK$', - '港元', - { - 'AUD': ['AU$', '$'], - 'ILR': ['ILS'], - 'JPY': ['JP¥', '¥'], - 'KRW': ['₩', '₩'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/zh-Hans-MO.ts b/packages/common/locales/zh-Hans-MO.ts deleted file mode 100644 index bc3f205a4a..0000000000 --- a/packages/common/locales/zh-Hans-MO.ts +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'zh-Hans-MO', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], - [ - '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', - '十二月' - ] - ], - u, - [['公元前', '公元'], u, u], - 0, - [6, 0], - ['d/M/yy', 'y年M月d日', u, 'y年M月d日EEEE'], - ['ah:mm', 'ah:mm:ss', 'z ah:mm:ss', 'zzzz ah:mm:ss'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'MOP', - 'MOP$', - '澳门币', - { - 'AUD': ['AU$', '$'], - 'ILR': ['ILS'], - 'JPY': ['JP¥', '¥'], - 'KRW': ['₩', '₩'], - 'MOP': ['MOP$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/zh-Hans-SG.ts b/packages/common/locales/zh-Hans-SG.ts deleted file mode 100644 index 7171ed1f9c..0000000000 --- a/packages/common/locales/zh-Hans-SG.ts +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'zh-Hans-SG', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], - [ - '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', - '十二月' - ] - ], - u, - [['公元前', '公元'], u, u], - 0, - [6, 0], - ['dd/MM/yy', 'y年M月d日', u, 'y年M月d日EEEE'], - ['ah:mm', 'ah:mm:ss', 'z ah:mm:ss', 'zzzz ah:mm:ss'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'SGD', - '$', - '新加坡元', - { - 'AUD': ['AU$', '$'], - 'ILR': ['ILS'], - 'JPY': ['JP¥', '¥'], - 'KRW': ['₩', '₩'], - 'SGD': ['$'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/zh-Hans.ts b/packages/common/locales/zh-Hans.ts deleted file mode 100644 index 594c9c5431..0000000000 --- a/packages/common/locales/zh-Hans.ts +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'zh-Hans', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], - [ - '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', - '十二月' - ] - ], - u, - [['公元前', '公元'], u, u], - 0, - [6, 0], - ['y/M/d', 'y年M月d日', u, 'y年M月d日EEEE'], - ['ah:mm', 'ah:mm:ss', 'z ah:mm:ss', 'zzzz ah:mm:ss'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'CNY', - '¥', - '人民币', - { - 'AUD': ['AU$', '$'], - 'CNY': ['¥'], - 'ILR': ['ILS'], - 'JPY': ['JP¥', '¥'], - 'KRW': ['₩', '₩'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/zh-Hant-HK.ts b/packages/common/locales/zh-Hant-HK.ts deleted file mode 100644 index 8400e9994f..0000000000 --- a/packages/common/locales/zh-Hant-HK.ts +++ /dev/null @@ -1,48 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'zh-Hant-HK', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['週日', '週一', '週二', '週三', '週四', '週五', '週六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - ['日', '一', '二', '三', '四', '五', '六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], u - ], - u, - [['公元前', '公元'], u, u], - 0, - [6, 0], - ['d/M/y', 'y年M月d日', u, 'y年M月d日EEEE'], - ['ah:mm', 'ah:mm:ss', 'ah:mm:ss [z]', 'ah:mm:ss [zzzz]'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', '非數值', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'HKD', - 'HK$', - '港元', - {'AUD': ['AU$', '$'], 'RON': [u, 'L'], 'USD': ['US$', '$'], 'XXX': []}, - 'ltr', - plural -]; diff --git a/packages/common/locales/zh-Hant-MO.ts b/packages/common/locales/zh-Hant-MO.ts deleted file mode 100644 index 637e7931d5..0000000000 --- a/packages/common/locales/zh-Hant-MO.ts +++ /dev/null @@ -1,48 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'zh-Hant-MO', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['週日', '週一', '週二', '週三', '週四', '週五', '週六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - ['日', '一', '二', '三', '四', '五', '六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], u - ], - u, - [['公元前', '公元'], u, u], - 0, - [6, 0], - ['d/M/y', 'y年M月d日', u, 'y年M月d日EEEE'], - ['ah:mm', 'ah:mm:ss', 'ah:mm:ss [z]', 'ah:mm:ss [zzzz]'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', '非數值', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'MOP', - 'MOP$', - '澳門元', - {'AUD': ['AU$', '$'], 'MOP': ['MOP$'], 'RON': [u, 'L'], 'USD': ['US$', '$'], 'XXX': []}, - 'ltr', - plural -]; diff --git a/packages/common/locales/zh-Hant.ts b/packages/common/locales/zh-Hant.ts deleted file mode 100644 index 53f6f30a00..0000000000 --- a/packages/common/locales/zh-Hant.ts +++ /dev/null @@ -1,55 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'zh-Hant', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['週日', '週一', '週二', '週三', '週四', '週五', '週六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - ['日', '一', '二', '三', '四', '五', '六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], u - ], - u, - [['西元前', '西元'], u, u], - 0, - [6, 0], - ['y/M/d', 'y年M月d日', u, 'y年M月d日 EEEE'], - ['ah:mm', 'ah:mm:ss', 'ah:mm:ss [z]', 'ah:mm:ss [zzzz]'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', '非數值', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'TWD', - '$', - '新台幣', - { - 'AUD': ['AU$', '$'], - 'KRW': ['₩', '₩'], - 'RON': [u, 'L'], - 'TWD': ['$'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/zh.ts b/packages/common/locales/zh.ts deleted file mode 100644 index e61d2c3316..0000000000 --- a/packages/common/locales/zh.ts +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - return 5; -} - -export default [ - 'zh', - [['上午', '下午'], u, u], - u, - [ - ['日', '一', '二', '三', '四', '五', '六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], - ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - ['周日', '周一', '周二', '周三', '周四', '周五', '周六'] - ], - u, - [ - ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], - ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], - [ - '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', - '十二月' - ] - ], - u, - [['公元前', '公元'], u, u], - 0, - [6, 0], - ['y/M/d', 'y年M月d日', u, 'y年M月d日EEEE'], - ['ah:mm', 'ah:mm:ss', 'z ah:mm:ss', 'zzzz ah:mm:ss'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'CNY', - '¥', - '人民币', - { - 'AUD': ['AU$', '$'], - 'CNY': ['¥'], - 'ILR': ['ILS'], - 'JPY': ['JP¥', '¥'], - 'KRW': ['₩', '₩'], - 'TWD': ['NT$'], - 'USD': ['US$', '$'], - 'XXX': [] - }, - 'ltr', - plural -]; diff --git a/packages/common/locales/zu.ts b/packages/common/locales/zu.ts deleted file mode 100644 index 331d3abc23..0000000000 --- a/packages/common/locales/zu.ts +++ /dev/null @@ -1,72 +0,0 @@ -/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -const u = undefined; - -function plural(n: number): number { - let i = Math.floor(Math.abs(n)); - if (i === 0 || n === 1) return 1; - return 5; -} - -export default [ - 'zu', - [['a', 'p'], ['AM', 'PM'], u], - [['AM', 'PM'], u, u], - [ - ['S', 'M', 'B', 'T', 'S', 'H', 'M'], ['Son', 'Mso', 'Bil', 'Tha', 'Sin', 'Hla', 'Mgq'], - ['ISonto', 'UMsombuluko', 'ULwesibili', 'ULwesithathu', 'ULwesine', 'ULwesihlanu', 'UMgqibelo'], - ['Son', 'Mso', 'Bil', 'Tha', 'Sin', 'Hla', 'Mgq'] - ], - u, - [ - ['J', 'F', 'M', 'E', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mas', 'Eph', 'Mey', 'Jun', 'Jul', 'Aga', 'Sep', 'Okt', 'Nov', 'Dis'], - [ - 'Januwari', 'Februwari', 'Mashi', 'Ephreli', 'Meyi', 'Juni', 'Julayi', 'Agasti', 'Septhemba', - 'Okthoba', 'Novemba', 'Disemba' - ] - ], - [ - ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], - ['Jan', 'Feb', 'Mas', 'Eph', 'Mey', 'Jun', 'Jul', 'Aga', 'Sep', 'Okt', 'Nov', 'Dis'], - [ - 'Januwari', 'Februwari', 'Mashi', 'Ephreli', 'Meyi', 'Juni', 'Julayi', 'Agasti', 'Septhemba', - 'Okthoba', 'Novemba', 'Disemba' - ] - ], - [['BC', 'AD'], u, u], - 0, - [6, 0], - ['M/d/yy', 'MMM d, y', 'MMMM d, y', 'EEEE, MMMM d, y'], - ['HH:mm', 'HH:mm:ss', 'HH:mm:ss z', 'HH:mm:ss zzzz'], - ['{1} {0}', u, u, u], - ['.', ',', ';', '%', '+', '-', 'E', '×', '‰', '∞', 'NaN', ':'], - ['#,##0.###', '#,##0%', '¤#,##0.00', '#E0'], - 'ZAR', - 'R', - 'i-South African Rand', - { - 'BYN': [u, 'P.'], - 'DKK': [u, 'Kr'], - 'HRK': [u, 'Kn'], - 'ISK': [u, 'Kr'], - 'JPY': ['JP¥', '¥'], - 'NOK': [u, 'Kr'], - 'PLN': [u, 'Zł'], - 'SEK': [u, 'Kr'], - 'THB': ['฿'], - 'TWD': ['NT$'], - 'ZAR': ['R'] - }, - 'ltr', - plural -]; diff --git a/packages/common/package.json b/packages/common/package.json index 0545b7b509..f9ad0716b0 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -4,13 +4,16 @@ "description": "Angular - commonly needed directives and services", "author": "angular", "license": "MIT", + "engines": { + "node": "^12.14.1 || >=14.0.0" + }, "locales": "locales", "dependencies": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" }, "peerDependencies": { "@angular/core": "0.0.0-PLACEHOLDER", - "rxjs": "^6.5.3" + "rxjs": "^6.5.3 || ^7.0.0" }, "repository": { "type": "git", @@ -23,8 +26,5 @@ "sideEffects": [ "**/global/*.js", "**/closure-locale.*" - ], - "publishConfig":{ - "registry":"https://wombat-dressing-room.appspot.com" - } + ] } diff --git a/packages/common/src/directives/ng_for_of.ts b/packages/common/src/directives/ng_for_of.ts index c39daa3c82..34dc3783cf 100644 --- a/packages/common/src/directives/ng_for_of.ts +++ b/packages/common/src/directives/ng_for_of.ts @@ -141,21 +141,22 @@ export class NgForOf = NgIterable> implements DoCh this._ngForOfDirty = true; } /** - * A function that defines how to track changes for items in the iterable. + * Specifies a custom `TrackByFunction` to compute the identity of items in an iterable. * - * When items are added, moved, or removed in the iterable, - * the directive must re-render the appropriate DOM nodes. - * To minimize churn in the DOM, only nodes that have changed - * are re-rendered. + * If a custom `TrackByFunction` is not provided, `NgForOf` will use the item's [object + * identity](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is) + * as the key. * - * By default, the change detector assumes that - * the object instance identifies the node in the iterable. - * When this function is supplied, the directive uses - * the result of calling this function to identify the item node, - * rather than the identity of the object itself. + * `NgForOf` uses the computed key to associate items in an iterable with DOM elements + * it produces for these items. * - * The function receives two inputs, - * the iteration index and the associated node data. + * A custom `TrackByFunction` is useful to provide good user experience in cases when items in an + * iterable rendered using `NgForOf` have a natural identifier (for example, custom ID or a + * primary key), and this iterable could be updated with new object instances that still + * represent the same underlying entity (for example, when data is re-fetched from the server, + * and the iterable is recreated and re-rendered, but most of the data is still the same). + * + * @see `TrackByFunction` */ @Input() set ngForTrackBy(fn: TrackByFunction) { diff --git a/packages/common/src/directives/ng_switch.ts b/packages/common/src/directives/ng_switch.ts index 5847340383..cb67f7583e 100644 --- a/packages/common/src/directives/ng_switch.ts +++ b/packages/common/src/directives/ng_switch.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {Directive, DoCheck, Host, Input, TemplateRef, ViewContainerRef} from '@angular/core'; +import {Directive, DoCheck, Host, Input, Optional, TemplateRef, ViewContainerRef, ɵRuntimeError as RuntimeError, ɵRuntimeErrorCode as RuntimeErrorCode} from '@angular/core'; export class SwitchView { private _created = false; @@ -197,7 +197,11 @@ export class NgSwitchCase implements DoCheck { constructor( viewContainer: ViewContainerRef, templateRef: TemplateRef, - @Host() private ngSwitch: NgSwitch) { + @Optional() @Host() private ngSwitch: NgSwitch) { + if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) { + throwNgSwitchProviderNotFoundError('ngSwitchCase', 'NgSwitchCase'); + } + ngSwitch._addCase(); this._view = new SwitchView(viewContainer, templateRef); } @@ -228,7 +232,20 @@ export class NgSwitchCase implements DoCheck { export class NgSwitchDefault { constructor( viewContainer: ViewContainerRef, templateRef: TemplateRef, - @Host() ngSwitch: NgSwitch) { + @Optional() @Host() ngSwitch: NgSwitch) { + if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) { + throwNgSwitchProviderNotFoundError('ngSwitchDefault', 'NgSwitchDefault'); + } + ngSwitch._addDefault(new SwitchView(viewContainer, templateRef)); } } + +function throwNgSwitchProviderNotFoundError(attrName: string, directiveName: string): never { + throw new RuntimeError( + RuntimeErrorCode.TEMPLATE_STRUCTURE_ERROR, + `An element with the "${attrName}" attribute ` + + `(matching the "${ + directiveName}" directive) must be located inside an element with the "ngSwitch" attribute ` + + `(matching "NgSwitch" directive)`); +} diff --git a/packages/common/src/i18n/currencies.ts b/packages/common/src/i18n/currencies.ts index 2a85751530..129b7777fc 100644 --- a/packages/common/src/i18n/currencies.ts +++ b/packages/common/src/i18n/currencies.ts @@ -6,150 +6,8 @@ * found in the LICENSE file at https://angular.io/license */ -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js - -export type CurrenciesSymbols = [string]|[string | undefined, string]; +// THIS CODE IS GENERATED - DO NOT MODIFY. +export type CurrenciesSymbols = [string] | [string | undefined, string]; /** @internal */ -export const CURRENCIES_EN: - {[code: string]: CurrenciesSymbols|[string | undefined, string | undefined, number]} = { - 'ADP': [undefined, undefined, 0], - 'AFN': [undefined, undefined, 0], - 'ALL': [undefined, undefined, 0], - 'AMD': [undefined, undefined, 2], - 'AOA': [undefined, 'Kz'], - 'ARS': [undefined, '$'], - 'AUD': ['A$', '$'], - 'BAM': [undefined, 'KM'], - 'BBD': [undefined, '$'], - 'BDT': [undefined, '৳'], - 'BHD': [undefined, undefined, 3], - 'BIF': [undefined, undefined, 0], - 'BMD': [undefined, '$'], - 'BND': [undefined, '$'], - 'BOB': [undefined, 'Bs'], - 'BRL': ['R$'], - 'BSD': [undefined, '$'], - 'BWP': [undefined, 'P'], - 'BYN': [undefined, 'р.', 2], - 'BYR': [undefined, undefined, 0], - 'BZD': [undefined, '$'], - 'CAD': ['CA$', '$', 2], - 'CHF': [undefined, undefined, 2], - 'CLF': [undefined, undefined, 4], - 'CLP': [undefined, '$', 0], - 'CNY': ['CN¥', '¥'], - 'COP': [undefined, '$', 2], - 'CRC': [undefined, '₡', 2], - 'CUC': [undefined, '$'], - 'CUP': [undefined, '$'], - 'CZK': [undefined, 'Kč', 2], - 'DJF': [undefined, undefined, 0], - 'DKK': [undefined, 'kr', 2], - 'DOP': [undefined, '$'], - 'EGP': [undefined, 'E£'], - 'ESP': [undefined, '₧', 0], - 'EUR': ['€'], - 'FJD': [undefined, '$'], - 'FKP': [undefined, '£'], - 'GBP': ['£'], - 'GEL': [undefined, '₾'], - 'GIP': [undefined, '£'], - 'GNF': [undefined, 'FG', 0], - 'GTQ': [undefined, 'Q'], - 'GYD': [undefined, '$', 2], - 'HKD': ['HK$', '$'], - 'HNL': [undefined, 'L'], - 'HRK': [undefined, 'kn'], - 'HUF': [undefined, 'Ft', 2], - 'IDR': [undefined, 'Rp', 2], - 'ILS': ['₪'], - 'INR': ['₹'], - 'IQD': [undefined, undefined, 0], - 'IRR': [undefined, undefined, 0], - 'ISK': [undefined, 'kr', 0], - 'ITL': [undefined, undefined, 0], - 'JMD': [undefined, '$'], - 'JOD': [undefined, undefined, 3], - 'JPY': ['¥', undefined, 0], - 'KHR': [undefined, '៛'], - 'KMF': [undefined, 'CF', 0], - 'KPW': [undefined, '₩', 0], - 'KRW': ['₩', undefined, 0], - 'KWD': [undefined, undefined, 3], - 'KYD': [undefined, '$'], - 'KZT': [undefined, '₸'], - 'LAK': [undefined, '₭', 0], - 'LBP': [undefined, 'L£', 0], - 'LKR': [undefined, 'Rs'], - 'LRD': [undefined, '$'], - 'LTL': [undefined, 'Lt'], - 'LUF': [undefined, undefined, 0], - 'LVL': [undefined, 'Ls'], - 'LYD': [undefined, undefined, 3], - 'MGA': [undefined, 'Ar', 0], - 'MGF': [undefined, undefined, 0], - 'MMK': [undefined, 'K', 0], - 'MNT': [undefined, '₮', 2], - 'MRO': [undefined, undefined, 0], - 'MUR': [undefined, 'Rs', 2], - 'MXN': ['MX$', '$'], - 'MYR': [undefined, 'RM'], - 'NAD': [undefined, '$'], - 'NGN': [undefined, '₦'], - 'NIO': [undefined, 'C$'], - 'NOK': [undefined, 'kr', 2], - 'NPR': [undefined, 'Rs'], - 'NZD': ['NZ$', '$'], - 'OMR': [undefined, undefined, 3], - 'PHP': [undefined, '₱'], - 'PKR': [undefined, 'Rs', 2], - 'PLN': [undefined, 'zł'], - 'PYG': [undefined, '₲', 0], - 'RON': [undefined, 'lei'], - 'RSD': [undefined, undefined, 0], - 'RUB': [undefined, '₽'], - 'RUR': [undefined, 'р.'], - 'RWF': [undefined, 'RF', 0], - 'SBD': [undefined, '$'], - 'SEK': [undefined, 'kr', 2], - 'SGD': [undefined, '$'], - 'SHP': [undefined, '£'], - 'SLL': [undefined, undefined, 0], - 'SOS': [undefined, undefined, 0], - 'SRD': [undefined, '$'], - 'SSP': [undefined, '£'], - 'STD': [undefined, undefined, 0], - 'STN': [undefined, 'Db'], - 'SYP': [undefined, '£', 0], - 'THB': [undefined, '฿'], - 'TMM': [undefined, undefined, 0], - 'TND': [undefined, undefined, 3], - 'TOP': [undefined, 'T$'], - 'TRL': [undefined, undefined, 0], - 'TRY': [undefined, '₺'], - 'TTD': [undefined, '$'], - 'TWD': ['NT$', '$', 2], - 'TZS': [undefined, undefined, 2], - 'UAH': [undefined, '₴'], - 'UGX': [undefined, undefined, 0], - 'USD': ['$'], - 'UYI': [undefined, undefined, 0], - 'UYU': [undefined, '$'], - 'UYW': [undefined, undefined, 4], - 'UZS': [undefined, undefined, 2], - 'VEF': [undefined, 'Bs', 2], - 'VND': ['₫', undefined, 0], - 'VUV': [undefined, undefined, 0], - 'XAF': ['FCFA', undefined, 0], - 'XCD': ['EC$', '$'], - 'XOF': ['CFA', undefined, 0], - 'XPF': ['CFPF', undefined, 0], - 'XXX': ['¤'], - 'YER': [undefined, undefined, 0], - 'ZAR': [undefined, 'R'], - 'ZMK': [undefined, undefined, 0], - 'ZMW': [undefined, 'ZK'], - 'ZWD': [undefined, undefined, 0] - }; +export const CURRENCIES_EN: {[code: string]: CurrenciesSymbols | [string | undefined, string | undefined, number]} = {"ADP":[undefined,undefined,0],"AFN":[undefined,undefined,0],"ALL":[undefined,undefined,0],"AMD":[undefined,undefined,2],"AOA":[undefined,"Kz"],"ARS":[undefined,"$"],"AUD":["A$","$"],"BAM":[undefined,"KM"],"BBD":[undefined,"$"],"BDT":[undefined,"৳"],"BHD":[undefined,undefined,3],"BIF":[undefined,undefined,0],"BMD":[undefined,"$"],"BND":[undefined,"$"],"BOB":[undefined,"Bs"],"BRL":["R$"],"BSD":[undefined,"$"],"BWP":[undefined,"P"],"BYN":[undefined,"р.",2],"BYR":[undefined,undefined,0],"BZD":[undefined,"$"],"CAD":["CA$","$",2],"CHF":[undefined,undefined,2],"CLF":[undefined,undefined,4],"CLP":[undefined,"$",0],"CNY":["CN¥","¥"],"COP":[undefined,"$",2],"CRC":[undefined,"₡",2],"CUC":[undefined,"$"],"CUP":[undefined,"$"],"CZK":[undefined,"Kč",2],"DJF":[undefined,undefined,0],"DKK":[undefined,"kr",2],"DOP":[undefined,"$"],"EGP":[undefined,"E£"],"ESP":[undefined,"₧",0],"EUR":["€"],"FJD":[undefined,"$"],"FKP":[undefined,"£"],"GBP":["£"],"GEL":[undefined,"₾"],"GIP":[undefined,"£"],"GNF":[undefined,"FG",0],"GTQ":[undefined,"Q"],"GYD":[undefined,"$",2],"HKD":["HK$","$"],"HNL":[undefined,"L"],"HRK":[undefined,"kn"],"HUF":[undefined,"Ft",2],"IDR":[undefined,"Rp",2],"ILS":["₪"],"INR":["₹"],"IQD":[undefined,undefined,0],"IRR":[undefined,undefined,0],"ISK":[undefined,"kr",0],"ITL":[undefined,undefined,0],"JMD":[undefined,"$"],"JOD":[undefined,undefined,3],"JPY":["¥",undefined,0],"KHR":[undefined,"៛"],"KMF":[undefined,"CF",0],"KPW":[undefined,"₩",0],"KRW":["₩",undefined,0],"KWD":[undefined,undefined,3],"KYD":[undefined,"$"],"KZT":[undefined,"₸"],"LAK":[undefined,"₭",0],"LBP":[undefined,"L£",0],"LKR":[undefined,"Rs"],"LRD":[undefined,"$"],"LTL":[undefined,"Lt"],"LUF":[undefined,undefined,0],"LVL":[undefined,"Ls"],"LYD":[undefined,undefined,3],"MGA":[undefined,"Ar",0],"MGF":[undefined,undefined,0],"MMK":[undefined,"K",0],"MNT":[undefined,"₮",2],"MRO":[undefined,undefined,0],"MUR":[undefined,"Rs",2],"MXN":["MX$","$"],"MYR":[undefined,"RM"],"NAD":[undefined,"$"],"NGN":[undefined,"₦"],"NIO":[undefined,"C$"],"NOK":[undefined,"kr",2],"NPR":[undefined,"Rs"],"NZD":["NZ$","$"],"OMR":[undefined,undefined,3],"PHP":[undefined,"₱"],"PKR":[undefined,"Rs",2],"PLN":[undefined,"zł"],"PYG":[undefined,"₲",0],"RON":[undefined,"lei"],"RSD":[undefined,undefined,0],"RUB":[undefined,"₽"],"RUR":[undefined,"р."],"RWF":[undefined,"RF",0],"SBD":[undefined,"$"],"SEK":[undefined,"kr",2],"SGD":[undefined,"$"],"SHP":[undefined,"£"],"SLL":[undefined,undefined,0],"SOS":[undefined,undefined,0],"SRD":[undefined,"$"],"SSP":[undefined,"£"],"STD":[undefined,undefined,0],"STN":[undefined,"Db"],"SYP":[undefined,"£",0],"THB":[undefined,"฿"],"TMM":[undefined,undefined,0],"TND":[undefined,undefined,3],"TOP":[undefined,"T$"],"TRL":[undefined,undefined,0],"TRY":[undefined,"₺"],"TTD":[undefined,"$"],"TWD":["NT$","$",2],"TZS":[undefined,undefined,2],"UAH":[undefined,"₴"],"UGX":[undefined,undefined,0],"USD":["$"],"UYI":[undefined,undefined,0],"UYU":[undefined,"$"],"UYW":[undefined,undefined,4],"UZS":[undefined,undefined,2],"VEF":[undefined,"Bs",2],"VND":["₫",undefined,0],"VUV":[undefined,undefined,0],"XAF":["FCFA",undefined,0],"XCD":["EC$","$"],"XOF":["CFA",undefined,0],"XPF":["CFPF",undefined,0],"XXX":["¤"],"YER":[undefined,undefined,0],"ZAR":[undefined,"R"],"ZMK":[undefined,undefined,0],"ZMW":[undefined,"ZK"],"ZWD":[undefined,undefined,0]}; diff --git a/packages/common/src/i18n/locale_data_api.ts b/packages/common/src/i18n/locale_data_api.ts index 82abc6ece4..459d26b732 100644 --- a/packages/common/src/i18n/locale_data_api.ts +++ b/packages/common/src/i18n/locale_data_api.ts @@ -81,7 +81,7 @@ export enum TranslationWidth { * Examples are given for `en-US`. * * @see `getLocaleDateFormat()` - * @see `getLocaleTimeFormat()`` + * @see `getLocaleTimeFormat()` * @see `getLocaleDateTimeFormat()` * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n) * @publicApi diff --git a/packages/common/src/i18n/localization.ts b/packages/common/src/i18n/localization.ts index 096cadccbb..532c222500 100644 --- a/packages/common/src/i18n/localization.ts +++ b/packages/common/src/i18n/localization.ts @@ -56,7 +56,7 @@ export class NgLocaleLocalization extends NgLocalization { super(); } - getPluralCategory(value: any, locale?: string): string { + override getPluralCategory(value: any, locale?: string): string { const plural = getLocalePluralCase(locale || this.locale)(value); switch (plural) { diff --git a/packages/common/src/location/hash_location_strategy.ts b/packages/common/src/location/hash_location_strategy.ts index b46ff1ccfa..ceba0bc9bb 100644 --- a/packages/common/src/location/hash_location_strategy.ts +++ b/packages/common/src/location/hash_location_strategy.ts @@ -52,16 +52,16 @@ export class HashLocationStrategy extends LocationStrategy implements OnDestroy } } - onPopState(fn: LocationChangeListener): void { + override onPopState(fn: LocationChangeListener): void { this._removeListenerFns.push( this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn)); } - getBaseHref(): string { + override getBaseHref(): string { return this._baseHref; } - path(includeHash: boolean = false): string { + override path(includeHash: boolean = false): string { // the hash value is always prefixed with a `#` // and if it is empty then it will stay empty let path = this._platformLocation.hash; @@ -70,12 +70,12 @@ export class HashLocationStrategy extends LocationStrategy implements OnDestroy return path.length > 0 ? path.substring(1) : path; } - prepareExternalUrl(internal: string): string { + override prepareExternalUrl(internal: string): string { const url = joinWithSlash(this._baseHref, internal); return url.length > 0 ? ('#' + url) : url; } - pushState(state: any, title: string, path: string, queryParams: string) { + override pushState(state: any, title: string, path: string, queryParams: string) { let url: string|null = this.prepareExternalUrl(path + normalizeQueryParams(queryParams)); if (url.length == 0) { url = this._platformLocation.pathname; @@ -83,7 +83,7 @@ export class HashLocationStrategy extends LocationStrategy implements OnDestroy this._platformLocation.pushState(state, title, url); } - replaceState(state: any, title: string, path: string, queryParams: string) { + override replaceState(state: any, title: string, path: string, queryParams: string) { let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams)); if (url.length == 0) { url = this._platformLocation.pathname; @@ -91,11 +91,15 @@ export class HashLocationStrategy extends LocationStrategy implements OnDestroy this._platformLocation.replaceState(state, title, url); } - forward(): void { + override forward(): void { this._platformLocation.forward(); } - back(): void { + override back(): void { this._platformLocation.back(); } + + override historyGo(relativePosition: number = 0): void { + this._platformLocation.historyGo?.(relativePosition); + } } diff --git a/packages/common/src/location/location.ts b/packages/common/src/location/location.ts index 55af1e738d..4df0e7f420 100644 --- a/packages/common/src/location/location.ts +++ b/packages/common/src/location/location.ts @@ -30,7 +30,7 @@ export interface PopStateEvent { * * @usageNotes * - * It's better to use the `Router#navigate` service to trigger route changes. Use + * It's better to use the `Router.navigate()` service to trigger route changes. Use * `Location` only if you need to interact with or create normalized URLs outside of * routing. * @@ -188,6 +188,22 @@ export class Location { this._platformStrategy.back(); } + /** + * Navigate to a specific page from session history, identified by its relative position to the + * current page. + * + * @param relativePosition Position of the target page in the history relative to the current + * page. + * A negative value moves backwards, a positive value moves forwards, e.g. `location.historyGo(2)` + * moves forward two pages and `location.historyGo(-2)` moves back two pages. When we try to go + * beyond what's stored in the history session, we stay in the current page. Same behaviour occurs + * when `relativePosition` equals 0. + * @see https://developer.mozilla.org/en-US/docs/Web/API/History_API#Moving_to_a_specific_point_in_history + */ + historyGo(relativePosition: number = 0): void { + this._platformStrategy.historyGo?.(relativePosition); + } + /** * Registers a URL change listener. Use to catch updates performed by the Angular * framework that are not detectible through "popstate" or "hashchange" events. @@ -212,9 +228,14 @@ export class Location { /** * Subscribes to the platform's `popState` events. * + * Note: `Location.go()` does not trigger the `popState` event in the browser. Use + * `Location.onUrlChange()` to subscribe to URL changes instead. + * * @param value Event that is triggered when the state history changes. * @param exception The exception to throw. * + * @see [onpopstate](https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate) + * * @returns Subscribed events. */ subscribe( diff --git a/packages/common/src/location/location_strategy.ts b/packages/common/src/location/location_strategy.ts index 731f5c6091..8e525944c4 100644 --- a/packages/common/src/location/location_strategy.ts +++ b/packages/common/src/location/location_strategy.ts @@ -36,6 +36,9 @@ export abstract class LocationStrategy { abstract replaceState(state: any, title: string, url: string, queryParams: string): void; abstract forward(): void; abstract back(): void; + historyGo?(relativePosition: number): void { + throw new Error('Not implemented'); + } abstract onPopState(fn: LocationChangeListener): void; abstract getBaseHref(): string; } @@ -132,41 +135,45 @@ export class PathLocationStrategy extends LocationStrategy implements OnDestroy } } - onPopState(fn: LocationChangeListener): void { + override onPopState(fn: LocationChangeListener): void { this._removeListenerFns.push( this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn)); } - getBaseHref(): string { + override getBaseHref(): string { return this._baseHref; } - prepareExternalUrl(internal: string): string { + override prepareExternalUrl(internal: string): string { return joinWithSlash(this._baseHref, internal); } - path(includeHash: boolean = false): string { + override path(includeHash: boolean = false): string { const pathname = this._platformLocation.pathname + normalizeQueryParams(this._platformLocation.search); const hash = this._platformLocation.hash; return hash && includeHash ? `${pathname}${hash}` : pathname; } - pushState(state: any, title: string, url: string, queryParams: string) { + override pushState(state: any, title: string, url: string, queryParams: string) { const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams)); this._platformLocation.pushState(state, title, externalUrl); } - replaceState(state: any, title: string, url: string, queryParams: string) { + override replaceState(state: any, title: string, url: string, queryParams: string) { const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams)); this._platformLocation.replaceState(state, title, externalUrl); } - forward(): void { + override forward(): void { this._platformLocation.forward(); } - back(): void { + override back(): void { this._platformLocation.back(); } + + override historyGo(relativePosition: number = 0): void { + this._platformLocation.historyGo?.(relativePosition); + } } diff --git a/packages/common/src/location/platform_location.ts b/packages/common/src/location/platform_location.ts index 42371b9e5e..80bf20ef13 100644 --- a/packages/common/src/location/platform_location.ts +++ b/packages/common/src/location/platform_location.ts @@ -64,6 +64,10 @@ export abstract class PlatformLocation { abstract forward(): void; abstract back(): void; + + historyGo?(relativePosition: number): void { + throw new Error('Not implemented'); + } } export function useBrowserPlatformLocation() { @@ -124,48 +128,48 @@ export class BrowserPlatformLocation extends PlatformLocation { this._history = window.history; } - getBaseHrefFromDOM(): string { + override getBaseHrefFromDOM(): string { return getDOM().getBaseHref(this._doc)!; } - onPopState(fn: LocationChangeListener): VoidFunction { + override onPopState(fn: LocationChangeListener): VoidFunction { const window = getDOM().getGlobalEventTarget(this._doc, 'window'); window.addEventListener('popstate', fn, false); return () => window.removeEventListener('popstate', fn); } - onHashChange(fn: LocationChangeListener): VoidFunction { + override onHashChange(fn: LocationChangeListener): VoidFunction { const window = getDOM().getGlobalEventTarget(this._doc, 'window'); window.addEventListener('hashchange', fn, false); return () => window.removeEventListener('hashchange', fn); } - get href(): string { + override get href(): string { return this.location.href; } - get protocol(): string { + override get protocol(): string { return this.location.protocol; } - get hostname(): string { + override get hostname(): string { return this.location.hostname; } - get port(): string { + override get port(): string { return this.location.port; } - get pathname(): string { + override get pathname(): string { return this.location.pathname; } - get search(): string { + override get search(): string { return this.location.search; } - get hash(): string { + override get hash(): string { return this.location.hash; } - set pathname(newPath: string) { + override set pathname(newPath: string) { this.location.pathname = newPath; } - pushState(state: any, title: string, url: string): void { + override pushState(state: any, title: string, url: string): void { if (supportsState()) { this._history.pushState(state, title, url); } else { @@ -173,7 +177,7 @@ export class BrowserPlatformLocation extends PlatformLocation { } } - replaceState(state: any, title: string, url: string): void { + override replaceState(state: any, title: string, url: string): void { if (supportsState()) { this._history.replaceState(state, title, url); } else { @@ -181,15 +185,19 @@ export class BrowserPlatformLocation extends PlatformLocation { } } - forward(): void { + override forward(): void { this._history.forward(); } - back(): void { + override back(): void { this._history.back(); } - getState(): unknown { + override historyGo(relativePosition: number = 0): void { + this._history.go(relativePosition); + } + + override getState(): unknown { return this._history.state; } } diff --git a/packages/common/src/pipes/async_pipe.ts b/packages/common/src/pipes/async_pipe.ts index 6365dbc067..9bb43b8862 100644 --- a/packages/common/src/pipes/async_pipe.ts +++ b/packages/common/src/pipes/async_pipe.ts @@ -7,7 +7,7 @@ */ import {ChangeDetectorRef, EventEmitter, OnDestroy, Pipe, PipeTransform, ɵisPromise, ɵisSubscribable} from '@angular/core'; -import {Subscribable, Unsubscribable} from 'rxjs'; +import {Observable, Subscribable, Unsubscribable} from 'rxjs'; import {invalidPipeArgumentError} from './invalid_pipe_argument_error'; @@ -95,10 +95,14 @@ export class AsyncPipe implements OnDestroy, PipeTransform { } } - transform(obj: Subscribable|Promise): T|null; + // NOTE(@benlesh): Because Observable has deprecated a few call patterns for `subscribe`, + // TypeScript has a hard time matching Observable to Subscribable, for more information + // see https://github.com/microsoft/TypeScript/issues/43643 + + transform(obj: Observable|Subscribable|Promise): T|null; transform(obj: null|undefined): null; - transform(obj: Subscribable|Promise|null|undefined): T|null; - transform(obj: Subscribable|Promise|null|undefined): T|null { + transform(obj: Observable|Subscribable|Promise|null|undefined): T|null; + transform(obj: Observable|Subscribable|Promise|null|undefined): T|null { if (!this._obj) { if (obj) { this._subscribe(obj); diff --git a/packages/common/src/pipes/date_pipe.ts b/packages/common/src/pipes/date_pipe.ts index 5fced0e337..b94e38f310 100644 --- a/packages/common/src/pipes/date_pipe.ts +++ b/packages/common/src/pipes/date_pipe.ts @@ -16,6 +16,14 @@ import {invalidPipeArgumentError} from './invalid_pipe_argument_error'; * @description * * Formats a date value according to locale rules. + * + * `DatePipe` is executed only when it detects a pure change to the input value. + * A pure change is either a change to a primitive input value + * (such as `String`, `Number`, `Boolean`, or `Symbol`), + * or a changed object reference (such as `Date`, `Array`, `Function`, or `Object`). + * + * Note that mutating a `Date` object does not cause the pipe to be rendered again. + * To ensure that the pipe is executed, you must create a new `Date` object. * * Only the `en-US` locale data comes with Angular. To localize dates * in another language, you must import the corresponding locale data. diff --git a/packages/common/src/pipes/keyvalue_pipe.ts b/packages/common/src/pipes/keyvalue_pipe.ts index 163b83f3e6..a287bb6e5a 100644 --- a/packages/common/src/pipes/keyvalue_pipe.ts +++ b/packages/common/src/pipes/keyvalue_pipe.ts @@ -49,6 +49,7 @@ export class KeyValuePipe implements PipeTransform { private differ!: KeyValueDiffer; private keyValues: Array> = []; + private compareFn: (a: KeyValue, b: KeyValue) => number = defaultComparator; /* * NOTE: when the `input` value is a simple Record object, the keys are extracted with @@ -91,13 +92,17 @@ export class KeyValuePipe implements PipeTransform { } const differChanges: KeyValueChanges|null = this.differ.diff(input as any); + const compareFnChanged = compareFn !== this.compareFn; if (differChanges) { this.keyValues = []; differChanges.forEachItem((r: KeyValueChangeRecord) => { this.keyValues.push(makeKeyValuePair(r.key, r.currentValue!)); }); + } + if (differChanges || compareFnChanged) { this.keyValues.sort(compareFn); + this.compareFn = compareFn; } return this.keyValues; } diff --git a/packages/common/src/pipes/number_pipe.ts b/packages/common/src/pipes/number_pipe.ts index fa25ff6017..307a7b443b 100644 --- a/packages/common/src/pipes/number_pipe.ts +++ b/packages/common/src/pipes/number_pipe.ts @@ -79,10 +79,10 @@ import {invalidPipeArgumentError} from './invalid_pipe_argument_error'; @Pipe({name: 'number'}) export class DecimalPipe implements PipeTransform { constructor(@Inject(LOCALE_ID) private _locale: string) {} + transform(value: number|string, digitsInfo?: string, locale?: string): string|null; transform(value: null|undefined, digitsInfo?: string, locale?: string): null; transform(value: number|string|null|undefined, digitsInfo?: string, locale?: string): string|null; - /** * @param value The value to be formatted. * @param digitsInfo Sets digit and decimal representation. @@ -129,6 +129,9 @@ export class DecimalPipe implements PipeTransform { export class PercentPipe implements PipeTransform { constructor(@Inject(LOCALE_ID) private _locale: string) {} + transform(value: number|string, digitsInfo?: string, locale?: string): string|null; + transform(value: null|undefined, digitsInfo?: string, locale?: string): null; + transform(value: number|string|null|undefined, digitsInfo?: string, locale?: string): string|null; /** * * @param value The number to be formatted as a percentage. @@ -145,9 +148,6 @@ export class PercentPipe implements PipeTransform { * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default. * See [Setting your app locale](guide/i18n#setting-up-the-locale-of-your-app). */ - transform(value: number|string, digitsInfo?: string, locale?: string): string|null; - transform(value: null|undefined, digitsInfo?: string, locale?: string): null; - transform(value: number|string|null|undefined, digitsInfo?: string, locale?: string): string|null; transform(value: number|string|null|undefined, digitsInfo?: string, locale?: string): string |null { if (!isValue(value)) return null; @@ -207,6 +207,18 @@ export class CurrencyPipe implements PipeTransform { @Inject(LOCALE_ID) private _locale: string, @Inject(DEFAULT_CURRENCY_CODE) private _defaultCurrencyCode: string = 'USD') {} + transform( + value: number|string, currencyCode?: string, + display?: 'code'|'symbol'|'symbol-narrow'|string|boolean, digitsInfo?: string, + locale?: string): string|null; + transform( + value: null|undefined, currencyCode?: string, + display?: 'code'|'symbol'|'symbol-narrow'|string|boolean, digitsInfo?: string, + locale?: string): null; + transform( + value: number|string|null|undefined, currencyCode?: string, + display?: 'code'|'symbol'|'symbol-narrow'|string|boolean, digitsInfo?: string, + locale?: string): string|null; /** * * @param value The number to be formatted as currency. @@ -241,19 +253,7 @@ export class CurrencyPipe implements PipeTransform { * See [Setting your app locale](guide/i18n#setting-up-the-locale-of-your-app). */ transform( - value: number|string, currencyCode?: string, - display?: 'code'|'symbol'|'symbol-narrow'|string|boolean, digitsInfo?: string, - locale?: string): string|null; - transform( - value: null|undefined, currencyCode?: string, - display?: 'code'|'symbol'|'symbol-narrow'|string|boolean, digitsInfo?: string, - locale?: string): null; - transform( - value: number|string|null|undefined, currencyCode?: string, - display?: 'code'|'symbol'|'symbol-narrow'|string|boolean, digitsInfo?: string, - locale?: string): string|null; - transform( - value: number|string|null|undefined, currencyCode?: string, + value: number|string|null|undefined, currencyCode: string = this._defaultCurrencyCode, display: 'code'|'symbol'|'symbol-narrow'|string|boolean = 'symbol', digitsInfo?: string, locale?: string): string|null { if (!isValue(value)) return null; diff --git a/packages/common/src/viewport_scroller.ts b/packages/common/src/viewport_scroller.ts index a8061f62d0..69b9731842 100644 --- a/packages/common/src/viewport_scroller.ts +++ b/packages/common/src/viewport_scroller.ts @@ -123,16 +123,14 @@ export class BrowserViewportScroller implements ViewportScroller { // TODO(atscott): The correct behavior for `getElementsByName` would be to also verify that the // element is an anchor. However, this could be considered a breaking change and should be // done in a major version. - const elSelected: HTMLElement|undefined = - this.document.getElementById(target) ?? this.document.getElementsByName(target)[0]; - if (elSelected === undefined) { - return; - } + const elSelected = findAnchorFromDocument(this.document, target); - this.scrollToElement(elSelected); - // After scrolling to the element, the spec dictates that we follow the focus steps for the - // target. Rather than following the robust steps, simply attempt focus. - this.attemptFocus(elSelected); + if (elSelected) { + this.scrollToElement(elSelected); + // After scrolling to the element, the spec dictates that we follow the focus steps for the + // target. Rather than following the robust steps, simply attempt focus. + this.attemptFocus(elSelected); + } } /** @@ -214,6 +212,40 @@ function getScrollRestorationProperty(obj: any): PropertyDescriptor|undefined { return Object.getOwnPropertyDescriptor(obj, 'scrollRestoration'); } +function findAnchorFromDocument(document: Document, target: string): HTMLElement|null { + const documentResult = document.getElementById(target) || document.getElementsByName(target)[0]; + + if (documentResult) { + return documentResult; + } + + // `getElementById` and `getElementsByName` won't pierce through the shadow DOM so we + // have to traverse the DOM manually and do the lookup through the shadow roots. + if (typeof document.createTreeWalker === 'function' && document.body && + ((document.body as any).createShadowRoot || document.body.attachShadow)) { + const treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT); + let currentNode = treeWalker.currentNode as HTMLElement | null; + + while (currentNode) { + const shadowRoot = currentNode.shadowRoot; + + if (shadowRoot) { + // Note that `ShadowRoot` doesn't support `getElementsByName` + // so we have to fall back to `querySelector`. + const result = + shadowRoot.getElementById(target) || shadowRoot.querySelector(`[name="${target}"]`); + if (result) { + return result; + } + } + + currentNode = treeWalker.nextNode() as HTMLElement | null; + } + } + + return null; +} + /** * Provides an empty implementation of the viewport scroller. */ diff --git a/packages/common/test/cookie_spec.ts b/packages/common/test/cookie_spec.ts index 2a83cb7b9c..132724700e 100644 --- a/packages/common/test/cookie_spec.ts +++ b/packages/common/test/cookie_spec.ts @@ -17,7 +17,6 @@ */ import {parseCookieValue} from '@angular/common/src/cookie'; -import {describe, expect, it} from '@angular/core/testing/src/testing_internal'; { describe('cookies', () => { diff --git a/packages/common/test/directives/ng_switch_spec.ts b/packages/common/test/directives/ng_switch_spec.ts index 425ea6fd7a..e7c8bd5983 100644 --- a/packages/common/test/directives/ng_switch_spec.ts +++ b/packages/common/test/directives/ng_switch_spec.ts @@ -7,8 +7,8 @@ */ import {CommonModule} from '@angular/common'; -import {Attribute, Component, Directive, TemplateRef, ViewChild} from '@angular/core'; -import {ComponentFixture, TestBed} from '@angular/core/testing'; +import {Attribute, Component, Directive, TemplateRef, ViewChild,} from '@angular/core'; +import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing'; import {expect} from '@angular/platform-browser/testing/src/matchers'; { @@ -176,6 +176,24 @@ import {expect} from '@angular/platform-browser/testing/src/matchers'; detectChangesAndExpectText('when b1;when b2;'); }); + it('should throw error when ngSwitchCase is used outside of ngSwitch', waitForAsync(() => { + const template = '
' + + '
'; + + expect(() => createTestComponent(template)) + .toThrowError( + 'NG0305: An element with the "ngSwitchCase" attribute (matching the "NgSwitchCase" directive) must be located inside an element with the "ngSwitch" attribute (matching "NgSwitch" directive)'); + })); + + it('should throw error when ngSwitchDefault is used outside of ngSwitch', waitForAsync(() => { + const template = '
' + + '
'; + + expect(() => createTestComponent(template)) + .toThrowError( + 'NG0305: An element with the "ngSwitchDefault" attribute (matching the "NgSwitchDefault" directive) must be located inside an element with the "ngSwitch" attribute (matching "NgSwitch" directive)'); + })); + it('should support nested NgSwitch on ng-container with ngTemplateOutlet', () => { fixture = TestBed.createComponent(ComplexComponent); detectChangesAndExpectText('Foo'); diff --git a/packages/common/test/i18n/format_number_spec.ts b/packages/common/test/i18n/format_number_spec.ts index be5320eea7..7043d42224 100644 --- a/packages/common/test/i18n/format_number_spec.ts +++ b/packages/common/test/i18n/format_number_spec.ts @@ -12,7 +12,6 @@ import localeEn from '@angular/common/locales/en'; import localeEsUS from '@angular/common/locales/es-US'; import localeFr from '@angular/common/locales/fr'; import {ɵDEFAULT_LOCALE_ID, ɵregisterLocaleData, ɵunregisterLocaleData} from '@angular/core'; -import {describe, expect, it} from '@angular/core/testing/src/testing_internal'; describe('Format number', () => { beforeAll(() => { diff --git a/packages/common/test/location/location_spec.ts b/packages/common/test/location/location_spec.ts index d31f2aba84..aad99be5de 100644 --- a/packages/common/test/location/location_spec.ts +++ b/packages/common/test/location/location_spec.ts @@ -81,6 +81,54 @@ describe('Location Class', () => { expect(location.getState()).toEqual({url: 'test1'}); }); + + it('should work after using forward button', () => { + expect(location.getState()).toBe(null); + + location.go('/test1', '', {url: 'test1'}); + location.go('/test2', '', {url: 'test2'}); + expect(location.getState()).toEqual({url: 'test2'}); + + location.back(); + expect(location.getState()).toEqual({url: 'test1'}); + + location.forward(); + expect(location.getState()).toEqual({url: 'test2'}); + }); + + it('should work after using location.historyGo()', () => { + expect(location.getState()).toBe(null); + + location.go('/test1', '', {url: 'test1'}); + location.go('/test2', '', {url: 'test2'}); + location.go('/test3', '', {url: 'test3'}); + expect(location.getState()).toEqual({url: 'test3'}); + + location.historyGo(-2); + expect(location.getState()).toEqual({url: 'test1'}); + + location.historyGo(2); + expect(location.getState()).toEqual({url: 'test3'}); + + location.go('/test3', '', {url: 'test4'}); + location.historyGo(0); + expect(location.getState()).toEqual({url: 'test4'}); + + location.historyGo(); + expect(location.getState()).toEqual({url: 'test4'}); + + // we are testing the behaviour of the `historyGo` method at the moment when the value of + // the relativePosition goes out of bounds. + // The result should be that the locationState does not change. + location.historyGo(100); + expect(location.getState()).toEqual({url: 'test4'}); + + location.historyGo(-100); + expect(location.getState()).toEqual({url: 'test4'}); + + location.back(); + expect(location.getState()).toEqual({url: 'test3'}); + }); }); describe('location.onUrlChange()', () => { diff --git a/packages/common/test/pipes/async_pipe_spec.ts b/packages/common/test/pipes/async_pipe_spec.ts index 19cf051ed8..5266e67b04 100644 --- a/packages/common/test/pipes/async_pipe_spec.ts +++ b/packages/common/test/pipes/async_pipe_spec.ts @@ -7,21 +7,22 @@ */ import {AsyncPipe, ɵgetDOM as getDOM} from '@angular/common'; -import {EventEmitter} from '@angular/core'; -import {AsyncTestCompleter, beforeEach, describe, expect, inject, it} from '@angular/core/testing/src/testing_internal'; +import {ChangeDetectorRef, EventEmitter} from '@angular/core'; import {browserDetection} from '@angular/platform-browser/testing/src/browser_util'; import {Subscribable, Unsubscribable} from 'rxjs'; -import {SpyChangeDetectorRef} from '../spies'; - { describe('AsyncPipe', () => { + function getChangeDetectorRefSpy() { + return jasmine.createSpyObj('ChangeDetectorRef', ['markForCheck', 'detectChanges']); + } + describe('Observable', () => { // only expose methods from the Subscribable interface, to ensure that // the implementation does not rely on other methods: const wrapSubscribable = (input: Subscribable): Subscribable => ({ subscribe(...args: any): Unsubscribable { - const subscription = input.subscribe(...args); + const subscription = input.subscribe.apply(input, args); return { unsubscribe() { subscription.unsubscribe(); @@ -33,13 +34,13 @@ import {SpyChangeDetectorRef} from '../spies'; let emitter: EventEmitter; let subscribable: Subscribable; let pipe: AsyncPipe; - let ref: any; + let ref: ChangeDetectorRef&jasmine.SpyObj; const message = {}; beforeEach(() => { emitter = new EventEmitter(); subscribable = wrapSubscribable(emitter); - ref = new SpyChangeDetectorRef(); + ref = getChangeDetectorRefSpy(); pipe = new AsyncPipe(ref); }); @@ -48,32 +49,30 @@ import {SpyChangeDetectorRef} from '../spies'; expect(pipe.transform(subscribable)).toBe(null); }); - it('should return the latest available value', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - pipe.transform(subscribable); - emitter.emit(message); + it('should return the latest available value', done => { + pipe.transform(subscribable); + emitter.emit(message); - setTimeout(() => { - expect(pipe.transform(subscribable)).toEqual(message); - async.done(); - }, 0); - })); + setTimeout(() => { + expect(pipe.transform(subscribable)).toEqual(message); + done(); + }, 0); + }); - it('should return same value when nothing has changed since the last call', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - pipe.transform(subscribable); - emitter.emit(message); + it('should return same value when nothing has changed since the last call', done => { + pipe.transform(subscribable); + emitter.emit(message); - setTimeout(() => { - pipe.transform(subscribable); - expect(pipe.transform(subscribable)).toBe(message); - async.done(); - }, 0); - })); + setTimeout(() => { + pipe.transform(subscribable); + expect(pipe.transform(subscribable)).toBe(message); + done(); + }, 0); + }); it('should dispose of the existing subscription when subscribing to a new observable', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { + done => { pipe.transform(subscribable); const newEmitter = new EventEmitter(); @@ -84,20 +83,19 @@ import {SpyChangeDetectorRef} from '../spies'; // this should not affect the pipe setTimeout(() => { expect(pipe.transform(newSubscribable)).toBe(null); - async.done(); + done(); }, 0); - })); + }); - it('should request a change detection check upon receiving a new value', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - pipe.transform(subscribable); - emitter.emit(message); + it('should request a change detection check upon receiving a new value', done => { + pipe.transform(subscribable); + emitter.emit(message); - setTimeout(() => { - expect(ref.spy('markForCheck')).toHaveBeenCalled(); - async.done(); - }, 10); - })); + setTimeout(() => { + expect(ref.markForCheck).toHaveBeenCalled(); + done(); + }, 10); + }); it('should return value for unchanged NaN', () => { emitter.emit(null); @@ -115,17 +113,26 @@ import {SpyChangeDetectorRef} from '../spies'; expect(() => pipe.ngOnDestroy()).not.toThrow(); }); - it('should dispose of the existing subscription', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - pipe.transform(subscribable); - pipe.ngOnDestroy(); - emitter.emit(message); + it('should dispose of the existing subscription', done => { + pipe.transform(subscribable); + pipe.ngOnDestroy(); + emitter.emit(message); - setTimeout(() => { - expect(pipe.transform(subscribable)).toBe(null); - async.done(); - }, 0); - })); + setTimeout(() => { + expect(pipe.transform(subscribable)).toBe(null); + done(); + }, 0); + }); + }); + }); + + describe('Subscribable', () => { + it('should infer the type from the subscribable', () => { + const ref = getChangeDetectorRefSpy(); + const pipe = new AsyncPipe(ref); + const emitter = new EventEmitter<{name: 'T'}>(); + // The following line will fail to compile if the type cannot be inferred. + const name = pipe.transform(emitter)?.name; }); }); @@ -145,7 +152,7 @@ import {SpyChangeDetectorRef} from '../spies'; let resolve: (result: any) => void; let reject: (error: any) => void; let promise: Promise; - let ref: SpyChangeDetectorRef; + let ref: any; // adds longer timers for passing tests in IE const timer = (getDOM() && browserDetection.isIE) ? 50 : 10; @@ -154,8 +161,8 @@ import {SpyChangeDetectorRef} from '../spies'; resolve = res; reject = rej; }); - ref = new SpyChangeDetectorRef(); - pipe = new AsyncPipe(ref as any); + ref = getChangeDetectorRefSpy(); + pipe = new AsyncPipe(ref); }); describe('transform', () => { @@ -163,32 +170,30 @@ import {SpyChangeDetectorRef} from '../spies'; expect(pipe.transform(promise)).toBe(null); }); - it('should return the latest available value', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - pipe.transform(promise); + it('should return the latest available value', done => { + pipe.transform(promise); - resolve(message); + resolve(message); - setTimeout(() => { - expect(pipe.transform(promise)).toEqual(message); - async.done(); - }, timer); - })); + setTimeout(() => { + expect(pipe.transform(promise)).toEqual(message); + done(); + }, timer); + }); - it('should return value when nothing has changed since the last call', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - pipe.transform(promise); - resolve(message); + it('should return value when nothing has changed since the last call', done => { + pipe.transform(promise); + resolve(message); - setTimeout(() => { - pipe.transform(promise); - expect(pipe.transform(promise)).toBe(message); - async.done(); - }, timer); - })); + setTimeout(() => { + pipe.transform(promise); + expect(pipe.transform(promise)).toBe(message); + done(); + }, timer); + }); it('should dispose of the existing subscription when subscribing to a new promise', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { + done => { pipe.transform(promise); promise = new Promise(() => {}); @@ -198,41 +203,38 @@ import {SpyChangeDetectorRef} from '../spies'; setTimeout(() => { expect(pipe.transform(promise)).toBe(null); - async.done(); + done(); }, timer); - })); + }); - it('should request a change detection check upon receiving a new value', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const markForCheck = ref.spy('markForCheck'); - pipe.transform(promise); - resolve(message); + it('should request a change detection check upon receiving a new value', done => { + pipe.transform(promise); + resolve(message); - setTimeout(() => { - expect(markForCheck).toHaveBeenCalled(); - async.done(); - }, timer); - })); + setTimeout(() => { + expect(ref.markForCheck).toHaveBeenCalled(); + done(); + }, timer); + }); describe('ngOnDestroy', () => { it('should do nothing when no source', () => { expect(() => pipe.ngOnDestroy()).not.toThrow(); }); - it('should dispose of the existing source', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - pipe.transform(promise); - expect(pipe.transform(promise)).toBe(null); - resolve(message); + it('should dispose of the existing source', done => { + pipe.transform(promise); + expect(pipe.transform(promise)).toBe(null); + resolve(message); - setTimeout(() => { - expect(pipe.transform(promise)).toEqual(message); - pipe.ngOnDestroy(); - expect(pipe.transform(promise)).toBe(null); - async.done(); - }, timer); - })); + setTimeout(() => { + expect(pipe.transform(promise)).toEqual(message); + pipe.ngOnDestroy(); + expect(pipe.transform(promise)).toBe(null); + done(); + }, timer); + }); }); }); }); diff --git a/packages/common/test/pipes/i18n_plural_pipe_spec.ts b/packages/common/test/pipes/i18n_plural_pipe_spec.ts index 19757f367d..a78defb346 100644 --- a/packages/common/test/pipes/i18n_plural_pipe_spec.ts +++ b/packages/common/test/pipes/i18n_plural_pipe_spec.ts @@ -8,7 +8,6 @@ import {I18nPluralPipe, NgLocalization} from '@angular/common'; import {PipeResolver} from '@angular/compiler/src/pipe_resolver'; -import {beforeEach, describe, expect, it} from '@angular/core/testing/src/testing_internal'; import {JitReflector} from '@angular/platform-browser-dynamic/src/compiler_reflector'; { diff --git a/packages/common/test/pipes/keyvalue_pipe_spec.ts b/packages/common/test/pipes/keyvalue_pipe_spec.ts index 2b9fb49533..cbbfeea895 100644 --- a/packages/common/test/pipes/keyvalue_pipe_spec.ts +++ b/packages/common/test/pipes/keyvalue_pipe_spec.ts @@ -51,6 +51,15 @@ describe('KeyValuePipe', () => { {key: 'a', value: 1}, {key: 'b', value: 1} ]); }); + it('should reorder when compareFn changes', () => { + const pipe = new KeyValuePipe(defaultKeyValueDiffers); + const input = {'b': 1, 'a': 2}; + pipe.transform(input); + expect(pipe.transform(input, (a, b) => a.value - b.value)).toEqual([ + {key: 'b', value: 1}, + {key: 'a', value: 2}, + ]); + }); it('should return the same ref if nothing changes', () => { const pipe = new KeyValuePipe(defaultKeyValueDiffers); const transform1 = pipe.transform({1: 2}); @@ -114,6 +123,15 @@ describe('KeyValuePipe', () => { {key: {id: 1}, value: 1}, ]); }); + it('should reorder when compareFn changes', () => { + const pipe = new KeyValuePipe(defaultKeyValueDiffers); + const input = new Map([['b', 1], ['a', 2]]); + pipe.transform(input); + expect(pipe.transform(input, (a, b) => a.value - b.value)).toEqual([ + {key: 'b', value: 1}, + {key: 'a', value: 2}, + ]); + }); it('should return the same ref if nothing changes', () => { const pipe = new KeyValuePipe(defaultKeyValueDiffers); const transform1 = pipe.transform(new Map([[1, 2]])); diff --git a/packages/common/test/pipes/number_pipe_spec.ts b/packages/common/test/pipes/number_pipe_spec.ts index 249cc57eee..ce025f5579 100644 --- a/packages/common/test/pipes/number_pipe_spec.ts +++ b/packages/common/test/pipes/number_pipe_spec.ts @@ -14,7 +14,6 @@ import localeEn from '@angular/common/locales/en'; import localeEsUS from '@angular/common/locales/es-US'; import localeFr from '@angular/common/locales/fr'; import {ɵregisterLocaleData, ɵunregisterLocaleData} from '@angular/core'; -import {beforeEach, describe, expect, it} from '@angular/core/testing/src/testing_internal'; { describe('Number pipes', () => { @@ -141,6 +140,11 @@ import {beforeEach, describe, expect, it} from '@angular/core/testing/src/testin expect(pipe.transform(5.1234, 'DKK', '', '', 'da')).toEqual('5,12'); }); + it('should use the injected default currency code if none is provided', () => { + const clpPipe = new CurrencyPipe('en-US', 'CLP'); + expect(clpPipe.transform(1234)).toEqual('CLP1,234'); + }); + it('should support any currency code name', () => { // currency code is unknown, default formatting options will be used expect(pipe.transform(5.1234, 'unexisting_ISO_code', 'symbol')) diff --git a/packages/common/test/spies.ts b/packages/common/test/spies.ts deleted file mode 100644 index 1f5290bb45..0000000000 --- a/packages/common/test/spies.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * @license - * 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 - */ - -import {ChangeDetectorRef} from '@angular/core/src/change_detection/change_detector_ref'; -import {SpyObject} from '@angular/core/testing/src/testing_internal'; - -export class SpyChangeDetectorRef extends SpyObject { - constructor() { - super(ChangeDetectorRef); - this.spy('markForCheck'); - } -} - -export class SpyNgControl extends SpyObject {} - -export class SpyValueAccessor extends SpyObject { - writeValue: any; -} diff --git a/packages/common/test/viewport_scroller_spec.ts b/packages/common/test/viewport_scroller_spec.ts index 58ffb5bb1d..404731f242 100644 --- a/packages/common/test/viewport_scroller_spec.ts +++ b/packages/common/test/viewport_scroller_spec.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {describe, expect, it} from '@angular/core/testing/src/testing_internal'; +import {browserDetection} from '@angular/platform-browser/testing/src/browser_util'; import {BrowserViewportScroller, ViewportScroller} from '../src/viewport_scroller'; describe('BrowserViewportScroller', () => { @@ -44,44 +44,103 @@ describe('BrowserViewportScroller', () => { // Testing scroll behavior does not make sense outside a browser if (isNode) return; const anchor = 'anchor'; - let tallItem: HTMLDivElement; - let el: HTMLAnchorElement; let scroller: BrowserViewportScroller; beforeEach(() => { scroller = new BrowserViewportScroller(document, window); scroller.scrollToPosition([0, 0]); - - tallItem = document.createElement('div'); - tallItem.style.height = '3000px'; - document.body.appendChild(tallItem); - - el = document.createElement('a'); - el.innerText = 'some link'; - el.href = '#'; - document.body.appendChild(el); - }); - - afterEach(() => { - document.body.removeChild(tallItem); - document.body.removeChild(el); }); it('should scroll when element with matching id is found', () => { - el.id = anchor; + const {anchorNode, cleanup} = createTallElement(); + anchorNode.id = anchor; scroller.scrollToAnchor(anchor); expect(scroller.getScrollPosition()[1]).not.toEqual(0); + cleanup(); }); it('should scroll when anchor with matching name is found', () => { - el.name = anchor; + const {anchorNode, cleanup} = createTallElement(); + anchorNode.name = anchor; scroller.scrollToAnchor(anchor); expect(scroller.getScrollPosition()[1]).not.toEqual(0); + cleanup(); }); it('should not scroll when no matching element is found', () => { + const {cleanup} = createTallElement(); scroller.scrollToAnchor(anchor); expect(scroller.getScrollPosition()[1]).toEqual(0); + cleanup(); }); + + it('should scroll when element with matching id is found inside the shadow DOM', () => { + // This test is only relevant for browsers that support shadow DOM. + if (!browserDetection.supportsShadowDom) { + return; + } + + const {anchorNode, cleanup} = createTallElementWithShadowRoot(); + anchorNode.id = anchor; + scroller.scrollToAnchor(anchor); + expect(scroller.getScrollPosition()[1]).not.toEqual(0); + cleanup(); + }); + + it('should scroll when anchor with matching name is found inside the shadow DOM', () => { + // This test is only relevant for browsers that support shadow DOM. + if (!browserDetection.supportsShadowDom) { + return; + } + + const {anchorNode, cleanup} = createTallElementWithShadowRoot(); + anchorNode.name = anchor; + scroller.scrollToAnchor(anchor); + expect(scroller.getScrollPosition()[1]).not.toEqual(0); + cleanup(); + }); + + function createTallElement() { + const tallItem = document.createElement('div'); + tallItem.style.height = '3000px'; + document.body.appendChild(tallItem); + const anchorNode = createAnchorNode(); + document.body.appendChild(anchorNode); + + return { + anchorNode, + cleanup: () => { + document.body.removeChild(tallItem); + document.body.removeChild(anchorNode); + } + }; + } + + function createTallElementWithShadowRoot() { + const tallItem = document.createElement('div'); + tallItem.style.height = '3000px'; + document.body.appendChild(tallItem); + + const elementWithShadowRoot = document.createElement('div'); + const shadowRoot = elementWithShadowRoot.attachShadow({mode: 'open'}); + const anchorNode = createAnchorNode(); + shadowRoot.appendChild(anchorNode); + document.body.appendChild(elementWithShadowRoot); + + return { + anchorNode, + cleanup: () => { + document.body.removeChild(tallItem); + document.body.removeChild(elementWithShadowRoot); + } + }; + } + + function createAnchorNode() { + const anchorNode = document.createElement('a'); + anchorNode.innerText = 'some link'; + anchorNode.href = '#'; + return anchorNode; + } }); }); diff --git a/packages/common/testing/src/location_mock.ts b/packages/common/testing/src/location_mock.ts index e7f5595ec9..41f722ed66 100644 --- a/packages/common/testing/src/location_mock.ts +++ b/packages/common/testing/src/location_mock.ts @@ -123,6 +123,16 @@ export class SpyLocation implements Location { this._subject.emit({'url': this.path(), 'state': this.getState(), 'pop': true}); } } + + historyGo(relativePosition: number = 0): void { + const nextPageIndex = this._historyIndex + relativePosition; + if (nextPageIndex >= 0 && nextPageIndex < this._history.length) { + this._historyIndex = nextPageIndex; + this._subject.emit( + {'url': this.path(), 'state': this.getState(), 'pop': true, 'type': 'popstate'}); + } + } + onUrlChange(fn: (url: string, state: unknown) => void) { this._urlChangeListeners.push(fn); diff --git a/packages/common/testing/src/mock_platform_location.ts b/packages/common/testing/src/mock_platform_location.ts index e4f3f33607..7a2ed4dbba 100644 --- a/packages/common/testing/src/mock_platform_location.ts +++ b/packages/common/testing/src/mock_platform_location.ts @@ -105,6 +105,7 @@ export const MOCK_PLATFORM_LOCATION_CONFIG = export class MockPlatformLocation implements PlatformLocation { private baseHref: string = ''; private hashUpdate = new Subject(); + private urlChangeIndex: number = 0; private urlChanges: { hostname: string, protocol: string, @@ -127,25 +128,25 @@ export class MockPlatformLocation implements PlatformLocation { } get hostname() { - return this.urlChanges[0].hostname; + return this.urlChanges[this.urlChangeIndex].hostname; } get protocol() { - return this.urlChanges[0].protocol; + return this.urlChanges[this.urlChangeIndex].protocol; } get port() { - return this.urlChanges[0].port; + return this.urlChanges[this.urlChangeIndex].port; } get pathname() { - return this.urlChanges[0].pathname; + return this.urlChanges[this.urlChangeIndex].pathname; } get search() { - return this.urlChanges[0].search; + return this.urlChanges[this.urlChangeIndex].search; } get hash() { - return this.urlChanges[0].hash; + return this.urlChanges[this.urlChangeIndex].hash; } get state() { - return this.urlChanges[0].state; + return this.urlChanges[this.urlChangeIndex].state; } @@ -183,34 +184,59 @@ export class MockPlatformLocation implements PlatformLocation { replaceState(state: any, title: string, newUrl: string): void { const {pathname, search, state: parsedState, hash} = this.parseChanges(state, newUrl); - this.urlChanges[0] = {...this.urlChanges[0], pathname, search, hash, state: parsedState}; + this.urlChanges[this.urlChangeIndex] = + {...this.urlChanges[this.urlChangeIndex], pathname, search, hash, state: parsedState}; } pushState(state: any, title: string, newUrl: string): void { const {pathname, search, state: parsedState, hash} = this.parseChanges(state, newUrl); - this.urlChanges.unshift({...this.urlChanges[0], pathname, search, hash, state: parsedState}); + if (this.urlChangeIndex > 0) { + this.urlChanges.splice(this.urlChangeIndex + 1); + } + this.urlChanges.push( + {...this.urlChanges[this.urlChangeIndex], pathname, search, hash, state: parsedState}); + this.urlChangeIndex = this.urlChanges.length - 1; } forward(): void { - throw new Error('Not implemented'); + const oldUrl = this.url; + const oldHash = this.hash; + if (this.urlChangeIndex < this.urlChanges.length) { + this.urlChangeIndex++; + } + this.scheduleHashUpdate(oldHash, oldUrl); } back(): void { const oldUrl = this.url; const oldHash = this.hash; - this.urlChanges.shift(); - const newHash = this.hash; - - if (oldHash !== newHash) { - scheduleMicroTask( - () => this.hashUpdate.next( - {type: 'hashchange', state: null, oldUrl, newUrl: this.url} as LocationChangeEvent)); + if (this.urlChangeIndex > 0) { + this.urlChangeIndex--; } + this.scheduleHashUpdate(oldHash, oldUrl); + } + + historyGo(relativePosition: number = 0): void { + const oldUrl = this.url; + const oldHash = this.hash; + const nextPageIndex = this.urlChangeIndex + relativePosition; + if (nextPageIndex >= 0 && nextPageIndex < this.urlChanges.length) { + this.urlChangeIndex = nextPageIndex; + } + this.scheduleHashUpdate(oldHash, oldUrl); } getState(): unknown { return this.state; } + + private scheduleHashUpdate(oldHash: string, oldUrl: string) { + if (oldHash !== this.hash) { + scheduleMicroTask( + () => this.hashUpdate.next( + {type: 'hashchange', state: null, oldUrl, newUrl: this.url} as LocationChangeEvent)); + } + } } export function scheduleMicroTask(cb: () => any) { diff --git a/packages/compiler-cli/BUILD.bazel b/packages/compiler-cli/BUILD.bazel index fe4758ee91..a384332a08 100644 --- a/packages/compiler-cli/BUILD.bazel +++ b/packages/compiler-cli/BUILD.bazel @@ -1,6 +1,10 @@ -package(default_visibility = ["//visibility:public"]) +load("//tools:defaults.bzl", "api_golden_test", "pkg_npm", "ts_config", "ts_library") -load("//tools:defaults.bzl", "pkg_npm", "ts_api_guardian_test", "ts_config", "ts_library") +# Load ng_perf_flag explicitly from ng_perf.bzl as it's private API, and not exposed to other +# consumers of @angular/bazel. +load("//packages/bazel/src:ng_perf.bzl", "ng_perf_flag") + +package(default_visibility = ["//visibility:public"]) # Load ng_perf_flag explicitly from ng_perf.bzl as it's private API, and not exposed to other # consumers of @angular/bazel. @@ -33,6 +37,7 @@ ts_library( "//packages/compiler-cli/src/ngtsc/incremental", "//packages/compiler-cli/src/ngtsc/indexer", "//packages/compiler-cli/src/ngtsc/perf", + "//packages/compiler-cli/src/ngtsc/program_driver", "//packages/compiler-cli/src/ngtsc/reflection", "//packages/compiler-cli/src/ngtsc/shims", "//packages/compiler-cli/src/ngtsc/translator", @@ -41,7 +46,6 @@ ts_library( "@npm//@bazel/typescript", "@npm//@types/node", "@npm//chokidar", - "@npm//fs-extra", "@npm//minimist", "@npm//reflect-metadata", "@npm//tsickle", @@ -73,24 +77,30 @@ pkg_npm( ], ) -ts_api_guardian_test( +api_golden_test( name = "error_code_api", - actual = "angular/packages/compiler-cli/npm_package/src/ngtsc/diagnostics/src/error_code.d.ts", data = [ ":npm_package", "//goldens:public-api", ], - golden = "angular/goldens/public-api/compiler-cli/error_code.d.ts", + entry_point = "angular/packages/compiler-cli/npm_package/src/ngtsc/diagnostics/src/error_code.d.ts", + golden = "angular/goldens/public-api/compiler-cli/error_code.md", ) -ts_api_guardian_test( +api_golden_test( name = "compiler_options_api", - actual = "angular/packages/compiler-cli/npm_package/src/ngtsc/core/api/src/public_options.d.ts", data = [ ":npm_package", "//goldens:public-api", ], - golden = "angular/goldens/public-api/compiler-cli/compiler_options.d.ts", + entry_point = "angular/packages/compiler-cli/npm_package/src/ngtsc/core/api/src/public_options.d.ts", + golden = "angular/goldens/public-api/compiler-cli/compiler_options.md", +) + +# Controls whether the Ivy compiler produces performance traces as part of each build +ng_perf_flag( + name = "ng_perf", + build_setting_default = False, ) # Controls whether the Ivy compiler produces performance traces as part of each build diff --git a/packages/compiler-cli/integrationtest/BUILD.bazel b/packages/compiler-cli/integrationtest/BUILD.bazel index 90f5766c14..6738affeb2 100644 --- a/packages/compiler-cli/integrationtest/BUILD.bazel +++ b/packages/compiler-cli/integrationtest/BUILD.bazel @@ -31,7 +31,6 @@ nodejs_test( "@nodejs//:node", "@npm//domino", "@npm//chokidar", - "@npm//fs-extra", "@npm//source-map-support", "@npm//shelljs", "@npm//typescript", diff --git a/packages/compiler-cli/integrationtest/test_helpers.js b/packages/compiler-cli/integrationtest/test_helpers.js index 8a3c0d7630..c3dbb25c0f 100644 --- a/packages/compiler-cli/integrationtest/test_helpers.js +++ b/packages/compiler-cli/integrationtest/test_helpers.js @@ -46,7 +46,6 @@ const requiredNodeModules = { 'tslib': resolveNpmTreeArtifact('npm/node_modules/tslib'), 'domino': resolveNpmTreeArtifact('npm/node_modules/domino'), 'xhr2': resolveNpmTreeArtifact('npm/node_modules/xhr2'), - 'fs-extra': resolveNpmTreeArtifact('npm/node_modules/fs-extra'), // Fine grained dependencies which are used by the integration test Angular modules, and // need to be symlinked so that they can be resolved by NodeJS or NGC. diff --git a/packages/compiler-cli/linker/babel/index.ts b/packages/compiler-cli/linker/babel/index.ts index cf9450bf4b..6b6132e7fe 100644 --- a/packages/compiler-cli/linker/babel/index.ts +++ b/packages/compiler-cli/linker/babel/index.ts @@ -5,4 +5,7 @@ * 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 */ -export {createEs2015LinkerPlugin} from './src/es2015_linker_plugin'; \ No newline at end of file +import {defaultLinkerPlugin} from './src/babel_plugin'; + +export {createEs2015LinkerPlugin} from './src/es2015_linker_plugin'; +export default defaultLinkerPlugin; diff --git a/packages/compiler-cli/linker/babel/src/ast/babel_ast_factory.ts b/packages/compiler-cli/linker/babel/src/ast/babel_ast_factory.ts index 70f4b408af..50c4c56e25 100644 --- a/packages/compiler-cli/linker/babel/src/ast/babel_ast_factory.ts +++ b/packages/compiler-cli/linker/babel/src/ast/babel_ast_factory.ts @@ -39,6 +39,7 @@ export class BabelAstFactory implements AstFactory { switch (operator) { case '&&': case '||': + case '??': return t.logicalExpression(operator, leftOperand, rightOperand); default: return t.binaryExpression(operator, leftOperand, rightOperand); diff --git a/packages/compiler-cli/linker/babel/src/ast/babel_ast_host.ts b/packages/compiler-cli/linker/babel/src/ast/babel_ast_host.ts index 5f9426847a..39490b7f4b 100644 --- a/packages/compiler-cli/linker/babel/src/ast/babel_ast_host.ts +++ b/packages/compiler-cli/linker/babel/src/ast/babel_ast_host.ts @@ -38,11 +38,18 @@ export class BabelAstHost implements AstHost { return num.value; } - isBooleanLiteral = t.isBooleanLiteral; + isBooleanLiteral(bool: t.Expression): boolean { + return t.isBooleanLiteral(bool) || isMinifiedBooleanLiteral(bool); + } parseBooleanLiteral(bool: t.Expression): boolean { - assert(bool, t.isBooleanLiteral, 'a boolean literal'); - return bool.value; + if (t.isBooleanLiteral(bool)) { + return bool.value; + } else if (isMinifiedBooleanLiteral(bool)) { + return !bool.argument.value; + } else { + throw new FatalLinkerError(bool, 'Unsupported syntax, expected a boolean literal.'); + } } isArrayLiteral = t.isArrayExpression; @@ -165,3 +172,13 @@ type ArgumentType = t.CallExpression['arguments'][number]; function isNotSpreadArgument(arg: ArgumentType): arg is Exclude { return !t.isSpreadElement(arg); } + +type MinifiedBooleanLiteral = t.Expression&t.UnaryExpression&{argument: t.NumericLiteral}; + +/** + * Return true if the node is either `!0` or `!1`. + */ +function isMinifiedBooleanLiteral(node: t.Expression): node is MinifiedBooleanLiteral { + return t.isUnaryExpression(node) && node.prefix && node.operator === '!' && + t.isNumericLiteral(node.argument) && (node.argument.value === 0 || node.argument.value === 1); +} diff --git a/packages/compiler-cli/linker/babel/src/babel_plugin.ts b/packages/compiler-cli/linker/babel/src/babel_plugin.ts new file mode 100644 index 0000000000..68013ee0d1 --- /dev/null +++ b/packages/compiler-cli/linker/babel/src/babel_plugin.ts @@ -0,0 +1,39 @@ +/** + * @license + * 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 + */ +import {ConfigAPI, PluginObj} from '@babel/core'; + +import {NodeJSFileSystem} from '../../../src/ngtsc/file_system'; +import {ConsoleLogger, LogLevel} from '../../../src/ngtsc/logging'; +import {LinkerOptions} from '../../src/file_linker/linker_options'; + +import {createEs2015LinkerPlugin} from './es2015_linker_plugin'; + +/** + * This is the Babel plugin definition that is provided as a default export from the package, such + * that the plugin can be used using the module specifier of the package. This is the recommended + * way of integrating the Angular Linker into a build pipeline other than the Angular CLI. + * + * When the module specifier `@angular/compiler-cli/linker/babel` is used as a plugin in a Babel + * configuration, Babel invokes this function (by means of the default export) to create the plugin + * instance according to the provided options. + * + * The linker plugin that is created uses the native NodeJS filesystem APIs to interact with the + * filesystem. Any logging output is printed to the console. + * + * @param api Provides access to the Babel environment that is configuring this plugin. + * @param options The plugin options that have been configured. + */ +export function defaultLinkerPlugin(api: ConfigAPI, options: Partial): PluginObj { + api.assertVersion(7); + + return createEs2015LinkerPlugin({ + ...options, + fileSystem: new NodeJSFileSystem(), + logger: new ConsoleLogger(LogLevel.info), + }); +} diff --git a/packages/compiler-cli/linker/babel/src/es2015_linker_plugin.ts b/packages/compiler-cli/linker/babel/src/es2015_linker_plugin.ts index 17abf1ad33..11a647f0df 100644 --- a/packages/compiler-cli/linker/babel/src/es2015_linker_plugin.ts +++ b/packages/compiler-cli/linker/babel/src/es2015_linker_plugin.ts @@ -139,6 +139,8 @@ function getCalleeName(call: NodePath): string|null { return callee.name; } else if (t.isMemberExpression(callee) && t.isIdentifier(callee.property)) { return callee.property.name; + } else if (t.isMemberExpression(callee) && t.isStringLiteral(callee.property)) { + return callee.property.value; } else { return null; } diff --git a/packages/compiler-cli/linker/babel/test/ast/babel_ast_host_spec.ts b/packages/compiler-cli/linker/babel/test/ast/babel_ast_host_spec.ts index 81b4571e93..2540a6508d 100644 --- a/packages/compiler-cli/linker/babel/test/ast/babel_ast_host_spec.ts +++ b/packages/compiler-cli/linker/babel/test/ast/babel_ast_host_spec.ts @@ -96,6 +96,11 @@ describe('BabelAstHost', () => { expect(host.isBooleanLiteral(expr('false'))).toBe(true); }); + it('should return true if the expression is a minified boolean literal', () => { + expect(host.isBooleanLiteral(expr('!0'))).toBe(true); + expect(host.isBooleanLiteral(expr('!1'))).toBe(true); + }); + it('should return false if the expression is not a boolean literal', () => { expect(host.isBooleanLiteral(expr('"moo"'))).toBe(false); expect(host.isBooleanLiteral(expr('\'moo\''))).toBe(false); @@ -106,6 +111,8 @@ describe('BabelAstHost', () => { expect(host.isBooleanLiteral(expr('null'))).toBe(false); expect(host.isBooleanLiteral(expr('\'a\' + \'b\''))).toBe(false); expect(host.isBooleanLiteral(expr('\`moo\`'))).toBe(false); + expect(host.isBooleanLiteral(expr('!2'))).toBe(false); + expect(host.isBooleanLiteral(expr('~1'))).toBe(false); }); }); @@ -115,6 +122,11 @@ describe('BabelAstHost', () => { expect(host.parseBooleanLiteral(expr('false'))).toEqual(false); }); + it('should extract a minified boolean value', () => { + expect(host.parseBooleanLiteral(expr('!0'))).toEqual(true); + expect(host.parseBooleanLiteral(expr('!1'))).toEqual(false); + }); + it('should error if the value is not a boolean literal', () => { expect(() => host.parseBooleanLiteral(expr('"moo"'))) .toThrowError('Unsupported syntax, expected a boolean literal.'); diff --git a/packages/compiler-cli/linker/babel/test/babel_plugin_spec.ts b/packages/compiler-cli/linker/babel/test/babel_plugin_spec.ts new file mode 100644 index 0000000000..781cd3b868 --- /dev/null +++ b/packages/compiler-cli/linker/babel/test/babel_plugin_spec.ts @@ -0,0 +1,56 @@ +/** + * @license + * 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 + */ +import {transformSync} from '@babel/core'; + +describe('default babel plugin entry-point', () => { + it('should work as a Babel plugin using the module specifier', () => { + const result = transformSync( + ` + import * as i0 from "@angular/core"; + + export class MyMod {} + export class MyComponent {} + + MyMod.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, declarations: [MyComponent] }); + `, + { + plugins: [ + '@angular/compiler-cli/linker/babel', + ], + filename: 'test.js', + })!; + + expect(result).not.toBeNull(); + expect(result.code).not.toContain('ɵɵngDeclareNgModule'); + expect(result.code).toContain('i0.ɵɵdefineNgModule'); + expect(result.code).not.toMatch(/declarations:\s*\[MyComponent]/); + }); + + it('should be configurable', () => { + const result = transformSync( + ` + import * as i0 from "@angular/core"; + + export class MyMod {} + export class MyComponent {} + + MyMod.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, declarations: [MyComponent] }); + `, + { + plugins: [ + ['@angular/compiler-cli/linker/babel', {linkerJitMode: true}], + ], + filename: 'test.js', + })!; + + expect(result).not.toBeNull(); + expect(result.code).not.toContain('ɵɵngDeclareNgModule'); + expect(result.code).toContain('i0.ɵɵdefineNgModule'); + expect(result.code).toMatch(/declarations:\s*\[MyComponent]/); + }); +}); diff --git a/packages/compiler-cli/linker/babel/test/es2015_linker_plugin_spec.ts b/packages/compiler-cli/linker/babel/test/es2015_linker_plugin_spec.ts index 21a8b63402..92773e4a73 100644 --- a/packages/compiler-cli/linker/babel/test/es2015_linker_plugin_spec.ts +++ b/packages/compiler-cli/linker/babel/test/es2015_linker_plugin_spec.ts @@ -69,10 +69,11 @@ describe('createEs2015LinkerPlugin()', () => { transformSync( [ 'var core;', - `ɵɵngDeclareDirective({version: '0.0.0-PLACEHOLDER', ngImport: core, x: 1});`, - `ɵɵngDeclareComponent({version: '0.0.0-PLACEHOLDER', ngImport: core, foo: () => ɵɵngDeclareDirective({version: '0.0.0-PLACEHOLDER', ngImport: core, x: 2})});`, - `x.qux(() => ɵɵngDeclareDirective({version: '0.0.0-PLACEHOLDER', ngImport: core, x: 3}));`, + `ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core, x: 1});`, + `i0.ɵɵngDeclareComponent({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core, foo: () => ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core, x: 2})});`, + `x.qux(() => ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core, x: 3}));`, 'spread(...x);', + `i0['ɵɵngDeclareDirective']({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core, x: 4});`, ].join('\n'), { plugins: [createEs2015LinkerPlugin({fileSystem, logger})], @@ -81,13 +82,23 @@ describe('createEs2015LinkerPlugin()', () => { }); expect(humanizeLinkerCalls(linkSpy.calls)).toEqual([ - ['ɵɵngDeclareDirective', '{version:\'0.0.0-PLACEHOLDER\',ngImport:core,x:1}'], + [ + 'ɵɵngDeclareDirective', + '{minVersion:\'0.0.0-PLACEHOLDER\',version:\'0.0.0-PLACEHOLDER\',ngImport:core,x:1}' + ], [ 'ɵɵngDeclareComponent', - '{version:\'0.0.0-PLACEHOLDER\',ngImport:core,foo:()=>ɵɵngDeclareDirective({version:\'0.0.0-PLACEHOLDER\',ngImport:core,x:2})}' + '{minVersion:\'0.0.0-PLACEHOLDER\',version:\'0.0.0-PLACEHOLDER\',ngImport:core,foo:()=>ɵɵngDeclareDirective({minVersion:\'0.0.0-PLACEHOLDER\',version:\'0.0.0-PLACEHOLDER\',ngImport:core,x:2})}' ], // Note we do not process `x:2` declaration since it is nested within another declaration - ['ɵɵngDeclareDirective', '{version:\'0.0.0-PLACEHOLDER\',ngImport:core,x:3}'] + [ + 'ɵɵngDeclareDirective', + '{minVersion:\'0.0.0-PLACEHOLDER\',version:\'0.0.0-PLACEHOLDER\',ngImport:core,x:3}' + ], + [ + 'ɵɵngDeclareDirective', + '{minVersion:\'0.0.0-PLACEHOLDER\',version:\'0.0.0-PLACEHOLDER\',ngImport:core,x:4}' + ], ]); }); @@ -125,9 +136,9 @@ describe('createEs2015LinkerPlugin()', () => { [ 'import * as core from \'some-module\';', 'import {id} from \'other-module\';', - `ɵɵngDeclareDirective({version: '0.0.0-PLACEHOLDER', ngImport: core})`, - `ɵɵngDeclareDirective({version: '0.0.0-PLACEHOLDER', ngImport: core})`, - `ɵɵngDeclareDirective({version: '0.0.0-PLACEHOLDER', ngImport: core})`, + `ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core})`, + `ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core})`, + `ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core})`, ].join('\n'), { plugins: [createEs2015LinkerPlugin({fileSystem, logger})], @@ -149,9 +160,9 @@ describe('createEs2015LinkerPlugin()', () => { const result = transformSync( [ 'var core;', - `ɵɵngDeclareDirective({version: '0.0.0-PLACEHOLDER', ngImport: core})`, - `ɵɵngDeclareDirective({version: '0.0.0-PLACEHOLDER', ngImport: core})`, - `ɵɵngDeclareDirective({version: '0.0.0-PLACEHOLDER', ngImport: core})`, + `ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core})`, + `ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core})`, + `ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core})`, ].join('\n'), { plugins: [createEs2015LinkerPlugin({fileSystem, logger})], @@ -174,9 +185,10 @@ describe('createEs2015LinkerPlugin()', () => { const result = transformSync( [ 'function run(core) {', - ` ɵɵngDeclareDirective({version: '0.0.0-PLACEHOLDER', ngImport: core})`, - ` ɵɵngDeclareDirective({version: '0.0.0-PLACEHOLDER', ngImport: core})`, - ` ɵɵngDeclareDirective({version: '0.0.0-PLACEHOLDER', ngImport: core})`, '}' + ` ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core})`, + ` ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core})`, + ` ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core})`, + '}' ].join('\n'), { plugins: [createEs2015LinkerPlugin({fileSystem, logger})], @@ -198,9 +210,9 @@ describe('createEs2015LinkerPlugin()', () => { const result = transformSync( [ 'function run() {', - ` ɵɵngDeclareDirective({version: '0.0.0-PLACEHOLDER', ngImport: core})`, - ` ɵɵngDeclareDirective({version: '0.0.0-PLACEHOLDER', ngImport: core})`, - ` ɵɵngDeclareDirective({version: '0.0.0-PLACEHOLDER', ngImport: core})`, + ` ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core})`, + ` ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core})`, + ` ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core})`, '}', ].join('\n'), { @@ -226,7 +238,7 @@ describe('createEs2015LinkerPlugin()', () => { const plugin = createEs2015LinkerPlugin({fileSystem, logger}); const result = transformSync( [ - `ɵɵngDeclareDirective({version: '0.0.0-PLACEHOLDER', ngImport: core}); FOO;`, + `ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core}); FOO;`, ].join('\n'), { plugins: [ @@ -267,7 +279,7 @@ describe('createEs2015LinkerPlugin()', () => { const result = transformSync( [ 'import * as core from \'some-module\';', - `ɵɵngDeclareDirective({version: '0.0.0-PLACEHOLDER', ngImport: core})`, + `ɵɵngDeclareDirective({minVersion: '0.0.0-PLACEHOLDER', version: '0.0.0-PLACEHOLDER', ngImport: core})`, ].join('\n'), { plugins: [createEs2015LinkerPlugin({fileSystem, logger})], diff --git a/packages/compiler-cli/linker/src/ast/ast_host.ts b/packages/compiler-cli/linker/src/ast/ast_host.ts index 11907f6115..ff7a5a9222 100644 --- a/packages/compiler-cli/linker/src/ast/ast_host.ts +++ b/packages/compiler-cli/linker/src/ast/ast_host.ts @@ -36,11 +36,17 @@ export interface AstHost { parseNumericLiteral(num: TExpression): number; /** - * Return `true` if the given expression is a boolean literal, or false otherwise. + * Return `true` if the given expression can be considered a boolean literal, or false otherwise. + * + * Note that this should also cover the special case of some minified code where `true` and + * `false` are replaced by `!0` and `!1` respectively. */ isBooleanLiteral(node: TExpression): boolean; /** * Parse the boolean value from the given expression, or throw if it is not a boolean literal. + * + * Note that this should also cover the special case of some minified code where `true` and + * `false` are replaced by `!0` and `!1` respectively. */ parseBooleanLiteral(bool: TExpression): boolean; diff --git a/packages/compiler-cli/linker/src/ast/typescript/typescript_ast_host.ts b/packages/compiler-cli/linker/src/ast/typescript/typescript_ast_host.ts index f23223d0b8..9b6bb9069f 100644 --- a/packages/compiler-cli/linker/src/ast/typescript/typescript_ast_host.ts +++ b/packages/compiler-cli/linker/src/ast/typescript/typescript_ast_host.ts @@ -47,13 +47,18 @@ export class TypeScriptAstHost implements AstHost { return parseInt(num.text); } - isBooleanLiteral(node: ts.Expression): node is ts.FalseLiteral|ts.TrueLiteral { - return node.kind === ts.SyntaxKind.TrueKeyword || node.kind === ts.SyntaxKind.FalseKeyword; + isBooleanLiteral(node: ts.Expression): boolean { + return isBooleanLiteral(node) || isMinifiedBooleanLiteral(node); } parseBooleanLiteral(bool: ts.Expression): boolean { - assert(bool, this.isBooleanLiteral, 'a boolean literal'); - return bool.kind === ts.SyntaxKind.TrueKeyword; + if (isBooleanLiteral(bool)) { + return bool.kind === ts.SyntaxKind.TrueKeyword; + } else if (isMinifiedBooleanLiteral(bool)) { + return !(+bool.operand.text); + } else { + throw new FatalLinkerError(bool, 'Unsupported syntax, expected a boolean literal.'); + } } isArrayLiteral = ts.isArrayLiteralExpression; @@ -160,3 +165,20 @@ function isNotSpreadElement(e: ts.Expression|ts.SpreadElement): e is ts.Expressi function isPropertyName(e: ts.PropertyName): e is ts.Identifier|ts.StringLiteral|ts.NumericLiteral { return ts.isIdentifier(e) || ts.isStringLiteral(e) || ts.isNumericLiteral(e); } + +/** + * Return true if the node is either `true` or `false` literals. + */ +function isBooleanLiteral(node: ts.Expression): node is ts.TrueLiteral|ts.FalseLiteral { + return node.kind === ts.SyntaxKind.TrueKeyword || node.kind === ts.SyntaxKind.FalseKeyword; +} + +type MinifiedBooleanLiteral = ts.PrefixUnaryExpression&{operand: ts.NumericLiteral}; + +/** + * Return true if the node is either `!0` or `!1`. + */ +function isMinifiedBooleanLiteral(node: ts.Expression): node is MinifiedBooleanLiteral { + return ts.isPrefixUnaryExpression(node) && node.operator === ts.SyntaxKind.ExclamationToken && + ts.isNumericLiteral(node.operand) && (node.operand.text === '0' || node.operand.text === '1'); +} diff --git a/packages/compiler-cli/linker/src/file_linker/emit_scopes/iife_emit_scope.ts b/packages/compiler-cli/linker/src/file_linker/emit_scopes/iife_emit_scope.ts index d98484453c..0cca62a1f2 100644 --- a/packages/compiler-cli/linker/src/file_linker/emit_scopes/iife_emit_scope.ts +++ b/packages/compiler-cli/linker/src/file_linker/emit_scopes/iife_emit_scope.ts @@ -30,7 +30,7 @@ export class IifeEmitScope extends EmitScope extends EmitScope = [] as const; @@ -20,14 +20,15 @@ export const NO_STATEMENTS: Readonly = [] as const; * This class is responsible for linking all the partial declarations found in a single file. */ export class FileLinker { - private linkerSelector: PartialLinkerSelector; + private linkerSelector: PartialLinkerSelector; private emitScopes = new Map>(); constructor( private linkerEnvironment: LinkerEnvironment, sourceUrl: AbsoluteFsPath, code: string) { - this.linkerSelector = - new PartialLinkerSelector(this.linkerEnvironment, sourceUrl, code); + this.linkerSelector = new PartialLinkerSelector( + createLinkerMap(this.linkerEnvironment, sourceUrl, code), this.linkerEnvironment.logger, + this.linkerEnvironment.options.unknownDeclarationVersionHandling); } /** @@ -63,8 +64,9 @@ export class FileLinker { const ngImport = metaObj.getNode('ngImport'); const emitScope = this.getEmitScope(ngImport, declarationScope); + const minVersion = metaObj.getString('minVersion'); const version = metaObj.getString('version'); - const linker = this.linkerSelector.getLinker(declarationFn, version); + const linker = this.linkerSelector.getLinker(declarationFn, minVersion, version); const definition = linker.linkPartialDeclaration(emitScope.constantPool, metaObj); return emitScope.translateDefinition(definition); diff --git a/packages/compiler-cli/linker/src/file_linker/linker_environment.ts b/packages/compiler-cli/linker/src/file_linker/linker_environment.ts index 06c4a86d6e..c3477f3b7a 100644 --- a/packages/compiler-cli/linker/src/file_linker/linker_environment.ts +++ b/packages/compiler-cli/linker/src/file_linker/linker_environment.ts @@ -29,13 +29,10 @@ export class LinkerEnvironment { factory: AstFactory, options: Partial): LinkerEnvironment { return new LinkerEnvironment(fileSystem, logger, host, factory, { - enableI18nLegacyMessageIdFormat: options.enableI18nLegacyMessageIdFormat ?? - DEFAULT_LINKER_OPTIONS.enableI18nLegacyMessageIdFormat, - i18nNormalizeLineEndingsInICUs: options.i18nNormalizeLineEndingsInICUs ?? - DEFAULT_LINKER_OPTIONS.i18nNormalizeLineEndingsInICUs, - i18nUseExternalIds: options.i18nUseExternalIds ?? DEFAULT_LINKER_OPTIONS.i18nUseExternalIds, sourceMapping: options.sourceMapping ?? DEFAULT_LINKER_OPTIONS.sourceMapping, linkerJitMode: options.linkerJitMode ?? DEFAULT_LINKER_OPTIONS.linkerJitMode, + unknownDeclarationVersionHandling: options.unknownDeclarationVersionHandling ?? + DEFAULT_LINKER_OPTIONS.unknownDeclarationVersionHandling, }); } } diff --git a/packages/compiler-cli/linker/src/file_linker/linker_options.ts b/packages/compiler-cli/linker/src/file_linker/linker_options.ts index a11112291e..85945e00e5 100644 --- a/packages/compiler-cli/linker/src/file_linker/linker_options.ts +++ b/packages/compiler-cli/linker/src/file_linker/linker_options.ts @@ -10,24 +10,6 @@ * Options to configure the linking behavior. */ export interface LinkerOptions { - /** - * Whether to generate legacy i18n message ids. - * The default is `true`. - */ - enableI18nLegacyMessageIdFormat: boolean; - /** - * Whether to convert all line-endings in ICU expressions to `\n` characters. - * The default is `false`. - */ - i18nNormalizeLineEndingsInICUs: boolean; - - /** - * Whether translation variable name should contain external message id - * (used by Closure Compiler's output of `goog.getMsg` for transition period) - * The default is `false`. - */ - i18nUseExternalIds: boolean; - /** * Whether to use source-mapping to compute the original source for external templates. * The default is `true`. @@ -41,15 +23,27 @@ export interface LinkerOptions { * `exports`, etc, which are otherwise not needed. */ linkerJitMode: boolean; + + /** + * How to handle a situation where a partial declaration matches none of the supported + * partial-linker versions. + * + * - `error` - the version mismatch is a fatal error. + * - `warn` - a warning is sent to the logger but the most recent partial-linker + * will attempt to process the declaration anyway. + * - `ignore` - the most recent partial-linker will, silently, attempt to process + * the declaration. + * + * The default is `error`. + */ + unknownDeclarationVersionHandling: 'ignore'|'warn'|'error'; } /** * The default linker options to use if properties are not provided. */ export const DEFAULT_LINKER_OPTIONS: LinkerOptions = { - enableI18nLegacyMessageIdFormat: true, - i18nNormalizeLineEndingsInICUs: false, - i18nUseExternalIds: false, sourceMapping: true, linkerJitMode: false, + unknownDeclarationVersionHandling: 'error', }; diff --git a/packages/compiler-cli/linker/src/file_linker/partial_linkers/partial_class_metadata_linker_1.ts b/packages/compiler-cli/linker/src/file_linker/partial_linkers/partial_class_metadata_linker_1.ts new file mode 100644 index 0000000000..edd93ff6ac --- /dev/null +++ b/packages/compiler-cli/linker/src/file_linker/partial_linkers/partial_class_metadata_linker_1.ts @@ -0,0 +1,38 @@ +/** + * @license + * 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 + */ +import {compileClassMetadata, ConstantPool, R3ClassMetadata, R3DeclareClassMetadata, R3PartialDeclaration} from '@angular/compiler'; +import * as o from '@angular/compiler/src/output/output_ast'; + +import {AstObject} from '../../ast/ast_value'; + +import {PartialLinker} from './partial_linker'; + +/** + * A `PartialLinker` that is designed to process `ɵɵngDeclareClassMetadata()` call expressions. + */ +export class PartialClassMetadataLinkerVersion1 implements PartialLinker { + linkPartialDeclaration( + constantPool: ConstantPool, + metaObj: AstObject): o.Expression { + const meta = toR3ClassMetadata(metaObj); + return compileClassMetadata(meta); + } +} + +/** + * Derives the `R3ClassMetadata` structure from the AST object. + */ +export function toR3ClassMetadata( + metaObj: AstObject): R3ClassMetadata { + return { + type: metaObj.getOpaque('type'), + decorators: metaObj.getOpaque('decorators'), + ctorParameters: metaObj.has('ctorParameters') ? metaObj.getOpaque('ctorParameters') : null, + propDecorators: metaObj.has('propDecorators') ? metaObj.getOpaque('propDecorators') : null, + }; +} diff --git a/packages/compiler-cli/linker/src/file_linker/partial_linkers/partial_component_linker_1.ts b/packages/compiler-cli/linker/src/file_linker/partial_linkers/partial_component_linker_1.ts index d2d0d09f00..b2cd37eea9 100644 --- a/packages/compiler-cli/linker/src/file_linker/partial_linkers/partial_component_linker_1.ts +++ b/packages/compiler-cli/linker/src/file_linker/partial_linkers/partial_component_linker_1.ts @@ -14,24 +14,17 @@ import {Range} from '../../ast/ast_host'; import {AstObject, AstValue} from '../../ast/ast_value'; import {FatalLinkerError} from '../../fatal_linker_error'; import {GetSourceFileFn} from '../get_source_file'; -import {LinkerEnvironment} from '../linker_environment'; import {toR3DirectiveMeta} from './partial_directive_linker_1'; import {PartialLinker} from './partial_linker'; +import {extractForwardRef} from './util'; /** * A `PartialLinker` that is designed to process `ɵɵngDeclareComponent()` call expressions. */ export class PartialComponentLinkerVersion1 implements PartialLinker { - private readonly i18nNormalizeLineEndingsInICUs = - this.environment.options.i18nNormalizeLineEndingsInICUs; - private readonly enableI18nLegacyMessageIdFormat = - this.environment.options.enableI18nLegacyMessageIdFormat; - private readonly i18nUseExternalIds = this.environment.options.i18nUseExternalIds; - constructor( - private readonly environment: LinkerEnvironment, private readonly getSourceFile: GetSourceFileFn, private sourceUrl: AbsoluteFsPath, private code: string) {} @@ -53,18 +46,15 @@ export class PartialComponentLinkerVersion1 implements const isInline = metaObj.has('isInline') ? metaObj.getBoolean('isInline') : false; const templateInfo = this.getTemplateInfo(templateSource, isInline); - // We always normalize line endings if the template is inline. - const i18nNormalizeLineEndingsInICUs = isInline || this.i18nNormalizeLineEndingsInICUs; - const template = parseTemplate(templateInfo.code, templateInfo.sourceUrl, { escapedString: templateInfo.isEscaped, interpolationConfig: interpolation, range: templateInfo.range, - enableI18nLegacyMessageIdFormat: this.enableI18nLegacyMessageIdFormat, + enableI18nLegacyMessageIdFormat: false, preserveWhitespaces: metaObj.has('preserveWhitespaces') ? metaObj.getBoolean('preserveWhitespaces') : false, - i18nNormalizeLineEndingsInICUs, - isInline, + // We normalize line endings if the template is was inline. + i18nNormalizeLineEndingsInICUs: isInline, }); if (template.errors !== null) { const errors = template.errors.map(err => err.toString()).join('\n'); @@ -81,10 +71,8 @@ export class PartialComponentLinkerVersion1 implements const type = directiveExpr.getValue('type'); const selector = directiveExpr.getString('selector'); - let typeExpr = type.getOpaque(); - const forwardRefType = extractForwardRef(type); - if (forwardRefType !== null) { - typeExpr = forwardRefType; + const {expression: typeExpr, isForwardRef} = extractForwardRef(type); + if (isForwardRef) { declarationListEmitMode = DeclarationListEmitMode.Closure; } @@ -115,13 +103,11 @@ export class PartialComponentLinkerVersion1 implements let pipes = new Map(); if (metaObj.has('pipes')) { pipes = metaObj.getObject('pipes').toMap(pipe => { - const forwardRefType = extractForwardRef(pipe); - if (forwardRefType !== null) { + const {expression: pipeType, isForwardRef} = extractForwardRef(pipe); + if (isForwardRef) { declarationListEmitMode = DeclarationListEmitMode.Closure; - return forwardRefType; - } else { - return pipe.getOpaque(); } + return pipeType; }); } @@ -144,7 +130,7 @@ export class PartialComponentLinkerVersion1 implements ChangeDetectionStrategy.Default, animations: metaObj.has('animations') ? metaObj.getOpaque('animations') : null, relativeContextFilePath: this.sourceUrl, - i18nUseExternalIds: this.i18nUseExternalIds, + i18nUseExternalIds: false, pipes, directives, }; @@ -277,35 +263,3 @@ function parseChangeDetectionStrategy( } return enumValue; } - -/** - * Extract the type reference expression from a `forwardRef` function call. For example, the - * expression `forwardRef(function() { return FooDir; })` returns `FooDir`. Note that this - * expression is required to be wrapped in a closure, as otherwise the forward reference would be - * resolved before initialization. - */ -function extractForwardRef(expr: AstValue): - o.WrappedNodeExpr|null { - if (!expr.isCallExpression()) { - return null; - } - - const callee = expr.getCallee(); - if (callee.getSymbolName() !== 'forwardRef') { - throw new FatalLinkerError( - callee.expression, 'Unsupported directive type, expected forwardRef or a type reference'); - } - - const args = expr.getArguments(); - if (args.length !== 1) { - throw new FatalLinkerError(expr, 'Unsupported forwardRef call, expected a single argument'); - } - - const wrapperFn = args[0] as AstValue; - if (!wrapperFn.isFunction()) { - throw new FatalLinkerError( - wrapperFn, 'Unsupported forwardRef call, expected a function argument'); - } - - return wrapperFn.getFunctionReturnValue().getOpaque(); -} diff --git a/packages/compiler-cli/linker/src/file_linker/partial_linkers/partial_factory_linker_1.ts b/packages/compiler-cli/linker/src/file_linker/partial_linkers/partial_factory_linker_1.ts index b8b8d375a2..a2eb3c4e52 100644 --- a/packages/compiler-cli/linker/src/file_linker/partial_linkers/partial_factory_linker_1.ts +++ b/packages/compiler-cli/linker/src/file_linker/partial_linkers/partial_factory_linker_1.ts @@ -5,14 +5,14 @@ * 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 */ -import {compileFactoryFunction, ConstantPool, FactoryTarget, R3DeclareDependencyMetadata, R3DeclareFactoryMetadata, R3DependencyMetadata, R3FactoryMetadata, R3PartialDeclaration} from '@angular/compiler'; +import {compileFactoryFunction, ConstantPool, FactoryTarget, R3DeclareFactoryMetadata, R3DependencyMetadata, R3FactoryMetadata, R3PartialDeclaration} from '@angular/compiler'; import * as o from '@angular/compiler/src/output/output_ast'; import {AstObject} from '../../ast/ast_value'; import {FatalLinkerError} from '../../fatal_linker_error'; import {PartialLinker} from './partial_linker'; -import {parseEnum, wrapReference} from './util'; +import {getDependency, parseEnum, wrapReference} from './util'; /** * A `PartialLinker` that is designed to process `ɵɵngDeclareFactory()` call expressions. @@ -45,11 +45,11 @@ export function toR3FactoryMeta( internalType: metaObj.getOpaque('type'), typeArgumentCount: 0, target: parseEnum(metaObj.getValue('target'), FactoryTarget), - deps: getDeps(metaObj, 'deps'), + deps: getDependencies(metaObj, 'deps'), }; } -function getDeps( +function getDependencies( metaObj: AstObject, propName: keyof R3DeclareFactoryMetadata): R3DependencyMetadata[]|null|'invalid' { if (!metaObj.has(propName)) { @@ -57,32 +57,10 @@ function getDeps( } const deps = metaObj.getValue(propName); if (deps.isArray()) { - return deps.getArray().map(dep => getDep(dep.getObject())); + return deps.getArray().map(dep => getDependency(dep.getObject())); } if (deps.isString()) { return 'invalid'; } return null; } - -function getDep(depObj: AstObject): - R3DependencyMetadata { - const isAttribute = depObj.has('attribute') && depObj.getBoolean('attribute'); - const token = depObj.getOpaque('token'); - // Normally `attribute` is a string literal and so its `attributeNameType` is the same string - // literal. If the `attribute` is some other expression, the `attributeNameType` would be the - // `unknown` type. It is not possible to generate this when linking, since it only deals with JS - // and not typings. When linking the existence of the `attributeNameType` only acts as a marker to - // change the injection instruction that is generated, so we just pass the literal string - // `"unknown"`. - const attributeNameType = isAttribute ? o.literal('unknown') : null; - const dep: R3DependencyMetadata = { - token, - attributeNameType, - host: depObj.has('host') && depObj.getBoolean('host'), - optional: depObj.has('optional') && depObj.getBoolean('optional'), - self: depObj.has('self') && depObj.getBoolean('self'), - skipSelf: depObj.has('skipSelf') && depObj.getBoolean('skipSelf'), - }; - return dep; -} diff --git a/packages/compiler-cli/linker/src/file_linker/partial_linkers/partial_injectable_linker_1.ts b/packages/compiler-cli/linker/src/file_linker/partial_linkers/partial_injectable_linker_1.ts new file mode 100644 index 0000000000..33510cfe54 --- /dev/null +++ b/packages/compiler-cli/linker/src/file_linker/partial_linkers/partial_injectable_linker_1.ts @@ -0,0 +1,69 @@ +/** + * @license + * 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 + */ +import {compileInjectable, ConstantPool, createR3ProviderExpression, R3DeclareInjectableMetadata, R3InjectableMetadata, R3PartialDeclaration} from '@angular/compiler'; +import * as o from '@angular/compiler/src/output/output_ast'; + +import {AstObject} from '../../ast/ast_value'; +import {FatalLinkerError} from '../../fatal_linker_error'; + +import {PartialLinker} from './partial_linker'; +import {extractForwardRef, getDependency, wrapReference} from './util'; + +/** + * A `PartialLinker` that is designed to process `ɵɵngDeclareInjectable()` call expressions. + */ +export class PartialInjectableLinkerVersion1 implements PartialLinker { + linkPartialDeclaration( + constantPool: ConstantPool, + metaObj: AstObject): o.Expression { + const meta = toR3InjectableMeta(metaObj); + const def = compileInjectable(meta, /* resolveForwardRefs */ false); + return def.expression; + } +} + +/** + * Derives the `R3InjectableMetadata` structure from the AST object. + */ +export function toR3InjectableMeta( + metaObj: AstObject): R3InjectableMetadata { + const typeExpr = metaObj.getValue('type'); + const typeName = typeExpr.getSymbolName(); + if (typeName === null) { + throw new FatalLinkerError( + typeExpr.expression, 'Unsupported type, its name could not be determined'); + } + + const meta: R3InjectableMetadata = { + name: typeName, + type: wrapReference(typeExpr.getOpaque()), + internalType: typeExpr.getOpaque(), + typeArgumentCount: 0, + providedIn: metaObj.has('providedIn') ? extractForwardRef(metaObj.getValue('providedIn')) : + createR3ProviderExpression(o.literal(null), false), + }; + + if (metaObj.has('useClass')) { + meta.useClass = extractForwardRef(metaObj.getValue('useClass')); + } + if (metaObj.has('useFactory')) { + meta.useFactory = metaObj.getOpaque('useFactory'); + } + if (metaObj.has('useExisting')) { + meta.useExisting = extractForwardRef(metaObj.getValue('useExisting')); + } + if (metaObj.has('useValue')) { + meta.useValue = extractForwardRef(metaObj.getValue('useValue')); + } + + if (metaObj.has('deps')) { + meta.deps = metaObj.getArray('deps').map(dep => getDependency(dep.getObject())); + } + + return meta; +} diff --git a/packages/compiler-cli/linker/src/file_linker/partial_linkers/partial_linker_selector.ts b/packages/compiler-cli/linker/src/file_linker/partial_linkers/partial_linker_selector.ts index 3238d99bbf..ebf702694e 100644 --- a/packages/compiler-cli/linker/src/file_linker/partial_linkers/partial_linker_selector.ts +++ b/packages/compiler-cli/linker/src/file_linker/partial_linkers/partial_linker_selector.ts @@ -5,59 +5,126 @@ * 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 */ -import {satisfies} from 'semver'; +import {intersects, Range, SemVer} from 'semver'; import {AbsoluteFsPath} from '../../../../src/ngtsc/file_system'; +import {Logger} from '../../../../src/ngtsc/logging'; import {createGetSourceFile} from '../get_source_file'; import {LinkerEnvironment} from '../linker_environment'; +import {PartialClassMetadataLinkerVersion1} from './partial_class_metadata_linker_1'; import {PartialComponentLinkerVersion1} from './partial_component_linker_1'; import {PartialDirectiveLinkerVersion1} from './partial_directive_linker_1'; import {PartialFactoryLinkerVersion1} from './partial_factory_linker_1'; +import {PartialInjectableLinkerVersion1} from './partial_injectable_linker_1'; import {PartialInjectorLinkerVersion1} from './partial_injector_linker_1'; import {PartialLinker} from './partial_linker'; import {PartialNgModuleLinkerVersion1} from './partial_ng_module_linker_1'; import {PartialPipeLinkerVersion1} from './partial_pipe_linker_1'; export const ɵɵngDeclareDirective = 'ɵɵngDeclareDirective'; +export const ɵɵngDeclareClassMetadata = 'ɵɵngDeclareClassMetadata'; export const ɵɵngDeclareComponent = 'ɵɵngDeclareComponent'; export const ɵɵngDeclareFactory = 'ɵɵngDeclareFactory'; +export const ɵɵngDeclareInjectable = 'ɵɵngDeclareInjectable'; export const ɵɵngDeclareInjector = 'ɵɵngDeclareInjector'; export const ɵɵngDeclareNgModule = 'ɵɵngDeclareNgModule'; export const ɵɵngDeclarePipe = 'ɵɵngDeclarePipe'; export const declarationFunctions = [ - ɵɵngDeclareDirective, ɵɵngDeclareComponent, ɵɵngDeclareFactory, ɵɵngDeclareInjector, - ɵɵngDeclareNgModule, ɵɵngDeclarePipe + ɵɵngDeclareDirective, ɵɵngDeclareClassMetadata, ɵɵngDeclareComponent, ɵɵngDeclareFactory, + ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe ]; -interface LinkerRange { - range: string; +export interface LinkerRange { + range: Range; linker: PartialLinker; } +/** + * Create a mapping between partial-declaration call name and collections of partial-linkers. + * + * Each collection of partial-linkers will contain a version range that will be matched against the + * `minVersion` of the partial-declaration. (Additionally, a partial-linker may modify its behaviour + * internally based on the `version` property of the declaration.) + * + * Versions should be sorted in ascending order. The most recent partial-linker will be used as the + * fallback linker if none of the other version ranges match. For example: + * + * ``` + * {range: getRange('<=', '13.0.0'), linker PartialDirectiveLinkerVersion2(...) }, + * {range: getRange('<=', '13.1.0'), linker PartialDirectiveLinkerVersion3(...) }, + * {range: getRange('<=', '14.0.0'), linker PartialDirectiveLinkerVersion4(...) }, + * {range: LATEST_VERSION_RANGE, linker: new PartialDirectiveLinkerVersion1(...)}, + * ``` + * + * If the `LATEST_VERSION_RANGE` is `<=15.0.0` then the fallback linker would be + * `PartialDirectiveLinkerVersion1` for any version greater than `15.0.0`. + * + * When there is a change to a declaration interface that requires a new partial-linker, the + * `minVersion` of the partial-declaration should be updated, the new linker implementation should + * be added to the end of the collection, and the version of the previous linker should be updated. + */ +export function createLinkerMap( + environment: LinkerEnvironment, sourceUrl: AbsoluteFsPath, + code: string): Map[]> { + const linkers = new Map[]>(); + const LATEST_VERSION_RANGE = getRange('<=', '0.0.0-PLACEHOLDER'); + + linkers.set(ɵɵngDeclareDirective, [ + {range: LATEST_VERSION_RANGE, linker: new PartialDirectiveLinkerVersion1(sourceUrl, code)}, + ]); + linkers.set(ɵɵngDeclareClassMetadata, [ + {range: LATEST_VERSION_RANGE, linker: new PartialClassMetadataLinkerVersion1()}, + ]); + linkers.set(ɵɵngDeclareComponent, [ + { + range: LATEST_VERSION_RANGE, + linker: new PartialComponentLinkerVersion1( + createGetSourceFile(sourceUrl, code, environment.sourceFileLoader), sourceUrl, code) + }, + ]); + linkers.set(ɵɵngDeclareFactory, [ + {range: LATEST_VERSION_RANGE, linker: new PartialFactoryLinkerVersion1()}, + ]); + linkers.set(ɵɵngDeclareInjectable, [ + {range: LATEST_VERSION_RANGE, linker: new PartialInjectableLinkerVersion1()}, + ]); + linkers.set(ɵɵngDeclareInjector, [ + {range: LATEST_VERSION_RANGE, linker: new PartialInjectorLinkerVersion1()}, + ]); + linkers.set(ɵɵngDeclareNgModule, [ + { + range: LATEST_VERSION_RANGE, + linker: new PartialNgModuleLinkerVersion1(environment.options.linkerJitMode) + }, + ]); + linkers.set(ɵɵngDeclarePipe, [ + {range: LATEST_VERSION_RANGE, linker: new PartialPipeLinkerVersion1()}, + ]); + + return linkers; +} + /** * A helper that selects the appropriate `PartialLinker` for a given declaration. * * The selection is made from a database of linker instances, chosen if their given semver range - * satisfies the version found in the code to be linked. + * satisfies the `minVersion` of the partial declaration to be linked. * - * Note that the ranges are checked in order, and the first matching range will be selected, so - * ranges should be most restrictive first. + * Note that the ranges are checked in order, and the first matching range will be selected. So + * ranges should be most restrictive first. In practice, since ranges are always `<=X.Y.Z` this + * means that ranges should be in ascending order. * - * Also, ranges are matched to include "pre-releases", therefore if the range is `>=11.1.0-next.1` - * then this includes `11.1.0-next.2` and also `12.0.0-next.1`. - * - * Finally, note that we always start with the current version (i.e. `0.0.0-PLACEHOLDER`). This - * allows the linker to work on local builds effectively. + * Note that any "pre-release" versions are stripped from ranges. Therefore if a `minVersion` is + * `11.1.0-next.1` then this would match `11.1.0-next.2` and also `12.0.0-next.1`. (This is + * different to standard semver range checking, where pre-release versions do not cross full version + * boundaries.) */ -export class PartialLinkerSelector { - private readonly linkers: Map[]>; - +export class PartialLinkerSelector { constructor( - environment: LinkerEnvironment, sourceUrl: AbsoluteFsPath, - code: string) { - this.linkers = this.createLinkerMap(environment, sourceUrl, code); - } + private readonly linkers: Map[]>, + private readonly logger: Logger, + private readonly unknownDeclarationVersionHandling: 'ignore'|'warn'|'error') {} /** * Returns true if there are `PartialLinker` classes that can handle functions with this name. @@ -70,59 +137,55 @@ export class PartialLinkerSelector { * Returns the `PartialLinker` that can handle functions with the given name and version. * Throws an error if there is none. */ - getLinker(functionName: string, version: string): PartialLinker { + getLinker(functionName: string, minVersion: string, version: string): PartialLinker { if (!this.linkers.has(functionName)) { throw new Error(`Unknown partial declaration function ${functionName}.`); } - const versions = this.linkers.get(functionName)!; - for (const {range, linker} of versions) { - if (satisfies(version, range, {includePrerelease: true})) { + const linkerRanges = this.linkers.get(functionName)!; + + if (version === '0.0.0-PLACEHOLDER') { + // Special case if the `version` is the same as the current compiler version. + // This helps with compliance tests where the version placeholders have not been replaced. + return linkerRanges[linkerRanges.length - 1].linker; + } + + const declarationRange = getRange('>=', minVersion); + for (const {range: linkerRange, linker} of linkerRanges) { + if (intersects(declarationRange, linkerRange)) { return linker; } } - throw new Error( - `Unsupported partial declaration version ${version} for ${functionName}.\n` + - 'Valid version ranges are:\n' + versions.map(v => ` - ${v.range}`).join('\n')); - } - private createLinkerMap( - environment: LinkerEnvironment, sourceUrl: AbsoluteFsPath, - code: string): Map[]> { - const partialDirectiveLinkerVersion1 = new PartialDirectiveLinkerVersion1(sourceUrl, code); - const partialComponentLinkerVersion1 = new PartialComponentLinkerVersion1( - environment, createGetSourceFile(sourceUrl, code, environment.sourceFileLoader), sourceUrl, - code); - const partialFactoryLinkerVersion1 = new PartialFactoryLinkerVersion1(); - const partialInjectorLinkerVersion1 = new PartialInjectorLinkerVersion1(); - const partialNgModuleLinkerVersion1 = - new PartialNgModuleLinkerVersion1(environment.options.linkerJitMode); - const partialPipeLinkerVersion1 = new PartialPipeLinkerVersion1(); + const message = + `This application depends upon a library published using Angular version ${version}, ` + + `which requires Angular version ${minVersion} or newer to work correctly.\n` + + `Consider upgrading your application to use a more recent version of Angular.`; - const linkers = new Map[]>(); - linkers.set(ɵɵngDeclareDirective, [ - {range: '0.0.0-PLACEHOLDER', linker: partialDirectiveLinkerVersion1}, - {range: '>=11.1.0-next.1', linker: partialDirectiveLinkerVersion1}, - ]); - linkers.set(ɵɵngDeclareComponent, [ - {range: '0.0.0-PLACEHOLDER', linker: partialComponentLinkerVersion1}, - {range: '>=11.1.0-next.1', linker: partialComponentLinkerVersion1}, - ]); - linkers.set(ɵɵngDeclareFactory, [ - {range: '0.0.0-PLACEHOLDER', linker: partialFactoryLinkerVersion1}, - {range: '>=11.1.0-next.1', linker: partialFactoryLinkerVersion1}, - ]); - linkers.set(ɵɵngDeclareInjector, [ - {range: '0.0.0-PLACEHOLDER', linker: partialInjectorLinkerVersion1}, - {range: '>=11.1.0-next.1', linker: partialInjectorLinkerVersion1}, - ]); - linkers.set(ɵɵngDeclareNgModule, [ - {range: '0.0.0-PLACEHOLDER', linker: partialNgModuleLinkerVersion1}, - {range: '>=11.1.0-next.1', linker: partialNgModuleLinkerVersion1}, - ]); - linkers.set(ɵɵngDeclarePipe, [ - {range: '0.0.0-PLACEHOLDER', linker: partialPipeLinkerVersion1}, - {range: '>=11.1.0-next.1', linker: partialPipeLinkerVersion1}, - ]); - return linkers; + if (this.unknownDeclarationVersionHandling === 'error') { + throw new Error(message); + } else if (this.unknownDeclarationVersionHandling === 'warn') { + this.logger.warn(`${message}\nAttempting to continue using this version of Angular.`); + } + + // No linker was matched for this declaration, so just use the most recent one. + return linkerRanges[linkerRanges.length - 1].linker; } } + +/** + * Compute a semver Range from the `version` and comparator. + * + * The range is computed as any version greater/less than or equal to the given `versionStr` + * depending upon the `comparator` (ignoring any prerelease versions). + * + * @param comparator a string that determines whether the version specifies a minimum or a maximum + * range. + * @param versionStr the version given in the partial declaration + * @returns A semver range for the provided `version` and comparator. + */ +function getRange(comparator: '<='|'>=', versionStr: string): Range { + const version = new SemVer(versionStr); + // Wipe out any prerelease versions + version.prerelease = []; + return new Range(`${comparator}${version.format()}`); +} diff --git a/packages/compiler-cli/linker/src/file_linker/partial_linkers/util.ts b/packages/compiler-cli/linker/src/file_linker/partial_linkers/util.ts index 7c8bb083e8..bf0f1efd0f 100644 --- a/packages/compiler-cli/linker/src/file_linker/partial_linkers/util.ts +++ b/packages/compiler-cli/linker/src/file_linker/partial_linkers/util.ts @@ -5,9 +5,10 @@ * 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 */ -import {R3Reference} from '@angular/compiler'; +import {createR3ProviderExpression, R3DeclareDependencyMetadata, R3DependencyMetadata, R3ProviderExpression, R3Reference} from '@angular/compiler'; import * as o from '@angular/compiler/src/output/output_ast'; -import {AstValue} from '../../ast/ast_value'; + +import {AstObject, AstValue} from '../../ast/ast_value'; import {FatalLinkerError} from '../../fatal_linker_error'; export function wrapReference(wrapped: o.WrappedNodeExpr): R3Reference { @@ -29,3 +30,66 @@ export function parseEnum( } return enumValue; } + +/** + * Parse a dependency structure from an AST object. + */ +export function getDependency( + depObj: AstObject): R3DependencyMetadata { + const isAttribute = depObj.has('attribute') && depObj.getBoolean('attribute'); + const token = depObj.getOpaque('token'); + // Normally `attribute` is a string literal and so its `attributeNameType` is the same string + // literal. If the `attribute` is some other expression, the `attributeNameType` would be the + // `unknown` type. It is not possible to generate this when linking, since it only deals with JS + // and not typings. When linking the existence of the `attributeNameType` only acts as a marker to + // change the injection instruction that is generated, so we just pass the literal string + // `"unknown"`. + const attributeNameType = isAttribute ? o.literal('unknown') : null; + return { + token, + attributeNameType, + host: depObj.has('host') && depObj.getBoolean('host'), + optional: depObj.has('optional') && depObj.getBoolean('optional'), + self: depObj.has('self') && depObj.getBoolean('self'), + skipSelf: depObj.has('skipSelf') && depObj.getBoolean('skipSelf'), + }; +} + + +/** + * Return an `R3ProviderExpression` that represents either the extracted type reference expression + * from a `forwardRef` function call, or the type itself. + * + * For example, the expression `forwardRef(function() { return FooDir; })` returns `FooDir`. Note + * that this expression is required to be wrapped in a closure, as otherwise the forward reference + * would be resolved before initialization. + * + * If there is no forwardRef call expression then we just return the opaque type. + */ +export function extractForwardRef(expr: AstValue): + R3ProviderExpression> { + if (!expr.isCallExpression()) { + return createR3ProviderExpression(expr.getOpaque(), /* isForwardRef */ false); + } + + const callee = expr.getCallee(); + if (callee.getSymbolName() !== 'forwardRef') { + throw new FatalLinkerError( + callee.expression, + 'Unsupported expression, expected a `forwardRef()` call or a type reference'); + } + + const args = expr.getArguments(); + if (args.length !== 1) { + throw new FatalLinkerError( + expr, 'Unsupported `forwardRef(fn)` call, expected a single argument'); + } + + const wrapperFn = args[0] as AstValue; + if (!wrapperFn.isFunction()) { + throw new FatalLinkerError( + wrapperFn, 'Unsupported `forwardRef(fn)` call, expected its argument to be a function'); + } + + return createR3ProviderExpression(wrapperFn.getFunctionReturnValue().getOpaque(), true); +} diff --git a/packages/compiler-cli/linker/test/BUILD.bazel b/packages/compiler-cli/linker/test/BUILD.bazel index e917f02c74..c575973314 100644 --- a/packages/compiler-cli/linker/test/BUILD.bazel +++ b/packages/compiler-cli/linker/test/BUILD.bazel @@ -16,6 +16,8 @@ ts_library( "//packages/compiler-cli/src/ngtsc/file_system/testing", "//packages/compiler-cli/src/ngtsc/logging/testing", "//packages/compiler-cli/src/ngtsc/translator", + "@npm//@types/semver", + "@npm//semver", "@npm//typescript", ], ) diff --git a/packages/compiler-cli/linker/test/ast/typescript/typescript_ast_host_spec.ts b/packages/compiler-cli/linker/test/ast/typescript/typescript_ast_host_spec.ts index c904b50a4c..1b840eee42 100644 --- a/packages/compiler-cli/linker/test/ast/typescript/typescript_ast_host_spec.ts +++ b/packages/compiler-cli/linker/test/ast/typescript/typescript_ast_host_spec.ts @@ -94,6 +94,11 @@ describe('TypeScriptAstHost', () => { expect(host.isBooleanLiteral(expr('false'))).toBe(true); }); + it('should return true if the expression is a minified boolean literal', () => { + expect(host.isBooleanLiteral(expr('!0'))).toBe(true); + expect(host.isBooleanLiteral(expr('!1'))).toBe(true); + }); + it('should return false if the expression is not a boolean literal', () => { expect(host.isBooleanLiteral(expr('"moo"'))).toBe(false); expect(host.isBooleanLiteral(expr('\'moo\''))).toBe(false); @@ -104,6 +109,8 @@ describe('TypeScriptAstHost', () => { expect(host.isBooleanLiteral(expr('null'))).toBe(false); expect(host.isBooleanLiteral(expr('\'a\' + \'b\''))).toBe(false); expect(host.isBooleanLiteral(expr('\`moo\`'))).toBe(false); + expect(host.isBooleanLiteral(expr('!2'))).toBe(false); + expect(host.isBooleanLiteral(expr('~1'))).toBe(false); }); }); @@ -113,6 +120,11 @@ describe('TypeScriptAstHost', () => { expect(host.parseBooleanLiteral(expr('false'))).toEqual(false); }); + it('should extract a minified boolean value', () => { + expect(host.parseBooleanLiteral(expr('!0'))).toEqual(true); + expect(host.parseBooleanLiteral(expr('!1'))).toEqual(false); + }); + it('should error if the value is not a boolean literal', () => { expect(() => host.parseBooleanLiteral(expr('"moo"'))) .toThrowError('Unsupported syntax, expected a boolean literal.'); diff --git a/packages/compiler-cli/linker/test/file_linker/file_linker_spec.ts b/packages/compiler-cli/linker/test/file_linker/file_linker_spec.ts index cb684a8edc..40a9a0bd7a 100644 --- a/packages/compiler-cli/linker/test/file_linker/file_linker_spec.ts +++ b/packages/compiler-cli/linker/test/file_linker/file_linker_spec.ts @@ -44,6 +44,7 @@ describe('FileLinker', () => { const version = factory.createLiteral('0.0.0-PLACEHOLDER'); const ngImport = factory.createIdentifier('core'); const declarationArg = factory.createObjectLiteral([ + {propertyName: 'minVersion', quoted: false, value: version}, {propertyName: 'version', quoted: false, value: version}, {propertyName: 'ngImport', quoted: false, value: ngImport}, ]); @@ -53,10 +54,26 @@ describe('FileLinker', () => { .toThrowError('Unknown partial declaration function foo.'); }); - it('should throw an error if the metadata object does not have a `version` property', () => { + it('should throw an error if the metadata object does not have a `minVersion` property', () => { const {fileLinker} = createFileLinker(); + const version = factory.createLiteral('0.0.0-PLACEHOLDER'); const ngImport = factory.createIdentifier('core'); const declarationArg = factory.createObjectLiteral([ + {propertyName: 'version', quoted: false, value: version}, + {propertyName: 'ngImport', quoted: false, value: ngImport}, + ]); + expect( + () => fileLinker.linkPartialDeclaration( + 'ɵɵngDeclareDirective', [declarationArg], new MockDeclarationScope())) + .toThrowError(`Expected property 'minVersion' to be present.`); + }); + + it('should throw an error if the metadata object does not have a `version` property', () => { + const {fileLinker} = createFileLinker(); + const version = factory.createLiteral('0.0.0-PLACEHOLDER'); + const ngImport = factory.createIdentifier('core'); + const declarationArg = factory.createObjectLiteral([ + {propertyName: 'minVersion', quoted: false, value: version}, {propertyName: 'ngImport', quoted: false, value: ngImport}, ]); expect( @@ -67,9 +84,10 @@ describe('FileLinker', () => { it('should throw an error if the metadata object does not have a `ngImport` property', () => { const {fileLinker} = createFileLinker(); - const ngImport = factory.createIdentifier('core'); + const version = factory.createLiteral('0.0.0-PLACEHOLDER'); const declarationArg = factory.createObjectLiteral([ - {propertyName: 'version', quoted: false, value: ngImport}, + {propertyName: 'minVersion', quoted: false, value: version}, + {propertyName: 'version', quoted: false, value: version}, ]); expect( () => fileLinker.linkPartialDeclaration( @@ -86,6 +104,7 @@ describe('FileLinker', () => { const version = factory.createLiteral('0.0.0-PLACEHOLDER'); const declarationArg = factory.createObjectLiteral([ {propertyName: 'ngImport', quoted: false, value: ngImport}, + {propertyName: 'minVersion', quoted: false, value: version}, {propertyName: 'version', quoted: false, value: version}, ]); @@ -107,6 +126,11 @@ describe('FileLinker', () => { // constant statements. const declarationArg = factory.createObjectLiteral([ {propertyName: 'ngImport', quoted: false, value: factory.createIdentifier('core')}, + { + propertyName: 'minVersion', + quoted: false, + value: factory.createLiteral('0.0.0-PLACEHOLDER') + }, {propertyName: 'version', quoted: false, value: factory.createLiteral('0.0.0-PLACEHOLDER')}, ]); @@ -130,6 +154,11 @@ describe('FileLinker', () => { // statements to be emitted in an IIFE rather than added to the shared constant scope. const declarationArg = factory.createObjectLiteral([ {propertyName: 'ngImport', quoted: false, value: factory.createLiteral('not-a-module')}, + { + propertyName: 'minVersion', + quoted: false, + value: factory.createLiteral('0.0.0-PLACEHOLDER') + }, { propertyName: 'version', quoted: false, diff --git a/packages/compiler-cli/linker/test/file_linker/partial_linkers/partial_linker_selector_spec.ts b/packages/compiler-cli/linker/test/file_linker/partial_linkers/partial_linker_selector_spec.ts index ca10c691c8..2ede4a5d4a 100644 --- a/packages/compiler-cli/linker/test/file_linker/partial_linkers/partial_linker_selector_spec.ts +++ b/packages/compiler-cli/linker/test/file_linker/partial_linkers/partial_linker_selector_spec.ts @@ -5,126 +5,119 @@ * 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 */ -import * as ts from 'typescript'; +import {Range} from 'semver'; -import {DEFAULT_LINKER_OPTIONS, LinkerOptions} from '../../..'; -import {FileSystem} from '../../../../src/ngtsc/file_system'; -import {MockFileSystemNative} from '../../../../src/ngtsc/file_system/testing'; import {MockLogger} from '../../../../src/ngtsc/logging/testing'; -import {TypeScriptAstFactory} from '../../../../src/ngtsc/translator'; -import {TypeScriptAstHost} from '../../../src/ast/typescript/typescript_ast_host'; -import {LinkerEnvironment} from '../../../src/file_linker/linker_environment'; -import {PartialComponentLinkerVersion1} from '../../../src/file_linker/partial_linkers/partial_component_linker_1'; -import {PartialDirectiveLinkerVersion1} from '../../../src/file_linker/partial_linkers/partial_directive_linker_1'; -import {PartialFactoryLinkerVersion1} from '../../../src/file_linker/partial_linkers/partial_factory_linker_1'; -import {PartialInjectorLinkerVersion1} from '../../../src/file_linker/partial_linkers/partial_injector_linker_1'; -import {PartialLinkerSelector} from '../../../src/file_linker/partial_linkers/partial_linker_selector'; -import {PartialNgModuleLinkerVersion1} from '../../../src/file_linker/partial_linkers/partial_ng_module_linker_1'; -import {PartialPipeLinkerVersion1} from '../../../src/file_linker/partial_linkers/partial_pipe_linker_1'; +import {PartialLinker} from '../../../src/file_linker/partial_linkers/partial_linker'; +import {LinkerRange, PartialLinkerSelector} from '../../../src/file_linker/partial_linkers/partial_linker_selector'; describe('PartialLinkerSelector', () => { - const options: LinkerOptions = DEFAULT_LINKER_OPTIONS; - let environment: LinkerEnvironment; - let fs: FileSystem; + let logger: MockLogger; + const linkerA = {name: 'linkerA'} as any; + const linkerA2 = {name: 'linkerA2'} as any; + const linkerB = {name: 'linkerB'} as any; + const linkerB2 = {name: 'linkerB2'} as any; beforeEach(() => { - fs = new MockFileSystemNative(); - const logger = new MockLogger(); - environment = LinkerEnvironment.create( - fs, logger, new TypeScriptAstHost(), - new TypeScriptAstFactory(/* annotateForClosureCompiler */ false), options); + logger = new MockLogger(); }); describe('supportsDeclaration()', () => { it('should return true if there is at least one linker that matches the given function name', () => { - const selector = new PartialLinkerSelector( - environment, fs.resolve('/some/path/to/file.js'), 'some file contents'); - expect(selector.supportsDeclaration('ɵɵngDeclareDirective')).toBe(true); - expect(selector.supportsDeclaration('ɵɵngDeclareComponent')).toBe(true); - expect(selector.supportsDeclaration('ɵɵngDeclareFactory')).toBe(true); - expect(selector.supportsDeclaration('ɵɵngDeclareInjector')).toBe(true); - expect(selector.supportsDeclaration('ɵɵngDeclareNgModule')).toBe(true); - expect(selector.supportsDeclaration('ɵɵngDeclarePipe')).toBe(true); - expect(selector.supportsDeclaration('$foo')).toBe(false); + const selector = createSelector('error'); + expect(selector.supportsDeclaration('declareA')).toBe(true); + expect(selector.supportsDeclaration('invalid')).toBe(false); }); it('should return false for methods on `Object`', () => { - const selector = new PartialLinkerSelector( - environment, fs.resolve('/some/path/to/file.js'), 'some file contents'); + const selector = createSelector('error'); expect(selector.supportsDeclaration('toString')).toBe(false); }); }); describe('getLinker()', () => { - it('should return the latest linker if the version is "0.0.0-PLACEHOLDER"', () => { - const selector = new PartialLinkerSelector( - environment, fs.resolve('/some/path/to/file.js'), 'some file contents'); - expect(selector.getLinker('ɵɵngDeclareDirective', '0.0.0-PLACEHOLDER')) - .toBeInstanceOf(PartialDirectiveLinkerVersion1); - expect(selector.getLinker('ɵɵngDeclareComponent', '0.0.0-PLACEHOLDER')) - .toBeInstanceOf(PartialComponentLinkerVersion1); - expect(selector.getLinker('ɵɵngDeclareFactory', '0.0.0-PLACEHOLDER')) - .toBeInstanceOf(PartialFactoryLinkerVersion1); - expect(selector.getLinker('ɵɵngDeclareInjector', '0.0.0-PLACEHOLDER')) - .toBeInstanceOf(PartialInjectorLinkerVersion1); - expect(selector.getLinker('ɵɵngDeclareNgModule', '0.0.0-PLACEHOLDER')) - .toBeInstanceOf(PartialNgModuleLinkerVersion1); - expect(selector.getLinker('ɵɵngDeclarePipe', '0.0.0-PLACEHOLDER')) - .toBeInstanceOf(PartialPipeLinkerVersion1); + it('should return the linker that matches the name and version', () => { + const selector = createSelector('error'); + expect(selector.getLinker('declareA', '11.1.2', '11.1.4')).toBe(linkerA); + expect(selector.getLinker('declareA', '12.0.0', '12.1.0')).toBe(linkerA); + expect(selector.getLinker('declareA', '12.0.1', '12.1.0')).toBe(linkerA2); + expect(selector.getLinker('declareB', '11.2.5', '11.3.0')).toBe(linkerB); + expect(selector.getLinker('declareB', '12.0.5', '12.0.5')).toBe(linkerB2); }); - it('should return the linker that matches the name and valid full version', () => { - const selector = new PartialLinkerSelector( - environment, fs.resolve('/some/path/to/file.js'), 'some file contents'); - expect(selector.getLinker('ɵɵngDeclareDirective', '11.1.2')) - .toBeInstanceOf(PartialDirectiveLinkerVersion1); - expect(selector.getLinker('ɵɵngDeclareDirective', '11.2.5')) - .toBeInstanceOf(PartialDirectiveLinkerVersion1); - expect(selector.getLinker('ɵɵngDeclareDirective', '12.0.0')) - .toBeInstanceOf(PartialDirectiveLinkerVersion1); + it('should return the linker that matches the name and version, ignoring pre-releases', () => { + const selector = createSelector('error'); + expect(selector.getLinker('declareA', '11.1.0-next.1', '11.1.0-next.1')).toBe(linkerA); + expect(selector.getLinker('declareA', '11.1.0-next.7', '11.1.0-next.7')).toBe(linkerA); + expect(selector.getLinker('declareA', '12.0.0-next.7', '12.0.0-next.7')).toBe(linkerA); + expect(selector.getLinker('declareA', '12.0.1-next.7', '12.0.1-next.7')).toBe(linkerA2); }); - it('should return the linker that matches the name and valid pre-release versions', () => { - const selector = new PartialLinkerSelector( - environment, fs.resolve('/some/path/to/file.js'), 'some file contents'); - expect(selector.getLinker('ɵɵngDeclareDirective', '11.1.0-next.1')) - .toBeInstanceOf(PartialDirectiveLinkerVersion1); - expect(selector.getLinker('ɵɵngDeclareDirective', '11.1.0-next.7')) - .toBeInstanceOf(PartialDirectiveLinkerVersion1); - expect(selector.getLinker('ɵɵngDeclareDirective', '12.0.0-next.7')) - .toBeInstanceOf(PartialDirectiveLinkerVersion1); - }); + it('should return the most recent linker if `version` is `0.0.0-PLACEHOLDER`, regardless of `minVersion`', + () => { + const selector = createSelector('error'); + expect(selector.getLinker('declareA', '11.1.2', '0.0.0-PLACEHOLDER')).toBe(linkerA2); + expect(selector.getLinker('declareA', '0.0.0-PLACEHOLDER', '11.1.2')).toBe(linkerA); + expect(selector.getLinker('declareA', '0.0.0-PLACEHOLDER', '0.0.0-PLACEHOLDER')) + .toBe(linkerA2); + }); - it('should throw an error if there is no linker that matches the given name or version', () => { - const selector = new PartialLinkerSelector( - environment, fs.resolve('/some/path/to/file.js'), 'some file contents'); - // `$foo` is not a valid name, even though `0.0.0-PLACEHOLDER` is a valid version - expect(() => selector.getLinker('$foo', '0.0.0-PLACEHOLDER')) - .toThrowError('Unknown partial declaration function $foo.'); - // `$foo` is not a valid name, even though `11.1.0` is a valid version - expect(() => selector.getLinker('$foo', '11.1.0')) + it('should throw an error if there is no linker that matches the given name', () => { + const selector = createSelector('error'); + // `$foo` is not a valid name, even though `11.1.2` is a valid version for other declarations + expect(() => selector.getLinker('$foo', '11.1.2', '11.2.0')) .toThrowError('Unknown partial declaration function $foo.'); + }); - // There are no linkers earlier than 11.1.0-next.1 - expect(() => selector.getLinker('ɵɵngDeclareDirective', '10.2.1')) - .toThrowError( - 'Unsupported partial declaration version 10.2.1 for ɵɵngDeclareDirective.\n' + - 'Valid version ranges are:\n' + - ' - 0.0.0-PLACEHOLDER\n' + - ' - >=11.1.0-next.1'); - expect(() => selector.getLinker('ɵɵngDeclareDirective', '11.0.2')) - .toThrowError( - 'Unsupported partial declaration version 11.0.2 for ɵɵngDeclareDirective.\n' + - 'Valid version ranges are:\n' + - ' - 0.0.0-PLACEHOLDER\n' + - ' - >=11.1.0-next.1'); - expect(() => selector.getLinker('ɵɵngDeclareDirective', '11.1.0-next.0')) - .toThrowError( - 'Unsupported partial declaration version 11.1.0-next.0 for ɵɵngDeclareDirective.\n' + - 'Valid version ranges are:\n' + - ' - 0.0.0-PLACEHOLDER\n' + - ' - >=11.1.0-next.1'); + describe('[unknown declaration version]', () => { + describe('[unknownDeclarationVersionHandling is "ignore"]', () => { + it('should use the most recent linker, with no log warning', () => { + const selector = createSelector('ignore'); + expect(selector.getLinker('declareA', '13.1.0', '13.1.5')).toBe(linkerA2); + expect(logger.logs.warn).toEqual([]); + }); + }); + + describe('[unknownDeclarationVersionHandling is "warn"]', () => { + it('should use the most recent linker and log a warning', () => { + const selector = createSelector('warn'); + expect(selector.getLinker('declareA', '13.1.0', '14.0.5')).toBe(linkerA2); + expect(logger.logs.warn).toEqual([ + [`This application depends upon a library published using Angular version 14.0.5, ` + + `which requires Angular version 13.1.0 or newer to work correctly.\n` + + `Consider upgrading your application to use a more recent version of Angular.\n` + + 'Attempting to continue using this version of Angular.'] + ]); + }); + }); + + describe('[unknownDeclarationVersionHandling is "error"]', () => { + it('should throw an error', () => { + const selector = createSelector('error'); + expect(() => selector.getLinker('declareA', '13.1.0', '14.0.5')) + .toThrowError( + `This application depends upon a library published using Angular version 14.0.5, ` + + `which requires Angular version 13.1.0 or newer to work correctly.\n` + + `Consider upgrading your application to use a more recent version of Angular.`); + }); + }); }); }); + + /** + * Create a selector for testing + */ + function createSelector(unknownDeclarationVersionHandling: 'error'|'warn'|'ignore') { + const linkerMap = new Map[]>(); + linkerMap.set('declareA', [ + {range: new Range('<=12.0.0'), linker: linkerA}, + {range: new Range('<=13.0.0'), linker: linkerA2} + ]); + linkerMap.set('declareB', [ + {range: new Range('<=12.0.0'), linker: linkerB}, + {range: new Range('<=12.1.0'), linker: linkerB2}, + ]); + return new PartialLinkerSelector(linkerMap, logger, unknownDeclarationVersionHandling); + } }); diff --git a/packages/compiler-cli/ngcc/src/analysis/decoration_analyzer.ts b/packages/compiler-cli/ngcc/src/analysis/decoration_analyzer.ts index ce1a5a154b..60ab38d4c8 100644 --- a/packages/compiler-cli/ngcc/src/analysis/decoration_analyzer.ts +++ b/packages/compiler-cli/ngcc/src/analysis/decoration_analyzer.ts @@ -14,7 +14,7 @@ import {ComponentDecoratorHandler, DirectiveDecoratorHandler, InjectableDecorato import {CycleAnalyzer, CycleHandlingStrategy, ImportGraph} from '../../../src/ngtsc/cycles'; import {isFatalDiagnosticError} from '../../../src/ngtsc/diagnostics'; import {absoluteFromSourceFile, LogicalFileSystem, ReadonlyFileSystem} from '../../../src/ngtsc/file_system'; -import {AbsoluteModuleStrategy, LocalIdentifierStrategy, LogicalProjectStrategy, ModuleResolver, NOOP_DEFAULT_IMPORT_RECORDER, PrivateExportAliasingHost, Reexport, ReferenceEmitter} from '../../../src/ngtsc/imports'; +import {AbsoluteModuleStrategy, LocalIdentifierStrategy, LogicalProjectStrategy, ModuleResolver, PrivateExportAliasingHost, Reexport, ReferenceEmitter} from '../../../src/ngtsc/imports'; import {SemanticSymbol} from '../../../src/ngtsc/incremental/semantic_graph'; import {CompoundMetadataReader, CompoundMetadataRegistry, DtsMetadataReader, InjectableClassRegistry, LocalMetadataRegistry, ResourceRegistry} from '../../../src/ngtsc/metadata'; import {PartialEvaluator} from '../../../src/ngtsc/partial_evaluator'; @@ -107,8 +107,8 @@ export class DecorationAnalyzer { /* i18nUseExternalIds */ true, this.bundle.enableI18nLegacyMessageIdFormat, /* usePoisonedData */ false, /* i18nNormalizeLineEndingsInICUs */ false, this.moduleResolver, this.cycleAnalyzer, - CycleHandlingStrategy.UseRemoteScoping, this.refEmitter, NOOP_DEFAULT_IMPORT_RECORDER, - NOOP_DEPENDENCY_TRACKER, this.injectableRegistry, + CycleHandlingStrategy.UseRemoteScoping, this.refEmitter, NOOP_DEPENDENCY_TRACKER, + this.injectableRegistry, /* semanticDepGraphUpdater */ null, !!this.compilerOptions.annotateForClosureCompiler, NOOP_PERF_RECORDER), @@ -116,7 +116,7 @@ export class DecorationAnalyzer { // clang-format off new DirectiveDecoratorHandler( this.reflectionHost, this.evaluator, this.fullRegistry, this.scopeRegistry, - this.fullMetaReader, NOOP_DEFAULT_IMPORT_RECORDER, this.injectableRegistry, this.isCore, + this.fullMetaReader, this.injectableRegistry, this.isCore, /* semanticDepGraphUpdater */ null, !!this.compilerOptions.annotateForClosureCompiler, // In ngcc we want to compile undecorated classes with Angular features. As of @@ -131,18 +131,17 @@ export class DecorationAnalyzer { // before injectable factories (so injectable factories can delegate to them) new PipeDecoratorHandler( this.reflectionHost, this.evaluator, this.metaRegistry, this.scopeRegistry, - NOOP_DEFAULT_IMPORT_RECORDER, this.injectableRegistry, this.isCore, NOOP_PERF_RECORDER), + this.injectableRegistry, this.isCore, NOOP_PERF_RECORDER), new InjectableDecoratorHandler( - this.reflectionHost, NOOP_DEFAULT_IMPORT_RECORDER, this.isCore, + this.reflectionHost, this.isCore, /* strictCtorDeps */ false, this.injectableRegistry, NOOP_PERF_RECORDER, /* errorOnDuplicateProv */ false), new NgModuleDecoratorHandler( this.reflectionHost, this.evaluator, this.fullMetaReader, this.fullRegistry, this.scopeRegistry, this.referencesRegistry, this.isCore, /* routeAnalyzer */ null, this.refEmitter, - /* factoryTracker */ null, NOOP_DEFAULT_IMPORT_RECORDER, - !!this.compilerOptions.annotateForClosureCompiler, this.injectableRegistry, - NOOP_PERF_RECORDER), + /* factoryTracker */ null, !!this.compilerOptions.annotateForClosureCompiler, + this.injectableRegistry, NOOP_PERF_RECORDER), ]; compiler = new NgccTraitCompiler(this.handlers, this.reflectionHost); migrations: Migration[] = [ diff --git a/packages/compiler-cli/ngcc/src/analysis/ngcc_trait_compiler.ts b/packages/compiler-cli/ngcc/src/analysis/ngcc_trait_compiler.ts index e5dde6cbf5..2edd9dc737 100644 --- a/packages/compiler-cli/ngcc/src/analysis/ngcc_trait_compiler.ts +++ b/packages/compiler-cli/ngcc/src/analysis/ngcc_trait_compiler.ts @@ -85,7 +85,7 @@ export class NgccTraitCompiler extends TraitCompiler { } class NoIncrementalBuild implements IncrementalBuild { - priorWorkFor(sf: ts.SourceFile): any[]|null { + priorAnalysisFor(sf: ts.SourceFile): any[]|null { return null; } diff --git a/packages/compiler-cli/ngcc/src/dependencies/commonjs_dependency_host.ts b/packages/compiler-cli/ngcc/src/dependencies/commonjs_dependency_host.ts index 1f31b9059b..ea57e6cbbd 100644 --- a/packages/compiler-cli/ngcc/src/dependencies/commonjs_dependency_host.ts +++ b/packages/compiler-cli/ngcc/src/dependencies/commonjs_dependency_host.ts @@ -16,11 +16,11 @@ import {DependencyHostBase} from './dependency_host'; * Helper functions for computing dependencies. */ export class CommonJsDependencyHost extends DependencyHostBase { - protected canSkipFile(fileContents: string): boolean { + protected override canSkipFile(fileContents: string): boolean { return !hasRequireCalls(fileContents); } - protected extractImports(file: AbsoluteFsPath, fileContents: string): Set { + protected override extractImports(file: AbsoluteFsPath, fileContents: string): Set { // Parse the source into a TypeScript AST and then walk it looking for imports and re-exports. const sf = ts.createSourceFile(file, fileContents, ts.ScriptTarget.ES2015, false, ts.ScriptKind.JS); diff --git a/packages/compiler-cli/ngcc/src/dependencies/dts_dependency_host.ts b/packages/compiler-cli/ngcc/src/dependencies/dts_dependency_host.ts index 9d66446ac6..9dff3d63bd 100644 --- a/packages/compiler-cli/ngcc/src/dependencies/dts_dependency_host.ts +++ b/packages/compiler-cli/ngcc/src/dependencies/dts_dependency_host.ts @@ -23,7 +23,7 @@ export class DtsDependencyHost extends EsmDependencyHost { /** * Attempts to process the `importPath` directly and also inside `@types/...`. */ - protected processImport( + protected override processImport( importPath: string, file: AbsoluteFsPath, dependencies: Set, missing: Set, deepImports: Set, alreadySeen: Set): boolean { return super.processImport(importPath, file, dependencies, missing, deepImports, alreadySeen) || diff --git a/packages/compiler-cli/ngcc/src/dependencies/esm_dependency_host.ts b/packages/compiler-cli/ngcc/src/dependencies/esm_dependency_host.ts index 77b8242733..f33c9f1f4c 100644 --- a/packages/compiler-cli/ngcc/src/dependencies/esm_dependency_host.ts +++ b/packages/compiler-cli/ngcc/src/dependencies/esm_dependency_host.ts @@ -23,7 +23,7 @@ export class EsmDependencyHost extends DependencyHostBase { // It has no relevance to capturing imports. private scanner = ts.createScanner(ts.ScriptTarget.Latest, /* skipTrivia */ true); - protected canSkipFile(fileContents: string): boolean { + protected override canSkipFile(fileContents: string): boolean { return !hasImportOrReexportStatements(fileContents); } @@ -43,7 +43,7 @@ export class EsmDependencyHost extends DependencyHostBase { * Specifically, backticked strings are particularly challenging since it is possible * to recursively nest backticks and TypeScript expressions within each other. */ - protected extractImports(file: AbsoluteFsPath, fileContents: string): Set { + protected override extractImports(file: AbsoluteFsPath, fileContents: string): Set { const imports = new Set(); const templateStack: ts.SyntaxKind[] = []; let lastToken: ts.SyntaxKind = ts.SyntaxKind.Unknown; diff --git a/packages/compiler-cli/ngcc/src/dependencies/umd_dependency_host.ts b/packages/compiler-cli/ngcc/src/dependencies/umd_dependency_host.ts index d3d97baf85..2274bbeffb 100644 --- a/packages/compiler-cli/ngcc/src/dependencies/umd_dependency_host.ts +++ b/packages/compiler-cli/ngcc/src/dependencies/umd_dependency_host.ts @@ -17,11 +17,11 @@ import {DependencyHostBase} from './dependency_host'; * Helper functions for computing dependencies. */ export class UmdDependencyHost extends DependencyHostBase { - protected canSkipFile(fileContents: string): boolean { + protected override canSkipFile(fileContents: string): boolean { return !hasRequireCalls(fileContents); } - protected extractImports(file: AbsoluteFsPath, fileContents: string): Set { + protected override extractImports(file: AbsoluteFsPath, fileContents: string): Set { // Parse the source into a TypeScript AST and then walk it looking for imports and re-exports. const sf = ts.createSourceFile(file, fileContents, ts.ScriptTarget.ES2015, false, ts.ScriptKind.JS); diff --git a/packages/compiler-cli/ngcc/src/entry_point_finder/program_based_entry_point_finder.ts b/packages/compiler-cli/ngcc/src/entry_point_finder/program_based_entry_point_finder.ts index 01f9330989..cb503e75c3 100644 --- a/packages/compiler-cli/ngcc/src/entry_point_finder/program_based_entry_point_finder.ts +++ b/packages/compiler-cli/ngcc/src/entry_point_finder/program_based_entry_point_finder.ts @@ -45,7 +45,7 @@ export class ProgramBasedEntryPointFinder extends TracingEntryPointFinder { * Return an array containing the external import paths that were extracted from the source-files * of the program defined by the tsconfig.json. */ - protected getInitialEntryPointPaths(): AbsoluteFsPath[] { + protected override getInitialEntryPointPaths(): AbsoluteFsPath[] { const moduleResolver = new ModuleResolver(this.fs, this.pathMappings, ['', '.ts', '/index.ts']); const host = new EsmDependencyHost(this.fs, moduleResolver); const dependencies = createDependencyInfo(); @@ -71,7 +71,8 @@ export class ProgramBasedEntryPointFinder extends TracingEntryPointFinder { * @returns the entry-point and its dependencies or `null` if the entry-point is not compiled by * Angular or cannot be determined. */ - protected getEntryPointWithDeps(entryPointPath: AbsoluteFsPath): EntryPointWithDependencies|null { + protected override getEntryPointWithDeps(entryPointPath: AbsoluteFsPath): + EntryPointWithDependencies|null { const entryPoints = this.findOrLoadEntryPoints(); if (!entryPoints.has(entryPointPath)) { return null; diff --git a/packages/compiler-cli/ngcc/src/entry_point_finder/targeted_entry_point_finder.ts b/packages/compiler-cli/ngcc/src/entry_point_finder/targeted_entry_point_finder.ts index 9b729e2183..c68e231772 100644 --- a/packages/compiler-cli/ngcc/src/entry_point_finder/targeted_entry_point_finder.ts +++ b/packages/compiler-cli/ngcc/src/entry_point_finder/targeted_entry_point_finder.ts @@ -35,7 +35,7 @@ export class TargetedEntryPointFinder extends TracingEntryPointFinder { * Search for Angular entry-points that can be reached from the entry-point specified by the given * `targetPath`. */ - findEntryPoints(): SortedEntryPointsInfo { + override findEntryPoints(): SortedEntryPointsInfo { const entryPoints = super.findEntryPoints(); const invalidTarget = @@ -83,7 +83,7 @@ export class TargetedEntryPointFinder extends TracingEntryPointFinder { /** * Return an array containing the `targetPath` from which to start the trace. */ - protected getInitialEntryPointPaths(): AbsoluteFsPath[] { + protected override getInitialEntryPointPaths(): AbsoluteFsPath[] { return [this.targetPath]; } @@ -97,7 +97,8 @@ export class TargetedEntryPointFinder extends TracingEntryPointFinder { * @returns the entry-point and its dependencies or `null` if the entry-point is not compiled by * Angular or cannot be determined. */ - protected getEntryPointWithDeps(entryPointPath: AbsoluteFsPath): EntryPointWithDependencies|null { + protected override getEntryPointWithDeps(entryPointPath: AbsoluteFsPath): + EntryPointWithDependencies|null { const packagePath = this.computePackagePath(entryPointPath); const entryPoint = getEntryPointInfo(this.fs, this.config, this.logger, packagePath, entryPointPath); diff --git a/packages/compiler-cli/ngcc/src/execution/tasks/queues/parallel_task_queue.ts b/packages/compiler-cli/ngcc/src/execution/tasks/queues/parallel_task_queue.ts index 5a0679b465..d6bfa10d86 100644 --- a/packages/compiler-cli/ngcc/src/execution/tasks/queues/parallel_task_queue.ts +++ b/packages/compiler-cli/ngcc/src/execution/tasks/queues/parallel_task_queue.ts @@ -27,7 +27,7 @@ export class ParallelTaskQueue extends BaseTaskQueue { this.blockedTasks = getBlockedTasks(dependencies); } - computeNextTask(): Task|null { + override computeNextTask(): Task|null { // Look for the first available (i.e. not blocked) task. // (NOTE: Since tasks are sorted by priority, the first available one is the best choice.) const nextTaskIdx = this.tasks.findIndex(task => !this.blockedTasks.has(task)); @@ -41,7 +41,7 @@ export class ParallelTaskQueue extends BaseTaskQueue { return nextTask; } - markAsCompleted(task: Task): void { + override markAsCompleted(task: Task): void { super.markAsCompleted(task); if (!this.dependencies.has(task)) { @@ -62,7 +62,7 @@ export class ParallelTaskQueue extends BaseTaskQueue { } } - toString(): string { + override toString(): string { return `${super.toString()}\n` + ` Blocked tasks (${this.blockedTasks.size}): ${this.stringifyBlockedTasks(' ')}`; } diff --git a/packages/compiler-cli/ngcc/src/execution/tasks/queues/serial_task_queue.ts b/packages/compiler-cli/ngcc/src/execution/tasks/queues/serial_task_queue.ts index 0fe5fdb064..b0515c8492 100644 --- a/packages/compiler-cli/ngcc/src/execution/tasks/queues/serial_task_queue.ts +++ b/packages/compiler-cli/ngcc/src/execution/tasks/queues/serial_task_queue.ts @@ -17,7 +17,7 @@ import {BaseTaskQueue} from './base_task_queue'; * before requesting the next one. */ export class SerialTaskQueue extends BaseTaskQueue { - computeNextTask(): Task|null { + override computeNextTask(): Task|null { const nextTask = this.tasks.shift() || null; if (nextTask) { diff --git a/packages/compiler-cli/ngcc/src/host/commonjs_host.ts b/packages/compiler-cli/ngcc/src/host/commonjs_host.ts index f467d5beee..3cbd94bfe9 100644 --- a/packages/compiler-cli/ngcc/src/host/commonjs_host.ts +++ b/packages/compiler-cli/ngcc/src/host/commonjs_host.ts @@ -35,7 +35,7 @@ export class CommonJsReflectionHost extends Esm5ReflectionHost { this.compilerHost = src.host; } - getImportOfIdentifier(id: ts.Identifier): Import|null { + override getImportOfIdentifier(id: ts.Identifier): Import|null { const requireCall = this.findCommonJsImport(id); if (requireCall === null) { return null; @@ -43,11 +43,11 @@ export class CommonJsReflectionHost extends Esm5ReflectionHost { return {from: requireCall.arguments[0].text, name: id.text}; } - getDeclarationOfIdentifier(id: ts.Identifier): Declaration|null { + override getDeclarationOfIdentifier(id: ts.Identifier): Declaration|null { return this.getCommonJsModuleDeclaration(id) || super.getDeclarationOfIdentifier(id); } - getExportsOfModule(module: ts.Node): Map|null { + override getExportsOfModule(module: ts.Node): Map|null { return super.getExportsOfModule(module) || this.commonJsExports.get(module.getSourceFile()); } @@ -64,7 +64,7 @@ export class CommonJsReflectionHost extends Esm5ReflectionHost { * in. * @returns an array of nodes of calls to the helper with the given name. */ - protected getHelperCallsForClass(classSymbol: NgccClassSymbol, helperNames: string[]): + protected override getHelperCallsForClass(classSymbol: NgccClassSymbol, helperNames: string[]): ts.CallExpression[] { const esm5HelperCalls = super.getHelperCallsForClass(classSymbol, helperNames); if (esm5HelperCalls.length > 0) { @@ -221,7 +221,7 @@ export class CommonJsReflectionHost extends Esm5ReflectionHost { * If this is an IFE then try to grab the outer and inner classes otherwise fallback on the super * class. */ - protected getDeclarationOfExpression(expression: ts.Expression): Declaration|null { + protected override getDeclarationOfExpression(expression: ts.Expression): Declaration|null { const inner = getInnerClassDeclaration(expression); if (inner !== null) { const outer = getOuterNodeFromInnerDeclaration(inner); diff --git a/packages/compiler-cli/ngcc/src/host/delegating_host.ts b/packages/compiler-cli/ngcc/src/host/delegating_host.ts index e72a40a94d..8352520f59 100644 --- a/packages/compiler-cli/ngcc/src/host/delegating_host.ts +++ b/packages/compiler-cli/ngcc/src/host/delegating_host.ts @@ -161,4 +161,8 @@ export class DelegatingReflectionHost implements NgccReflectionHost { detectKnownDeclaration(decl: T): T { return this.ngccHost.detectKnownDeclaration(decl); } + + isStaticallyExported(clazz: ClassDeclaration): boolean { + return this.ngccHost.isStaticallyExported(clazz); + } } diff --git a/packages/compiler-cli/ngcc/src/host/esm2015_host.ts b/packages/compiler-cli/ngcc/src/host/esm2015_host.ts index c4d7c89cbe..f75d577d90 100644 --- a/packages/compiler-cli/ngcc/src/host/esm2015_host.ts +++ b/packages/compiler-cli/ngcc/src/host/esm2015_host.ts @@ -11,6 +11,7 @@ import * as ts from 'typescript'; import {absoluteFromSourceFile} from '../../../src/ngtsc/file_system'; import {Logger} from '../../../src/ngtsc/logging'; import {ClassDeclaration, ClassMember, ClassMemberKind, CtorParameter, Declaration, DeclarationNode, Decorator, EnumMember, Import, isConcreteDeclaration, isDecoratorIdentifier, isNamedClassDeclaration, isNamedFunctionDeclaration, isNamedVariableDeclaration, KnownDeclaration, reflectObjectLiteral, SpecialDeclarationKind, TypeScriptReflectionHost, TypeValueReference, TypeValueReferenceKind, ValueUnavailableKind} from '../../../src/ngtsc/reflection'; +import {isSymbolWithValueDeclaration, SymbolWithValueDeclaration} from '../../../src/ngtsc/util/src/typescript'; import {isWithinPackage} from '../analysis/util'; import {BundleProgram} from '../packages/bundle_program'; import {findAll, getNameText, hasNameIdentifier, isDefined, stripDollarSuffix} from '../utils'; @@ -150,7 +151,7 @@ export class Esm2015ReflectionHost extends TypeScriptReflectionHost implements N * `null` if either no decorators were present or if the declaration is not of a decoratable * type. */ - getDecoratorsOfDeclaration(declaration: DeclarationNode): Decorator[]|null { + override getDecoratorsOfDeclaration(declaration: DeclarationNode): Decorator[]|null { const symbol = this.getClassSymbol(declaration); if (!symbol) { return null; @@ -168,7 +169,7 @@ export class Esm2015ReflectionHost extends TypeScriptReflectionHost implements N * * @throws if `declaration` does not resolve to a class declaration. */ - getMembersOfClass(clazz: ClassDeclaration): ClassMember[] { + override getMembersOfClass(clazz: ClassDeclaration): ClassMember[] { const classSymbol = this.getClassSymbol(clazz); if (!classSymbol) { throw new Error(`Attempted to get members of a non-class: "${clazz.getText()}"`); @@ -191,7 +192,7 @@ export class Esm2015ReflectionHost extends TypeScriptReflectionHost implements N * * @throws if `declaration` does not resolve to a class declaration. */ - getConstructorParameters(clazz: ClassDeclaration): CtorParameter[]|null { + override getConstructorParameters(clazz: ClassDeclaration): CtorParameter[]|null { const classSymbol = this.getClassSymbol(clazz); if (!classSymbol) { throw new Error( @@ -204,7 +205,7 @@ export class Esm2015ReflectionHost extends TypeScriptReflectionHost implements N return null; } - getBaseClassExpression(clazz: ClassDeclaration): ts.Expression|null { + override getBaseClassExpression(clazz: ClassDeclaration): ts.Expression|null { // First try getting the base class from an ES2015 class declaration const superBaseClassIdentifier = super.getBaseClassExpression(clazz); if (superBaseClassIdentifier) { @@ -213,14 +214,14 @@ export class Esm2015ReflectionHost extends TypeScriptReflectionHost implements N // That didn't work so now try getting it from the "inner" declaration. const classSymbol = this.getClassSymbol(clazz); - if (classSymbol === undefined || + if (classSymbol?.implementation.valueDeclaration === undefined || !isNamedDeclaration(classSymbol.implementation.valueDeclaration)) { return null; } return super.getBaseClassExpression(classSymbol.implementation.valueDeclaration); } - getInternalNameOfClass(clazz: ClassDeclaration): ts.Identifier { + override getInternalNameOfClass(clazz: ClassDeclaration): ts.Identifier { const classSymbol = this.getClassSymbol(clazz); if (classSymbol === undefined) { throw new Error(`getInternalNameOfClass() called on a non-class: expected ${ @@ -230,7 +231,7 @@ export class Esm2015ReflectionHost extends TypeScriptReflectionHost implements N classSymbol, classSymbol.implementation.valueDeclaration); } - getAdjacentNameOfClass(clazz: ClassDeclaration): ts.Identifier { + override getAdjacentNameOfClass(clazz: ClassDeclaration): ts.Identifier { const classSymbol = this.getClassSymbol(clazz); if (classSymbol === undefined) { throw new Error(`getAdjacentNameOfClass() called on a non-class: expected ${ @@ -241,7 +242,7 @@ export class Esm2015ReflectionHost extends TypeScriptReflectionHost implements N } private getNameFromClassSymbolDeclaration( - classSymbol: NgccClassSymbol, declaration: ts.Declaration): ts.Identifier { + classSymbol: NgccClassSymbol, declaration: ts.Declaration|undefined): ts.Identifier { if (declaration === undefined) { throw new Error( `getInternalNameOfClass() called on a class with an undefined internal declaration. External class name: ${ @@ -258,7 +259,7 @@ export class Esm2015ReflectionHost extends TypeScriptReflectionHost implements N /** * Check whether the given node actually represents a class. */ - isClass(node: ts.Node): node is ClassDeclaration { + override isClass(node: ts.Node): node is ClassDeclaration { return super.isClass(node) || this.getClassSymbol(node) !== undefined; } @@ -278,7 +279,7 @@ export class Esm2015ReflectionHost extends TypeScriptReflectionHost implements N * @returns metadata about the `Declaration` if the original declaration is found, or `null` * otherwise. */ - getDeclarationOfIdentifier(id: ts.Identifier): Declaration|null { + override getDeclarationOfIdentifier(id: ts.Identifier): Declaration|null { const superDeclaration = super.getDeclarationOfIdentifier(id); // If no declaration was found, return. @@ -354,7 +355,7 @@ export class Esm2015ReflectionHost extends TypeScriptReflectionHost implements N []; } - getVariableValue(declaration: ts.VariableDeclaration): ts.Expression|null { + override getVariableValue(declaration: ts.VariableDeclaration): ts.Expression|null { const value = super.getVariableValue(declaration); if (value) { return value; @@ -433,7 +434,7 @@ export class Esm2015ReflectionHost extends TypeScriptReflectionHost implements N * @returns the number of type parameters of the class, if known, or `null` if the declaration * is not a class or has an unknown number of type parameters. */ - getGenericArityOfClass(clazz: ClassDeclaration): number|null { + override getGenericArityOfClass(clazz: ClassDeclaration): number|null { const dtsDeclaration = this.getDtsDeclaration(clazz); if (dtsDeclaration && ts.isClassDeclaration(dtsDeclaration)) { return dtsDeclaration.typeParameters ? dtsDeclaration.typeParameters.length : 0; @@ -453,7 +454,7 @@ export class Esm2015ReflectionHost extends TypeScriptReflectionHost implements N * Note that the `ts.ClassDeclaration` returned from this function may not be from the same * `ts.Program` as the input declaration. */ - getDtsDeclaration(declaration: DeclarationNode): ts.Declaration|null { + override getDtsDeclaration(declaration: DeclarationNode): ts.Declaration|null { if (this.dts === null) { return null; } @@ -721,12 +722,12 @@ export class Esm2015ReflectionHost extends TypeScriptReflectionHost implements N return undefined; } - let implementationSymbol = declarationSymbol; + let implementationSymbol: ts.Symbol|undefined = declarationSymbol; if (innerDeclaration !== null && isNamedDeclaration(innerDeclaration)) { - implementationSymbol = this.checker.getSymbolAtLocation(innerDeclaration.name) as ClassSymbol; + implementationSymbol = this.checker.getSymbolAtLocation(innerDeclaration.name); } - if (implementationSymbol === undefined) { + if (!isSymbolWithValueDeclaration(implementationSymbol)) { return undefined; } @@ -740,8 +741,9 @@ export class Esm2015ReflectionHost extends TypeScriptReflectionHost implements N return classSymbol; } - private getAdjacentSymbol(declarationSymbol: ClassSymbol, implementationSymbol: ClassSymbol): - ClassSymbol|undefined { + private getAdjacentSymbol( + declarationSymbol: ClassSymbol, + implementationSymbol: SymbolWithValueDeclaration): SymbolWithValueDeclaration|undefined { if (declarationSymbol === implementationSymbol) { return undefined; } @@ -755,9 +757,9 @@ export class Esm2015ReflectionHost extends TypeScriptReflectionHost implements N if (adjacentDeclaration === undefined || !isNamedVariableDeclaration(adjacentDeclaration)) { return undefined; } - const adjacentSymbol = - this.checker.getSymbolAtLocation(adjacentDeclaration.name) as ClassSymbol; - if (adjacentSymbol === declarationSymbol || adjacentSymbol === implementationSymbol) { + const adjacentSymbol = this.checker.getSymbolAtLocation(adjacentDeclaration.name); + if (adjacentSymbol === declarationSymbol || adjacentSymbol === implementationSymbol || + !isSymbolWithValueDeclaration(adjacentSymbol)) { return undefined; } return adjacentSymbol; @@ -767,8 +769,8 @@ export class Esm2015ReflectionHost extends TypeScriptReflectionHost implements N * Resolve a `ts.Symbol` to its declaration and detect whether it corresponds with a known * declaration. */ - protected getDeclarationOfSymbol(symbol: ts.Symbol, originalId: ts.Identifier|null): Declaration - |null { + protected override getDeclarationOfSymbol(symbol: ts.Symbol, originalId: ts.Identifier|null): + Declaration|null { const declaration = super.getDeclarationOfSymbol(symbol, originalId); if (declaration === null) { return null; diff --git a/packages/compiler-cli/ngcc/src/host/esm5_host.ts b/packages/compiler-cli/ngcc/src/host/esm5_host.ts index 9cd7c758a8..0bd4fc5c81 100644 --- a/packages/compiler-cli/ngcc/src/host/esm5_host.ts +++ b/packages/compiler-cli/ngcc/src/host/esm5_host.ts @@ -34,7 +34,7 @@ import {NgccClassSymbol} from './ngcc_host'; * */ export class Esm5ReflectionHost extends Esm2015ReflectionHost { - getBaseClassExpression(clazz: ClassDeclaration): ts.Expression|null { + override getBaseClassExpression(clazz: ClassDeclaration): ts.Expression|null { const superBaseClassExpression = super.getBaseClassExpression(clazz); if (superBaseClassExpression !== null) { return superBaseClassExpression; @@ -71,7 +71,7 @@ export class Esm5ReflectionHost extends Esm2015ReflectionHost { * @returns metadata about the `Declaration` if the original declaration is found, or `null` * otherwise. */ - getDeclarationOfIdentifier(id: ts.Identifier): Declaration|null { + override getDeclarationOfIdentifier(id: ts.Identifier): Declaration|null { const declaration = super.getDeclarationOfIdentifier(id); if (declaration === null) { @@ -127,7 +127,7 @@ export class Esm5ReflectionHost extends Esm2015ReflectionHost { * @param node the function declaration to parse. * @returns an object containing the node, statements and parameters of the function. */ - getDefinitionOfFunction(node: ts.Node): FunctionDefinition|null { + override getDefinitionOfFunction(node: ts.Node): FunctionDefinition|null { const definition = super.getDefinitionOfFunction(node); if (definition === null) { return null; @@ -155,7 +155,7 @@ export class Esm5ReflectionHost extends Esm2015ReflectionHost { * @param decl The `Declaration` to check. * @return The passed in `Declaration` (potentially enhanced with a `KnownDeclaration`). */ - detectKnownDeclaration(decl: T): T { + override detectKnownDeclaration(decl: T): T { decl = super.detectKnownDeclaration(decl); // Also check for TS helpers @@ -180,7 +180,8 @@ export class Esm5ReflectionHost extends Esm2015ReflectionHost { * @param declaration the declaration whose symbol we are finding. * @returns the symbol for the node or `undefined` if it is not a "class" or has no symbol. */ - protected getClassSymbolFromInnerDeclaration(declaration: ts.Node): NgccClassSymbol|undefined { + protected override getClassSymbolFromInnerDeclaration(declaration: ts.Node): NgccClassSymbol + |undefined { const classSymbol = super.getClassSymbolFromInnerDeclaration(declaration); if (classSymbol !== undefined) { return classSymbol; @@ -210,7 +211,7 @@ export class Esm5ReflectionHost extends Esm2015ReflectionHost { * @returns an array of `ts.ParameterDeclaration` objects representing each of the parameters in * the class's constructor or `null` if there is no constructor. */ - protected getConstructorParameterDeclarations(classSymbol: NgccClassSymbol): + protected override getConstructorParameterDeclarations(classSymbol: NgccClassSymbol): ts.ParameterDeclaration[]|null { const constructor = classSymbol.implementation.valueDeclaration; if (!ts.isFunctionDeclaration(constructor)) return null; @@ -248,7 +249,8 @@ export class Esm5ReflectionHost extends Esm2015ReflectionHost { * @param paramDecoratorsProperty the property that holds the parameter info we want to get. * @returns an array of objects containing the type and decorators for each parameter. */ - protected getParamInfoFromStaticProperty(paramDecoratorsProperty: ts.Symbol): ParamInfo[]|null { + protected override getParamInfoFromStaticProperty(paramDecoratorsProperty: ts.Symbol): + ParamInfo[]|null { const paramDecorators = getPropertyValueFromSymbol(paramDecoratorsProperty); // The decorators array may be wrapped in a function. If so unwrap it. const returnStatement = getReturnStatement(paramDecorators); @@ -284,15 +286,15 @@ export class Esm5ReflectionHost extends Esm2015ReflectionHost { * @param isStatic true if this member is static, false if it is an instance property. * @returns the reflected member information, or null if the symbol is not a member. */ - protected reflectMembers(symbol: ts.Symbol, decorators?: Decorator[], isStatic?: boolean): - ClassMember[]|null { + protected override reflectMembers( + symbol: ts.Symbol, decorators?: Decorator[], isStatic?: boolean): ClassMember[]|null { const node = symbol.valueDeclaration || symbol.declarations && symbol.declarations[0]; const propertyDefinition = node && getPropertyDefinition(node); if (propertyDefinition) { const members: ClassMember[] = []; if (propertyDefinition.setter) { members.push({ - node, + node: node!, implementation: propertyDefinition.setter, kind: ClassMemberKind.Setter, type: null, @@ -310,7 +312,7 @@ export class Esm5ReflectionHost extends Esm2015ReflectionHost { } if (propertyDefinition.getter) { members.push({ - node, + node: node!, implementation: propertyDefinition.getter, kind: ClassMemberKind.Getter, type: null, @@ -348,7 +350,7 @@ export class Esm5ReflectionHost extends Esm2015ReflectionHost { * to reference the inner identifier inside the IIFE. * @returns an array of statements that may contain helper calls. */ - protected getStatementsForClass(classSymbol: NgccClassSymbol): ts.Statement[] { + protected override getStatementsForClass(classSymbol: NgccClassSymbol): ts.Statement[] { const classDeclarationParent = classSymbol.implementation.valueDeclaration.parent; return ts.isBlock(classDeclarationParent) ? Array.from(classDeclarationParent.statements) : []; } diff --git a/packages/compiler-cli/ngcc/src/host/ngcc_host.ts b/packages/compiler-cli/ngcc/src/host/ngcc_host.ts index 3d6423cecc..f4839c5d0c 100644 --- a/packages/compiler-cli/ngcc/src/host/ngcc_host.ts +++ b/packages/compiler-cli/ngcc/src/host/ngcc_host.ts @@ -8,6 +8,7 @@ import * as ts from 'typescript'; import {ClassDeclaration, Declaration, Decorator, ReflectionHost} from '../../../src/ngtsc/reflection'; +import {SymbolWithValueDeclaration} from '../../../src/ngtsc/util/src/typescript'; export const PRE_R3_MARKER = '__PRE_R3__'; export const POST_R3_MARKER = '__POST_R3__'; @@ -47,13 +48,13 @@ export interface NgccClassSymbol { * inner declaration does not need to satisfy the requirements imposed on a publicly visible class * declaration. */ - implementation: ts.Symbol; + implementation: SymbolWithValueDeclaration; /** * Represents the symbol corresponding to a variable within a class IIFE that may be used to * attach static properties or decorated. */ - adjacent?: ts.Symbol; + adjacent?: SymbolWithValueDeclaration; } /** diff --git a/packages/compiler-cli/ngcc/src/host/umd_host.ts b/packages/compiler-cli/ngcc/src/host/umd_host.ts index 1467c2141e..f167213ff8 100644 --- a/packages/compiler-cli/ngcc/src/host/umd_host.ts +++ b/packages/compiler-cli/ngcc/src/host/umd_host.ts @@ -36,7 +36,7 @@ export class UmdReflectionHost extends Esm5ReflectionHost { this.compilerHost = src.host; } - getImportOfIdentifier(id: ts.Identifier): Import|null { + override getImportOfIdentifier(id: ts.Identifier): Import|null { // Is `id` a namespaced property access, e.g. `Directive` in `core.Directive`? // If so capture the symbol of the namespace, e.g. `core`. const nsIdentifier = findNamespaceOfIdentifier(id); @@ -45,7 +45,7 @@ export class UmdReflectionHost extends Esm5ReflectionHost { return from !== null ? {from, name: id.text} : null; } - getDeclarationOfIdentifier(id: ts.Identifier): Declaration|null { + override getDeclarationOfIdentifier(id: ts.Identifier): Declaration|null { // First we try one of the following: // 1. The `exports` identifier - referring to the current file/module. // 2. An identifier (e.g. `foo`) that refers to an imported UMD module. @@ -83,7 +83,7 @@ export class UmdReflectionHost extends Esm5ReflectionHost { }; } - getExportsOfModule(module: ts.Node): Map|null { + override getExportsOfModule(module: ts.Node): Map|null { return super.getExportsOfModule(module) || this.umdExports.get(module.getSourceFile()); } @@ -107,12 +107,13 @@ export class UmdReflectionHost extends Esm5ReflectionHost { * @param sourceFile The module whose statements we want. * @returns An array of top level statements for the given module. */ - protected getModuleStatements(sourceFile: ts.SourceFile): ts.Statement[] { + protected override getModuleStatements(sourceFile: ts.SourceFile): ts.Statement[] { const umdModule = this.getUmdModule(sourceFile); return umdModule !== null ? Array.from(umdModule.factoryFn.body.statements) : []; } - protected getClassSymbolFromOuterDeclaration(declaration: ts.Node): NgccClassSymbol|undefined { + protected override getClassSymbolFromOuterDeclaration(declaration: ts.Node): NgccClassSymbol + |undefined { const superSymbol = super.getClassSymbolFromOuterDeclaration(declaration); if (superSymbol) { return superSymbol; @@ -143,7 +144,8 @@ export class UmdReflectionHost extends Esm5ReflectionHost { } - protected getClassSymbolFromInnerDeclaration(declaration: ts.Node): NgccClassSymbol|undefined { + protected override getClassSymbolFromInnerDeclaration(declaration: ts.Node): NgccClassSymbol + |undefined { const superClassSymbol = super.getClassSymbolFromInnerDeclaration(declaration); if (superClassSymbol !== undefined) { return superClassSymbol; @@ -164,7 +166,7 @@ export class UmdReflectionHost extends Esm5ReflectionHost { /** * Extract all "classes" from the `statement` and add them to the `classes` map. */ - protected addClassSymbolsFromStatement( + protected override addClassSymbolsFromStatement( classes: Map, statement: ts.Statement): void { super.addClassSymbolsFromStatement(classes, statement); @@ -184,7 +186,7 @@ export class UmdReflectionHost extends Esm5ReflectionHost { * * @param statement The statement that needs to be preprocessed. */ - protected preprocessStatement(statement: ts.Statement): void { + protected override preprocessStatement(statement: ts.Statement): void { super.preprocessStatement(statement); if (!isExportsStatement(statement)) { @@ -421,7 +423,7 @@ export class UmdReflectionHost extends Esm5ReflectionHost { const exportsSymbol = this.checker.getSymbolsInScope(id, ts.SymbolFlags.Variable) .find(symbol => symbol.name === 'exports'); - const node = exportsSymbol !== undefined && + const node = exportsSymbol?.valueDeclaration !== undefined && !ts.isFunctionExpression(exportsSymbol.valueDeclaration.parent) ? // There is a locally defined `exports` variable that is not a function parameter. // So this `exports` identifier must be a local variable and does not represent the module. @@ -474,7 +476,7 @@ export class UmdReflectionHost extends Esm5ReflectionHost { * If this is an IIFE then try to grab the outer and inner classes otherwise fallback on the super * class. */ - protected getDeclarationOfExpression(expression: ts.Expression): Declaration|null { + protected override getDeclarationOfExpression(expression: ts.Expression): Declaration|null { const inner = getInnerClassDeclaration(expression); if (inner !== null) { const outer = getOuterNodeFromInnerDeclaration(inner); diff --git a/packages/compiler-cli/ngcc/src/packages/configuration.ts b/packages/compiler-cli/ngcc/src/packages/configuration.ts index 93583509b1..e699515c9e 100644 --- a/packages/compiler-cli/ngcc/src/packages/configuration.ts +++ b/packages/compiler-cli/ngcc/src/packages/configuration.ts @@ -25,6 +25,12 @@ export interface NgccProjectConfig { * Options that control how locking the process is handled. */ locking?: ProcessLockingConfiguration; + /** + * Name of hash algorithm used to generate hashes of the configuration. + * + * Defaults to `sha256`. + */ + hashAlgorithm?: string; } /** @@ -230,10 +236,12 @@ export class NgccConfiguration { private projectConfig: PartiallyProcessedConfig; private cache = new Map(); readonly hash: string; + readonly hashAlgorithm: string; constructor(private fs: ReadonlyFileSystem, baseDir: AbsoluteFsPath) { this.defaultConfig = this.processProjectConfig(DEFAULT_NGCC_CONFIG); this.projectConfig = this.processProjectConfig(this.loadProjectConfig(baseDir)); + this.hashAlgorithm = this.projectConfig.hashAlgorithm; this.hash = this.computeHash(); } @@ -299,7 +307,8 @@ export class NgccConfiguration { } private processProjectConfig(projectConfig: NgccProjectConfig): PartiallyProcessedConfig { - const processedConfig: PartiallyProcessedConfig = {packages: {}, locking: {}}; + const processedConfig: + PartiallyProcessedConfig = {packages: {}, locking: {}, hashAlgorithm: 'sha256'}; // locking configuration if (projectConfig.locking !== undefined) { @@ -317,6 +326,11 @@ export class NgccConfiguration { } } + // hash algorithm config + if (projectConfig.hashAlgorithm !== undefined) { + processedConfig.hashAlgorithm = projectConfig.hashAlgorithm; + } + return processedConfig; } @@ -378,7 +392,7 @@ export class NgccConfiguration { } private computeHash(): string { - return createHash('md5').update(JSON.stringify(this.projectConfig)).digest('hex'); + return createHash(this.hashAlgorithm).update(JSON.stringify(this.projectConfig)).digest('hex'); } } diff --git a/packages/compiler-cli/ngcc/src/packages/entry_point_manifest.ts b/packages/compiler-cli/ngcc/src/packages/entry_point_manifest.ts index 3c951dd5b5..1bf23464b5 100644 --- a/packages/compiler-cli/ngcc/src/packages/entry_point_manifest.ts +++ b/packages/compiler-cli/ngcc/src/packages/entry_point_manifest.ts @@ -159,7 +159,7 @@ export class EntryPointManifest { const lockFilePath = this.fs.resolve(directory, lockFileName); if (this.fs.exists(lockFilePath)) { const lockFileContents = this.fs.readFile(lockFilePath); - return createHash('md5').update(lockFileContents).digest('hex'); + return createHash(this.config.hashAlgorithm).update(lockFileContents).digest('hex'); } } return null; @@ -175,7 +175,8 @@ export class EntryPointManifest { * is called. */ export class InvalidatingEntryPointManifest extends EntryPointManifest { - readEntryPointsUsingManifest(_basePath: AbsoluteFsPath): EntryPointWithDependencies[]|null { + override readEntryPointsUsingManifest(_basePath: AbsoluteFsPath): + EntryPointWithDependencies[]|null { return null; } } diff --git a/packages/compiler-cli/ngcc/src/packages/ngcc_compiler_host.ts b/packages/compiler-cli/ngcc/src/packages/ngcc_compiler_host.ts index c679a12503..70ed061b55 100644 --- a/packages/compiler-cli/ngcc/src/packages/ngcc_compiler_host.ts +++ b/packages/compiler-cli/ngcc/src/packages/ngcc_compiler_host.ts @@ -26,7 +26,8 @@ export class NgccSourcesCompilerHost extends NgtscCompilerHost { super(fs, options); } - getSourceFile(fileName: string, languageVersion: ts.ScriptTarget): ts.SourceFile|undefined { + override getSourceFile(fileName: string, languageVersion: ts.ScriptTarget): ts.SourceFile + |undefined { return this.cache.getCachedSourceFile(fileName, languageVersion); } @@ -78,7 +79,8 @@ export class NgccDtsCompilerHost extends NgtscCompilerHost { super(fs, options); } - getSourceFile(fileName: string, languageVersion: ts.ScriptTarget): ts.SourceFile|undefined { + override getSourceFile(fileName: string, languageVersion: ts.ScriptTarget): ts.SourceFile + |undefined { return this.cache.getCachedSourceFile(fileName, languageVersion); } diff --git a/packages/compiler-cli/ngcc/src/rendering/commonjs_rendering_formatter.ts b/packages/compiler-cli/ngcc/src/rendering/commonjs_rendering_formatter.ts index f18a0181dc..98abc8d10f 100644 --- a/packages/compiler-cli/ngcc/src/rendering/commonjs_rendering_formatter.ts +++ b/packages/compiler-cli/ngcc/src/rendering/commonjs_rendering_formatter.ts @@ -31,7 +31,7 @@ export class CommonJsRenderingFormatter extends Esm5RenderingFormatter { /** * Add the imports below any in situ imports as `require` calls. */ - addImports(output: MagicString, imports: Import[], file: ts.SourceFile): void { + override addImports(output: MagicString, imports: Import[], file: ts.SourceFile): void { // Avoid unnecessary work if there are no imports to add. if (imports.length === 0) { return; @@ -46,7 +46,7 @@ export class CommonJsRenderingFormatter extends Esm5RenderingFormatter { /** * Add the exports to the bottom of the file. */ - addExports( + override addExports( output: MagicString, entryPointBasePath: string, exports: ExportInfo[], importManager: ImportManager, file: ts.SourceFile): void { exports.forEach(e => { @@ -61,7 +61,7 @@ export class CommonJsRenderingFormatter extends Esm5RenderingFormatter { }); } - addDirectExports( + override addDirectExports( output: MagicString, exports: Reexport[], importManager: ImportManager, file: ts.SourceFile): void { for (const e of exports) { @@ -72,7 +72,7 @@ export class CommonJsRenderingFormatter extends Esm5RenderingFormatter { } } - protected findEndOfImports(sf: ts.SourceFile): number { + protected override findEndOfImports(sf: ts.SourceFile): number { for (const statement of sf.statements) { if (ts.isExpressionStatement(statement) && isRequireCall(statement.expression)) { continue; diff --git a/packages/compiler-cli/ngcc/src/rendering/esm5_rendering_formatter.ts b/packages/compiler-cli/ngcc/src/rendering/esm5_rendering_formatter.ts index 2f5fdc4b5f..389eae6559 100644 --- a/packages/compiler-cli/ngcc/src/rendering/esm5_rendering_formatter.ts +++ b/packages/compiler-cli/ngcc/src/rendering/esm5_rendering_formatter.ts @@ -24,7 +24,8 @@ export class Esm5RenderingFormatter extends EsmRenderingFormatter { * Add the definitions, directly before the return statement, inside the IIFE of each decorated * class. */ - addDefinitions(output: MagicString, compiledClass: CompiledClass, definitions: string): void { + override addDefinitions(output: MagicString, compiledClass: CompiledClass, definitions: string): + void { const classSymbol = this.host.getClassSymbol(compiledClass.declaration); if (!classSymbol) { throw new Error( @@ -63,7 +64,8 @@ export class Esm5RenderingFormatter extends EsmRenderingFormatter { * * @return The JavaScript code corresponding to `stmt` (in the appropriate format). */ - printStatement(stmt: Statement, sourceFile: ts.SourceFile, importManager: ImportManager): string { + override printStatement(stmt: Statement, sourceFile: ts.SourceFile, importManager: ImportManager): + string { const node = translateStatement( stmt, importManager, {downlevelTaggedTemplates: true, downlevelVariableDeclarations: true}); const code = this.printer.printNode(ts.EmitHint.Unspecified, node, sourceFile); diff --git a/packages/compiler-cli/ngcc/src/rendering/umd_rendering_formatter.ts b/packages/compiler-cli/ngcc/src/rendering/umd_rendering_formatter.ts index 662c046d07..b1591c37fe 100644 --- a/packages/compiler-cli/ngcc/src/rendering/umd_rendering_formatter.ts +++ b/packages/compiler-cli/ngcc/src/rendering/umd_rendering_formatter.ts @@ -50,7 +50,7 @@ export class UmdRenderingFormatter extends Esm5RenderingFormatter { * * (See that the `z` import is not being used by the factory function.) */ - addImports(output: MagicString, imports: Import[], file: ts.SourceFile): void { + override addImports(output: MagicString, imports: Import[], file: ts.SourceFile): void { if (imports.length === 0) { return; } @@ -73,7 +73,7 @@ export class UmdRenderingFormatter extends Esm5RenderingFormatter { /** * Add the exports to the bottom of the UMD module factory function. */ - addExports( + override addExports( output: MagicString, entryPointBasePath: string, exports: ExportInfo[], importManager: ImportManager, file: ts.SourceFile): void { const umdModule = this.umdHost.getUmdModule(file); @@ -97,7 +97,7 @@ export class UmdRenderingFormatter extends Esm5RenderingFormatter { }); } - addDirectExports( + override addDirectExports( output: MagicString, exports: Reexport[], importManager: ImportManager, file: ts.SourceFile): void { const umdModule = this.umdHost.getUmdModule(file); @@ -120,7 +120,7 @@ export class UmdRenderingFormatter extends Esm5RenderingFormatter { /** * Add the constants to the top of the UMD factory function. */ - addConstants(output: MagicString, constants: string, file: ts.SourceFile): void { + override addConstants(output: MagicString, constants: string, file: ts.SourceFile): void { if (constants === '') { return; } diff --git a/packages/compiler-cli/ngcc/src/writing/new_entry_point_file_writer.ts b/packages/compiler-cli/ngcc/src/writing/new_entry_point_file_writer.ts index 114d2f72ea..ea40506334 100644 --- a/packages/compiler-cli/ngcc/src/writing/new_entry_point_file_writer.ts +++ b/packages/compiler-cli/ngcc/src/writing/new_entry_point_file_writer.ts @@ -34,7 +34,7 @@ export class NewEntryPointFileWriter extends InPlaceFileWriter { super(fs, logger, errorOnFailedEntryPoint); } - writeBundle( + override writeBundle( bundle: EntryPointBundle, transformedFiles: FileToWrite[], formatProperties: EntryPointJsonProperty[]) { // The new folder is at the root of the overall package @@ -45,7 +45,7 @@ export class NewEntryPointFileWriter extends InPlaceFileWriter { this.updatePackageJson(entryPoint, formatProperties, ngccFolder); } - revertBundle( + override revertBundle( entryPoint: EntryPoint, transformedFilePaths: AbsoluteFsPath[], formatProperties: EntryPointJsonProperty[]): void { // IMPLEMENTATION NOTE: diff --git a/packages/compiler-cli/ngcc/test/analysis/ngcc_trait_compiler_spec.ts b/packages/compiler-cli/ngcc/test/analysis/ngcc_trait_compiler_spec.ts index 2cd0ddd0c6..bfcbdc9440 100644 --- a/packages/compiler-cli/ngcc/test/analysis/ngcc_trait_compiler_spec.ts +++ b/packages/compiler-cli/ngcc/test/analysis/ngcc_trait_compiler_spec.ts @@ -323,7 +323,8 @@ class TestHandler implements DecoratorHandler { } class AlwaysDetectHandler extends TestHandler { - detect(node: ClassDeclaration, decorators: Decorator[]|null): DetectResult|undefined { + override detect(node: ClassDeclaration, decorators: Decorator[]|null): + DetectResult|undefined { super.detect(node, decorators); const decorator = decorators !== null ? decorators[0] : null; return {trigger: node, decorator, metadata: {}}; @@ -331,11 +332,12 @@ class AlwaysDetectHandler extends TestHandler { } class DetectDecoratorHandler extends TestHandler { - constructor(private decorator: string, readonly precedence: HandlerPrecedence) { + constructor(private decorator: string, override readonly precedence: HandlerPrecedence) { super(decorator, []); } - detect(node: ClassDeclaration, decorators: Decorator[]|null): DetectResult|undefined { + override detect(node: ClassDeclaration, decorators: Decorator[]|null): + DetectResult|undefined { super.detect(node, decorators); if (decorators === null) { return undefined; @@ -349,7 +351,7 @@ class DetectDecoratorHandler extends TestHandler { } class DiagnosticProducingHandler extends AlwaysDetectHandler { - analyze(node: ClassDeclaration): AnalysisOutput { + override analyze(node: ClassDeclaration): AnalysisOutput { super.analyze(node); return {diagnostics: [makeDiagnostic(9999, node, 'test diagnostic')]}; } diff --git a/packages/compiler-cli/ngcc/test/execution/helpers.ts b/packages/compiler-cli/ngcc/test/execution/helpers.ts index f01537a6a0..9b89efb933 100644 --- a/packages/compiler-cli/ngcc/test/execution/helpers.ts +++ b/packages/compiler-cli/ngcc/test/execution/helpers.ts @@ -7,7 +7,7 @@ */ import {DepGraph} from 'dependency-graph'; import {DtsProcessing, PartiallyOrderedTasks, Task} from '../../src/execution/tasks/api'; -import {EntryPoint} from '../../src/packages/entry_point'; +import {EntryPoint, EntryPointJsonProperty} from '../../src/packages/entry_point'; /** * Create a set of tasks and a graph of their interdependencies. @@ -53,7 +53,13 @@ export function createTasksAndGraph( for (let tIdx = 0; tIdx < tasksPerEntryPointCount; tIdx++) { const processDts = tIdx === 0 ? DtsProcessing.Yes : DtsProcessing.No; - tasks.push({entryPoint, formatProperty: `prop-${tIdx}`, processDts} as Task); + const formatProperty = `prop-${tIdx}` as EntryPointJsonProperty; + tasks.push({ + entryPoint, + formatProperty: formatProperty, + formatPropertiesToMarkAsProcessed: [], + processDts + }); } } diff --git a/packages/compiler-cli/ngcc/test/execution/tasks/queues/serial_task_queue_spec.ts b/packages/compiler-cli/ngcc/test/execution/tasks/queues/serial_task_queue_spec.ts index 85b8b63031..69598f55bf 100644 --- a/packages/compiler-cli/ngcc/test/execution/tasks/queues/serial_task_queue_spec.ts +++ b/packages/compiler-cli/ngcc/test/execution/tasks/queues/serial_task_queue_spec.ts @@ -33,7 +33,12 @@ describe('SerialTaskQueue', () => { const entryPoint = {name: `entry-point-${i}`, path: `/path/to/entry/point/${i}`} as EntryPoint; const processDts = i % 2 === 0 ? DtsProcessing.Yes : DtsProcessing.No; - tasks.push({entryPoint: entryPoint, formatProperty: `prop-${i}`, processDts} as Task); + tasks.push({ + entryPoint: entryPoint, + formatProperty: `prop-${i}`, + formatPropertiesToMarkAsProcessed: [], + processDts + } as Task); graph.addNode(entryPoint.path); } const dependencies = computeTaskDependencies(tasks, graph); diff --git a/packages/compiler-cli/ngcc/test/host/esm2015_host_spec.ts b/packages/compiler-cli/ngcc/test/host/esm2015_host_spec.ts index 69a8ff4df5..6cbe7ec2c6 100644 --- a/packages/compiler-cli/ngcc/test/host/esm2015_host_spec.ts +++ b/packages/compiler-cli/ngcc/test/host/esm2015_host_spec.ts @@ -2506,7 +2506,7 @@ runInEachFileSystem(() => { const externalLibWithoutTypingsIndex = _('/an_external_lib_without_typings/index.js'); class TestEsm2015ReflectionHost extends Esm2015ReflectionHost { - getExportsOfModule(node: ts.Node) { + override getExportsOfModule(node: ts.Node) { if (ts.isSourceFile(node) && (node.fileName === externalLibWithoutTypingsIndex)) { throw new Error( `'getExportsOfModule()' called on '${externalLibWithoutTypingsIndex}'.`); diff --git a/packages/compiler-cli/ngcc/test/integration/ngcc_spec.ts b/packages/compiler-cli/ngcc/test/integration/ngcc_spec.ts index 1420293481..6c5af582df 100644 --- a/packages/compiler-cli/ngcc/test/integration/ngcc_spec.ts +++ b/packages/compiler-cli/ngcc/test/integration/ngcc_spec.ts @@ -829,7 +829,7 @@ runInEachFileSystem(() => { it('should use the correct type name in typings files when an export has a different name in source files', () => { // We need to make sure that changes to the typings files use the correct name - // static ɵprov: ɵngcc0.ɵɵInjectableDef<ɵangular_packages_common_common_a>; + // static ɵprov: ɵngcc0.ɵɵInjectableDeclaration<ɵangular_packages_common_common_a>; mainNgcc({ basePath: '/node_modules', targetEntryPointPath: '@angular/common', diff --git a/packages/compiler-cli/ngcc/test/locking/lockfile_with_child_process/index_spec.ts b/packages/compiler-cli/ngcc/test/locking/lockfile_with_child_process/index_spec.ts index 69017747e7..edff4dc0b7 100644 --- a/packages/compiler-cli/ngcc/test/locking/lockfile_with_child_process/index_spec.ts +++ b/packages/compiler-cli/ngcc/test/locking/lockfile_with_child_process/index_spec.ts @@ -28,20 +28,20 @@ runInEachFileSystem(() => { super(fs, new MockLogger()); fs.ensureDir(fs.dirname(this.path)); } - remove() { + override remove() { this.log.push('remove()'); super.remove(); } - write() { + override write() { this.log.push('write()'); super.write(); } - read() { + override read() { const contents = super.read(); this.log.push('read() => ' + contents); return contents; } - createUnlocker(): ChildProcess { + override createUnlocker(): ChildProcess { this.log = this.log || []; this.log.push('createUnlocker()'); const log = this.log; diff --git a/packages/compiler-cli/ngcc/test/packages/configuration_spec.ts b/packages/compiler-cli/ngcc/test/packages/configuration_spec.ts index fe227ea6f3..7003d00ba9 100644 --- a/packages/compiler-cli/ngcc/test/packages/configuration_spec.ts +++ b/packages/compiler-cli/ngcc/test/packages/configuration_spec.ts @@ -48,9 +48,9 @@ runInEachFileSystem(() => { }]); const project1Conf = new NgccConfiguration(fs, project1); const expectedProject1Config = - `{"packages":{"package-1":[{"entryPoints":{"./entry-point-1":{}},"versionRange":"*"}]},"locking":{}}`; + `{"packages":{"package-1":[{"entryPoints":{"./entry-point-1":{}},"versionRange":"*"}]},"locking":{},"hashAlgorithm":"sha256"}`; expect(project1Conf.hash) - .toEqual(createHash('md5').update(expectedProject1Config).digest('hex')); + .toEqual(createHash('sha256').update(expectedProject1Config).digest('hex')); const project2 = _Abs('/project-2'); const project2Config = fs.resolve(project2, 'ngcc.config.js'); @@ -66,18 +66,41 @@ runInEachFileSystem(() => { }]); const project2Conf = new NgccConfiguration(fs, project2); const expectedProject2Config = - `{"packages":{"package-1":[{"entryPoints":{"./entry-point-1":{"ignore":true}},"versionRange":"*"}]},"locking":{}}`; + `{"packages":{"package-1":[{"entryPoints":{"./entry-point-1":{"ignore":true}},"versionRange":"*"}]},"locking":{},"hashAlgorithm":"sha256"}`; expect(project2Conf.hash) - .toEqual(createHash('md5').update(expectedProject2Config).digest('hex')); + .toEqual(createHash('sha256').update(expectedProject2Config).digest('hex')); }); it('should compute a hash even if there is no project configuration', () => { loadTestFiles([{name: _Abs('/project-1/empty.js'), contents: ``}]); const configuration = new NgccConfiguration(fs, _Abs('/project-1')); expect(configuration.hash) - .toEqual(createHash('md5') - .update(JSON.stringify({packages: {}, locking: {}})) - .digest('hex')); + .toEqual( + createHash('sha256') + .update(JSON.stringify({packages: {}, locking: {}, hashAlgorithm: 'sha256'})) + .digest('hex')); + }); + + it('should use a custom hash algorithm if specified in the config', () => { + const project1 = _Abs('/project-1'); + const project1Config = fs.resolve(project1, 'ngcc.config.js'); + + loadTestFiles([{ + name: project1Config, + contents: ` + module.exports = { + packages: { + 'package-1': {entryPoints: {'./entry-point-1': {}}}, + }, + hashAlgorithm: 'md5', + };` + }]); + const project1Conf = new NgccConfiguration(fs, project1); + const expectedProject1Config = + `{"packages":{"package-1":[{"entryPoints":{"./entry-point-1":{}},"versionRange":"*"}]},"locking":{},"hashAlgorithm":"md5"}`; + expect(JSON.stringify((project1Conf as any).projectConfig)).toEqual(expectedProject1Config); + expect(project1Conf.hash) + .toEqual(createHash('md5').update(expectedProject1Config).digest('hex')); }); }); diff --git a/packages/compiler-cli/ngcc/test/packages/entry_point_manifest_spec.ts b/packages/compiler-cli/ngcc/test/packages/entry_point_manifest_spec.ts index 9a608c15f1..e510719860 100644 --- a/packages/compiler-cli/ngcc/test/packages/entry_point_manifest_spec.ts +++ b/packages/compiler-cli/ngcc/test/packages/entry_point_manifest_spec.ts @@ -40,7 +40,7 @@ runInEachFileSystem(() => { beforeEach(() => { manifestFile = { ngccVersion: NGCC_VERSION, - lockFileHash: createHash('md5').update('LOCK FILE CONTENTS').digest('hex'), + lockFileHash: createHash('sha256').update('LOCK FILE CONTENTS').digest('hex'), configFileHash: config.hash, entryPointPaths: [] }; @@ -278,7 +278,7 @@ runInEachFileSystem(() => { JSON.parse(fs.readFile(_Abs('/project/node_modules/__ngcc_entry_points__.json'))) as EntryPointManifestFile; expect(file.lockFileHash) - .toEqual(createHash('md5').update('LOCK FILE CONTENTS').digest('hex')); + .toEqual(createHash('sha256').update('LOCK FILE CONTENTS').digest('hex')); }); it('should write a hash of the package-lock.json file', () => { @@ -288,7 +288,7 @@ runInEachFileSystem(() => { JSON.parse(fs.readFile(_Abs('/project/node_modules/__ngcc_entry_points__.json'))) as EntryPointManifestFile; expect(file.lockFileHash) - .toEqual(createHash('md5').update('LOCK FILE CONTENTS').digest('hex')); + .toEqual(createHash('sha256').update('LOCK FILE CONTENTS').digest('hex')); }); it('should write a hash of the project config', () => { diff --git a/packages/compiler-cli/ngcc/test/rendering/renderer_spec.ts b/packages/compiler-cli/ngcc/test/rendering/renderer_spec.ts index 5ea2e0ce07..b369880b55 100644 --- a/packages/compiler-cli/ngcc/test/rendering/renderer_spec.ts +++ b/packages/compiler-cli/ngcc/test/rendering/renderer_spec.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ import {Statement} from '@angular/compiler'; -import {fromObject, generateMapFileComment, SourceMapConverter} from 'convert-source-map'; +import {fromObject, fromSource, generateMapFileComment, SourceMapConverter} from 'convert-source-map'; import MagicString from 'magic-string'; import {encode, SourceMapMappings} from 'sourcemap-codec'; import * as ts from 'typescript'; @@ -201,19 +201,84 @@ runInEachFileSystem(() => { 'file': 'file.js', 'sources': ['file.js'], 'names': [], - 'mappings': encode([[], [], [], [], [], [], [], [], [], [], [], [], [[0, 0, 0, 0]]]), + 'mappings': encode([ + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [[0, 0, 0, 0]], + [[0, 0, 1, 0]], + [[0, 0, 2, 0]], + [[0, 0, 3, 0]], + [[0, 0, 4, 0]], + [[0, 0, 5, 0]], + [[0, 0, 6, 0]], + [[0, 0, 7, 0]], + [[0, 0, 8, 0]] + ]), 'sourcesContent': [JS_CONTENT.contents], }); - const MERGED_OUTPUT_PROGRAM_MAPPINGS: SourceMapMappings = - [[], [], [], [], [], [], [], [], [], [], [], [], ...JS_CONTENT_MAPPINGS]; - MERGED_OUTPUT_PROGRAM_MAP = fromObject({ 'version': 3, 'file': 'file.js', 'sources': ['file.ts'], 'names': [], - 'mappings': encode(MERGED_OUTPUT_PROGRAM_MAPPINGS), + 'mappings': encode([ + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [ + [0, 0, 0, 0], [7, 0, 0, 7], [9, 0, 0, 8], [18, 0, 0, 17], [20, 0, 0, 18], + [26, 0, 0, 24], [41, 0, 0, 39], [42, 0, 0, 40] + ], + [ + [0, 0, 2, 0], [4, 0, 2, 13], [5, 0, 2, 14], [8, 0, 2, 0], [14, 0, 2, 13], [15, 0, 2, 14] + ], + [[0, 0, 2, 16], [4, 0, 3, 2], [7, 0, 3, 5], [8, 0, 3, 6], [9, 0, 3, 15]], + [ + [0, 0, 3, 27], [7, 0, 3, 34], [8, 0, 3, 35], [9, 0, 3, 36], [10, 0, 3, 37], + [11, 0, 3, 38], [1, 0, 4, 1], [2, 0, 4, 1] + ], + [[0, 0, 2, 13], [1, 0, 2, 14]], + [[0, 0, 3, 3]], + [ + [0, 0, 3, 5], [2, 0, 1, 1], [11, 0, 1, 10], [12, 0, 1, 11], [14, 0, 1, 12], + [3, 0, 2, 13], [4, 0, 2, 14], [5, 0, 4, 1] + ], + [ + [0, 0, 4, 13], [5, 0, 1, 20], [7, 0, 1, 22], [12, 0, 1, 27], [14, 0, 1, 28], + [15, 0, 1, 29], [9, 0, 2, 13], [10, 0, 2, 14] + ], + [[0, 0, 4, 2]], + [], + [ + [0, 0, 0, 2], [0, 0, 0, 2], [0, 0, 0, 2], [0, 0, 0, 2], [0, 0, 0, 2], [0, 0, 0, 2], + [0, 0, 0, 2], [0, 0, 0, 2], [0, 0, 2, 2], [0, 0, 2, 2], [0, 0, 2, 2], [0, 0, 2, 2], + [0, 0, 2, 2], [0, 0, 2, 2], [0, 0, 3, 2], [0, 0, 3, 2], [0, 0, 3, 2], [0, 0, 3, 2], + [0, 0, 3, 2], [0, 0, 3, 2], [0, 0, 3, 2], [0, 0, 3, 2], [0, 0, 3, 2], [0, 0, 3, 2], + [0, 0, 4, 2], [0, 0, 4, 2], [0, 0, 2, 2], [0, 0, 2, 2], [0, 0, 1, 2], [0, 0, 1, 2], + [0, 0, 1, 2], [0, 0, 1, 2], [0, 0, 2, 2], [0, 0, 2, 2], [0, 0, 4, 2], [0, 0, 1, 2], + [0, 0, 1, 2], [0, 0, 1, 2], [0, 0, 1, 2], [0, 0, 1, 2], [0, 0, 2, 2], [0, 0, 2, 2] + ], + ]), 'sourcesContent': [TS_CONTENT.contents], }); }); @@ -226,8 +291,9 @@ runInEachFileSystem(() => { const [sourceFile, mapFile] = renderer.renderProgram( decorationAnalyses, switchMarkerAnalyses, privateDeclarationsAnalyses); expect(sourceFile.path).toEqual(_('/node_modules/test-package/src/file.js')); - expect(sourceFile.contents) - .toEqual(RENDERED_CONTENTS + '\n' + OUTPUT_PROGRAM_MAP.toComment()); + expect(sourceFile.contents).toContain(RENDERED_CONTENTS); + expect(fromSource(sourceFile.contents)!.toObject()) + .toEqual(OUTPUT_PROGRAM_MAP.toObject()); expect(mapFile).toBeUndefined(); }); @@ -616,8 +682,9 @@ UndecoratedBase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: Undeco const [sourceFile, mapFile] = renderer.renderProgram( decorationAnalyses, switchMarkerAnalyses, privateDeclarationsAnalyses); expect(sourceFile.path).toEqual(_('/node_modules/test-package/src/file.js')); - expect(sourceFile.contents) - .toEqual(RENDERED_CONTENTS + '\n' + MERGED_OUTPUT_PROGRAM_MAP.toComment()); + expect(sourceFile.contents).toContain(RENDERED_CONTENTS); + expect(fromSource(sourceFile.contents)!.toObject()) + .toEqual(MERGED_OUTPUT_PROGRAM_MAP.toObject()); expect(mapFile).toBeUndefined(); }); diff --git a/packages/compiler-cli/package.json b/packages/compiler-cli/package.json index a6c2a4c3c3..a16d15ba41 100644 --- a/packages/compiler-cli/package.json +++ b/packages/compiler-cli/package.json @@ -18,21 +18,17 @@ "canonical-path": "1.0.0", "chokidar": "^3.0.0", "convert-source-map": "^1.5.1", - "dependency-graph": "^0.7.2", - "fs-extra": "4.0.2", + "dependency-graph": "^0.11.0", "magic-string": "^0.25.0", - "semver": "^6.3.0", + "semver": "^7.0.0", "source-map": "^0.6.1", "sourcemap-codec": "^1.4.8", - "tslib": "^2.1.0", - "yargs": "^16.2.0" + "tslib": "^2.2.0", + "yargs": "^17.0.0" }, "peerDependencies": { "@angular/compiler": "0.0.0-PLACEHOLDER", - "typescript": ">=4.2.3 <4.3" - }, - "engines": { - "node": ">=10.0" + "typescript": ">=4.2.3 <4.4" }, "repository": { "type": "git", @@ -44,14 +40,14 @@ "compiler" ], "license": "MIT", + "engines": { + "node": "^12.14.1 || >=14.0.0" + }, "bugs": { "url": "https://github.com/angular/angular/issues" }, "homepage": "https://github.com/angular/angular/tree/master/packages/compiler-cli", "ng-update": { "packageGroup": "NG_UPDATE_PACKAGE_GROUP" - }, - "publishConfig": { - "registry": "https://wombat-dressing-room.appspot.com" } } diff --git a/packages/compiler-cli/src/metadata/schema.ts b/packages/compiler-cli/src/metadata/schema.ts index 06683c10ec..c6413da7a7 100644 --- a/packages/compiler-cli/src/metadata/schema.ts +++ b/packages/compiler-cli/src/metadata/schema.ts @@ -145,7 +145,7 @@ export function isMetadataSymbolicExpression(value: any): value is MetadataSymbo export interface MetadataSymbolicBinaryExpression { __symbolic: 'binary'; operator: '&&'|'||'|'|'|'^'|'&'|'=='|'!='|'==='|'!=='|'<'|'>'|'<='|'>='|'instanceof'|'in'|'as'| - '<<'|'>>'|'>>>'|'+'|'-'|'*'|'/'|'%'|'**'; + '<<'|'>>'|'>>>'|'+'|'-'|'*'|'/'|'%'|'**'|'??'; left: MetadataValue; right: MetadataValue; } diff --git a/packages/compiler-cli/src/ngtsc/annotations/BUILD.bazel b/packages/compiler-cli/src/ngtsc/annotations/BUILD.bazel index b10a14584e..fed9544064 100644 --- a/packages/compiler-cli/src/ngtsc/annotations/BUILD.bazel +++ b/packages/compiler-cli/src/ngtsc/annotations/BUILD.bazel @@ -27,6 +27,7 @@ ts_library( "//packages/compiler-cli/src/ngtsc/typecheck/api", "//packages/compiler-cli/src/ngtsc/typecheck/diagnostics", "//packages/compiler-cli/src/ngtsc/util", + "//packages/compiler-cli/src/ngtsc/xi18n", "@npm//@types/node", "@npm//typescript", ], diff --git a/packages/compiler-cli/src/ngtsc/annotations/src/component.ts b/packages/compiler-cli/src/ngtsc/annotations/src/component.ts index dd58ad5b56..281c99b117 100644 --- a/packages/compiler-cli/src/ngtsc/annotations/src/component.ts +++ b/packages/compiler-cli/src/ngtsc/annotations/src/component.ts @@ -6,31 +6,32 @@ * found in the LICENSE file at https://angular.io/license */ -import {compileComponentFromMetadata, compileDeclareComponentFromMetadata, ConstantPool, CssSelector, DeclarationListEmitMode, DEFAULT_INTERPOLATION_CONFIG, DomElementSchemaRegistry, Expression, ExternalExpr, FactoryTarget, InterpolationConfig, LexerRange, makeBindingParser, ParsedTemplate, ParseSourceFile, parseTemplate, R3ComponentMetadata, R3FactoryMetadata, R3TargetBinder, R3UsedDirectiveMetadata, SelectorMatcher, Statement, TmplAstNode, WrappedNodeExpr} from '@angular/compiler'; +import {compileClassMetadata, compileComponentFromMetadata, compileDeclareClassMetadata, compileDeclareComponentFromMetadata, ConstantPool, CssSelector, DeclarationListEmitMode, DeclareComponentTemplateInfo, DEFAULT_INTERPOLATION_CONFIG, DomElementSchemaRegistry, Expression, ExternalExpr, FactoryTarget, InterpolationConfig, LexerRange, makeBindingParser, ParsedTemplate, ParseSourceFile, parseTemplate, R3ClassMetadata, R3ComponentMetadata, R3TargetBinder, R3UsedDirectiveMetadata, SelectorMatcher, Statement, TmplAstNode, WrappedNodeExpr} from '@angular/compiler'; +import {ViewEncapsulation} from '@angular/compiler/src/core'; import * as ts from 'typescript'; import {Cycle, CycleAnalyzer, CycleHandlingStrategy} from '../../cycles'; -import {ErrorCode, FatalDiagnosticError, makeRelatedInformation} from '../../diagnostics'; +import {ErrorCode, FatalDiagnosticError, makeDiagnostic, makeRelatedInformation} from '../../diagnostics'; import {absoluteFrom, relative} from '../../file_system'; -import {DefaultImportRecorder, ImportedFile, ModuleResolver, Reference, ReferenceEmitter} from '../../imports'; +import {ImportedFile, ModuleResolver, Reference, ReferenceEmitter} from '../../imports'; import {DependencyTracker} from '../../incremental/api'; import {extractSemanticTypeParameters, isArrayEqual, isReferenceEqual, SemanticDepGraphUpdater, SemanticReference, SemanticSymbol} from '../../incremental/semantic_graph'; import {IndexingContext} from '../../indexer'; -import {ClassPropertyMapping, ComponentResources, DirectiveMeta, DirectiveTypeCheckMeta, extractDirectiveTypeCheckMeta, InjectableClassRegistry, MetadataReader, MetadataRegistry, Resource, ResourceRegistry} from '../../metadata'; +import {ClassPropertyMapping, ComponentResources, DirectiveMeta, DirectiveTypeCheckMeta, extractDirectiveTypeCheckMeta, InjectableClassRegistry, MetadataReader, MetadataRegistry, MetaType, Resource, ResourceRegistry} from '../../metadata'; import {EnumValue, PartialEvaluator, ResolvedValue} from '../../partial_evaluator'; import {PerfEvent, PerfRecorder} from '../../perf'; import {ClassDeclaration, DeclarationNode, Decorator, ReflectionHost, reflectObjectLiteral} from '../../reflection'; import {ComponentScopeReader, LocalModuleScopeRegistry, TypeCheckScopeRegistry} from '../../scope'; import {AnalysisOutput, CompileResult, DecoratorHandler, DetectResult, HandlerFlags, HandlerPrecedence, ResolveResult} from '../../transform'; import {TemplateSourceMapping, TypeCheckContext} from '../../typecheck/api'; -import {tsSourceMapBug29300Fixed} from '../../util/src/ts_source_map_bug_29300'; import {SubsetOfKeys} from '../../util/src/typescript'; +import {Xi18nContext} from '../../xi18n'; import {ResourceLoader} from './api'; import {createValueHasWrongTypeError, getDirectiveDiagnostics, getProviderDiagnostics} from './diagnostics'; import {DirectiveSymbol, extractDirectiveMetadata, parseFieldArrayValue} from './directive'; import {compileDeclareFactory, compileNgFactoryDefField} from './factory'; -import {generateSetClassMetadataCall} from './metadata'; +import {extractClassMetadata} from './metadata'; import {NgModuleSymbol} from './ng_module'; import {compileResults, findAngularDecorator, isAngularCoreReference, isExpressionForwardReference, readBaseClass, resolveProvidersRequiringFactory, toFactoryMetadata, unwrapExpression, wrapFunctionExpressionsInParens} from './util'; @@ -55,7 +56,7 @@ export interface ComponentAnalysisData { baseClass: Reference|'dynamic'|null; typeCheckMeta: DirectiveTypeCheckMeta; template: ParsedTemplateWithSource; - metadataStmt: Statement|null; + classMetadata: R3ClassMetadata|null; inputs: ClassPropertyMapping; outputs: ClassPropertyMapping; @@ -122,7 +123,8 @@ export class ComponentSymbol extends DirectiveSymbol { usedPipes: SemanticReference[] = []; isRemotelyScoped = false; - isEmitAffected(previousSymbol: SemanticSymbol, publicApiAffected: Set): boolean { + override isEmitAffected(previousSymbol: SemanticSymbol, publicApiAffected: Set): + boolean { if (!(previousSymbol instanceof ComponentSymbol)) { return true; } @@ -145,7 +147,7 @@ export class ComponentSymbol extends DirectiveSymbol { !isArrayEqual(this.usedPipes, previousSymbol.usedPipes, isSymbolUnaffected); } - isTypeCheckBlockAffected( + override isTypeCheckBlockAffected( previousSymbol: SemanticSymbol, typeCheckApiAffected: Set): boolean { if (!(previousSymbol instanceof ComponentSymbol)) { return true; @@ -205,7 +207,6 @@ export class ComponentDecoratorHandler implements private i18nNormalizeLineEndingsInICUs: boolean|undefined, private moduleResolver: ModuleResolver, private cycleAnalyzer: CycleAnalyzer, private cycleHandlingStrategy: CycleHandlingStrategy, private refEmitter: ReferenceEmitter, - private defaultImportRecorder: DefaultImportRecorder, private depTracker: DependencyTracker|null, private injectableRegistry: InjectableClassRegistry, private semanticDepGraphUpdater: SemanticDepGraphUpdater|null, @@ -262,13 +263,16 @@ export class ComponentDecoratorHandler implements const component = reflectObjectLiteral(meta); const containingFile = node.getSourceFile().fileName; - const resolveStyleUrl = - (styleUrl: string, nodeForError: ts.Node, - resourceType: ResourceTypeForDiagnostics): Promise|undefined => { - const resourceUrl = - this._resolveResourceOrThrow(styleUrl, containingFile, nodeForError, resourceType); - return this.resourceLoader.preload(resourceUrl, {type: 'style', containingFile}); - }; + const resolveStyleUrl = (styleUrl: string): Promise|undefined => { + try { + const resourceUrl = this.resourceLoader.resolve(styleUrl, containingFile); + return this.resourceLoader.preload(resourceUrl, {type: 'style', containingFile}); + } catch { + // Don't worry about failures to preload. We can handle this problem during analysis by + // producing a diagnostic. + return undefined; + } + }; // A Promise that waits for the template and all ed styles within it to be preloaded. const templateAndTemplateStyleResources = @@ -278,12 +282,7 @@ export class ComponentDecoratorHandler implements return undefined; } - const nodeForError = getTemplateDeclarationNodeForError(template.declaration); - return Promise - .all(template.styleUrls.map( - styleUrl => resolveStyleUrl( - styleUrl, nodeForError, - ResourceTypeForDiagnostics.StylesheetFromTemplate))) + return Promise.all(template.styleUrls.map(styleUrl => resolveStyleUrl(styleUrl))) .then(() => undefined); }); @@ -305,16 +304,15 @@ export class ComponentDecoratorHandler implements this.preanalyzeStylesCache.set(node, styles); }); } + } else { + this.preanalyzeStylesCache.set(node, null); } // Wait for both the template and all styleUrl resources to resolve. return Promise .all([ templateAndTemplateStyleResources, inlineStyles, - ...componentStyleUrls.map( - styleUrl => resolveStyleUrl( - styleUrl.url, styleUrl.nodeForError, - ResourceTypeForDiagnostics.StylesheetFromDecorator)) + ...componentStyleUrls.map(styleUrl => resolveStyleUrl(styleUrl.url)) ]) .then(() => undefined); } @@ -326,11 +324,13 @@ export class ComponentDecoratorHandler implements const containingFile = node.getSourceFile().fileName; this.literalCache.delete(decorator); + let diagnostics: ts.Diagnostic[]|undefined; + let isPoisoned = false; // @Component inherits @Directive, so begin by extracting the @Directive metadata and building // on it. const directiveResult = extractDirectiveMetadata( - node, decorator, this.reflector, this.evaluator, this.defaultImportRecorder, this.isCore, - flags, this.annotateForClosureCompiler, + node, decorator, this.reflector, this.evaluator, this.isCore, flags, + this.annotateForClosureCompiler, this.elementSchemaRegistry.getDefaultComponentElementName()); if (directiveResult === undefined) { // `extractDirectiveMetadata` returns undefined when the @Directive has `jit: true`. In this @@ -341,6 +341,16 @@ export class ComponentDecoratorHandler implements // Next, read the `@Component`-specific fields. const {decorator: component, metadata, inputs, outputs} = directiveResult; + const encapsulation: number = + this._resolveEnumValue(component, 'encapsulation', 'ViewEncapsulation') ?? + ViewEncapsulation.Emulated; + const changeDetection: number|null = + this._resolveEnumValue(component, 'changeDetection', 'ChangeDetectionStrategy'); + + let animations: Expression|null = null; + if (component.has('animations')) { + animations = new WrappedNodeExpr(component.get('animations')!); + } // Go through the root directories for this project, and select the one with the smallest // relative path representation. @@ -392,7 +402,7 @@ export class ComponentDecoratorHandler implements template = this.extractTemplate(node, templateDecl); } const templateResource = - template.isInline ? {path: null, expression: component.get('template')!} : { + template.declaration.isInline ? {path: null, expression: component.get('template')!} : { path: absoluteFrom(template.declaration.resolvedTemplateUrl), expression: template.sourceMapping.node }; @@ -408,16 +418,36 @@ export class ComponentDecoratorHandler implements ]; for (const styleUrl of styleUrls) { - const resourceType = styleUrl.source === ResourceTypeForDiagnostics.StylesheetFromDecorator ? - ResourceTypeForDiagnostics.StylesheetFromDecorator : - ResourceTypeForDiagnostics.StylesheetFromTemplate; - const resourceUrl = this._resolveResourceOrThrow( - styleUrl.url, containingFile, styleUrl.nodeForError, resourceType); - const resourceStr = this.resourceLoader.load(resourceUrl); + try { + const resourceUrl = this.resourceLoader.resolve(styleUrl.url, containingFile); + const resourceStr = this.resourceLoader.load(resourceUrl); + styles.push(resourceStr); + if (this.depTracker !== null) { + this.depTracker.addResourceDependency(node.getSourceFile(), absoluteFrom(resourceUrl)); + } + } catch { + if (diagnostics === undefined) { + diagnostics = []; + } + const resourceType = + styleUrl.source === ResourceTypeForDiagnostics.StylesheetFromDecorator ? + ResourceTypeForDiagnostics.StylesheetFromDecorator : + ResourceTypeForDiagnostics.StylesheetFromTemplate; + diagnostics.push( + this.makeResourceNotFoundError(styleUrl.url, styleUrl.nodeForError, resourceType) + .toDiagnostic()); + } + } - styles.push(resourceStr); - if (this.depTracker !== null) { - this.depTracker.addResourceDependency(node.getSourceFile(), absoluteFrom(resourceUrl)); + if (encapsulation === ViewEncapsulation.ShadowDom && metadata.selector !== null) { + const selectorError = checkCustomElementSelectorForErrors(metadata.selector); + if (selectorError !== null) { + if (diagnostics === undefined) { + diagnostics = []; + } + diagnostics.push(makeDiagnostic( + ErrorCode.COMPONENT_INVALID_SHADOW_DOM_SELECTOR, component.get('selector')!, + selectorError)); } } @@ -450,17 +480,6 @@ export class ComponentDecoratorHandler implements styles.push(...template.styles); } - const encapsulation: number = - this._resolveEnumValue(component, 'encapsulation', 'ViewEncapsulation') || 0; - - const changeDetection: number|null = - this._resolveEnumValue(component, 'changeDetection', 'ChangeDetectionStrategy'); - - let animations: Expression|null = null; - if (component.has('animations')) { - animations = new WrappedNodeExpr(component.get('animations')!); - } - const output: AnalysisOutput = { analysis: { baseClass: readBaseClass(node, this.reflector, this.evaluator), @@ -484,9 +503,8 @@ export class ComponentDecoratorHandler implements relativeContextFilePath, }, typeCheckMeta: extractDirectiveTypeCheckMeta(node, inputs, this.reflector), - metadataStmt: generateSetClassMetadataCall( - node, this.reflector, this.defaultImportRecorder, this.isCore, - this.annotateForClosureCompiler), + classMetadata: extractClassMetadata( + node, this.reflector, this.isCore, this.annotateForClosureCompiler), template, providersRequiringFactory, viewProvidersRequiringFactory, @@ -496,8 +514,9 @@ export class ComponentDecoratorHandler implements styles: styleResources, template: templateResource, }, - isPoisoned: false, + isPoisoned, }, + diagnostics, }; if (changeDetection !== null) { output.analysis!.meta.changeDetection = changeDetection; @@ -518,6 +537,7 @@ export class ComponentDecoratorHandler implements // the information about the component is available during the compile() phase. const ref = new Reference(node); this.metaRegistry.registerDirectiveMetadata({ + type: MetaType.Directive, ref, name: node.name.text, selector: analysis.meta.selector, @@ -565,7 +585,7 @@ export class ComponentDecoratorHandler implements selector, boundTemplate, templateMeta: { - isInline: analysis.template.isInline, + isInline: analysis.template.declaration.isInline, file: analysis.template.file, }, }); @@ -819,6 +839,13 @@ export class ComponentDecoratorHandler implements return {data}; } + xi18n(ctx: Xi18nContext, node: ClassDeclaration, analysis: Readonly): + void { + ctx.updateFromTemplate( + analysis.template.content, analysis.template.declaration.resolvedTemplateUrl, + analysis.template.interpolationConfig ?? DEFAULT_INTERPOLATION_CONFIG); + } + updateResources(node: ClassDeclaration, analysis: ComponentAnalysisData): void { const containingFile = node.getSourceFile().fileName; @@ -833,14 +860,14 @@ export class ComponentDecoratorHandler implements let styles: string[] = []; if (analysis.styleUrls !== null) { for (const styleUrl of analysis.styleUrls) { - const resourceType = - styleUrl.source === ResourceTypeForDiagnostics.StylesheetFromDecorator ? - ResourceTypeForDiagnostics.StylesheetFromDecorator : - ResourceTypeForDiagnostics.StylesheetFromTemplate; - const resolvedStyleUrl = this._resolveResourceOrThrow( - styleUrl.url, containingFile, styleUrl.nodeForError, resourceType); - const styleText = this.resourceLoader.load(resolvedStyleUrl); - styles.push(styleText); + try { + const resolvedStyleUrl = this.resourceLoader.resolve(styleUrl.url, containingFile); + const styleText = this.resourceLoader.load(resolvedStyleUrl); + styles.push(styleText); + } catch (e) { + // Resource resolve failures should already be in the diagnostics list from the analyze + // stage. We do not need to do anything with them when updating resources. + } } } if (analysis.inlineStyles !== null) { @@ -864,7 +891,10 @@ export class ComponentDecoratorHandler implements const meta: R3ComponentMetadata = {...analysis.meta, ...resolution}; const fac = compileNgFactoryDefField(toFactoryMetadata(meta, FactoryTarget.Component)); const def = compileComponentFromMetadata(meta, pool, makeBindingParser()); - return compileResults(fac, def, analysis.metadataStmt, 'ɵcmp'); + const classMetadata = analysis.classMetadata !== null ? + compileClassMetadata(analysis.classMetadata).toStmt() : + null; + return compileResults(fac, def, classMetadata, 'ɵcmp'); } compilePartial( @@ -873,10 +903,21 @@ export class ComponentDecoratorHandler implements if (analysis.template.errors !== null && analysis.template.errors.length > 0) { return []; } + const templateInfo: DeclareComponentTemplateInfo = { + content: analysis.template.content, + sourceUrl: analysis.template.declaration.resolvedTemplateUrl, + isInline: analysis.template.declaration.isInline, + inlineTemplateLiteralExpression: analysis.template.sourceMapping.type === 'direct' ? + new WrappedNodeExpr(analysis.template.sourceMapping.node) : + null, + }; const meta: R3ComponentMetadata = {...analysis.meta, ...resolution}; const fac = compileDeclareFactory(toFactoryMetadata(meta, FactoryTarget.Component)); - const def = compileDeclareComponentFromMetadata(meta, analysis.template); - return compileResults(fac, def, analysis.metadataStmt, 'ɵcmp'); + const def = compileDeclareComponentFromMetadata(meta, analysis.template, templateInfo); + const classMetadata = analysis.classMetadata !== null ? + compileDeclareClassMetadata(analysis.classMetadata).toStmt() : + null; + return compileResults(fac, def, classMetadata, 'ɵcmp'); } private _resolveLiteral(decorator: Decorator): ts.ObjectLiteralExpression { @@ -978,10 +1019,14 @@ export class ComponentDecoratorHandler implements const styleUrlsExpr = component.get('styleUrls'); if (styleUrlsExpr !== undefined && ts.isArrayLiteralExpression(styleUrlsExpr)) { for (const expression of stringLiteralElements(styleUrlsExpr)) { - const resourceUrl = this._resolveResourceOrThrow( - expression.text, containingFile, expression, - ResourceTypeForDiagnostics.StylesheetFromDecorator); - styles.add({path: absoluteFrom(resourceUrl), expression}); + try { + const resourceUrl = this.resourceLoader.resolve(expression.text, containingFile); + styles.add({path: absoluteFrom(resourceUrl), expression}); + } catch { + // Errors in style resource extraction do not need to be handled here. We will produce + // diagnostics for each one that fails in the analysis, after we evaluate the `styleUrls` + // expression to determine _all_ style resources, not just the string literals. + } } } @@ -1006,22 +1051,27 @@ export class ComponentDecoratorHandler implements throw createValueHasWrongTypeError( templateUrlExpr, templateUrl, 'templateUrl must be a string'); } - const resourceUrl = this._resolveResourceOrThrow( - templateUrl, containingFile, templateUrlExpr, ResourceTypeForDiagnostics.Template); - const templatePromise = - this.resourceLoader.preload(resourceUrl, {type: 'template', containingFile}); + try { + const resourceUrl = this.resourceLoader.resolve(templateUrl, containingFile); + const templatePromise = + this.resourceLoader.preload(resourceUrl, {type: 'template', containingFile}); - // If the preload worked, then actually load and parse the template, and wait for any style - // URLs to resolve. - if (templatePromise !== undefined) { - return templatePromise.then(() => { - const templateDecl = this.parseTemplateDeclaration(decorator, component, containingFile); - const template = this.extractTemplate(node, templateDecl); - this.preanalyzeTemplateCache.set(node, template); - return template; - }); - } else { - return Promise.resolve(null); + // If the preload worked, then actually load and parse the template, and wait for any style + // URLs to resolve. + if (templatePromise !== undefined) { + return templatePromise.then(() => { + const templateDecl = + this.parseTemplateDeclaration(decorator, component, containingFile); + const template = this.extractTemplate(node, templateDecl); + this.preanalyzeTemplateCache.set(node, template); + return template; + }); + } else { + return Promise.resolve(null); + } + } catch (e) { + throw this.makeResourceNotFoundError( + templateUrl, templateUrlExpr, ResourceTypeForDiagnostics.Template); } } else { const templateDecl = this.parseTemplateDeclaration(decorator, component, containingFile); @@ -1034,48 +1084,57 @@ export class ComponentDecoratorHandler implements private extractTemplate(node: ClassDeclaration, template: TemplateDeclaration): ParsedTemplateWithSource { if (template.isInline) { - let templateStr: string; - let templateLiteral: ts.Node|null = null; - let templateUrl: string = ''; - let templateRange: LexerRange|null = null; + let sourceStr: string; + let sourceParseRange: LexerRange|null = null; + let templateContent: string; let sourceMapping: TemplateSourceMapping; let escapedString = false; + let sourceMapUrl: string|null; // We only support SourceMaps for inline templates that are simple string literals. if (ts.isStringLiteral(template.expression) || ts.isNoSubstitutionTemplateLiteral(template.expression)) { // the start and end of the `templateExpr` node includes the quotation marks, which we must // strip - templateRange = getTemplateRange(template.expression); - templateStr = template.expression.getSourceFile().text; - templateLiteral = template.expression; - templateUrl = template.templateUrl; + sourceParseRange = getTemplateRange(template.expression); + sourceStr = template.expression.getSourceFile().text; + templateContent = template.expression.text; escapedString = true; sourceMapping = { type: 'direct', node: template.expression, }; + sourceMapUrl = template.resolvedTemplateUrl; } else { const resolvedTemplate = this.evaluator.evaluate(template.expression); if (typeof resolvedTemplate !== 'string') { throw createValueHasWrongTypeError( template.expression, resolvedTemplate, 'template must be a string'); } - templateStr = resolvedTemplate; + // We do not parse the template directly from the source file using a lexer range, so + // the template source and content are set to the statically resolved template. + sourceStr = resolvedTemplate; + templateContent = resolvedTemplate; sourceMapping = { type: 'indirect', node: template.expression, componentClass: node, - template: templateStr, + template: templateContent, }; + + // Indirect templates cannot be mapped to a particular byte range of any input file, since + // they're computed by expressions that may span many files. Don't attempt to map them back + // to a given file. + sourceMapUrl = null; } return { - ...this._parseTemplate(template, templateStr, templateRange, escapedString), + ...this._parseTemplate(template, sourceStr, sourceParseRange, escapedString, sourceMapUrl), + content: templateContent, sourceMapping, declaration: template, }; } else { - const templateStr = this.resourceLoader.load(template.resolvedTemplateUrl); + const templateContent = this.resourceLoader.load(template.resolvedTemplateUrl); if (this.depTracker !== null) { this.depTracker.addResourceDependency( node.getSourceFile(), absoluteFrom(template.resolvedTemplateUrl)); @@ -1083,15 +1142,17 @@ export class ComponentDecoratorHandler implements return { ...this._parseTemplate( - template, templateStr, /* templateRange */ null, - /* escapedString */ false), + template, /* sourceStr */ templateContent, /* sourceParseRange */ null, + /* escapedString */ false, + /* sourceMapUrl */ template.resolvedTemplateUrl), + content: templateContent, sourceMapping: { type: 'external', componentClass: node, // TODO(alxhub): TS in g3 is unable to make this inference on its own, so cast it here // until g3 is able to figure this out. node: (template as ExternalTemplateDeclaration).templateUrlExpression, - template: templateStr, + template: templateContent, templateUrl: template.resolvedTemplateUrl, }, declaration: template, @@ -1100,19 +1161,18 @@ export class ComponentDecoratorHandler implements } private _parseTemplate( - template: TemplateDeclaration, templateStr: string, templateRange: LexerRange|null, - escapedString: boolean): ParsedComponentTemplate { + template: TemplateDeclaration, sourceStr: string, sourceParseRange: LexerRange|null, + escapedString: boolean, sourceMapUrl: string|null): ParsedComponentTemplate { // We always normalize line endings if the template has been escaped (i.e. is inline). const i18nNormalizeLineEndingsInICUs = escapedString || this.i18nNormalizeLineEndingsInICUs; - const parsedTemplate = parseTemplate(templateStr, template.sourceMapUrl, { + const parsedTemplate = parseTemplate(sourceStr, sourceMapUrl ?? '', { preserveWhitespaces: template.preserveWhitespaces, interpolationConfig: template.interpolationConfig, - range: templateRange ?? undefined, + range: sourceParseRange ?? undefined, escapedString, enableI18nLegacyMessageIdFormat: this.enableI18nLegacyMessageIdFormat, i18nNormalizeLineEndingsInICUs, - isInline: template.isInline, alwaysAttemptHtmlToR3AstConversion: this.usePoisonedData, }); @@ -1131,26 +1191,22 @@ export class ComponentDecoratorHandler implements // In order to guarantee the correctness of diagnostics, templates are parsed a second time // with the above options set to preserve source mappings. - const {nodes: diagNodes} = parseTemplate(templateStr, template.sourceMapUrl, { + const {nodes: diagNodes} = parseTemplate(sourceStr, sourceMapUrl ?? '', { preserveWhitespaces: true, preserveLineEndings: true, interpolationConfig: template.interpolationConfig, - range: templateRange ?? undefined, + range: sourceParseRange ?? undefined, escapedString, enableI18nLegacyMessageIdFormat: this.enableI18nLegacyMessageIdFormat, i18nNormalizeLineEndingsInICUs, leadingTriviaChars: [], - isInline: template.isInline, alwaysAttemptHtmlToR3AstConversion: this.usePoisonedData, }); return { ...parsedTemplate, diagNodes, - template: template.isInline ? new WrappedNodeExpr(template.expression) : templateStr, - templateUrl: template.resolvedTemplateUrl, - isInline: template.isInline, - file: new ParseSourceFile(templateStr, template.resolvedTemplateUrl), + file: new ParseSourceFile(sourceStr, sourceMapUrl ?? ''), }; } @@ -1186,18 +1242,20 @@ export class ComponentDecoratorHandler implements throw createValueHasWrongTypeError( templateUrlExpr, templateUrl, 'templateUrl must be a string'); } - const resourceUrl = this._resolveResourceOrThrow( - templateUrl, containingFile, templateUrlExpr, ResourceTypeForDiagnostics.Template); - - return { - isInline: false, - interpolationConfig, - preserveWhitespaces, - templateUrl, - templateUrlExpression: templateUrlExpr, - resolvedTemplateUrl: resourceUrl, - sourceMapUrl: sourceMapUrl(resourceUrl), - }; + try { + const resourceUrl = this.resourceLoader.resolve(templateUrl, containingFile); + return { + isInline: false, + interpolationConfig, + preserveWhitespaces, + templateUrl, + templateUrlExpression: templateUrlExpr, + resolvedTemplateUrl: resourceUrl, + }; + } catch (e) { + throw this.makeResourceNotFoundError( + templateUrl, templateUrlExpr, ResourceTypeForDiagnostics.Template); + } } else if (component.has('template')) { return { isInline: true, @@ -1206,7 +1264,6 @@ export class ComponentDecoratorHandler implements expression: component.get('template')!, templateUrl: containingFile, resolvedTemplateUrl: containingFile, - sourceMapUrl: containingFile, }; } else { throw new FatalDiagnosticError( @@ -1260,33 +1317,24 @@ export class ComponentDecoratorHandler implements this.cycleAnalyzer.recordSyntheticImport(origin, imported); } - /** - * Resolve the url of a resource relative to the file that contains the reference to it. - * - * Throws a FatalDiagnosticError when unable to resolve the file. - */ - private _resolveResourceOrThrow( - file: string, basePath: string, nodeForError: ts.Node, - resourceType: ResourceTypeForDiagnostics): string { - try { - return this.resourceLoader.resolve(file, basePath); - } catch (e) { - let errorText: string; - switch (resourceType) { - case ResourceTypeForDiagnostics.Template: - errorText = `Could not find template file '${file}'.`; - break; - case ResourceTypeForDiagnostics.StylesheetFromTemplate: - errorText = `Could not find stylesheet file '${file}' linked from the template.`; - break; - case ResourceTypeForDiagnostics.StylesheetFromDecorator: - errorText = `Could not find stylesheet file '${file}'.`; - break; - } - - throw new FatalDiagnosticError( - ErrorCode.COMPONENT_RESOURCE_NOT_FOUND, nodeForError, errorText); + private makeResourceNotFoundError( + file: string, nodeForError: ts.Node, + resourceType: ResourceTypeForDiagnostics): FatalDiagnosticError { + let errorText: string; + switch (resourceType) { + case ResourceTypeForDiagnostics.Template: + errorText = `Could not find template file '${file}'.`; + break; + case ResourceTypeForDiagnostics.StylesheetFromTemplate: + errorText = `Could not find stylesheet file '${file}' linked from the template.`; + break; + case ResourceTypeForDiagnostics.StylesheetFromDecorator: + errorText = `Could not find stylesheet file '${file}'.`; + break; } + + return new FatalDiagnosticError( + ErrorCode.COMPONENT_RESOURCE_NOT_FOUND, nodeForError, errorText); } private _extractTemplateStyleUrls(template: ParsedTemplateWithSource): StyleUrlMeta[] { @@ -1312,17 +1360,6 @@ function getTemplateRange(templateExpr: ts.Expression) { }; } -function sourceMapUrl(resourceUrl: string): string { - if (!tsSourceMapBug29300Fixed()) { - // By removing the template URL we are telling the translator not to try to - // map the external source file to the generated code, since the version - // of TS that is running does not support it. - return ''; - } else { - return resourceUrl; - } -} - /** Determines if the result of an evaluation is a string array. */ function isStringArray(resolvedValue: ResolvedValue): resolvedValue is string[] { return Array.isArray(resolvedValue) && resolvedValue.every(elem => typeof elem === 'string'); @@ -1348,12 +1385,6 @@ function getTemplateDeclarationNodeForError(declaration: TemplateDeclaration): t * some of which might be useful for re-parsing the template with different options. */ export interface ParsedComponentTemplate extends ParsedTemplate { - /** - * True if the original template was stored inline; - * False if the template was in an external file. - */ - isInline: boolean; - /** * The template AST, parsed in a manner which preserves source map information for diagnostics. * @@ -1368,6 +1399,8 @@ export interface ParsedComponentTemplate extends ParsedTemplate { } export interface ParsedTemplateWithSource extends ParsedComponentTemplate { + /** The string contents of the template. */ + content: string; sourceMapping: TemplateSourceMapping; declaration: TemplateDeclaration; } @@ -1380,7 +1413,6 @@ interface CommonTemplateDeclaration { interpolationConfig: InterpolationConfig; templateUrl: string; resolvedTemplateUrl: string; - sourceMapUrl: string; } /** @@ -1402,7 +1434,7 @@ interface ExternalTemplateDeclaration extends CommonTemplateDeclaration { /** * The declaration of a template extracted from a component decorator. * - * This data is extracted and stored separately to faciliate re-interpreting the template + * This data is extracted and stored separately to facilitate re-interpreting the template * declaration whenever the compiler is notified of a change to a template file. With this * information, `ComponentDecoratorHandler` is able to re-read the template and update the component * record without needing to parse the original decorator again. @@ -1420,3 +1452,31 @@ function makeCyclicImportInfo( `The ${type} '${name}' is used in the template but importing it would create a cycle: `; return makeRelatedInformation(ref.node, message + path); } + + +/** + * Checks whether a selector is a valid custom element tag name. + * Based loosely on https://github.com/sindresorhus/validate-element-name. + */ +function checkCustomElementSelectorForErrors(selector: string): string|null { + // Avoid flagging components with an attribute or class selector. This isn't bulletproof since it + // won't catch cases like `foo[]bar`, but we don't need it to be. This is mainly to avoid flagging + // something like `foo-bar[baz]` incorrectly. + if (selector.includes('.') || (selector.includes('[') && selector.includes(']'))) { + return null; + } + + if (!(/^[a-z]/.test(selector))) { + return 'Selector of a ShadowDom-encapsulated component must start with a lower case letter.'; + } + + if (/[A-Z]/.test(selector)) { + return 'Selector of a ShadowDom-encapsulated component must all be in lower case.'; + } + + if (!selector.includes('-')) { + return 'Selector of a component that uses ViewEncapsulation.ShadowDom must contain a hyphen.'; + } + + return null; +} diff --git a/packages/compiler-cli/src/ngtsc/annotations/src/directive.ts b/packages/compiler-cli/src/ngtsc/annotations/src/directive.ts index 78a775b519..ba3447bfc3 100644 --- a/packages/compiler-cli/src/ngtsc/annotations/src/directive.ts +++ b/packages/compiler-cli/src/ngtsc/annotations/src/directive.ts @@ -6,14 +6,14 @@ * found in the LICENSE file at https://angular.io/license */ -import {compileDeclareDirectiveFromMetadata, compileDirectiveFromMetadata, ConstantPool, Expression, ExternalExpr, FactoryTarget, getSafePropertyAccessString, makeBindingParser, ParsedHostBindings, ParseError, parseHostBindings, R3DirectiveMetadata, R3FactoryMetadata, R3QueryMetadata, Statement, verifyHostBindings, WrappedNodeExpr} from '@angular/compiler'; +import {compileClassMetadata, compileDeclareClassMetadata, compileDeclareDirectiveFromMetadata, compileDirectiveFromMetadata, ConstantPool, Expression, ExternalExpr, FactoryTarget, getSafePropertyAccessString, makeBindingParser, ParsedHostBindings, ParseError, parseHostBindings, R3ClassMetadata, R3DirectiveMetadata, R3FactoryMetadata, R3QueryMetadata, Statement, verifyHostBindings, WrappedNodeExpr} from '@angular/compiler'; import {emitDistinctChangesOnlyDefaultValue} from '@angular/compiler/src/core'; import * as ts from 'typescript'; import {ErrorCode, FatalDiagnosticError} from '../../diagnostics'; -import {DefaultImportRecorder, Reference} from '../../imports'; +import {Reference} from '../../imports'; import {areTypeParametersEqual, extractSemanticTypeParameters, isArrayEqual, isSetEqual, isSymbolEqual, SemanticDepGraphUpdater, SemanticSymbol, SemanticTypeParameter} from '../../incremental/semantic_graph'; -import {BindingPropertyName, ClassPropertyMapping, ClassPropertyName, DirectiveTypeCheckMeta, InjectableClassRegistry, MetadataReader, MetadataRegistry, TemplateGuardMeta} from '../../metadata'; +import {BindingPropertyName, ClassPropertyMapping, ClassPropertyName, DirectiveTypeCheckMeta, InjectableClassRegistry, MetadataReader, MetadataRegistry, MetaType, TemplateGuardMeta} from '../../metadata'; import {extractDirectiveTypeCheckMeta} from '../../metadata/src/util'; import {DynamicValue, EnumValue, PartialEvaluator} from '../../partial_evaluator'; import {PerfEvent, PerfRecorder} from '../../perf'; @@ -23,8 +23,8 @@ import {AnalysisOutput, CompileResult, DecoratorHandler, DetectResult, HandlerFl import {createValueHasWrongTypeError, getDirectiveDiagnostics, getProviderDiagnostics, getUndecoratedClassWithAngularFeaturesDiagnostic} from './diagnostics'; import {compileDeclareFactory, compileNgFactoryDefField} from './factory'; -import {generateSetClassMetadataCall} from './metadata'; -import {compileResults, createSourceSpan, findAngularDecorator, getConstructorDependencies, isAngularDecorator, readBaseClass, resolveProvidersRequiringFactory, toFactoryMetadata, unwrapConstructorDependencies, unwrapExpression, unwrapForwardRef, validateConstructorDependencies, wrapFunctionExpressionsInParens, wrapTypeReference} from './util'; +import {extractClassMetadata} from './metadata'; +import {compileResults, createSourceSpan, findAngularDecorator, getConstructorDependencies, isAngularDecorator, readBaseClass, resolveProvidersRequiringFactory, toFactoryMetadata, tryUnwrapForwardRef, unwrapConstructorDependencies, unwrapExpression, validateConstructorDependencies, wrapFunctionExpressionsInParens, wrapTypeReference} from './util'; const EMPTY_OBJECT: {[key: string]: string} = {}; const FIELD_DECORATORS = [ @@ -40,7 +40,7 @@ export interface DirectiveHandlerData { baseClass: Reference|'dynamic'|null; typeCheckMeta: DirectiveTypeCheckMeta; meta: R3DirectiveMetadata; - metadataStmt: Statement|null; + classMetadata: R3ClassMetadata|null; providersRequiringFactory: Set>|null; inputs: ClassPropertyMapping; outputs: ClassPropertyMapping; @@ -64,7 +64,7 @@ export class DirectiveSymbol extends SemanticSymbol { super(decl); } - isPublicApiAffected(previousSymbol: SemanticSymbol): boolean { + override isPublicApiAffected(previousSymbol: SemanticSymbol): boolean { // Note: since components and directives have exactly the same items contributing to their // public API, it is okay for a directive to change into a component and vice versa without // the API being affected. @@ -83,7 +83,7 @@ export class DirectiveSymbol extends SemanticSymbol { !isArrayEqual(this.exportAs, previousSymbol.exportAs); } - isTypeCheckApiAffected(previousSymbol: SemanticSymbol): boolean { + override isTypeCheckApiAffected(previousSymbol: SemanticSymbol): boolean { // If the public API of the directive has changed, then so has its type-check API. if (this.isPublicApiAffected(previousSymbol)) { return true; @@ -177,9 +177,8 @@ export class DirectiveDecoratorHandler implements constructor( private reflector: ReflectionHost, private evaluator: PartialEvaluator, private metaRegistry: MetadataRegistry, private scopeRegistry: LocalModuleScopeRegistry, - private metaReader: MetadataReader, private defaultImportRecorder: DefaultImportRecorder, - private injectableRegistry: InjectableClassRegistry, private isCore: boolean, - private semanticDepGraphUpdater: SemanticDepGraphUpdater|null, + private metaReader: MetadataReader, private injectableRegistry: InjectableClassRegistry, + private isCore: boolean, private semanticDepGraphUpdater: SemanticDepGraphUpdater|null, private annotateForClosureCompiler: boolean, private compileUndecoratedClassesWithAngularFeatures: boolean, private perf: PerfRecorder) {} @@ -215,8 +214,8 @@ export class DirectiveDecoratorHandler implements this.perf.eventCount(PerfEvent.AnalyzeDirective); const directiveResult = extractDirectiveMetadata( - node, decorator, this.reflector, this.evaluator, this.defaultImportRecorder, this.isCore, - flags, this.annotateForClosureCompiler); + node, decorator, this.reflector, this.evaluator, this.isCore, flags, + this.annotateForClosureCompiler); if (directiveResult === undefined) { return {}; } @@ -233,9 +232,8 @@ export class DirectiveDecoratorHandler implements inputs: directiveResult.inputs, outputs: directiveResult.outputs, meta: analysis, - metadataStmt: generateSetClassMetadataCall( - node, this.reflector, this.defaultImportRecorder, this.isCore, - this.annotateForClosureCompiler), + classMetadata: extractClassMetadata( + node, this.reflector, this.isCore, this.annotateForClosureCompiler), baseClass: readBaseClass(node, this.reflector, this.evaluator), typeCheckMeta: extractDirectiveTypeCheckMeta(node, directiveResult.inputs, this.reflector), providersRequiringFactory, @@ -258,6 +256,7 @@ export class DirectiveDecoratorHandler implements // the information about the directive is available during the compile() phase. const ref = new Reference(node); this.metaRegistry.registerDirectiveMetadata({ + type: MetaType.Directive, ref, name: node.name.text, selector: analysis.meta.selector, @@ -304,7 +303,10 @@ export class DirectiveDecoratorHandler implements resolution: Readonly, pool: ConstantPool): CompileResult[] { const fac = compileNgFactoryDefField(toFactoryMetadata(analysis.meta, FactoryTarget.Directive)); const def = compileDirectiveFromMetadata(analysis.meta, pool, makeBindingParser()); - return compileResults(fac, def, analysis.metadataStmt, 'ɵdir'); + const classMetadata = analysis.classMetadata !== null ? + compileClassMetadata(analysis.classMetadata).toStmt() : + null; + return compileResults(fac, def, classMetadata, 'ɵdir'); } compilePartial( @@ -312,7 +314,10 @@ export class DirectiveDecoratorHandler implements resolution: Readonly): CompileResult[] { const fac = compileDeclareFactory(toFactoryMetadata(analysis.meta, FactoryTarget.Directive)); const def = compileDeclareDirectiveFromMetadata(analysis.meta); - return compileResults(fac, def, analysis.metadataStmt, 'ɵdir'); + const classMetadata = analysis.classMetadata !== null ? + compileDeclareClassMetadata(analysis.classMetadata).toStmt() : + null; + return compileResults(fac, def, classMetadata, 'ɵdir'); } /** @@ -345,9 +350,8 @@ export class DirectiveDecoratorHandler implements */ export function extractDirectiveMetadata( clazz: ClassDeclaration, decorator: Readonly, reflector: ReflectionHost, - evaluator: PartialEvaluator, defaultImportRecorder: DefaultImportRecorder, isCore: boolean, - flags: HandlerFlags, annotateForClosureCompiler: boolean, - defaultSelector: string|null = null): { + evaluator: PartialEvaluator, isCore: boolean, flags: HandlerFlags, + annotateForClosureCompiler: boolean, defaultSelector: string|null = null): { decorator: Map, metadata: R3DirectiveMetadata, inputs: ClassPropertyMapping, @@ -467,7 +471,7 @@ export function extractDirectiveMetadata( exportAs = resolved.split(',').map(part => part.trim()); } - const rawCtorDeps = getConstructorDependencies(clazz, reflector, defaultImportRecorder, isCore); + const rawCtorDeps = getConstructorDependencies(clazz, reflector, isCore); // Non-abstract directives (those with a selector) require valid constructor dependencies, whereas // abstract directives are allowed to have invalid dependencies, given that a subclass may call @@ -528,7 +532,7 @@ export function extractQueryMetadata( ErrorCode.DECORATOR_ARITY_WRONG, exprNode, `@${name} must have arguments`); } const first = name === 'ViewChild' || name === 'ContentChild'; - const node = unwrapForwardRef(args[0], reflector); + const node = tryUnwrapForwardRef(args[0], reflector) ?? args[0]; const arg = evaluator.evaluate(node); /** Whether or not this query should collect only static results (see view/api.ts) */ diff --git a/packages/compiler-cli/src/ngtsc/annotations/src/factory.ts b/packages/compiler-cli/src/ngtsc/annotations/src/factory.ts index ae6c44e7ed..d20c307f4e 100644 --- a/packages/compiler-cli/src/ngtsc/annotations/src/factory.ts +++ b/packages/compiler-cli/src/ngtsc/annotations/src/factory.ts @@ -10,6 +10,8 @@ import {compileDeclareFactoryFunction, compileFactoryFunction, R3FactoryMetadata import {CompileResult} from '../../transform'; +export type CompileFactoryFn = (metadata: R3FactoryMetadata) => CompileResult; + export function compileNgFactoryDefField(metadata: R3FactoryMetadata): CompileResult { const res = compileFactoryFunction(metadata); return {name: 'ɵfac', initializer: res.expression, statements: res.statements, type: res.type}; diff --git a/packages/compiler-cli/src/ngtsc/annotations/src/injectable.ts b/packages/compiler-cli/src/ngtsc/annotations/src/injectable.ts index 63636a2ce6..ee0ad85820 100644 --- a/packages/compiler-cli/src/ngtsc/annotations/src/injectable.ts +++ b/packages/compiler-cli/src/ngtsc/annotations/src/injectable.ts @@ -6,35 +6,33 @@ * found in the LICENSE file at https://angular.io/license */ -import {compileInjectable as compileIvyInjectable, Expression, FactoryTarget, LiteralExpr, R3DependencyMetadata, R3FactoryMetadata, R3InjectableMetadata, Statement, WrappedNodeExpr} from '@angular/compiler'; +import {compileClassMetadata, CompileClassMetadataFn, compileDeclareClassMetadata, compileDeclareInjectableFromMetadata, compileInjectable, createR3ProviderExpression, Expression, FactoryTarget, LiteralExpr, R3ClassMetadata, R3CompiledExpression, R3DependencyMetadata, R3InjectableMetadata, R3ProviderExpression, Statement, WrappedNodeExpr} from '@angular/compiler'; import * as ts from 'typescript'; import {ErrorCode, FatalDiagnosticError} from '../../diagnostics'; -import {DefaultImportRecorder} from '../../imports'; import {InjectableClassRegistry} from '../../metadata'; import {PerfEvent, PerfRecorder} from '../../perf'; import {ClassDeclaration, Decorator, ReflectionHost, reflectObjectLiteral} from '../../reflection'; import {AnalysisOutput, CompileResult, DecoratorHandler, DetectResult, HandlerPrecedence} from '../../transform'; -import {compileDeclareFactory, compileNgFactoryDefField} from './factory'; -import {generateSetClassMetadataCall} from './metadata'; -import {findAngularDecorator, getConstructorDependencies, getValidConstructorDependencies, isAngularCore, toFactoryMetadata, unwrapConstructorDependencies, unwrapForwardRef, validateConstructorDependencies, wrapTypeReference} from './util'; +import {compileDeclareFactory, CompileFactoryFn, compileNgFactoryDefField} from './factory'; +import {extractClassMetadata} from './metadata'; +import {findAngularDecorator, getConstructorDependencies, getValidConstructorDependencies, isAngularCore, toFactoryMetadata, tryUnwrapForwardRef, unwrapConstructorDependencies, validateConstructorDependencies, wrapTypeReference} from './util'; export interface InjectableHandlerData { meta: R3InjectableMetadata; - metadataStmt: Statement|null; + classMetadata: R3ClassMetadata|null; ctorDeps: R3DependencyMetadata[]|'invalid'|null; needsFactory: boolean; } /** - * Adapts the `compileIvyInjectable` compiler for `@Injectable` decorators to the Ivy compiler. + * Adapts the `compileInjectable` compiler for `@Injectable` decorators to the Ivy compiler. */ export class InjectableDecoratorHandler implements DecoratorHandler { constructor( - private reflector: ReflectionHost, private defaultImportRecorder: DefaultImportRecorder, - private isCore: boolean, private strictCtorDeps: boolean, + private reflector: ReflectionHost, private isCore: boolean, private strictCtorDeps: boolean, private injectableRegistry: InjectableClassRegistry, private perf: PerfRecorder, /** * What to do if the injectable already contains a ɵprov property. @@ -74,10 +72,8 @@ export class InjectableDecoratorHandler implements analysis: { meta, ctorDeps: extractInjectableCtorDeps( - node, meta, decorator, this.reflector, this.defaultImportRecorder, this.isCore, - this.strictCtorDeps), - metadataStmt: generateSetClassMetadataCall( - node, this.reflector, this.defaultImportRecorder, this.isCore), + node, meta, decorator, this.reflector, this.isCore, this.strictCtorDeps), + classMetadata: extractClassMetadata(node, this.reflector, this.isCore), // Avoid generating multiple factories if a class has // more Angular decorators, apart from Injectable. needsFactory: !decorators || @@ -95,48 +91,31 @@ export class InjectableDecoratorHandler implements } compileFull(node: ClassDeclaration, analysis: Readonly): CompileResult[] { - const res = compileIvyInjectable(analysis.meta); - const statements = res.statements; - const results: CompileResult[] = []; - - if (analysis.needsFactory) { - const meta = analysis.meta; - const factoryRes = compileNgFactoryDefField( - toFactoryMetadata({...meta, deps: analysis.ctorDeps}, FactoryTarget.Injectable)); - if (analysis.metadataStmt !== null) { - factoryRes.statements.push(analysis.metadataStmt); - } - results.push(factoryRes); - } - - const ɵprov = this.reflector.getMembersOfClass(node).find(member => member.name === 'ɵprov'); - if (ɵprov !== undefined && this.errorOnDuplicateProv) { - throw new FatalDiagnosticError( - ErrorCode.INJECTABLE_DUPLICATE_PROV, ɵprov.nameNode || ɵprov.node || node, - 'Injectables cannot contain a static ɵprov property, because the compiler is going to generate one.'); - } - - if (ɵprov === undefined) { - // Only add a new ɵprov if there is not one already - results.push({name: 'ɵprov', initializer: res.expression, statements, type: res.type}); - } - - - return results; + return this.compile( + compileNgFactoryDefField, meta => compileInjectable(meta, false), compileClassMetadata, + node, analysis); } compilePartial(node: ClassDeclaration, analysis: Readonly): CompileResult[] { - const res = compileIvyInjectable(analysis.meta); - const statements = res.statements; + return this.compile( + compileDeclareFactory, compileDeclareInjectableFromMetadata, compileDeclareClassMetadata, + node, analysis); + } + + private compile( + compileFactoryFn: CompileFactoryFn, + compileInjectableFn: (meta: R3InjectableMetadata) => R3CompiledExpression, + compileClassMetadataFn: CompileClassMetadataFn, node: ClassDeclaration, + analysis: Readonly): CompileResult[] { const results: CompileResult[] = []; if (analysis.needsFactory) { const meta = analysis.meta; - const factoryRes = compileDeclareFactory( + const factoryRes = compileFactoryFn( toFactoryMetadata({...meta, deps: analysis.ctorDeps}, FactoryTarget.Injectable)); - if (analysis.metadataStmt !== null) { - factoryRes.statements.push(analysis.metadataStmt); + if (analysis.classMetadata !== null) { + factoryRes.statements.push(compileClassMetadataFn(analysis.classMetadata).toStmt()); } results.push(factoryRes); } @@ -150,7 +129,9 @@ export class InjectableDecoratorHandler implements if (ɵprov === undefined) { // Only add a new ɵprov if there is not one already - results.push({name: 'ɵprov', initializer: res.expression, statements, type: res.type}); + const res = compileInjectableFn(analysis.meta); + results.push( + {name: 'ɵprov', initializer: res.expression, statements: res.statements, type: res.type}); } return results; @@ -159,7 +140,7 @@ export class InjectableDecoratorHandler implements /** * Read metadata from the `@Injectable` decorator and produce the `IvyInjectableMetadata`, the - * input metadata needed to run `compileIvyInjectable`. + * input metadata needed to run `compileInjectable`. * * A `null` return value indicates this is @Injectable has invalid data. */ @@ -181,7 +162,7 @@ function extractInjectableMetadata( type, typeArgumentCount, internalType, - providedIn: new LiteralExpr(null), + providedIn: createR3ProviderExpression(new LiteralExpr(null), false), }; } else if (decorator.args.length === 1) { const metaNode = decorator.args[0]; @@ -196,12 +177,12 @@ function extractInjectableMetadata( // Resolve the fields of the literal into a map of field name to expression. const meta = reflectObjectLiteral(metaNode); - let providedIn: Expression = new LiteralExpr(null); - if (meta.has('providedIn')) { - providedIn = new WrappedNodeExpr(meta.get('providedIn')!); - } - let userDeps: R3DependencyMetadata[]|undefined = undefined; + const providedIn = meta.has('providedIn') ? + getProviderExpression(meta.get('providedIn')!, reflector) : + createR3ProviderExpression(new LiteralExpr(null), false); + + let deps: R3DependencyMetadata[]|undefined = undefined; if ((meta.has('useClass') || meta.has('useFactory')) && meta.has('deps')) { const depsExpr = meta.get('deps')!; if (!ts.isArrayLiteralExpression(depsExpr)) { @@ -209,62 +190,45 @@ function extractInjectableMetadata( ErrorCode.VALUE_NOT_LITERAL, depsExpr, `@Injectable deps metadata must be an inline array`); } - userDeps = depsExpr.elements.map(dep => getDep(dep, reflector)); + deps = depsExpr.elements.map(dep => getDep(dep, reflector)); } + const result: R3InjectableMetadata = {name, type, typeArgumentCount, internalType, providedIn}; if (meta.has('useValue')) { - return { - name, - type, - typeArgumentCount, - internalType, - providedIn, - useValue: new WrappedNodeExpr(unwrapForwardRef(meta.get('useValue')!, reflector)), - }; + result.useValue = getProviderExpression(meta.get('useValue')!, reflector); } else if (meta.has('useExisting')) { - return { - name, - type, - typeArgumentCount, - internalType, - providedIn, - useExisting: new WrappedNodeExpr(unwrapForwardRef(meta.get('useExisting')!, reflector)), - }; + result.useExisting = getProviderExpression(meta.get('useExisting')!, reflector); } else if (meta.has('useClass')) { - return { - name, - type, - typeArgumentCount, - internalType, - providedIn, - useClass: new WrappedNodeExpr(unwrapForwardRef(meta.get('useClass')!, reflector)), - userDeps, - }; + result.useClass = getProviderExpression(meta.get('useClass')!, reflector); + result.deps = deps; } else if (meta.has('useFactory')) { - // useFactory is special - the 'deps' property must be analyzed. - const factory = new WrappedNodeExpr(meta.get('useFactory')!); - return { - name, - type, - typeArgumentCount, - internalType, - providedIn, - useFactory: factory, - userDeps, - }; - } else { - return {name, type, typeArgumentCount, internalType, providedIn}; + result.useFactory = new WrappedNodeExpr(meta.get('useFactory')!); + result.deps = deps; } + return result; } else { throw new FatalDiagnosticError( ErrorCode.DECORATOR_ARITY_WRONG, decorator.args[2], 'Too many arguments to @Injectable'); } } +/** + * Get the `R3ProviderExpression` for this `expression`. + * + * The `useValue`, `useExisting` and `useClass` properties might be wrapped in a `ForwardRef`, which + * needs to be unwrapped. This function will do that unwrapping and set a flag on the returned + * object to indicate whether the value needed unwrapping. + */ +function getProviderExpression( + expression: ts.Expression, reflector: ReflectionHost): R3ProviderExpression { + const forwardRefValue = tryUnwrapForwardRef(expression, reflector); + return createR3ProviderExpression( + new WrappedNodeExpr(forwardRefValue ?? expression), forwardRefValue !== null); +} + function extractInjectableCtorDeps( clazz: ClassDeclaration, meta: R3InjectableMetadata, decorator: Decorator, - reflector: ReflectionHost, defaultImportRecorder: DefaultImportRecorder, isCore: boolean, - strictCtorDeps: boolean) { + reflector: ReflectionHost, isCore: boolean, strictCtorDeps: boolean) { if (decorator.args === null) { throw new FatalDiagnosticError( ErrorCode.DECORATOR_NOT_CALLED, Decorator.nodeForError(decorator), @@ -283,15 +247,15 @@ function extractInjectableCtorDeps( // constructor signature does not work for DI then a factory definition (ɵfac) that throws is // generated. if (strictCtorDeps) { - ctorDeps = getValidConstructorDependencies(clazz, reflector, defaultImportRecorder, isCore); + ctorDeps = getValidConstructorDependencies(clazz, reflector, isCore); } else { - ctorDeps = unwrapConstructorDependencies( - getConstructorDependencies(clazz, reflector, defaultImportRecorder, isCore)); + ctorDeps = + unwrapConstructorDependencies(getConstructorDependencies(clazz, reflector, isCore)); } return ctorDeps; } else if (decorator.args.length === 1) { - const rawCtorDeps = getConstructorDependencies(clazz, reflector, defaultImportRecorder, isCore); + const rawCtorDeps = getConstructorDependencies(clazz, reflector, isCore); if (strictCtorDeps && meta.useValue === undefined && meta.useExisting === undefined && meta.useClass === undefined && meta.useFactory === undefined) { diff --git a/packages/compiler-cli/src/ngtsc/annotations/src/metadata.ts b/packages/compiler-cli/src/ngtsc/annotations/src/metadata.ts index 69056e6161..223a0ed16f 100644 --- a/packages/compiler-cli/src/ngtsc/annotations/src/metadata.ts +++ b/packages/compiler-cli/src/ngtsc/annotations/src/metadata.ts @@ -6,15 +6,13 @@ * found in the LICENSE file at https://angular.io/license */ -import {devOnlyGuardedExpression, Expression, ExternalExpr, FunctionExpr, Identifiers, InvokeFunctionExpr, LiteralArrayExpr, LiteralExpr, literalMap, NONE_TYPE, ReturnStatement, Statement, WrappedNodeExpr} from '@angular/compiler'; +import {Expression, FunctionExpr, LiteralArrayExpr, LiteralExpr, literalMap, R3ClassMetadata, ReturnStatement, WrappedNodeExpr} from '@angular/compiler'; import * as ts from 'typescript'; -import {DefaultImportRecorder} from '../../imports'; import {CtorParameter, DeclarationNode, Decorator, ReflectionHost, TypeValueReferenceKind} from '../../reflection'; import {valueReferenceToExpression, wrapFunctionExpressionsInParens} from './util'; - /** * Given a class declaration, generate a call to `setClassMetadata` with the Angular metadata * present on the class or its member fields. An ngDevMode guard is used to allow the call to be @@ -23,10 +21,9 @@ import {valueReferenceToExpression, wrapFunctionExpressionsInParens} from './uti * If no such metadata is present, this function returns `null`. Otherwise, the call is returned * as a `Statement` for inclusion along with the class. */ -export function generateSetClassMetadataCall( - clazz: DeclarationNode, reflection: ReflectionHost, - defaultImportRecorder: DefaultImportRecorder, isCore: boolean, - annotateForClosureCompiler?: boolean): Statement|null { +export function extractClassMetadata( + clazz: DeclarationNode, reflection: ReflectionHost, isCore: boolean, + annotateForClosureCompiler?: boolean): R3ClassMetadata|null { if (!reflection.isClass(clazz)) { return null; } @@ -50,21 +47,20 @@ export function generateSetClassMetadataCall( if (ngClassDecorators.length === 0) { return null; } - const metaDecorators = ts.createArrayLiteral(ngClassDecorators); + const metaDecorators = new WrappedNodeExpr(ts.createArrayLiteral(ngClassDecorators)); // Convert the constructor parameters to metadata, passing null if none are present. - let metaCtorParameters: Expression = new LiteralExpr(null); + let metaCtorParameters: Expression|null = null; const classCtorParameters = reflection.getConstructorParameters(clazz); if (classCtorParameters !== null) { - const ctorParameters = classCtorParameters.map( - param => ctorParameterToMetadata(param, defaultImportRecorder, isCore)); + const ctorParameters = classCtorParameters.map(param => ctorParameterToMetadata(param, isCore)); metaCtorParameters = new FunctionExpr([], [ new ReturnStatement(new LiteralArrayExpr(ctorParameters)), ]); } // Do the same for property decorators. - let metaPropDecorators: ts.Expression = ts.createNull(); + let metaPropDecorators: Expression|null = null; const classMembers = reflection.getMembersOfClass(clazz).filter( member => !member.isStatic && member.decorators !== null && member.decorators.length > 0); const duplicateDecoratedMemberNames = @@ -80,34 +76,25 @@ export function generateSetClassMetadataCall( const decoratedMembers = classMembers.map( member => classMemberToMetadata(member.nameNode ?? member.name, member.decorators!, isCore)); if (decoratedMembers.length > 0) { - metaPropDecorators = ts.createObjectLiteral(decoratedMembers); + metaPropDecorators = new WrappedNodeExpr(ts.createObjectLiteral(decoratedMembers)); } - // Generate a pure call to setClassMetadata with the class identifier and its metadata. - const setClassMetadata = new ExternalExpr(Identifiers.setClassMetadata); - const fnCall = new InvokeFunctionExpr( - /* fn */ setClassMetadata, - /* args */ - [ - new WrappedNodeExpr(id), - new WrappedNodeExpr(metaDecorators), - metaCtorParameters, - new WrappedNodeExpr(metaPropDecorators), - ]); - const iife = new FunctionExpr([], [devOnlyGuardedExpression(fnCall).toStmt()]); - return iife.callFn([]).toStmt(); + return { + type: new WrappedNodeExpr(id), + decorators: metaDecorators, + ctorParameters: metaCtorParameters, + propDecorators: metaPropDecorators, + }; } /** * Convert a reflected constructor parameter to metadata. */ -function ctorParameterToMetadata( - param: CtorParameter, defaultImportRecorder: DefaultImportRecorder, - isCore: boolean): Expression { +function ctorParameterToMetadata(param: CtorParameter, isCore: boolean): Expression { // Parameters sometimes have a type that can be referenced. If so, then use it, otherwise // its type is undefined. const type = param.typeValueReference.kind !== TypeValueReferenceKind.UNAVAILABLE ? - valueReferenceToExpression(param.typeValueReference, defaultImportRecorder) : + valueReferenceToExpression(param.typeValueReference) : new LiteralExpr(undefined); const mapEntries: {key: string, value: Expression, quoted: false}[] = [ diff --git a/packages/compiler-cli/src/ngtsc/annotations/src/ng_module.ts b/packages/compiler-cli/src/ngtsc/annotations/src/ng_module.ts index d23d88fbd8..a148e04fcd 100644 --- a/packages/compiler-cli/src/ngtsc/annotations/src/ng_module.ts +++ b/packages/compiler-cli/src/ngtsc/annotations/src/ng_module.ts @@ -6,11 +6,11 @@ * found in the LICENSE file at https://angular.io/license */ -import {compileDeclareInjectorFromMetadata, compileDeclareNgModuleFromMetadata, compileInjector, compileNgModule, CUSTOM_ELEMENTS_SCHEMA, Expression, ExternalExpr, FactoryTarget, Identifiers as R3, InvokeFunctionExpr, LiteralArrayExpr, LiteralExpr, NO_ERRORS_SCHEMA, R3CompiledExpression, R3FactoryMetadata, R3Identifiers, R3InjectorMetadata, R3NgModuleMetadata, R3Reference, SchemaMetadata, Statement, STRING_TYPE, WrappedNodeExpr} from '@angular/compiler'; +import {compileClassMetadata, compileDeclareClassMetadata, compileDeclareInjectorFromMetadata, compileDeclareNgModuleFromMetadata, compileInjector, compileNgModule, CUSTOM_ELEMENTS_SCHEMA, Expression, ExternalExpr, FactoryTarget, Identifiers as R3, InvokeFunctionExpr, LiteralArrayExpr, LiteralExpr, NO_ERRORS_SCHEMA, R3ClassMetadata, R3CompiledExpression, R3FactoryMetadata, R3Identifiers, R3InjectorMetadata, R3NgModuleMetadata, R3Reference, SchemaMetadata, Statement, STRING_TYPE, WrappedNodeExpr} from '@angular/compiler'; import * as ts from 'typescript'; import {ErrorCode, FatalDiagnosticError, makeDiagnostic, makeRelatedInformation} from '../../diagnostics'; -import {DefaultImportRecorder, Reference, ReferenceEmitter} from '../../imports'; +import {Reference, ReferenceEmitter} from '../../imports'; import {isArrayEqual, isReferenceEqual, isSymbolEqual, SemanticReference, SemanticSymbol} from '../../incremental/semantic_graph'; import {InjectableClassRegistry, MetadataReader, MetadataRegistry} from '../../metadata'; import {PartialEvaluator, ResolvedValue} from '../../partial_evaluator'; @@ -24,7 +24,7 @@ import {getSourceFile} from '../../util/src/typescript'; import {createValueHasWrongTypeError, getProviderDiagnostics} from './diagnostics'; import {compileDeclareFactory, compileNgFactoryDefField} from './factory'; -import {generateSetClassMetadataCall} from './metadata'; +import {extractClassMetadata} from './metadata'; import {ReferencesRegistry} from './references_registry'; import {combineResolvers, findAngularDecorator, forwardRefResolver, getValidConstructorDependencies, isExpressionForwardReference, resolveProvidersRequiringFactory, toR3Reference, unwrapExpression, wrapFunctionExpressionsInParens, wrapTypeReference} from './util'; @@ -32,7 +32,7 @@ export interface NgModuleAnalysis { mod: R3NgModuleMetadata; inj: R3InjectorMetadata; fac: R3FactoryMetadata; - metadataStmt: Statement|null; + classMetadata: R3ClassMetadata|null; declarations: Reference[]; rawDeclarations: ts.Expression|null; schemas: SchemaMetadata[]; @@ -58,7 +58,7 @@ export class NgModuleSymbol extends SemanticSymbol { usedPipes: SemanticReference[] }[] = []; - isPublicApiAffected(previousSymbol: SemanticSymbol): boolean { + override isPublicApiAffected(previousSymbol: SemanticSymbol): boolean { if (!(previousSymbol instanceof NgModuleSymbol)) { return true; } @@ -67,7 +67,7 @@ export class NgModuleSymbol extends SemanticSymbol { return false; } - isEmitAffected(previousSymbol: SemanticSymbol): boolean { + override isEmitAffected(previousSymbol: SemanticSymbol): boolean { if (!(previousSymbol instanceof NgModuleSymbol)) { return true; } @@ -104,7 +104,7 @@ export class NgModuleSymbol extends SemanticSymbol { return false; } - isTypeCheckApiAffected(previousSymbol: SemanticSymbol): boolean { + override isTypeCheckApiAffected(previousSymbol: SemanticSymbol): boolean { if (!(previousSymbol instanceof NgModuleSymbol)) { return true; } @@ -130,9 +130,7 @@ export class NgModuleDecoratorHandler implements private scopeRegistry: LocalModuleScopeRegistry, private referencesRegistry: ReferencesRegistry, private isCore: boolean, private routeAnalyzer: NgModuleRouteAnalyzer|null, private refEmitter: ReferenceEmitter, - private factoryTracker: FactoryTracker|null, - private defaultImportRecorder: DefaultImportRecorder, - private annotateForClosureCompiler: boolean, + private factoryTracker: FactoryTracker|null, private annotateForClosureCompiler: boolean, private injectableRegistry: InjectableClassRegistry, private perf: PerfRecorder, private localeId?: string) {} @@ -350,8 +348,7 @@ export class NgModuleDecoratorHandler implements type, internalType, typeArgumentCount: 0, - deps: getValidConstructorDependencies( - node, this.reflector, this.defaultImportRecorder, this.isCore), + deps: getValidConstructorDependencies(node, this.reflector, this.isCore), target: FactoryTarget.NgModule, }; @@ -370,9 +367,8 @@ export class NgModuleDecoratorHandler implements providersRequiringFactory: rawProviders ? resolveProvidersRequiringFactory(rawProviders, this.reflector, this.evaluator) : null, - metadataStmt: generateSetClassMetadataCall( - node, this.reflector, this.defaultImportRecorder, this.isCore, - this.annotateForClosureCompiler), + classMetadata: extractClassMetadata( + node, this.reflector, this.isCore, this.annotateForClosureCompiler), factorySymbolName: node.name.text, }, }; @@ -463,26 +459,28 @@ export class NgModuleDecoratorHandler implements compileFull( node: ClassDeclaration, - {inj, mod, fac, metadataStmt, declarations}: Readonly, + {inj, mod, fac, classMetadata, declarations}: Readonly, {injectorImports}: Readonly): CompileResult[] { const factoryFn = compileNgFactoryDefField(fac); const ngInjectorDef = compileInjector(this.mergeInjectorImports(inj, injectorImports)); const ngModuleDef = compileNgModule(mod); const statements = ngModuleDef.statements; - this.insertMetadataStatement(statements, metadataStmt); + const metadata = classMetadata !== null ? compileClassMetadata(classMetadata) : null; + this.insertMetadataStatement(statements, metadata); this.appendRemoteScopingStatements(statements, node, declarations); return this.compileNgModule(factoryFn, ngInjectorDef, ngModuleDef); } compilePartial( - node: ClassDeclaration, {inj, fac, mod, metadataStmt}: Readonly, + node: ClassDeclaration, {inj, fac, mod, classMetadata}: Readonly, {injectorImports}: Readonly): CompileResult[] { const factoryFn = compileDeclareFactory(fac); const injectorDef = compileDeclareInjectorFromMetadata(this.mergeInjectorImports(inj, injectorImports)); const ngModuleDef = compileDeclareNgModuleFromMetadata(mod); - this.insertMetadataStatement(ngModuleDef.statements, metadataStmt); + const metadata = classMetadata !== null ? compileDeclareClassMetadata(classMetadata) : null; + this.insertMetadataStatement(ngModuleDef.statements, metadata); // NOTE: no remote scoping required as this is banned in partial compilation. return this.compileNgModule(factoryFn, injectorDef, ngModuleDef); } @@ -499,10 +497,10 @@ export class NgModuleDecoratorHandler implements /** * Add class metadata statements, if provided, to the `ngModuleStatements`. */ - private insertMetadataStatement(ngModuleStatements: Statement[], metadataStmt: Statement|null): + private insertMetadataStatement(ngModuleStatements: Statement[], metadata: Expression|null): void { - if (metadataStmt !== null) { - ngModuleStatements.unshift(metadataStmt); + if (metadata !== null) { + ngModuleStatements.unshift(metadata.toStmt()); } } diff --git a/packages/compiler-cli/src/ngtsc/annotations/src/pipe.ts b/packages/compiler-cli/src/ngtsc/annotations/src/pipe.ts index 76fc19aa11..aede86ed50 100644 --- a/packages/compiler-cli/src/ngtsc/annotations/src/pipe.ts +++ b/packages/compiler-cli/src/ngtsc/annotations/src/pipe.ts @@ -6,13 +6,13 @@ * found in the LICENSE file at https://angular.io/license */ -import {compileDeclarePipeFromMetadata, compilePipeFromMetadata, FactoryTarget, R3PipeMetadata, Statement, WrappedNodeExpr} from '@angular/compiler'; +import {compileClassMetadata, compileDeclareClassMetadata, compileDeclarePipeFromMetadata, compilePipeFromMetadata, FactoryTarget, R3ClassMetadata, R3PipeMetadata, Statement, WrappedNodeExpr} from '@angular/compiler'; import * as ts from 'typescript'; import {ErrorCode, FatalDiagnosticError} from '../../diagnostics'; -import {DefaultImportRecorder, Reference} from '../../imports'; +import {Reference} from '../../imports'; import {SemanticSymbol} from '../../incremental/semantic_graph'; -import {InjectableClassRegistry, MetadataRegistry} from '../../metadata'; +import {InjectableClassRegistry, MetadataRegistry, MetaType} from '../../metadata'; import {PartialEvaluator} from '../../partial_evaluator'; import {PerfEvent, PerfRecorder} from '../../perf'; import {ClassDeclaration, Decorator, ReflectionHost, reflectObjectLiteral} from '../../reflection'; @@ -21,12 +21,13 @@ import {AnalysisOutput, CompileResult, DecoratorHandler, DetectResult, HandlerPr import {createValueHasWrongTypeError} from './diagnostics'; import {compileDeclareFactory, compileNgFactoryDefField} from './factory'; -import {generateSetClassMetadataCall} from './metadata'; +import {extractClassMetadata} from './metadata'; import {compileResults, findAngularDecorator, getValidConstructorDependencies, makeDuplicateDeclarationError, toFactoryMetadata, unwrapExpression, wrapTypeReference} from './util'; export interface PipeHandlerData { meta: R3PipeMetadata; - metadataStmt: Statement|null; + classMetadata: R3ClassMetadata|null; + pipeNameExpr: ts.Expression; } /** @@ -37,7 +38,7 @@ export class PipeSymbol extends SemanticSymbol { super(decl); } - isPublicApiAffected(previousSymbol: SemanticSymbol): boolean { + override isPublicApiAffected(previousSymbol: SemanticSymbol): boolean { if (!(previousSymbol instanceof PipeSymbol)) { return true; } @@ -45,7 +46,7 @@ export class PipeSymbol extends SemanticSymbol { return this.name !== previousSymbol.name; } - isTypeCheckApiAffected(previousSymbol: SemanticSymbol): boolean { + override isTypeCheckApiAffected(previousSymbol: SemanticSymbol): boolean { return this.isPublicApiAffected(previousSymbol); } } @@ -55,7 +56,6 @@ export class PipeDecoratorHandler implements constructor( private reflector: ReflectionHost, private evaluator: PartialEvaluator, private metaRegistry: MetadataRegistry, private scopeRegistry: LocalModuleScopeRegistry, - private defaultImportRecorder: DefaultImportRecorder, private injectableRegistry: InjectableClassRegistry, private isCore: boolean, private perf: PerfRecorder) {} @@ -131,12 +131,11 @@ export class PipeDecoratorHandler implements internalType, typeArgumentCount: this.reflector.getGenericArityOfClass(clazz) || 0, pipeName, - deps: getValidConstructorDependencies( - clazz, this.reflector, this.defaultImportRecorder, this.isCore), + deps: getValidConstructorDependencies(clazz, this.reflector, this.isCore), pure, }, - metadataStmt: generateSetClassMetadataCall( - clazz, this.reflector, this.defaultImportRecorder, this.isCore), + classMetadata: extractClassMetadata(clazz, this.reflector, this.isCore), + pipeNameExpr, }, }; } @@ -147,7 +146,8 @@ export class PipeDecoratorHandler implements register(node: ClassDeclaration, analysis: Readonly): void { const ref = new Reference(node); - this.metaRegistry.registerPipeMetadata({ref, name: analysis.meta.pipeName}); + this.metaRegistry.registerPipeMetadata( + {type: MetaType.Pipe, ref, name: analysis.meta.pipeName, nameExpr: analysis.pipeNameExpr}); this.injectableRegistry.registerInjectable(node); } @@ -167,12 +167,18 @@ export class PipeDecoratorHandler implements compileFull(node: ClassDeclaration, analysis: Readonly): CompileResult[] { const fac = compileNgFactoryDefField(toFactoryMetadata(analysis.meta, FactoryTarget.Pipe)); const def = compilePipeFromMetadata(analysis.meta); - return compileResults(fac, def, analysis.metadataStmt, 'ɵpipe'); + const classMetadata = analysis.classMetadata !== null ? + compileClassMetadata(analysis.classMetadata).toStmt() : + null; + return compileResults(fac, def, classMetadata, 'ɵpipe'); } compilePartial(node: ClassDeclaration, analysis: Readonly): CompileResult[] { const fac = compileDeclareFactory(toFactoryMetadata(analysis.meta, FactoryTarget.Pipe)); const def = compileDeclarePipeFromMetadata(analysis.meta); - return compileResults(fac, def, analysis.metadataStmt, 'ɵpipe'); + const classMetadata = analysis.classMetadata !== null ? + compileDeclareClassMetadata(analysis.classMetadata).toStmt() : + null; + return compileResults(fac, def, classMetadata, 'ɵpipe'); } } diff --git a/packages/compiler-cli/src/ngtsc/annotations/src/util.ts b/packages/compiler-cli/src/ngtsc/annotations/src/util.ts index 5820adbb46..69d29dbd01 100644 --- a/packages/compiler-cli/src/ngtsc/annotations/src/util.ts +++ b/packages/compiler-cli/src/ngtsc/annotations/src/util.ts @@ -12,7 +12,8 @@ import {FactoryTarget} from '@angular/compiler/src/render3/partial/api'; import * as ts from 'typescript'; import {ErrorCode, FatalDiagnosticError, makeDiagnostic, makeRelatedInformation} from '../../diagnostics'; -import {DefaultImportRecorder, ImportFlags, Reference, ReferenceEmitter} from '../../imports'; +import {ImportFlags, Reference, ReferenceEmitter} from '../../imports'; +import {attachDefaultImportDeclaration} from '../../imports/src/default'; import {ForeignFunctionResolver, PartialEvaluator} from '../../partial_evaluator'; import {ClassDeclaration, CtorParameter, Decorator, Import, ImportedTypeValueReference, isNamedClassDeclaration, LocalTypeValueReference, ReflectionHost, TypeValueReference, TypeValueReferenceKind, UnavailableValue, ValueUnavailableKind} from '../../reflection'; import {DeclarationData} from '../../scope'; @@ -32,8 +33,7 @@ export interface ConstructorDepError { } export function getConstructorDependencies( - clazz: ClassDeclaration, reflector: ReflectionHost, - defaultImportRecorder: DefaultImportRecorder, isCore: boolean): ConstructorDeps|null { + clazz: ClassDeclaration, reflector: ReflectionHost, isCore: boolean): ConstructorDeps|null { const deps: R3DependencyMetadata[] = []; const errors: ConstructorDepError[] = []; let ctorParams = reflector.getConstructorParameters(clazz); @@ -45,7 +45,7 @@ export function getConstructorDependencies( } } ctorParams.forEach((param, idx) => { - let token = valueReferenceToExpression(param.typeValueReference, defaultImportRecorder); + let token = valueReferenceToExpression(param.typeValueReference); let attributeNameType: Expression|null = null; let optional = false, self = false, skipSelf = false, host = false; @@ -115,22 +115,18 @@ export function getConstructorDependencies( * references are converted to an `ExternalExpr`. Note that this is only valid in the context of the * file in which the `TypeValueReference` originated. */ -export function valueReferenceToExpression( - valueRef: LocalTypeValueReference|ImportedTypeValueReference, - defaultImportRecorder: DefaultImportRecorder): Expression; -export function valueReferenceToExpression( - valueRef: TypeValueReference, defaultImportRecorder: DefaultImportRecorder): Expression|null; -export function valueReferenceToExpression( - valueRef: TypeValueReference, defaultImportRecorder: DefaultImportRecorder): Expression|null { +export function valueReferenceToExpression(valueRef: LocalTypeValueReference| + ImportedTypeValueReference): Expression; +export function valueReferenceToExpression(valueRef: TypeValueReference): Expression|null; +export function valueReferenceToExpression(valueRef: TypeValueReference): Expression|null { if (valueRef.kind === TypeValueReferenceKind.UNAVAILABLE) { return null; } else if (valueRef.kind === TypeValueReferenceKind.LOCAL) { - if (defaultImportRecorder !== null && valueRef.defaultImportStatement !== null && - ts.isIdentifier(valueRef.expression)) { - defaultImportRecorder.recordImportedIdentifier( - valueRef.expression, valueRef.defaultImportStatement); + const expr = new WrappedNodeExpr(valueRef.expression); + if (valueRef.defaultImportStatement !== null) { + attachDefaultImportDeclaration(expr, valueRef.defaultImportStatement); } - return new WrappedNodeExpr(valueRef.expression); + return expr; } else { let importExpr: Expression = new ExternalExpr({moduleName: valueRef.moduleName, name: valueRef.importedName}); @@ -163,10 +159,10 @@ export function unwrapConstructorDependencies(deps: ConstructorDeps|null): R3Dep } export function getValidConstructorDependencies( - clazz: ClassDeclaration, reflector: ReflectionHost, - defaultImportRecorder: DefaultImportRecorder, isCore: boolean): R3DependencyMetadata[]|null { + clazz: ClassDeclaration, reflector: ReflectionHost, isCore: boolean): R3DependencyMetadata[]| + null { return validateConstructorDependencies( - clazz, getConstructorDependencies(clazz, reflector, defaultImportRecorder, isCore)); + clazz, getConstructorDependencies(clazz, reflector, isCore)); } /** @@ -332,36 +328,40 @@ function expandForwardRef(arg: ts.Expression): ts.Expression|null { } } + /** - * Possibly resolve a forwardRef() expression into the inner value. + * If the given `node` is a forwardRef() expression then resolve its inner value, otherwise return + * `null`. * * @param node the forwardRef() expression to resolve * @param reflector a ReflectionHost - * @returns the resolved expression, if the original expression was a forwardRef(), or the original - * expression otherwise + * @returns the resolved expression, if the original expression was a forwardRef(), or `null` + * otherwise. */ -export function unwrapForwardRef(node: ts.Expression, reflector: ReflectionHost): ts.Expression { +export function tryUnwrapForwardRef(node: ts.Expression, reflector: ReflectionHost): ts.Expression| + null { node = unwrapExpression(node); if (!ts.isCallExpression(node) || node.arguments.length !== 1) { - return node; + return null; } const fn = ts.isPropertyAccessExpression(node.expression) ? node.expression.name : node.expression; if (!ts.isIdentifier(fn)) { - return node; + return null; } const expr = expandForwardRef(node.arguments[0]); if (expr === null) { - return node; + return null; } + const imp = reflector.getImportOfIdentifier(fn); if (imp === null || imp.from !== '@angular/core' || imp.name !== 'forwardRef') { - return node; - } else { - return expr; + return null; } + + return expr; } /** diff --git a/packages/compiler-cli/src/ngtsc/annotations/test/component_spec.ts b/packages/compiler-cli/src/ngtsc/annotations/test/component_spec.ts index 63d33bd2c3..0422821be1 100644 --- a/packages/compiler-cli/src/ngtsc/annotations/test/component_spec.ts +++ b/packages/compiler-cli/src/ngtsc/annotations/test/component_spec.ts @@ -13,7 +13,7 @@ import {CycleAnalyzer, CycleHandlingStrategy, ImportGraph} from '../../cycles'; import {ErrorCode, FatalDiagnosticError} from '../../diagnostics'; import {absoluteFrom} from '../../file_system'; import {runInEachFileSystem} from '../../file_system/testing'; -import {ModuleResolver, NOOP_DEFAULT_IMPORT_RECORDER, ReferenceEmitter} from '../../imports'; +import {ModuleResolver, ReferenceEmitter} from '../../imports'; import {CompoundMetadataReader, DtsMetadataReader, InjectableClassRegistry, LocalMetadataRegistry, ResourceRegistry} from '../../metadata'; import {PartialEvaluator} from '../../partial_evaluator'; import {NOOP_PERF_RECORDER} from '../../perf'; @@ -81,7 +81,6 @@ function setup(program: ts.Program, options: ts.CompilerOptions, host: ts.Compil cycleAnalyzer, CycleHandlingStrategy.UseRemoteScoping, refEmitter, - NOOP_DEFAULT_IMPORT_RECORDER, /* depTracker */ null, injectableRegistry, /* semanticDepGraphUpdater */ null, @@ -230,6 +229,36 @@ runInEachFileSystem(() => { expect(analysis?.resources.styles.size).toBe(3); }); + it('should use an empty source map URL for an indirect template', () => { + const template = 'indirect'; + const {program, options, host} = makeProgram([ + { + name: _('/node_modules/@angular/core/index.d.ts'), + contents: 'export const Component: any;', + }, + { + name: _('/entry.ts'), + contents: ` + import {Component} from '@angular/core'; + + const TEMPLATE = '${template}'; + + @Component({ + template: TEMPLATE, + }) class TestCmp {} + ` + }, + ]); + const {reflectionHost, handler} = setup(program, options, host); + const TestCmp = getDeclaration(program, _('/entry.ts'), 'TestCmp', isNamedClassDeclaration); + const detected = handler.detect(TestCmp, reflectionHost.getDecoratorsOfDeclaration(TestCmp)); + if (detected === undefined) { + return fail('Failed to recognize @Component'); + } + const {analysis} = handler.analyze(TestCmp, detected.metadata); + expect(analysis?.template.file?.url).toEqual(''); + }); + it('does not emit a program with template parse errors', () => { const template = '{{x ? y }}'; const {program, options, host} = makeProgram([ @@ -303,6 +332,74 @@ runInEachFileSystem(() => { const {analysis} = handler.analyze(TestCmp, detected.metadata); expect(analysis?.inlineStyles).toEqual(jasmine.arrayWithExactContents(['.xyz {}'])); }); + + it('should error if canPreprocess is true and async analyze is not used', async () => { + const {program, options, host} = makeProgram([ + { + name: _('/node_modules/@angular/core/index.d.ts'), + contents: 'export const Component: any;', + }, + { + name: _('/entry.ts'), + contents: ` + import {Component} from '@angular/core'; + + @Component({ + template: '', + styles: ['.abc {}'] + }) class TestCmp {} + ` + }, + ]); + const {reflectionHost, handler, resourceLoader} = setup(program, options, host); + resourceLoader.canPreload = true; + resourceLoader.canPreprocess = true; + + const TestCmp = getDeclaration(program, _('/entry.ts'), 'TestCmp', isNamedClassDeclaration); + const detected = handler.detect(TestCmp, reflectionHost.getDecoratorsOfDeclaration(TestCmp)); + if (detected === undefined) { + return fail('Failed to recognize @Component'); + } + + expect(() => handler.analyze(TestCmp, detected.metadata)) + .toThrowError('Inline resource processing requires asynchronous preanalyze.'); + }); + + it('should not error if component has no inline styles and canPreprocess is true', async () => { + const {program, options, host} = makeProgram([ + { + name: _('/node_modules/@angular/core/index.d.ts'), + contents: 'export const Component: any;', + }, + { + name: _('/entry.ts'), + contents: ` + import {Component} from '@angular/core'; + + @Component({ + template: '', + }) class TestCmp {} + ` + }, + ]); + const {reflectionHost, handler, resourceLoader} = setup(program, options, host); + resourceLoader.canPreload = true; + resourceLoader.canPreprocess = true; + resourceLoader.preprocessInline = async function(data, context) { + fail('preprocessInline should not have been called.'); + return data; + }; + + const TestCmp = getDeclaration(program, _('/entry.ts'), 'TestCmp', isNamedClassDeclaration); + const detected = handler.detect(TestCmp, reflectionHost.getDecoratorsOfDeclaration(TestCmp)); + if (detected === undefined) { + return fail('Failed to recognize @Component'); + } + + await handler.preanalyze(TestCmp, detected.metadata); + + expect(() => handler.analyze(TestCmp, detected.metadata)).not.toThrow(); + }); }); function ivyCode(code: ErrorCode): number { diff --git a/packages/compiler-cli/src/ngtsc/annotations/test/directive_spec.ts b/packages/compiler-cli/src/ngtsc/annotations/test/directive_spec.ts index 898a0a28eb..e45fade999 100644 --- a/packages/compiler-cli/src/ngtsc/annotations/test/directive_spec.ts +++ b/packages/compiler-cli/src/ngtsc/annotations/test/directive_spec.ts @@ -10,7 +10,7 @@ import * as ts from 'typescript'; import {absoluteFrom} from '../../file_system'; import {runInEachFileSystem} from '../../file_system/testing'; -import {NOOP_DEFAULT_IMPORT_RECORDER, ReferenceEmitter} from '../../imports'; +import {ReferenceEmitter} from '../../imports'; import {DtsMetadataReader, InjectableClassRegistry, LocalMetadataRegistry} from '../../metadata'; import {PartialEvaluator} from '../../partial_evaluator'; import {NOOP_PERF_RECORDER} from '../../perf'; @@ -153,7 +153,7 @@ runInEachFileSystem(() => { super(checker); } - hasBaseClass(_class: ClassDeclaration): boolean { + override hasBaseClass(_class: ClassDeclaration): boolean { return hasBaseClass; } } @@ -168,8 +168,8 @@ runInEachFileSystem(() => { null); const injectableRegistry = new InjectableClassRegistry(reflectionHost); const handler = new DirectiveDecoratorHandler( - reflectionHost, evaluator, scopeRegistry, scopeRegistry, metaReader, - NOOP_DEFAULT_IMPORT_RECORDER, injectableRegistry, /*isCore*/ false, + reflectionHost, evaluator, scopeRegistry, scopeRegistry, metaReader, injectableRegistry, + /*isCore*/ false, /*semanticDepGraphUpdater*/ null, /*annotateForClosureCompiler*/ false, /*detectUndecoratedClassesWithAngularFeatures*/ false, NOOP_PERF_RECORDER); diff --git a/packages/compiler-cli/src/ngtsc/annotations/test/injectable_spec.ts b/packages/compiler-cli/src/ngtsc/annotations/test/injectable_spec.ts index 293fd25533..901463b7e4 100644 --- a/packages/compiler-cli/src/ngtsc/annotations/test/injectable_spec.ts +++ b/packages/compiler-cli/src/ngtsc/annotations/test/injectable_spec.ts @@ -8,7 +8,6 @@ import {ErrorCode, FatalDiagnosticError, ngErrorCode} from '../../diagnostics'; import {absoluteFrom} from '../../file_system'; import {runInEachFileSystem} from '../../file_system/testing'; -import {NOOP_DEFAULT_IMPORT_RECORDER} from '../../imports'; import {InjectableClassRegistry} from '../../metadata'; import {NOOP_PERF_RECORDER} from '../../perf'; import {isNamedClassDeclaration, TypeScriptReflectionHost} from '../../reflection'; @@ -70,7 +69,7 @@ function setupHandler(errorOnDuplicateProv: boolean) { const reflectionHost = new TypeScriptReflectionHost(checker); const injectableRegistry = new InjectableClassRegistry(reflectionHost); const handler = new InjectableDecoratorHandler( - reflectionHost, NOOP_DEFAULT_IMPORT_RECORDER, /* isCore */ false, + reflectionHost, /* isCore */ false, /* strictCtorDeps */ false, injectableRegistry, NOOP_PERF_RECORDER, errorOnDuplicateProv); const TestClass = getDeclaration(program, ENTRY_FILE, 'TestClass', isNamedClassDeclaration); const ɵprov = reflectionHost.getMembersOfClass(TestClass).find(member => member.name === 'ɵprov'); diff --git a/packages/compiler-cli/src/ngtsc/annotations/test/metadata_spec.ts b/packages/compiler-cli/src/ngtsc/annotations/test/metadata_spec.ts index fe6a5609ab..180ccab12d 100644 --- a/packages/compiler-cli/src/ngtsc/annotations/test/metadata_spec.ts +++ b/packages/compiler-cli/src/ngtsc/annotations/test/metadata_spec.ts @@ -5,15 +5,16 @@ * 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 */ +import {compileClassMetadata} from '@angular/compiler'; import * as ts from 'typescript'; import {absoluteFrom, getSourceFileOrError} from '../../file_system'; import {runInEachFileSystem, TestFile} from '../../file_system/testing'; -import {NOOP_DEFAULT_IMPORT_RECORDER, NoopImportRewriter} from '../../imports'; +import {NoopImportRewriter} from '../../imports'; import {TypeScriptReflectionHost} from '../../reflection'; import {getDeclaration, makeProgram} from '../../testing'; import {ImportManager, translateStatement} from '../../translator'; -import {generateSetClassMetadataCall} from '../src/metadata'; +import {extractClassMetadata} from '../src/metadata'; runInEachFileSystem(() => { describe('ngtsc setClassMetadata converter', () => { @@ -127,13 +128,14 @@ runInEachFileSystem(() => { {target: ts.ScriptTarget.ES2015}); const host = new TypeScriptReflectionHost(program.getTypeChecker()); const target = getDeclaration(program, _('/index.ts'), 'Target', ts.isClassDeclaration); - const call = generateSetClassMetadataCall(target, host, NOOP_DEFAULT_IMPORT_RECORDER, false); + const call = extractClassMetadata(target, host, false); if (call === null) { return ''; } const sf = getSourceFileOrError(program, _('/index.ts')); const im = new ImportManager(new NoopImportRewriter(), 'i'); - const tsStatement = translateStatement(call, im); + const stmt = compileClassMetadata(call).toStmt(); + const tsStatement = translateStatement(stmt, im); const res = ts.createPrinter().printNode(ts.EmitHint.Unspecified, tsStatement, sf); return res.replace(/\s+/g, ' '); } diff --git a/packages/compiler-cli/src/ngtsc/annotations/test/ng_module_spec.ts b/packages/compiler-cli/src/ngtsc/annotations/test/ng_module_spec.ts index 5e0387b1db..bd16ad693e 100644 --- a/packages/compiler-cli/src/ngtsc/annotations/test/ng_module_spec.ts +++ b/packages/compiler-cli/src/ngtsc/annotations/test/ng_module_spec.ts @@ -11,7 +11,7 @@ import * as ts from 'typescript'; import {absoluteFrom} from '../../file_system'; import {runInEachFileSystem} from '../../file_system/testing'; -import {LocalIdentifierStrategy, NOOP_DEFAULT_IMPORT_RECORDER, ReferenceEmitter} from '../../imports'; +import {LocalIdentifierStrategy, ReferenceEmitter} from '../../imports'; import {CompoundMetadataReader, DtsMetadataReader, InjectableClassRegistry, LocalMetadataRegistry} from '../../metadata'; import {PartialEvaluator} from '../../partial_evaluator'; import {NOOP_PERF_RECORDER} from '../../perf'; @@ -72,8 +72,7 @@ runInEachFileSystem(() => { const handler = new NgModuleDecoratorHandler( reflectionHost, evaluator, metaReader, metaRegistry, scopeRegistry, referencesRegistry, /* isCore */ false, /* routeAnalyzer */ null, refEmitter, /* factoryTracker */ null, - NOOP_DEFAULT_IMPORT_RECORDER, /* annotateForClosureCompiler */ false, injectableRegistry, - NOOP_PERF_RECORDER); + /* annotateForClosureCompiler */ false, injectableRegistry, NOOP_PERF_RECORDER); const TestModule = getDeclaration(program, _('/entry.ts'), 'TestModule', isNamedClassDeclaration); const detected = diff --git a/packages/compiler-cli/src/ngtsc/core/BUILD.bazel b/packages/compiler-cli/src/ngtsc/core/BUILD.bazel index a111461889..04122d3613 100644 --- a/packages/compiler-cli/src/ngtsc/core/BUILD.bazel +++ b/packages/compiler-cli/src/ngtsc/core/BUILD.bazel @@ -23,9 +23,9 @@ ts_library( "//packages/compiler-cli/src/ngtsc/incremental/semantic_graph", "//packages/compiler-cli/src/ngtsc/indexer", "//packages/compiler-cli/src/ngtsc/metadata", - "//packages/compiler-cli/src/ngtsc/modulewithproviders", "//packages/compiler-cli/src/ngtsc/partial_evaluator", "//packages/compiler-cli/src/ngtsc/perf", + "//packages/compiler-cli/src/ngtsc/program_driver", "//packages/compiler-cli/src/ngtsc/reflection", "//packages/compiler-cli/src/ngtsc/resource", "//packages/compiler-cli/src/ngtsc/routing", @@ -38,6 +38,7 @@ ts_library( "//packages/compiler-cli/src/ngtsc/typecheck/api", "//packages/compiler-cli/src/ngtsc/typecheck/diagnostics", "//packages/compiler-cli/src/ngtsc/util", + "//packages/compiler-cli/src/ngtsc/xi18n", "@npm//typescript", ], ) diff --git a/packages/compiler-cli/src/ngtsc/core/api/src/interfaces.ts b/packages/compiler-cli/src/ngtsc/core/api/src/interfaces.ts index 3c3a2f0179..f6c7d3e84b 100644 --- a/packages/compiler-cli/src/ngtsc/core/api/src/interfaces.ts +++ b/packages/compiler-cli/src/ngtsc/core/api/src/interfaces.ts @@ -33,8 +33,13 @@ export interface ResourceHost { /** * Converts a file path for a resource that is used in a source file or another resource * into a filepath. + * + * The optional `fallbackResolve` method can be used as a way to attempt a fallback resolution if + * the implementation's `resourceNameToFileName` resolution fails. */ - resourceNameToFileName(resourceName: string, containingFilePath: string): string|null; + resourceNameToFileName( + resourceName: string, containingFilePath: string, + fallbackResolve?: (url: string, fromFile: string) => string | null): string|null; /** * Load a referenced resource either statically or asynchronously. If the host returns a diff --git a/packages/compiler-cli/src/ngtsc/core/api/src/options.ts b/packages/compiler-cli/src/ngtsc/core/api/src/options.ts index 661221d87a..b9117d5459 100644 --- a/packages/compiler-cli/src/ngtsc/core/api/src/options.ts +++ b/packages/compiler-cli/src/ngtsc/core/api/src/options.ts @@ -8,7 +8,7 @@ import * as ts from 'typescript'; -import {BazelAndG3Options, I18nOptions, LegacyNgcOptions, MiscOptions, NgcCompatibilityOptions, StrictTemplateOptions} from './public_options'; +import {BazelAndG3Options, I18nOptions, LegacyNgcOptions, MiscOptions, NgcCompatibilityOptions, StrictTemplateOptions, TargetOptions} from './public_options'; /** @@ -36,22 +36,6 @@ export interface TestOnlyOptions { tracePerformance?: string; } -/** - * Options that specify compilation target. - */ -export interface TargetOptions { - /** - * Specifies the compilation mode to use. The following modes are available: - * - 'full': generates fully AOT compiled code using Ivy instructions. - * - 'partial': generates code in a stable, but intermediate form suitable to be published to NPM. - * - * To become public once the linker is ready. - * - * @internal - */ - compilationMode?: 'full'|'partial'; -} - /** * A merged interface of all of the various Angular compiler options, as well as the standard * `ts.CompilerOptions`. diff --git a/packages/compiler-cli/src/ngtsc/core/api/src/public_options.ts b/packages/compiler-cli/src/ngtsc/core/api/src/public_options.ts index 115554b7d9..9a3d1cb2bd 100644 --- a/packages/compiler-cli/src/ngtsc/core/api/src/public_options.ts +++ b/packages/compiler-cli/src/ngtsc/core/api/src/public_options.ts @@ -309,6 +309,22 @@ export interface I18nOptions { */ i18nInLocale?: string; + /** + * Export format (xlf, xlf2 or xmb) when the xi18n operation is requested. + */ + i18nOutFormat?: string; + + /** + * Path to the extracted message file to emit when the xi18n operation is requested. + */ + i18nOutFile?: string; + + + /** + * Locale of the application (used when xi18n is requested). + */ + i18nOutLocale?: string; + /** * Render `$localize` messages with legacy format ids. * @@ -340,6 +356,22 @@ export interface I18nOptions { i18nNormalizeLineEndingsInICUs?: boolean; } +/** + * Options that specify compilation target. + * + * @publicApi + */ +export interface TargetOptions { + /** + * Specifies the compilation mode to use. The following modes are available: + * - 'full': generates fully AOT compiled code using Ivy instructions. + * - 'partial': generates code in a stable, but intermediate form suitable for publication to NPM. + * + * The default value is 'full'. + */ + compilationMode?: 'full'|'partial'; +} + /** * Miscellaneous options that don't fall into any other category * diff --git a/packages/compiler-cli/src/ngtsc/core/index.ts b/packages/compiler-cli/src/ngtsc/core/index.ts index a9eba8a032..62fd84cc24 100644 --- a/packages/compiler-cli/src/ngtsc/core/index.ts +++ b/packages/compiler-cli/src/ngtsc/core/index.ts @@ -7,4 +7,4 @@ */ export * from './src/compiler'; -export {NgCompilerHost} from './src/host'; \ No newline at end of file +export {NgCompilerHost} from './src/host'; diff --git a/packages/compiler-cli/src/ngtsc/core/src/compiler.ts b/packages/compiler-cli/src/ngtsc/core/src/compiler.ts index f99ceb9ebb..dcc37051f9 100644 --- a/packages/compiler-cli/src/ngtsc/core/src/compiler.ts +++ b/packages/compiler-cli/src/ngtsc/core/src/compiler.ts @@ -6,24 +6,21 @@ * found in the LICENSE file at https://angular.io/license */ -import {Type} from '@angular/compiler'; import * as ts from 'typescript'; import {ComponentDecoratorHandler, DirectiveDecoratorHandler, InjectableDecoratorHandler, NgModuleDecoratorHandler, NoopReferencesRegistry, PipeDecoratorHandler, ReferencesRegistry} from '../../annotations'; import {CycleAnalyzer, CycleHandlingStrategy, ImportGraph} from '../../cycles'; import {COMPILER_ERRORS_WITH_GUIDES, ERROR_DETAILS_PAGE_BASE_URL, ErrorCode, ngErrorCode} from '../../diagnostics'; import {checkForPrivateExports, ReferenceGraph} from '../../entry_point'; -import {LogicalFileSystem, resolve} from '../../file_system'; +import {absoluteFromSourceFile, AbsoluteFsPath, LogicalFileSystem, resolve} from '../../file_system'; import {AbsoluteModuleStrategy, AliasingHost, AliasStrategy, DefaultImportTracker, ImportRewriter, LocalIdentifierStrategy, LogicalProjectStrategy, ModuleResolver, NoopImportRewriter, PrivateExportAliasingHost, R3SymbolsImportRewriter, Reference, ReferenceEmitStrategy, ReferenceEmitter, RelativePathStrategy, UnifiedModulesAliasingHost, UnifiedModulesStrategy} from '../../imports'; -import {IncrementalBuildStrategy, IncrementalDriver} from '../../incremental'; +import {IncrementalBuildStrategy, IncrementalCompilation, IncrementalState} from '../../incremental'; import {SemanticSymbol} from '../../incremental/semantic_graph'; import {generateAnalysis, IndexedComponent, IndexingContext} from '../../indexer'; -import {ComponentResources, CompoundMetadataReader, CompoundMetadataRegistry, DtsMetadataReader, InjectableClassRegistry, LocalMetadataRegistry, MetadataReader, ResourceRegistry} from '../../metadata'; -import {ModuleWithProvidersScanner} from '../../modulewithproviders'; +import {ComponentResources, CompoundMetadataReader, CompoundMetadataRegistry, DirectiveMeta, DtsMetadataReader, InjectableClassRegistry, LocalMetadataRegistry, MetadataReader, PipeMeta, ResourceRegistry} from '../../metadata'; import {PartialEvaluator} from '../../partial_evaluator'; -import {ActivePerfRecorder} from '../../perf'; -import {PerfCheckpoint, PerfEvent, PerfPhase} from '../../perf/src/api'; -import {DelegatingPerfRecorder} from '../../perf/src/recorder'; +import {ActivePerfRecorder, DelegatingPerfRecorder, PerfCheckpoint, PerfEvent, PerfPhase} from '../../perf'; +import {FileUpdate, ProgramDriver, UpdateMode} from '../../program_driver'; import {DeclarationNode, isNamedClassDeclaration, TypeScriptReflectionHost} from '../../reflection'; import {AdapterResourceLoader} from '../../resource'; import {entryPointKeyFor, NgModuleRouteAnalyzer} from '../../routing'; @@ -32,8 +29,9 @@ import {generatedFactoryTransform} from '../../shims'; import {ivySwitchTransform} from '../../switch'; import {aliasTransformFactory, CompilationMode, declarationTransformFactory, DecoratorHandler, DtsTransformRegistry, ivyTransformFactory, TraitCompiler} from '../../transform'; import {TemplateTypeCheckerImpl} from '../../typecheck'; -import {OptimizeFor, TemplateTypeChecker, TypeCheckingConfig, TypeCheckingProgramStrategy} from '../../typecheck/api'; -import {getSourceFileOrNull, isDtsPath, resolveModuleName} from '../../util/src/typescript'; +import {OptimizeFor, TemplateTypeChecker, TypeCheckingConfig} from '../../typecheck/api'; +import {getSourceFileOrNull, isDtsPath, resolveModuleName, toUnredirectedSourceFile} from '../../util/src/typescript'; +import {Xi18nContext} from '../../xi18n'; import {LazyRoute, NgCompilerAdapter, NgCompilerOptions} from '../api'; import {compileUndecoratedClassesWithAngularFeatures} from './config'; @@ -52,8 +50,6 @@ interface LazyCompilationState { exportReferenceGraph: ReferenceGraph|null; routeAnalyzer: NgModuleRouteAnalyzer; dtsTransforms: DtsTransformRegistry; - mwpScanner: ModuleWithProvidersScanner; - defaultImportTracker: DefaultImportTracker; aliasingHost: AliasingHost|null; refEmitter: ReferenceEmitter; templateTypeChecker: TemplateTypeChecker; @@ -78,7 +74,7 @@ export interface FreshCompilationTicket { kind: CompilationTicketKind.Fresh; options: NgCompilerOptions; incrementalBuildStrategy: IncrementalBuildStrategy; - typeCheckingProgramStrategy: TypeCheckingProgramStrategy; + programDriver: ProgramDriver; enableTemplateTypeChecker: boolean; usePoisonedData: boolean; tsProgram: ts.Program; @@ -91,11 +87,10 @@ export interface FreshCompilationTicket { export interface IncrementalTypeScriptCompilationTicket { kind: CompilationTicketKind.IncrementalTypeScript; options: NgCompilerOptions; - oldProgram: ts.Program; newProgram: ts.Program; incrementalBuildStrategy: IncrementalBuildStrategy; - typeCheckingProgramStrategy: TypeCheckingProgramStrategy; - newDriver: IncrementalDriver; + incrementalCompilation: IncrementalCompilation; + programDriver: ProgramDriver; enableTemplateTypeChecker: boolean; usePoisonedData: boolean; perfRecorder: ActivePerfRecorder; @@ -123,15 +118,15 @@ export type CompilationTicket = FreshCompilationTicket|IncrementalTypeScriptComp */ export function freshCompilationTicket( tsProgram: ts.Program, options: NgCompilerOptions, - incrementalBuildStrategy: IncrementalBuildStrategy, - typeCheckingProgramStrategy: TypeCheckingProgramStrategy, perfRecorder: ActivePerfRecorder|null, - enableTemplateTypeChecker: boolean, usePoisonedData: boolean): CompilationTicket { + incrementalBuildStrategy: IncrementalBuildStrategy, programDriver: ProgramDriver, + perfRecorder: ActivePerfRecorder|null, enableTemplateTypeChecker: boolean, + usePoisonedData: boolean): CompilationTicket { return { kind: CompilationTicketKind.Fresh, tsProgram, options, incrementalBuildStrategy, - typeCheckingProgramStrategy, + programDriver, enableTemplateTypeChecker, usePoisonedData, perfRecorder: perfRecorder ?? ActivePerfRecorder.zeroedToNow(), @@ -144,25 +139,26 @@ export function freshCompilationTicket( */ export function incrementalFromCompilerTicket( oldCompiler: NgCompiler, newProgram: ts.Program, - incrementalBuildStrategy: IncrementalBuildStrategy, - typeCheckingProgramStrategy: TypeCheckingProgramStrategy, modifiedResourceFiles: Set, + incrementalBuildStrategy: IncrementalBuildStrategy, programDriver: ProgramDriver, + modifiedResourceFiles: Set, perfRecorder: ActivePerfRecorder|null): CompilationTicket { - const oldProgram = oldCompiler.getNextProgram(); - const oldDriver = oldCompiler.incrementalStrategy.getIncrementalDriver(oldProgram); - if (oldDriver === null) { + const oldProgram = oldCompiler.getCurrentProgram(); + const oldState = oldCompiler.incrementalStrategy.getIncrementalState(oldProgram); + if (oldState === null) { // No incremental step is possible here, since no IncrementalDriver was found for the old // program. return freshCompilationTicket( - newProgram, oldCompiler.options, incrementalBuildStrategy, typeCheckingProgramStrategy, - perfRecorder, oldCompiler.enableTemplateTypeChecker, oldCompiler.usePoisonedData); + newProgram, oldCompiler.options, incrementalBuildStrategy, programDriver, perfRecorder, + oldCompiler.enableTemplateTypeChecker, oldCompiler.usePoisonedData); } if (perfRecorder === null) { perfRecorder = ActivePerfRecorder.zeroedToNow(); } - const newDriver = IncrementalDriver.reconcile( - oldProgram, oldDriver, newProgram, modifiedResourceFiles, perfRecorder); + const incrementalCompilation = IncrementalCompilation.incremental( + newProgram, versionMapFromProgram(newProgram, programDriver), oldProgram, oldState, + modifiedResourceFiles, perfRecorder); return { kind: CompilationTicketKind.IncrementalTypeScript, @@ -170,9 +166,8 @@ export function incrementalFromCompilerTicket( usePoisonedData: oldCompiler.usePoisonedData, options: oldCompiler.options, incrementalBuildStrategy, - typeCheckingProgramStrategy, - newDriver, - oldProgram, + incrementalCompilation, + programDriver, newProgram, perfRecorder, }; @@ -182,26 +177,25 @@ export function incrementalFromCompilerTicket( * Create a `CompilationTicket` directly from an old `ts.Program` and associated Angular compilation * state, along with a new `ts.Program`. */ -export function incrementalFromDriverTicket( - oldProgram: ts.Program, oldDriver: IncrementalDriver, newProgram: ts.Program, +export function incrementalFromStateTicket( + oldProgram: ts.Program, oldState: IncrementalState, newProgram: ts.Program, options: NgCompilerOptions, incrementalBuildStrategy: IncrementalBuildStrategy, - typeCheckingProgramStrategy: TypeCheckingProgramStrategy, modifiedResourceFiles: Set, + programDriver: ProgramDriver, modifiedResourceFiles: Set, perfRecorder: ActivePerfRecorder|null, enableTemplateTypeChecker: boolean, usePoisonedData: boolean): CompilationTicket { if (perfRecorder === null) { perfRecorder = ActivePerfRecorder.zeroedToNow(); } - - const newDriver = IncrementalDriver.reconcile( - oldProgram, oldDriver, newProgram, modifiedResourceFiles, perfRecorder); + const incrementalCompilation = IncrementalCompilation.incremental( + newProgram, versionMapFromProgram(newProgram, programDriver), oldProgram, oldState, + modifiedResourceFiles, perfRecorder); return { kind: CompilationTicketKind.IncrementalTypeScript, - oldProgram, newProgram, options, incrementalBuildStrategy, - newDriver, - typeCheckingProgramStrategy, + incrementalCompilation, + programDriver, enableTemplateTypeChecker, usePoisonedData, perfRecorder, @@ -255,7 +249,7 @@ export class NgCompiler { private nonTemplateDiagnostics: ts.Diagnostic[]|null = null; private closureCompilerEnabled: boolean; - private nextProgram: ts.Program; + private currentProgram: ts.Program; private entryPoint: ts.SourceFile|null; private moduleResolver: ModuleResolver; private resourceManager: AdapterResourceLoader; @@ -286,9 +280,10 @@ export class NgCompiler { adapter, ticket.options, ticket.tsProgram, - ticket.typeCheckingProgramStrategy, + ticket.programDriver, ticket.incrementalBuildStrategy, - IncrementalDriver.fresh(ticket.tsProgram), + IncrementalCompilation.fresh( + ticket.tsProgram, versionMapFromProgram(ticket.tsProgram, ticket.programDriver)), ticket.enableTemplateTypeChecker, ticket.usePoisonedData, ticket.perfRecorder, @@ -298,9 +293,9 @@ export class NgCompiler { adapter, ticket.options, ticket.newProgram, - ticket.typeCheckingProgramStrategy, + ticket.programDriver, ticket.incrementalBuildStrategy, - ticket.newDriver, + ticket.incrementalCompilation, ticket.enableTemplateTypeChecker, ticket.usePoisonedData, ticket.perfRecorder, @@ -315,10 +310,10 @@ export class NgCompiler { private constructor( private adapter: NgCompilerAdapter, readonly options: NgCompilerOptions, - private tsProgram: ts.Program, - readonly typeCheckingProgramStrategy: TypeCheckingProgramStrategy, + private inputProgram: ts.Program, + readonly programDriver: ProgramDriver, readonly incrementalStrategy: IncrementalBuildStrategy, - readonly incrementalDriver: IncrementalDriver, + readonly incrementalCompilation: IncrementalCompilation, readonly enableTemplateTypeChecker: boolean, readonly usePoisonedData: boolean, private livePerfRecorder: ActivePerfRecorder, @@ -329,11 +324,11 @@ export class NgCompiler { this.constructionDiagnostics.push(incompatibleTypeCheckOptionsDiagnostic); } - this.nextProgram = tsProgram; + this.currentProgram = inputProgram; this.closureCompilerEnabled = !!this.options.annotateForClosureCompiler; this.entryPoint = - adapter.entryPoint !== null ? getSourceFileOrNull(tsProgram, adapter.entryPoint) : null; + adapter.entryPoint !== null ? getSourceFileOrNull(inputProgram, adapter.entryPoint) : null; const moduleResolutionCache = ts.createModuleResolutionCache( this.adapter.getCurrentDirectory(), @@ -343,19 +338,19 @@ export class NgCompiler { // way into all kinds of places inside TS internal objects. this.adapter.getCanonicalFileName.bind(this.adapter)); this.moduleResolver = - new ModuleResolver(tsProgram, this.options, this.adapter, moduleResolutionCache); + new ModuleResolver(inputProgram, this.options, this.adapter, moduleResolutionCache); this.resourceManager = new AdapterResourceLoader(adapter, this.options); - this.cycleAnalyzer = - new CycleAnalyzer(new ImportGraph(tsProgram.getTypeChecker(), this.delegatingPerfRecorder)); - this.incrementalStrategy.setIncrementalDriver(this.incrementalDriver, tsProgram); + this.cycleAnalyzer = new CycleAnalyzer( + new ImportGraph(inputProgram.getTypeChecker(), this.delegatingPerfRecorder)); + this.incrementalStrategy.setIncrementalState(this.incrementalCompilation.state, inputProgram); this.ignoreForDiagnostics = - new Set(tsProgram.getSourceFiles().filter(sf => this.adapter.isShim(sf))); + new Set(inputProgram.getSourceFiles().filter(sf => this.adapter.isShim(sf))); this.ignoreForEmit = this.adapter.ignoreForEmit; let dtsFileCount = 0; let nonDtsFileCount = 0; - for (const sf of tsProgram.getSourceFiles()) { + for (const sf of inputProgram.getSourceFiles()) { if (sf.isDeclarationFile) { dtsFileCount++; } else { @@ -371,6 +366,16 @@ export class NgCompiler { return this.livePerfRecorder; } + /** + * Exposes the `IncrementalCompilation` under an old property name that the CLI uses, avoiding a + * chicken-and-egg problem with the rename to `incrementalCompilation`. + * + * TODO(alxhub): remove when the CLI uses the new name. + */ + get incrementalDriver(): IncrementalCompilation { + return this.incrementalCompilation; + } + private updateWithChangedResources( changedResources: Set, perfRecorder: ActivePerfRecorder): void { this.livePerfRecorder = perfRecorder; @@ -415,7 +420,7 @@ export class NgCompiler { getResourceDependencies(file: ts.SourceFile): string[] { this.ensureAnalyzed(); - return this.incrementalDriver.depGraph.getResourceDependencies(file); + return this.incrementalCompilation.depGraph.getResourceDependencies(file); } /** @@ -462,16 +467,22 @@ export class NgCompiler { } /** - * Get the `ts.Program` to use as a starting point when spawning a subsequent incremental - * compilation. + * Get the current `ts.Program` known to this `NgCompiler`. * - * The `NgCompiler` spawns an internal incremental TypeScript compilation (inheriting the - * consumer's `ts.Program` into a new one for the purposes of template type-checking). After this - * operation, the consumer's `ts.Program` is no longer usable for starting a new incremental - * compilation. `getNextProgram` retrieves the `ts.Program` which can be used instead. + * Compilation begins with an input `ts.Program`, and during template type-checking operations new + * `ts.Program`s may be produced using the `ProgramDriver`. The most recent such `ts.Program` to + * be produced is available here. + * + * This `ts.Program` serves two key purposes: + * + * * As an incremental starting point for creating the next `ts.Program` based on files that the + * user has changed (for clients using the TS compiler program APIs). + * + * * As the "before" point for an incremental compilation invocation, to determine what's changed + * between the old and new programs (for all compilations). */ - getNextProgram(): ts.Program { - return this.nextProgram; + getCurrentProgram(): ts.Program { + return this.currentProgram; } getTemplateTypeChecker(): TemplateTypeChecker { @@ -515,6 +526,19 @@ export class NgCompiler { return {styles, template}; } + getMeta(classDecl: DeclarationNode): PipeMeta|DirectiveMeta|null { + if (!isNamedClassDeclaration(classDecl)) { + return null; + } + const ref = new Reference(classDecl); + const {metaReader} = this.ensureAnalyzed(); + const meta = metaReader.getPipeMetadata(ref) ?? metaReader.getDirectiveMetadata(ref); + if (meta === null) { + return null; + } + return meta; + } + /** * Perform Angular's analysis step (as a precursor to `getDiagnostics` or `prepareEmit`) * asynchronously. @@ -533,13 +557,12 @@ export class NgCompiler { this.compilation = this.makeCompilation(); const promises: Promise[] = []; - for (const sf of this.tsProgram.getSourceFiles()) { + for (const sf of this.inputProgram.getSourceFiles()) { if (sf.isDeclarationFile) { continue; } let analysisPromise = this.compilation.traitCompiler.analyzeAsync(sf); - this.scanForMwp(sf); if (analysisPromise !== undefined) { promises.push(analysisPromise); } @@ -579,7 +602,7 @@ export class NgCompiler { // // In all cases above, the `containingFile` argument is ignored, so we can just take the first // of the root files. - const containingFile = this.tsProgram.getRootFileNames()[0]; + const containingFile = this.inputProgram.getRootFileNames()[0]; const [entryPath, moduleName] = entryRoute.split('#'); const resolvedModule = resolveModuleName(entryPath, containingFile, this.options, this.adapter, null); @@ -602,7 +625,7 @@ export class NgCompiler { } { const compilation = this.ensureAnalyzed(); - const coreImportsFrom = compilation.isCore ? getR3SymbolsFile(this.tsProgram) : null; + const coreImportsFrom = compilation.isCore ? getR3SymbolsFile(this.inputProgram) : null; let importRewriter: ImportRewriter; if (coreImportsFrom !== null) { importRewriter = new R3SymbolsImportRewriter(coreImportsFrom.fileName); @@ -610,13 +633,14 @@ export class NgCompiler { importRewriter = new NoopImportRewriter(); } + const defaultImportTracker = new DefaultImportTracker(); + const before = [ ivyTransformFactory( - compilation.traitCompiler, compilation.reflector, importRewriter, - compilation.defaultImportTracker, this.delegatingPerfRecorder, compilation.isCore, - this.closureCompilerEnabled), + compilation.traitCompiler, compilation.reflector, importRewriter, defaultImportTracker, + this.delegatingPerfRecorder, compilation.isCore, this.closureCompilerEnabled), aliasTransformFactory(compilation.traitCompiler.exportStatements), - compilation.defaultImportTracker.importPreservingTransformer(), + defaultImportTracker.importPreservingTransformer(), ]; const afterDeclarations: ts.TransformerFactory[] = []; @@ -651,6 +675,16 @@ export class NgCompiler { return generateAnalysis(context); } + /** + * Collect i18n messages into the `Xi18nContext`. + */ + xi18n(ctx: Xi18nContext): void { + // Note that the 'resolve' phase is not strictly necessary for xi18n, but this is not currently + // optimized. + const compilation = this.ensureAnalyzed(); + compilation.traitCompiler.xi18n(ctx); + } + private ensureAnalyzed(this: NgCompiler): LazyCompilationState { if (this.compilation === null) { this.analyzeSync(); @@ -661,12 +695,11 @@ export class NgCompiler { private analyzeSync(): void { this.perfRecorder.inPhase(PerfPhase.Analysis, () => { this.compilation = this.makeCompilation(); - for (const sf of this.tsProgram.getSourceFiles()) { + for (const sf of this.inputProgram.getSourceFiles()) { if (sf.isDeclarationFile) { continue; } this.compilation.traitCompiler.analyzeSync(sf); - this.scanForMwp(sf); } this.perfRecorder.memory(PerfCheckpoint.Analysis); @@ -681,7 +714,7 @@ export class NgCompiler { // At this point, analysis is complete and the compiler can now calculate which files need to // be emitted, so do that. - this.incrementalDriver.recordSuccessfulAnalysis(traitCompiler); + this.incrementalCompilation.recordSuccessfulAnalysis(traitCompiler); this.perfRecorder.memory(PerfCheckpoint.Resolve); }); @@ -703,7 +736,7 @@ export class NgCompiler { // is not disabled when `strictTemplates` is enabled. const strictTemplates = !!this.options.strictTemplates; - const useInlineTypeConstructors = this.typeCheckingProgramStrategy.supportsInlineOperations; + const useInlineTypeConstructors = this.programDriver.supportsInlineOperations; // First select a type-checking configuration, based on whether full template type-checking is // requested. @@ -816,7 +849,7 @@ export class NgCompiler { // Get the diagnostics. const diagnostics: ts.Diagnostic[] = []; - for (const sf of this.tsProgram.getSourceFiles()) { + for (const sf of this.inputProgram.getSourceFiles()) { if (sf.isDeclarationFile || this.adapter.isShim(sf)) { continue; } @@ -825,9 +858,9 @@ export class NgCompiler { ...compilation.templateTypeChecker.getDiagnosticsForFile(sf, OptimizeFor.WholeProgram)); } - const program = this.typeCheckingProgramStrategy.getProgram(); - this.incrementalStrategy.setIncrementalDriver(this.incrementalDriver, program); - this.nextProgram = program; + const program = this.programDriver.getProgram(); + this.incrementalStrategy.setIncrementalState(this.incrementalCompilation.state, program); + this.currentProgram = program; return diagnostics; } @@ -842,9 +875,9 @@ export class NgCompiler { diagnostics.push(...compilation.templateTypeChecker.getDiagnosticsForFile(sf, optimizeFor)); } - const program = this.typeCheckingProgramStrategy.getProgram(); - this.incrementalStrategy.setIncrementalDriver(this.incrementalDriver, program); - this.nextProgram = program; + const program = this.programDriver.getProgram(); + this.incrementalStrategy.setIncrementalState(this.incrementalCompilation.state, program); + this.currentProgram = program; return diagnostics; } @@ -855,24 +888,14 @@ export class NgCompiler { this.nonTemplateDiagnostics = [...compilation.traitCompiler.diagnostics]; if (this.entryPoint !== null && compilation.exportReferenceGraph !== null) { this.nonTemplateDiagnostics.push(...checkForPrivateExports( - this.entryPoint, this.tsProgram.getTypeChecker(), compilation.exportReferenceGraph)); + this.entryPoint, this.inputProgram.getTypeChecker(), compilation.exportReferenceGraph)); } } return this.nonTemplateDiagnostics; } - private scanForMwp(sf: ts.SourceFile): void { - this.compilation!.mwpScanner.scan(sf, { - addTypeReplacement: (node: ts.Declaration, type: Type): void => { - // Only obtain the return type transform for the source file once there's a type to replace, - // so that no transform is allocated when there's nothing to do. - this.compilation!.dtsTransforms!.getReturnTypeTransform(sf).addTypeReplacement(node, type); - } - }); - } - private makeCompilation(): LazyCompilationState { - const checker = this.tsProgram.getTypeChecker(); + const checker = this.inputProgram.getTypeChecker(); const reflector = new TypeScriptReflectionHost(checker); @@ -904,7 +927,7 @@ export class NgCompiler { // First, try to use local identifiers if available. new LocalIdentifierStrategy(), // Next, attempt to use an absolute import. - new AbsoluteModuleStrategy(this.tsProgram, checker, this.moduleResolver, reflector), + new AbsoluteModuleStrategy(this.inputProgram, checker, this.moduleResolver, reflector), // Finally, check if the reference is being written into a file within the project's .ts // sources, and use a relative import if so. If this fails, ReferenceEmitter will throw // an error. @@ -932,7 +955,8 @@ export class NgCompiler { aliasingHost = new UnifiedModulesAliasingHost(this.adapter.unifiedModulesHost); } - const evaluator = new PartialEvaluator(reflector, checker, this.incrementalDriver.depGraph); + const evaluator = + new PartialEvaluator(reflector, checker, this.incrementalCompilation.depGraph); const dtsReader = new DtsMetadataReader(checker, reflector); const localMetaRegistry = new LocalMetadataRegistry(); const localMetaReader: MetadataReader = localMetaRegistry; @@ -940,7 +964,7 @@ export class NgCompiler { const scopeRegistry = new LocalModuleScopeRegistry(localMetaReader, depScopeReader, refEmitter, aliasingHost); const scopeReader: ComponentScopeReader = scopeRegistry; - const semanticDepGraphUpdater = this.incrementalDriver.getSemanticDepGraphUpdater(); + const semanticDepGraphUpdater = this.incrementalCompilation.semanticDepGraphUpdater; const metaRegistry = new CompoundMetadataRegistry([localMetaRegistry, scopeRegistry]); const injectableRegistry = new InjectableClassRegistry(reflector); @@ -964,11 +988,8 @@ export class NgCompiler { const dtsTransforms = new DtsTransformRegistry(); - const mwpScanner = new ModuleWithProvidersScanner(reflector, evaluator, refEmitter); + const isCore = isAngularCorePackage(this.inputProgram); - const isCore = isAngularCorePackage(this.tsProgram); - - const defaultImportTracker = new DefaultImportTracker(); const resourceRegistry = new ResourceRegistry(); const compilationMode = @@ -990,7 +1011,7 @@ export class NgCompiler { this.options.i18nUseExternalIds !== false, this.options.enableI18nLegacyMessageIdFormat !== false, this.usePoisonedData, this.options.i18nNormalizeLineEndingsInICUs, this.moduleResolver, this.cycleAnalyzer, - cycleHandlingStrategy, refEmitter, defaultImportTracker, this.incrementalDriver.depGraph, + cycleHandlingStrategy, refEmitter, this.incrementalCompilation.depGraph, injectableRegistry, semanticDepGraphUpdater, this.closureCompilerEnabled, this.delegatingPerfRecorder), @@ -999,7 +1020,7 @@ export class NgCompiler { // clang-format off new DirectiveDecoratorHandler( reflector, evaluator, metaRegistry, scopeRegistry, metaReader, - defaultImportTracker, injectableRegistry, isCore, semanticDepGraphUpdater, + injectableRegistry, isCore, semanticDepGraphUpdater, this.closureCompilerEnabled, compileUndecoratedClassesWithAngularFeatures, this.delegatingPerfRecorder, ) as Readonly>, @@ -1007,27 +1028,34 @@ export class NgCompiler { // Pipe handler must be before injectable handler in list so pipe factories are printed // before injectable factories (so injectable factories can delegate to them) new PipeDecoratorHandler( - reflector, evaluator, metaRegistry, scopeRegistry, defaultImportTracker, - injectableRegistry, isCore, this.delegatingPerfRecorder), + reflector, evaluator, metaRegistry, scopeRegistry, injectableRegistry, isCore, + this.delegatingPerfRecorder), new InjectableDecoratorHandler( - reflector, defaultImportTracker, isCore, this.options.strictInjectionParameters || false, - injectableRegistry, this.delegatingPerfRecorder), + reflector, isCore, this.options.strictInjectionParameters || false, injectableRegistry, + this.delegatingPerfRecorder), new NgModuleDecoratorHandler( reflector, evaluator, metaReader, metaRegistry, scopeRegistry, referencesRegistry, isCore, - routeAnalyzer, refEmitter, this.adapter.factoryTracker, defaultImportTracker, - this.closureCompilerEnabled, injectableRegistry, this.delegatingPerfRecorder, - this.options.i18nInLocale), + routeAnalyzer, refEmitter, this.adapter.factoryTracker, this.closureCompilerEnabled, + injectableRegistry, this.delegatingPerfRecorder, this.options.i18nInLocale), ]; const traitCompiler = new TraitCompiler( - handlers, reflector, this.delegatingPerfRecorder, this.incrementalDriver, + handlers, reflector, this.delegatingPerfRecorder, this.incrementalCompilation, this.options.compileNonExportedClasses !== false, compilationMode, dtsTransforms, semanticDepGraphUpdater); + // Template type-checking may use the `ProgramDriver` to produce new `ts.Program`(s). If this + // happens, they need to be tracked by the `NgCompiler`. + const notifyingDriver = + new NotifyingProgramDriverWrapper(this.programDriver, (program: ts.Program) => { + this.incrementalStrategy.setIncrementalState(this.incrementalCompilation.state, program); + this.currentProgram = program; + }); + const templateTypeChecker = new TemplateTypeCheckerImpl( - this.tsProgram, this.typeCheckingProgramStrategy, traitCompiler, - this.getTypeCheckingConfig(), refEmitter, reflector, this.adapter, this.incrementalDriver, - scopeRegistry, typeCheckScopeRegistry, this.delegatingPerfRecorder); + this.inputProgram, notifyingDriver, traitCompiler, this.getTypeCheckingConfig(), refEmitter, + reflector, this.adapter, this.incrementalCompilation, scopeRegistry, typeCheckScopeRegistry, + this.delegatingPerfRecorder); return { isCore, @@ -1037,10 +1065,8 @@ export class NgCompiler { dtsTransforms, exportReferenceGraph, routeAnalyzer, - mwpScanner, metaReader, typeCheckScopeRegistry, - defaultImportTracker, aliasingHost, refEmitter, templateTypeChecker, @@ -1141,3 +1167,37 @@ class ReferenceGraphAdapter implements ReferencesRegistry { } } } + +class NotifyingProgramDriverWrapper implements ProgramDriver { + constructor( + private delegate: ProgramDriver, private notifyNewProgram: (program: ts.Program) => void) {} + + get supportsInlineOperations() { + return this.delegate.supportsInlineOperations; + } + + getProgram(): ts.Program { + return this.delegate.getProgram(); + } + + updateFiles(contents: Map, updateMode: UpdateMode): void { + this.delegate.updateFiles(contents, updateMode); + this.notifyNewProgram(this.delegate.getProgram()); + } + + getSourceFileVersion = this.delegate.getSourceFileVersion?.bind(this); +} + +function versionMapFromProgram( + program: ts.Program, driver: ProgramDriver): Map|null { + if (driver.getSourceFileVersion === undefined) { + return null; + } + + const versions = new Map(); + for (const possiblyRedirectedSourceFile of program.getSourceFiles()) { + const sf = toUnredirectedSourceFile(possiblyRedirectedSourceFile); + versions.set(absoluteFromSourceFile(sf), driver.getSourceFileVersion(sf)); + } + return versions; +} diff --git a/packages/compiler-cli/src/ngtsc/core/test/BUILD.bazel b/packages/compiler-cli/src/ngtsc/core/test/BUILD.bazel index 92a81665dc..9ff0a5b750 100644 --- a/packages/compiler-cli/src/ngtsc/core/test/BUILD.bazel +++ b/packages/compiler-cli/src/ngtsc/core/test/BUILD.bazel @@ -15,6 +15,7 @@ ts_library( "//packages/compiler-cli/src/ngtsc/file_system", "//packages/compiler-cli/src/ngtsc/file_system/testing", "//packages/compiler-cli/src/ngtsc/incremental", + "//packages/compiler-cli/src/ngtsc/program_driver", "//packages/compiler-cli/src/ngtsc/reflection", "//packages/compiler-cli/src/ngtsc/typecheck", "//packages/compiler-cli/src/ngtsc/typecheck/api", diff --git a/packages/compiler-cli/src/ngtsc/core/test/compiler_test.ts b/packages/compiler-cli/src/ngtsc/core/test/compiler_test.ts index e7f59a2103..141f90bc99 100644 --- a/packages/compiler-cli/src/ngtsc/core/test/compiler_test.ts +++ b/packages/compiler-cli/src/ngtsc/core/test/compiler_test.ts @@ -11,9 +11,9 @@ import * as ts from 'typescript'; import {absoluteFrom as _, FileSystem, getFileSystem, getSourceFileOrError, NgtscCompilerHost, setFileSystem} from '../../file_system'; import {runInEachFileSystem} from '../../file_system/testing'; import {IncrementalBuildStrategy, NoopIncrementalBuildStrategy} from '../../incremental'; +import {ProgramDriver, TsCreateProgramDriver} from '../../program_driver'; import {ClassDeclaration, isNamedClassDeclaration} from '../../reflection'; -import {ReusedProgramStrategy} from '../../typecheck'; -import {OptimizeFor, TypeCheckingProgramStrategy} from '../../typecheck/api'; +import {OptimizeFor} from '../../typecheck/api'; import {NgCompilerOptions} from '../api'; @@ -22,7 +22,7 @@ import {NgCompilerHost} from '../src/host'; function makeFreshCompiler( host: NgCompilerHost, options: NgCompilerOptions, program: ts.Program, - programStrategy: TypeCheckingProgramStrategy, incrementalStrategy: IncrementalBuildStrategy, + programStrategy: ProgramDriver, incrementalStrategy: IncrementalBuildStrategy, enableTemplateTypeChecker: boolean, usePoisonedData: boolean): NgCompiler { const ticket = freshCompilationTicket( program, options, incrementalStrategy, programStrategy, /* perfRecorder */ null, @@ -61,7 +61,7 @@ runInEachFileSystem(() => { const host = NgCompilerHost.wrap(baseHost, [COMPONENT], options, /* oldProgram */ null); const program = ts.createProgram({host, options, rootNames: host.inputFiles}); const compiler = makeFreshCompiler( - host, options, program, new ReusedProgramStrategy(program, host, options, []), + host, options, program, new TsCreateProgramDriver(program, host, options, []), new NoopIncrementalBuildStrategy(), /** enableTemplateTypeChecker */ false, /* usePoisonedData */ false); @@ -113,7 +113,7 @@ runInEachFileSystem(() => { const CmpC = getClass(getSourceFileOrError(program, cmpCFile), 'CmpC'); const compiler = makeFreshCompiler( - host, options, program, new ReusedProgramStrategy(program, host, options, []), + host, options, program, new TsCreateProgramDriver(program, host, options, []), new NoopIncrementalBuildStrategy(), /** enableTemplateTypeChecker */ false, /* usePoisonedData */ false); const components = compiler.getComponentsWithTemplateFile(templateFile); @@ -165,7 +165,7 @@ runInEachFileSystem(() => { const CmpA = getClass(getSourceFileOrError(program, cmpAFile), 'CmpA'); const CmpC = getClass(getSourceFileOrError(program, cmpCFile), 'CmpC'); const compiler = makeFreshCompiler( - host, options, program, new ReusedProgramStrategy(program, host, options, []), + host, options, program, new TsCreateProgramDriver(program, host, options, []), new NoopIncrementalBuildStrategy(), /** enableTemplateTypeChecker */ false, /* usePoisonedData */ false); const components = compiler.getComponentsWithStyleFile(styleFile); @@ -199,7 +199,7 @@ runInEachFileSystem(() => { const program = ts.createProgram({host, options, rootNames: host.inputFiles}); const CmpA = getClass(getSourceFileOrError(program, cmpAFile), 'CmpA'); const compiler = makeFreshCompiler( - host, options, program, new ReusedProgramStrategy(program, host, options, []), + host, options, program, new TsCreateProgramDriver(program, host, options, []), new NoopIncrementalBuildStrategy(), /** enableTemplateTypeChecker */ false, /* usePoisonedData */ false); const resources = compiler.getComponentResources(CmpA); @@ -235,7 +235,7 @@ runInEachFileSystem(() => { const program = ts.createProgram({host, options, rootNames: host.inputFiles}); const CmpA = getClass(getSourceFileOrError(program, cmpAFile), 'CmpA'); const compiler = makeFreshCompiler( - host, options, program, new ReusedProgramStrategy(program, host, options, []), + host, options, program, new TsCreateProgramDriver(program, host, options, []), new NoopIncrementalBuildStrategy(), /** enableTemplateTypeChecker */ false, /* usePoisonedData */ false); const resources = compiler.getComponentResources(CmpA); @@ -267,7 +267,7 @@ runInEachFileSystem(() => { const host = NgCompilerHost.wrap(baseHost, [COMPONENT], options, /* oldProgram */ null); const program = ts.createProgram({host, options, rootNames: host.inputFiles}); const compiler = makeFreshCompiler( - host, options, program, new ReusedProgramStrategy(program, host, options, []), + host, options, program, new TsCreateProgramDriver(program, host, options, []), new NoopIncrementalBuildStrategy(), /** enableTemplateTypeChecker */ false, /* usePoisonedData */ false); @@ -301,7 +301,7 @@ runInEachFileSystem(() => { const host = NgCompilerHost.wrap(baseHost, [COMPONENT], options, /* oldProgram */ null); const program = ts.createProgram({host, options, rootNames: host.inputFiles}); const compilerA = makeFreshCompiler( - host, options, program, new ReusedProgramStrategy(program, host, options, []), + host, options, program, new TsCreateProgramDriver(program, host, options, []), new NoopIncrementalBuildStrategy(), /** enableTemplateTypeChecker */ false, /* usePoisonedData */ false); diff --git a/packages/compiler-cli/src/ngtsc/cycles/src/analyzer.ts b/packages/compiler-cli/src/ngtsc/cycles/src/analyzer.ts index d9cd9e4533..237ba04415 100644 --- a/packages/compiler-cli/src/ngtsc/cycles/src/analyzer.ts +++ b/packages/compiler-cli/src/ngtsc/cycles/src/analyzer.ts @@ -14,6 +14,14 @@ import {ImportGraph} from './imports'; * Analyzes a `ts.Program` for cycles. */ export class CycleAnalyzer { + /** + * Cycle detection is requested with the same `from` source file for all used directives and pipes + * within a component, which makes it beneficial to cache the results as long as the `from` source + * file has not changed. This avoids visiting the import graph that is reachable from multiple + * directives/pipes more than once. + */ + private cachedResults: CycleResults|null = null; + constructor(private importGraph: ImportGraph) {} /** @@ -24,10 +32,13 @@ export class CycleAnalyzer { * otherwise. */ wouldCreateCycle(from: ts.SourceFile, to: ts.SourceFile): Cycle|null { + // Try to reuse the cached results as long as the `from` source file is the same. + if (this.cachedResults === null || this.cachedResults.from !== from) { + this.cachedResults = new CycleResults(from, this.importGraph); + } + // Import of 'from' -> 'to' is illegal if an edge 'to' -> 'from' already exists. - return this.importGraph.transitiveImportsOf(to).has(from) ? - new Cycle(this.importGraph, from, to) : - null; + return this.cachedResults.wouldBeCyclic(to) ? new Cycle(this.importGraph, from, to) : null; } /** @@ -37,10 +48,83 @@ export class CycleAnalyzer { * import graph for cycle creation. */ recordSyntheticImport(from: ts.SourceFile, to: ts.SourceFile): void { + this.cachedResults = null; this.importGraph.addSyntheticImport(from, to); } } +const NgCyclicResult = Symbol('NgCyclicResult'); +type CyclicResultMarker = { + __brand: 'CyclicResultMarker'; +}; +type CyclicSourceFile = ts.SourceFile&{[NgCyclicResult]?: CyclicResultMarker}; + +/** + * Stores the results of cycle detection in a memory efficient manner. A symbol is attached to + * source files that indicate what the cyclic analysis result is, as indicated by two markers that + * are unique to this instance. This alleviates memory pressure in large import graphs, as each + * execution is able to store its results in the same memory location (i.e. in the symbol + * on the source file) as earlier executions. + */ +class CycleResults { + private readonly cyclic = {} as CyclicResultMarker; + private readonly acyclic = {} as CyclicResultMarker; + + constructor(readonly from: ts.SourceFile, private importGraph: ImportGraph) {} + + wouldBeCyclic(sf: ts.SourceFile): boolean { + const cached = this.getCachedResult(sf); + if (cached !== null) { + // The result for this source file has already been computed, so return its result. + return cached; + } + + if (sf === this.from) { + // We have reached the source file that we want to create an import from, which means that + // doing so would create a cycle. + return true; + } + + // Assume for now that the file will be acyclic; this prevents infinite recursion in the case + // that `sf` is visited again as part of an existing cycle in the graph. + this.markAcyclic(sf); + + const imports = this.importGraph.importsOf(sf); + for (const imported of imports) { + if (this.wouldBeCyclic(imported)) { + this.markCyclic(sf); + return true; + } + } + return false; + } + + /** + * Returns whether the source file is already known to be cyclic, or `null` if the result is not + * yet known. + */ + private getCachedResult(sf: CyclicSourceFile): boolean|null { + const result = sf[NgCyclicResult]; + if (result === this.cyclic) { + return true; + } else if (result === this.acyclic) { + return false; + } else { + // Either the symbol is missing or its value does not correspond with one of the current + // result markers. As such, the result is unknown. + return null; + } + } + + private markCyclic(sf: CyclicSourceFile): void { + sf[NgCyclicResult] = this.cyclic; + } + + private markAcyclic(sf: CyclicSourceFile): void { + sf[NgCyclicResult] = this.acyclic; + } +} + /** * Represents an import cycle between `from` and `to` in the program. * diff --git a/packages/compiler-cli/src/ngtsc/cycles/src/imports.ts b/packages/compiler-cli/src/ngtsc/cycles/src/imports.ts index a04f044965..f55806ef9a 100644 --- a/packages/compiler-cli/src/ngtsc/cycles/src/imports.ts +++ b/packages/compiler-cli/src/ngtsc/cycles/src/imports.ts @@ -17,7 +17,7 @@ import {PerfPhase, PerfRecorder} from '../../perf'; * dependencies within the same program are tracked; imports into packages on NPM are not. */ export class ImportGraph { - private map = new Map>(); + private imports = new Map>(); constructor(private checker: ts.TypeChecker, private perf: PerfRecorder) {} @@ -27,29 +27,10 @@ export class ImportGraph { * This operation is cached. */ importsOf(sf: ts.SourceFile): Set { - if (!this.map.has(sf)) { - this.map.set(sf, this.scanImports(sf)); + if (!this.imports.has(sf)) { + this.imports.set(sf, this.scanImports(sf)); } - return this.map.get(sf)!; - } - - /** - * Lists the transitive imports of a given `ts.SourceFile`. - */ - transitiveImportsOf(sf: ts.SourceFile): Set { - const imports = new Set(); - this.transitiveImportsOfHelper(sf, imports); - return imports; - } - - private transitiveImportsOfHelper(sf: ts.SourceFile, results: Set): void { - if (results.has(sf)) { - return; - } - results.add(sf); - this.importsOf(sf).forEach(imported => { - this.transitiveImportsOfHelper(imported, results); - }); + return this.imports.get(sf)!; } /** @@ -110,6 +91,13 @@ export class ImportGraph { continue; } + if (ts.isImportDeclaration(stmt) && stmt.importClause !== undefined && + stmt.importClause.isTypeOnly) { + // Exclude type-only imports as they are always elided, so they don't contribute to + // cycles. + continue; + } + const symbol = this.checker.getSymbolAtLocation(stmt.moduleSpecifier); if (symbol === undefined || symbol.valueDeclaration === undefined) { // No symbol could be found to skip over this import/export. diff --git a/packages/compiler-cli/src/ngtsc/cycles/test/analyzer_spec.ts b/packages/compiler-cli/src/ngtsc/cycles/test/analyzer_spec.ts index 85b058dd8f..e333aabc05 100644 --- a/packages/compiler-cli/src/ngtsc/cycles/test/analyzer_spec.ts +++ b/packages/compiler-cli/src/ngtsc/cycles/test/analyzer_spec.ts @@ -36,6 +36,22 @@ runInEachFileSystem(() => { expect(importPath(cycle!.getPath())).toEqual('b,a,b'); }); + it('should deal with cycles', () => { + // a -> b -> c -> d + // ^---------/ + const {program, analyzer} = makeAnalyzer('a:b;b:c;c:d;d:b'); + const a = getSourceFileOrError(program, (_('/a.ts'))); + const b = getSourceFileOrError(program, (_('/b.ts'))); + const c = getSourceFileOrError(program, (_('/c.ts'))); + const d = getSourceFileOrError(program, (_('/d.ts'))); + expect(analyzer.wouldCreateCycle(a, b)).toBe(null); + expect(analyzer.wouldCreateCycle(a, c)).toBe(null); + expect(analyzer.wouldCreateCycle(a, d)).toBe(null); + expect(analyzer.wouldCreateCycle(b, a)).not.toBe(null); + expect(analyzer.wouldCreateCycle(b, c)).not.toBe(null); + expect(analyzer.wouldCreateCycle(b, d)).not.toBe(null); + }); + it('should detect a cycle with a re-export in the chain', () => { const {program, analyzer} = makeAnalyzer('a:*b;b:c;c'); const a = getSourceFileOrError(program, (_('/a.ts'))); @@ -70,6 +86,17 @@ runInEachFileSystem(() => { expect(cycle).toBeInstanceOf(Cycle); expect(importPath(cycle!.getPath())).toEqual('b,c,b'); }); + + it('should not consider type-only imports', () => { + const {program, analyzer} = makeAnalyzer('a:b,c!;b;c'); + const a = getSourceFileOrError(program, (_('/a.ts'))); + const b = getSourceFileOrError(program, (_('/b.ts'))); + const c = getSourceFileOrError(program, (_('/c.ts'))); + expect(analyzer.wouldCreateCycle(c, a)).toBe(null); + const cycle = analyzer.wouldCreateCycle(b, a); + expect(cycle).toBeInstanceOf(Cycle); + expect(importPath(cycle!.getPath())).toEqual('b,a,b'); + }); }); function makeAnalyzer(graph: string): {program: ts.Program, analyzer: CycleAnalyzer} { diff --git a/packages/compiler-cli/src/ngtsc/cycles/test/imports_spec.ts b/packages/compiler-cli/src/ngtsc/cycles/test/imports_spec.ts index f88500643d..f721aa3a00 100644 --- a/packages/compiler-cli/src/ngtsc/cycles/test/imports_spec.ts +++ b/packages/compiler-cli/src/ngtsc/cycles/test/imports_spec.ts @@ -28,34 +28,6 @@ runInEachFileSystem(() => { }); }); - describe('transitiveImportsOf()', () => { - it('should calculate transitive imports of a simple program', () => { - const {program, graph} = makeImportGraph('a:b;b:c;c'); - const a = getSourceFileOrError(program, (_('/a.ts'))); - const b = getSourceFileOrError(program, (_('/b.ts'))); - const c = getSourceFileOrError(program, (_('/c.ts'))); - expect(importsToString(graph.transitiveImportsOf(a))).toBe('a,b,c'); - }); - - it('should calculate transitive imports in a more complex program (with a cycle)', () => { - const {program, graph} = makeImportGraph('a:*b,*c;b:*e,*f;c:*g,*h;e:f;f;g:e;h:g'); - const c = getSourceFileOrError(program, (_('/c.ts'))); - expect(importsToString(graph.transitiveImportsOf(c))).toBe('c,e,f,g,h'); - }); - - it('should reflect the addition of a synthetic import', () => { - const {program, graph} = makeImportGraph('a:b,c,d;b;c;d:b'); - const b = getSourceFileOrError(program, (_('/b.ts'))); - const c = getSourceFileOrError(program, (_('/c.ts'))); - const d = getSourceFileOrError(program, (_('/d.ts'))); - expect(importsToString(graph.importsOf(b))).toEqual(''); - expect(importsToString(graph.transitiveImportsOf(d))).toEqual('b,d'); - graph.addSyntheticImport(b, c); - expect(importsToString(graph.importsOf(b))).toEqual('c'); - expect(importsToString(graph.transitiveImportsOf(d))).toEqual('b,c,d'); - }); - }); - describe('findPath()', () => { it('should be able to compute the path between two source files if there is a cycle', () => { const {program, graph} = makeImportGraph('a:*b,*c;b:*e,*f;c:*g,*h;e:f;f;g:e;h:g'); diff --git a/packages/compiler-cli/src/ngtsc/cycles/test/util.ts b/packages/compiler-cli/src/ngtsc/cycles/test/util.ts index c4a8ca4ed4..67868b936e 100644 --- a/packages/compiler-cli/src/ngtsc/cycles/test/util.ts +++ b/packages/compiler-cli/src/ngtsc/cycles/test/util.ts @@ -30,6 +30,8 @@ import {makeProgram} from '../../testing'; * "a:*b,c;b;c" * * represents a program where a.ts exports from b.ts and imports from c.ts. + * + * An import can be suffixed with ! to make it a type-only import. */ export function makeProgramFromGraph(fs: PathManipulation, graph: string): { program: ts.Program, @@ -43,6 +45,9 @@ export function makeProgramFromGraph(fs: PathManipulation, graph: string): { if (i.startsWith('*')) { const sym = i.substr(1); return `export {${sym}} from './${sym}';`; + } else if (i.endsWith('!')) { + const sym = i.substr(0, i.length - 1); + return `import type {${sym}} from './${sym}';`; } else { return `import {${i}} from './${i}';`; } diff --git a/packages/compiler-cli/src/ngtsc/diagnostics/src/error_code.ts b/packages/compiler-cli/src/ngtsc/diagnostics/src/error_code.ts index 910abcbde6..26c5ffd587 100644 --- a/packages/compiler-cli/src/ngtsc/diagnostics/src/error_code.ts +++ b/packages/compiler-cli/src/ngtsc/diagnostics/src/error_code.ts @@ -50,6 +50,12 @@ export enum ErrorCode { */ COMPONENT_RESOURCE_NOT_FOUND = 2008, + /** + * Raised when a component uses `ShadowDom` view encapsulation, but its selector + * does not match the shadow DOM tag name requirements. + */ + COMPONENT_INVALID_SHADOW_DOM_SELECTOR = 2009, + SYMBOL_NOT_EXPORTED = 3001, SYMBOL_EXPORTED_UNDER_DIFFERENT_NAME = 3002, /** @@ -110,6 +116,12 @@ export enum ErrorCode { */ NGMODULE_DECLARATION_NOT_UNIQUE = 6007, + /** + * Not actually raised by the compiler, but reserved for documentation of a View Engine error when + * a View Engine build depends on an Ivy-compiled NgModule. + */ + NGMODULE_VE_DEPENDENCY_ON_IVY_LIB = 6999, + /** * An element name failed validation against the DOM schema. */ @@ -154,6 +166,22 @@ export enum ErrorCode { */ DUPLICATE_VARIABLE_DECLARATION = 8006, + /** + * A template has a two way binding (two bindings created by a single syntactial element) + * in which the input and output are going to different places. + */ + SPLIT_TWO_WAY_BINDING = 8007, + + /** + * A two way binding in a template has an incorrect syntax, + * parentheses outside brackets. For example: + * + * ``` + *
+ * ``` + */ + INVALID_BANANA_IN_BOX = 8101, + /** * The template type-checking engine would need to generate an inline type check block for a * component, but the current type-checking environment doesn't support it. @@ -209,6 +237,7 @@ export const COMPILER_ERRORS_WITH_GUIDES = new Set([ ErrorCode.SCHEMA_INVALID_ELEMENT, ErrorCode.SCHEMA_INVALID_ATTRIBUTE, ErrorCode.MISSING_REFERENCE_TARGET, + ErrorCode.COMPONENT_INVALID_SHADOW_DOM_SELECTOR, ]); /** diff --git a/packages/compiler-cli/src/ngtsc/file_system/BUILD.bazel b/packages/compiler-cli/src/ngtsc/file_system/BUILD.bazel index b40ffa15fb..1dc56c80e7 100644 --- a/packages/compiler-cli/src/ngtsc/file_system/BUILD.bazel +++ b/packages/compiler-cli/src/ngtsc/file_system/BUILD.bazel @@ -8,9 +8,7 @@ ts_library( "src/**/*.ts", ]), deps = [ - "@npm//@types/fs-extra", "@npm//@types/node", - "@npm//fs-extra", "@npm//typescript", ], ) diff --git a/packages/compiler-cli/src/ngtsc/file_system/src/helpers.ts b/packages/compiler-cli/src/ngtsc/file_system/src/helpers.ts index 9e3476e64b..04639840c7 100644 --- a/packages/compiler-cli/src/ngtsc/file_system/src/helpers.ts +++ b/packages/compiler-cli/src/ngtsc/file_system/src/helpers.ts @@ -29,11 +29,21 @@ export function absoluteFrom(path: string): AbsoluteFsPath { return fs.resolve(path); } +const ABSOLUTE_PATH = Symbol('AbsolutePath'); + /** - * Extract an `AbsoluteFsPath` from a `ts.SourceFile`. + * Extract an `AbsoluteFsPath` from a `ts.SourceFile`-like object. */ -export function absoluteFromSourceFile(sf: ts.SourceFile): AbsoluteFsPath { - return fs.resolve(sf.fileName); +export function absoluteFromSourceFile(sf: {fileName: string}): AbsoluteFsPath { + const sfWithPatch = sf as {fileName: string, [ABSOLUTE_PATH]?: AbsoluteFsPath}; + + if (sfWithPatch[ABSOLUTE_PATH] === undefined) { + sfWithPatch[ABSOLUTE_PATH] = fs.resolve(sfWithPatch.fileName); + } + + // Non-null assertion needed since TS doesn't narrow the type of fields that use a symbol as a key + // apparently. + return sfWithPatch[ABSOLUTE_PATH]!; } /** diff --git a/packages/compiler-cli/src/ngtsc/file_system/src/node_js_file_system.ts b/packages/compiler-cli/src/ngtsc/file_system/src/node_js_file_system.ts index 12c91285c8..b9556b5043 100644 --- a/packages/compiler-cli/src/ngtsc/file_system/src/node_js_file_system.ts +++ b/packages/compiler-cli/src/ngtsc/file_system/src/node_js_file_system.ts @@ -7,7 +7,6 @@ */ /// import * as fs from 'fs'; -import * as fsExtra from 'fs-extra'; import * as p from 'path'; import {AbsoluteFsPath, FileStats, FileSystem, PathManipulation, PathSegment, PathString, ReadonlyFileSystem} from './types'; @@ -121,7 +120,7 @@ export class NodeJSFileSystem extends NodeJSReadonlyFileSystem implements FileSy } } removeDeep(path: AbsoluteFsPath): void { - fsExtra.removeSync(path); + fs.rmdirSync(path, {recursive: true}); } private safeMkdir(path: AbsoluteFsPath): void { diff --git a/packages/compiler-cli/src/ngtsc/file_system/test/BUILD.bazel b/packages/compiler-cli/src/ngtsc/file_system/test/BUILD.bazel index ed75bf3eda..4cdee34cae 100644 --- a/packages/compiler-cli/src/ngtsc/file_system/test/BUILD.bazel +++ b/packages/compiler-cli/src/ngtsc/file_system/test/BUILD.bazel @@ -11,7 +11,6 @@ ts_library( deps = [ "//packages/compiler-cli/src/ngtsc/file_system", "//packages/compiler-cli/src/ngtsc/file_system/testing", - "@npm//@types/fs-extra", "@npm//typescript", ], ) diff --git a/packages/compiler-cli/src/ngtsc/file_system/test/node_js_file_system_spec.ts b/packages/compiler-cli/src/ngtsc/file_system/test/node_js_file_system_spec.ts index 4cd7cfb60c..dc9dbf4362 100644 --- a/packages/compiler-cli/src/ngtsc/file_system/test/node_js_file_system_spec.ts +++ b/packages/compiler-cli/src/ngtsc/file_system/test/node_js_file_system_spec.ts @@ -6,7 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ import * as realFs from 'fs'; -import * as fsExtra from 'fs-extra'; import * as os from 'os'; import {NodeJSFileSystem, NodeJSPathManipulation, NodeJSReadonlyFileSystem} from '../src/node_js_file_system'; import {AbsoluteFsPath, PathSegment} from '../src/types'; @@ -269,10 +268,10 @@ describe('NodeJSFileSystem', () => { }); describe('removeDeep()', () => { - it('should delegate to fsExtra.remove()', () => { - const spy = spyOn(fsExtra, 'removeSync'); + it('should delegate to rmdirSync()', () => { + const spy = spyOn(realFs, 'rmdirSync'); fs.removeDeep(abcPath); - expect(spy).toHaveBeenCalledWith(abcPath); + expect(spy).toHaveBeenCalledWith(abcPath, {recursive: true}); }); }); }); diff --git a/packages/compiler-cli/src/ngtsc/file_system/testing/src/mock_file_system_native.ts b/packages/compiler-cli/src/ngtsc/file_system/testing/src/mock_file_system_native.ts index e856448a35..a27c8f4648 100644 --- a/packages/compiler-cli/src/ngtsc/file_system/testing/src/mock_file_system_native.ts +++ b/packages/compiler-cli/src/ngtsc/file_system/testing/src/mock_file_system_native.ts @@ -21,36 +21,36 @@ export class MockFileSystemNative extends MockFileSystem { // Delegate to the real NodeJSFileSystem for these path related methods - resolve(...paths: string[]): AbsoluteFsPath { + override resolve(...paths: string[]): AbsoluteFsPath { return NodeJSFileSystem.prototype.resolve.call(this, this.pwd(), ...paths); } - dirname(file: T): T { + override dirname(file: T): T { return NodeJSFileSystem.prototype.dirname.call(this, file) as T; } - join(basePath: T, ...paths: string[]): T { + override join(basePath: T, ...paths: string[]): T { return NodeJSFileSystem.prototype.join.call(this, basePath, ...paths) as T; } - relative(from: T, to: T): PathSegment|AbsoluteFsPath { + override relative(from: T, to: T): PathSegment|AbsoluteFsPath { return NodeJSFileSystem.prototype.relative.call(this, from, to); } - basename(filePath: string, extension?: string): PathSegment { + override basename(filePath: string, extension?: string): PathSegment { return NodeJSFileSystem.prototype.basename.call(this, filePath, extension); } - isCaseSensitive() { + override isCaseSensitive() { return NodeJSFileSystem.prototype.isCaseSensitive.call(this); } - isRooted(path: string): boolean { + override isRooted(path: string): boolean { return NodeJSFileSystem.prototype.isRooted.call(this, path); } - isRoot(path: AbsoluteFsPath): boolean { + override isRoot(path: AbsoluteFsPath): boolean { return NodeJSFileSystem.prototype.isRoot.call(this, path); } - normalize(path: T): T { + override normalize(path: T): T { // When running in Windows, absolute paths are normalized to always include a drive letter. This // ensures that rooted posix paths used in tests will be normalized to real Windows paths, i.e. // including a drive letter. Note that the same normalization is done in emulated Windows mode @@ -63,7 +63,7 @@ export class MockFileSystemNative extends MockFileSystem { return NodeJSFileSystem.prototype.normalize.call(this, path) as T; } - protected splitPath(path: string): string[] { + protected override splitPath(path: string): string[] { return path.split(/[\\\/]/); } } diff --git a/packages/compiler-cli/src/ngtsc/file_system/testing/src/mock_file_system_posix.ts b/packages/compiler-cli/src/ngtsc/file_system/testing/src/mock_file_system_posix.ts index a8e84806b5..b526fc8484 100644 --- a/packages/compiler-cli/src/ngtsc/file_system/testing/src/mock_file_system_posix.ts +++ b/packages/compiler-cli/src/ngtsc/file_system/testing/src/mock_file_system_posix.ts @@ -12,36 +12,36 @@ import {AbsoluteFsPath, PathSegment, PathString} from '../../src/types'; import {MockFileSystem} from './mock_file_system'; export class MockFileSystemPosix extends MockFileSystem { - resolve(...paths: string[]): AbsoluteFsPath { + override resolve(...paths: string[]): AbsoluteFsPath { const resolved = p.posix.resolve(this.pwd(), ...paths); return this.normalize(resolved) as AbsoluteFsPath; } - dirname(file: T): T { + override dirname(file: T): T { return this.normalize(p.posix.dirname(file)) as T; } - join(basePath: T, ...paths: string[]): T { + override join(basePath: T, ...paths: string[]): T { return this.normalize(p.posix.join(basePath, ...paths)) as T; } - relative(from: T, to: T): PathSegment|AbsoluteFsPath { + override relative(from: T, to: T): PathSegment|AbsoluteFsPath { return this.normalize(p.posix.relative(from, to)) as PathSegment | AbsoluteFsPath; } - basename(filePath: string, extension?: string): PathSegment { + override basename(filePath: string, extension?: string): PathSegment { return p.posix.basename(filePath, extension) as PathSegment; } - isRooted(path: string): boolean { + override isRooted(path: string): boolean { return path.startsWith('/'); } - protected splitPath(path: T): string[] { + protected override splitPath(path: T): string[] { return path.split('/'); } - normalize(path: T): T { + override normalize(path: T): T { return path.replace(/^[a-z]:\//i, '/').replace(/\\/g, '/') as T; } } diff --git a/packages/compiler-cli/src/ngtsc/file_system/testing/src/mock_file_system_windows.ts b/packages/compiler-cli/src/ngtsc/file_system/testing/src/mock_file_system_windows.ts index e41f288e0c..def5ede041 100644 --- a/packages/compiler-cli/src/ngtsc/file_system/testing/src/mock_file_system_windows.ts +++ b/packages/compiler-cli/src/ngtsc/file_system/testing/src/mock_file_system_windows.ts @@ -12,36 +12,36 @@ import {AbsoluteFsPath, PathSegment, PathString} from '../../src/types'; import {MockFileSystem} from './mock_file_system'; export class MockFileSystemWindows extends MockFileSystem { - resolve(...paths: string[]): AbsoluteFsPath { + override resolve(...paths: string[]): AbsoluteFsPath { const resolved = p.win32.resolve(this.pwd(), ...paths); return this.normalize(resolved as AbsoluteFsPath); } - dirname(path: T): T { + override dirname(path: T): T { return this.normalize(p.win32.dirname(path) as T); } - join(basePath: T, ...paths: string[]): T { + override join(basePath: T, ...paths: string[]): T { return this.normalize(p.win32.join(basePath, ...paths)) as T; } - relative(from: T, to: T): PathSegment|AbsoluteFsPath { + override relative(from: T, to: T): PathSegment|AbsoluteFsPath { return this.normalize(p.win32.relative(from, to)) as PathSegment | AbsoluteFsPath; } - basename(filePath: string, extension?: string): PathSegment { + override basename(filePath: string, extension?: string): PathSegment { return p.win32.basename(filePath, extension) as PathSegment; } - isRooted(path: string): boolean { + override isRooted(path: string): boolean { return /^([A-Z]:)?([\\\/]|$)/i.test(path); } - protected splitPath(path: T): string[] { + protected override splitPath(path: T): string[] { return path.split(/[\\\/]/); } - normalize(path: T): T { + override normalize(path: T): T { return path.replace(/^[\/\\]/i, 'C:/').replace(/\\/g, '/') as T; } } diff --git a/packages/compiler-cli/src/ngtsc/imports/README.md b/packages/compiler-cli/src/ngtsc/imports/README.md index 67b6c87e83..3112283847 100644 --- a/packages/compiler-cli/src/ngtsc/imports/README.md +++ b/packages/compiler-cli/src/ngtsc/imports/README.md @@ -167,8 +167,6 @@ It consists of two mechanisms: 1. A `DefaultImportTracker`, which records information about both default imports encountered in the program as well as usages of those imports added during compilation. -A `DefaultImportRecorder` interface is used to allow for a noop implementation in cases (like ngcc) where this tracking isn't necessary. - 2. A TypeScript transformer which processes default import statements and can preserve those which are actually used. This is accessed via `DefaultImportTracker.importPreservingTransformer`. diff --git a/packages/compiler-cli/src/ngtsc/imports/index.ts b/packages/compiler-cli/src/ngtsc/imports/index.ts index 8843ad1824..523bdffe6b 100644 --- a/packages/compiler-cli/src/ngtsc/imports/index.ts +++ b/packages/compiler-cli/src/ngtsc/imports/index.ts @@ -8,7 +8,7 @@ export {AliasingHost, AliasStrategy, PrivateExportAliasingHost, UnifiedModulesAliasingHost} from './src/alias'; export {ImportRewriter, NoopImportRewriter, R3SymbolsImportRewriter, validateAndRewriteCoreSymbol} from './src/core'; -export {DefaultImportRecorder, DefaultImportTracker, NOOP_DEFAULT_IMPORT_RECORDER} from './src/default'; +export {DefaultImportTracker} from './src/default'; export {AbsoluteModuleStrategy, EmittedReference, ImportedFile, ImportFlags, LocalIdentifierStrategy, LogicalProjectStrategy, ReferenceEmitStrategy, ReferenceEmitter, RelativePathStrategy, UnifiedModulesStrategy} from './src/emitter'; export {Reexport} from './src/reexport'; export {OwningModule, Reference} from './src/references'; diff --git a/packages/compiler-cli/src/ngtsc/imports/src/core.ts b/packages/compiler-cli/src/ngtsc/imports/src/core.ts index e952336dd9..09d2c26bc9 100644 --- a/packages/compiler-cli/src/ngtsc/imports/src/core.ts +++ b/packages/compiler-cli/src/ngtsc/imports/src/core.ts @@ -61,7 +61,7 @@ const CORE_SUPPORTED_SYMBOLS = new Map([ ['ɵɵinject', 'ɵɵinject'], ['ɵɵFactoryDeclaration', 'ɵɵFactoryDeclaration'], ['ɵsetClassMetadata', 'setClassMetadata'], - ['ɵɵInjectableDef', 'ɵɵInjectableDef'], + ['ɵɵInjectableDeclaration', 'ɵɵInjectableDeclaration'], ['ɵɵInjectorDeclaration', 'ɵɵInjectorDeclaration'], ['ɵɵNgModuleDeclaration', 'ɵɵNgModuleDeclaration'], ['ɵNgModuleFactory', 'NgModuleFactory'], diff --git a/packages/compiler-cli/src/ngtsc/imports/src/default.ts b/packages/compiler-cli/src/ngtsc/imports/src/default.ts index ca6bf80125..05bf46627e 100644 --- a/packages/compiler-cli/src/ngtsc/imports/src/default.ts +++ b/packages/compiler-cli/src/ngtsc/imports/src/default.ts @@ -6,47 +6,34 @@ * found in the LICENSE file at https://angular.io/license */ +import {WrappedNodeExpr} from '@angular/compiler'; import * as ts from 'typescript'; import {getSourceFile} from '../../util/src/typescript'; -/** - * Registers and records usages of `ts.Identifer`s that came from default import statements. - * - * See `DefaultImportTracker` for details. - */ -export interface DefaultImportRecorder { - /** - * Record an association between a `ts.Identifier` which might be emitted and the - * `ts.ImportDeclaration` from which it came. - * - * Alone, this method has no effect as the `ts.Identifier` might not be used in the output. - * The identifier must later be marked as used with `recordUsedIdentifier` in order for its - * import to be preserved. - */ - recordImportedIdentifier(id: ts.Identifier, decl: ts.ImportDeclaration): void; +const DefaultImportDeclaration = Symbol('DefaultImportDeclaration'); - /** - * Record the fact that the given `ts.Identifer` will be emitted, and thus its - * `ts.ImportDeclaration`, if it was a previously registered default import, must be preserved. - * - * This method can be called safely for any `ts.Identifer`, regardless of its origin. It will only - * have an effect if the identifier came from a `ts.ImportDeclaration` default import which was - * previously registered with `recordImportedIdentifier`. - */ - recordUsedIdentifier(id: ts.Identifier): void; +interface WithDefaultImportDeclaration { + [DefaultImportDeclaration]?: ts.ImportDeclaration; } /** - * An implementation of `DefaultImportRecorder` which does nothing. - * - * This is useful when default import tracking isn't required, such as when emitting .d.ts code - * or for ngcc. + * Attaches a default import declaration to `expr` to indicate the dependency of `expr` on the + * default import. */ -export const NOOP_DEFAULT_IMPORT_RECORDER: DefaultImportRecorder = { - recordImportedIdentifier: (id: ts.Identifier) => void{}, - recordUsedIdentifier: (id: ts.Identifier) => void{}, -}; +export function attachDefaultImportDeclaration( + expr: WrappedNodeExpr, importDecl: ts.ImportDeclaration): void { + (expr as WithDefaultImportDeclaration)[DefaultImportDeclaration] = importDecl; +} + +/** + * Obtains the default import declaration that `expr` depends on, or `null` if there is no such + * dependency. + */ +export function getDefaultImportDeclaration(expr: WrappedNodeExpr): ts.ImportDeclaration| + null { + return (expr as WithDefaultImportDeclaration)[DefaultImportDeclaration] ?? null; +} /** * TypeScript has trouble with generating default imports inside of transformers for some module @@ -78,52 +65,28 @@ export const NOOP_DEFAULT_IMPORT_RECORDER: DefaultImportRecorder = { * This problem does not exist for non-default imports as the compiler can easily insert * "import * as X" style imports for those, and the "X" identifier survives transformation. */ -export class DefaultImportTracker implements DefaultImportRecorder { - /** - * A `Map` which tracks the `Map` of default import `ts.Identifier`s to their - * `ts.ImportDeclaration`s. These declarations are not guaranteed to be used. - */ - private sourceFileToImportMap = - new Map>(); - +export class DefaultImportTracker { /** * A `Map` which tracks the `Set` of `ts.ImportDeclaration`s for default imports that were used in * a given `ts.SourceFile` and need to be preserved. */ private sourceFileToUsedImports = new Map>(); - recordImportedIdentifier(id: ts.Identifier, decl: ts.ImportDeclaration): void { - const sf = getSourceFile(id); - if (!this.sourceFileToImportMap.has(sf)) { - this.sourceFileToImportMap.set(sf, new Map()); - } - this.sourceFileToImportMap.get(sf)!.set(id, decl); - } - recordUsedIdentifier(id: ts.Identifier): void { - const sf = getSourceFile(id); - if (!this.sourceFileToImportMap.has(sf)) { - // The identifier's source file has no registered default imports at all. - return; - } - const identiferToDeclaration = this.sourceFileToImportMap.get(sf)!; - if (!identiferToDeclaration.has(id)) { - // The identifier isn't from a registered default import. - return; - } - const decl = identiferToDeclaration.get(id)!; + recordUsedImport(importDecl: ts.ImportDeclaration): void { + const sf = getSourceFile(importDecl); // Add the default import declaration to the set of used import declarations for the file. if (!this.sourceFileToUsedImports.has(sf)) { this.sourceFileToUsedImports.set(sf, new Set()); } - this.sourceFileToUsedImports.get(sf)!.add(decl); + this.sourceFileToUsedImports.get(sf)!.add(importDecl); } /** * Get a `ts.TransformerFactory` which will preserve default imports that were previously marked * as used. * - * This transformer must run after any other transformers which call `recordUsedIdentifier`. + * This transformer must run after any other transformers which call `recordUsedImport`. */ importPreservingTransformer(): ts.TransformerFactory { return (context: ts.TransformationContext) => { @@ -182,7 +145,6 @@ export class DefaultImportTracker implements DefaultImportRecorder { // Save memory - there's no need to keep these around once the transform has run for the given // file. - this.sourceFileToImportMap.delete(originalSf); this.sourceFileToUsedImports.delete(originalSf); return ts.updateSourceFileNode(sf, statements); diff --git a/packages/compiler-cli/src/ngtsc/imports/src/emitter.ts b/packages/compiler-cli/src/ngtsc/imports/src/emitter.ts index f21dca0ce1..80b2bf95b1 100644 --- a/packages/compiler-cli/src/ngtsc/imports/src/emitter.ts +++ b/packages/compiler-cli/src/ngtsc/imports/src/emitter.ts @@ -12,7 +12,7 @@ import {UnifiedModulesHost} from '../../core/api'; import {absoluteFromSourceFile, dirname, LogicalFileSystem, LogicalProjectPath, relative, toRelativeImport} from '../../file_system'; import {stripExtension} from '../../file_system/src/util'; import {DeclarationNode, ReflectionHost} from '../../reflection'; -import {getSourceFile, isDeclaration, isTypeDeclaration, nodeNameForError} from '../../util/src/typescript'; +import {getSourceFile, isDeclaration, isNamedDeclaration, isTypeDeclaration, nodeNameForError} from '../../util/src/typescript'; import {findExportedNameOfNode} from './find_export'; import {Reference} from './references'; @@ -255,9 +255,20 @@ export class AbsoluteModuleStrategy implements ReferenceEmitStrategy { return null; } const exportMap = new Map(); - exports.forEach((declaration, name) => { + for (const [name, declaration] of exports) { + if (exportMap.has(declaration.node)) { + // An export for this declaration has already been registered. We prefer an export that + // has the same name as the declared name, i.e. is not an aliased export. This is relevant + // for partial compilations where emitted references should import symbols using a stable + // name. This is particularly relevant for declarations inside VE-generated libraries, as + // such libraries contain private, unstable reexports of symbols. + const existingExport = exportMap.get(declaration.node)!; + if (isNamedDeclaration(declaration.node) && declaration.node.name.text === existingExport) { + continue; + } + } exportMap.set(declaration.node, name); - }); + } return {module: entryPointFile, exportMap}; } } diff --git a/packages/compiler-cli/src/ngtsc/imports/src/find_export.ts b/packages/compiler-cli/src/ngtsc/imports/src/find_export.ts index e514ae7a9d..a3467d00cc 100644 --- a/packages/compiler-cli/src/ngtsc/imports/src/find_export.ts +++ b/packages/compiler-cli/src/ngtsc/imports/src/find_export.ts @@ -8,6 +8,7 @@ import * as ts from 'typescript'; import {ReflectionHost} from '../../reflection'; +import {isNamedDeclaration} from '../../util/src/typescript'; /** * Find the name, if any, by which a node is exported from a given file. @@ -18,18 +19,29 @@ export function findExportedNameOfNode( if (exports === null) { return null; } - // Look for the export which declares the node. - const keys = Array.from(exports.keys()); - const name = keys.find(key => { - const decl = exports.get(key); - return decl !== undefined && decl.node === target; - }); - if (name === undefined) { + const declaredName = isNamedDeclaration(target) ? target.name.text : null; + + // Look for the export which declares the node. + let foundExportName: string|null = null; + for (const [exportName, declaration] of exports) { + if (declaration.node !== target) { + continue; + } + + if (exportName === declaredName) { + // A non-alias export exists which is always preferred, so use that one. + return exportName; + } + + foundExportName = exportName; + } + + if (foundExportName === null) { throw new Error( `Failed to find exported name of node (${target.getText()}) in '${file.fileName}'.`); } - return name; + return foundExportName; } /** @@ -39,6 +51,10 @@ export function findExportedNameOfNode( * `ts.ExportSpecifier`s and need to be unwrapped. */ function symbolDeclaresNode(sym: ts.Symbol, node: ts.Node, checker: ts.TypeChecker): boolean { + if (sym.declarations === undefined) { + return false; + } + return sym.declarations.some(decl => { if (ts.isExportSpecifier(decl)) { const exportedSymbol = checker.getExportSpecifierLocalTargetSymbol(decl); diff --git a/packages/compiler-cli/src/ngtsc/imports/test/BUILD.bazel b/packages/compiler-cli/src/ngtsc/imports/test/BUILD.bazel index 44f7f734c1..569b513b7a 100644 --- a/packages/compiler-cli/src/ngtsc/imports/test/BUILD.bazel +++ b/packages/compiler-cli/src/ngtsc/imports/test/BUILD.bazel @@ -11,6 +11,7 @@ ts_library( deps = [ "//packages:types", "//packages/compiler", + "//packages/compiler-cli/src/ngtsc/core:api", "//packages/compiler-cli/src/ngtsc/file_system", "//packages/compiler-cli/src/ngtsc/file_system/testing", "//packages/compiler-cli/src/ngtsc/imports", diff --git a/packages/compiler-cli/src/ngtsc/imports/test/default_spec.ts b/packages/compiler-cli/src/ngtsc/imports/test/default_spec.ts index f07ea36462..307ecceda1 100644 --- a/packages/compiler-cli/src/ngtsc/imports/test/default_spec.ts +++ b/packages/compiler-cli/src/ngtsc/imports/test/default_spec.ts @@ -39,12 +39,10 @@ runInEachFileSystem(() => { module: ts.ModuleKind.ES2015, }); const fooClause = getDeclaration(program, _('/test.ts'), 'Foo', ts.isImportClause); - const fooId = fooClause.name!; const fooDecl = fooClause.parent; const tracker = new DefaultImportTracker(); - tracker.recordImportedIdentifier(fooId, fooDecl); - tracker.recordUsedIdentifier(fooId); + tracker.recordUsedImport(fooDecl); program.emit(undefined, undefined, undefined, undefined, { before: [tracker.importPreservingTransformer()], }); @@ -73,8 +71,7 @@ runInEachFileSystem(() => { const fooDecl = fooClause.parent; const tracker = new DefaultImportTracker(); - tracker.recordImportedIdentifier(fooId, fooDecl); - tracker.recordUsedIdentifier(fooId); + tracker.recordUsedImport(fooDecl); program.emit(undefined, undefined, undefined, undefined, { before: [ addReferenceTransformer(fooId), diff --git a/packages/compiler-cli/src/ngtsc/imports/test/emitter_spec.ts b/packages/compiler-cli/src/ngtsc/imports/test/emitter_spec.ts index c556a1cf72..3b5f968df5 100644 --- a/packages/compiler-cli/src/ngtsc/imports/test/emitter_spec.ts +++ b/packages/compiler-cli/src/ngtsc/imports/test/emitter_spec.ts @@ -7,12 +7,13 @@ */ import {ExternalExpr} from '@angular/compiler'; import * as ts from 'typescript'; +import {UnifiedModulesHost} from '../../core/api'; -import {absoluteFrom as _, LogicalFileSystem} from '../../file_system'; +import {absoluteFrom as _, basename, LogicalFileSystem} from '../../file_system'; import {runInEachFileSystem, TestFile} from '../../file_system/testing'; import {Declaration, TypeScriptReflectionHost} from '../../reflection'; import {getDeclaration, makeProgram} from '../../testing'; -import {AbsoluteModuleStrategy, ImportFlags, LogicalProjectStrategy} from '../src/emitter'; +import {AbsoluteModuleStrategy, ImportFlags, LogicalProjectStrategy, RelativePathStrategy, UnifiedModulesStrategy} from '../src/emitter'; import {Reference} from '../src/references'; import {ModuleResolver} from '../src/resolver'; @@ -49,6 +50,41 @@ runInEachFileSystem(() => { expect(emitted).toBeNull(); }); + it('should prefer non-aliased exports', () => { + const {strategy, program} = makeStrategy([ + { + name: _('/node_modules/external.d.ts'), + contents: ` + declare class Foo {} + export {Foo as A}; + export {Foo}; + export {Foo as B}; + `, + }, + { + name: _('/context.ts'), + contents: 'export class Context {}', + }, + ]); + const decl = + getDeclaration(program, _('/node_modules/external.d.ts'), 'Foo', ts.isClassDeclaration); + const context = program.getSourceFile(_('/context.ts'))!; + + const reference = new Reference(decl, { + specifier: 'external', + resolutionContext: context.fileName, + }); + const emitted = strategy.emit(reference, context, ImportFlags.None); + if (emitted === null) { + return fail('Reference should be emitted'); + } + if (!(emitted.expression instanceof ExternalExpr)) { + return fail('Reference should be emitted as ExternalExpr'); + } + expect(emitted.expression.value.name).toEqual('Foo'); + expect(emitted.expression.value.moduleName).toEqual('external'); + }); + it('should generate an import using the exported name of the declaration', () => { const {strategy, program} = makeStrategy([ { @@ -139,7 +175,7 @@ runInEachFileSystem(() => { it('should enumerate exports with the ReflectionHost', () => { // Use a modified ReflectionHost that prefixes all export names that it enumerates. class TestHost extends TypeScriptReflectionHost { - getExportsOfModule(node: ts.Node): Map|null { + override getExportsOfModule(node: ts.Node): Map|null { const realExports = super.getExportsOfModule(node); if (realExports === null) { return null; @@ -173,5 +209,108 @@ runInEachFileSystem(() => { // Expect the prefixed name from the TestHost. expect((ref!.expression as ExternalExpr).value.name).toEqual('testFoo'); }); + + it('should prefer non-aliased exports', () => { + const {program, host} = makeProgram([ + { + name: _('/index.ts'), + contents: ` + declare class Foo {} + export {Foo as A}; + export {Foo}; + export {Foo as B}; + `, + }, + { + name: _('/context.ts'), + contents: 'export class Context {}', + } + ]); + const checker = program.getTypeChecker(); + const logicalFs = new LogicalFileSystem([_('/')], host); + const strategy = new LogicalProjectStrategy(new TypeScriptReflectionHost(checker), logicalFs); + const decl = getDeclaration(program, _('/index.ts'), 'Foo', ts.isClassDeclaration); + const context = program.getSourceFile(_('/context.ts'))!; + const emitted = strategy.emit(new Reference(decl), context); + if (emitted === null) { + return fail('Reference should be emitted'); + } + if (!(emitted.expression instanceof ExternalExpr)) { + return fail('Reference should be emitted as ExternalExpr'); + } + expect(emitted.expression.value.name).toEqual('Foo'); + expect(emitted.expression.value.moduleName).toEqual('./index'); + }); + }); + + describe('RelativePathStrategy', () => { + it('should prefer non-aliased exports', () => { + const {program} = makeProgram([ + { + name: _('/index.ts'), + contents: ` + declare class Foo {} + export {Foo as A}; + export {Foo}; + export {Foo as B}; + `, + }, + { + name: _('/context.ts'), + contents: 'export class Context {}', + } + ]); + const checker = program.getTypeChecker(); + const strategy = new RelativePathStrategy(new TypeScriptReflectionHost(checker)); + const decl = getDeclaration(program, _('/index.ts'), 'Foo', ts.isClassDeclaration); + const context = program.getSourceFile(_('/context.ts'))!; + const emitted = strategy.emit(new Reference(decl), context); + if (emitted === null) { + return fail('Reference should be emitted'); + } + if (!(emitted.expression instanceof ExternalExpr)) { + return fail('Reference should be emitted as ExternalExpr'); + } + expect(emitted.expression.value.name).toEqual('Foo'); + expect(emitted.expression.value.moduleName).toEqual('./index'); + }); + }); + + describe('UnifiedModulesStrategy', () => { + it('should prefer non-aliased exports', () => { + const {program} = makeProgram([ + { + name: _('/index.ts'), + contents: ` + declare class Foo {} + export {Foo as A}; + export {Foo}; + export {Foo as B}; + `, + }, + { + name: _('/context.ts'), + contents: 'export class Context {}', + } + ]); + const checker = program.getTypeChecker(); + const host: UnifiedModulesHost = { + fileNameToModuleName(importedFilePath): string { + return basename(importedFilePath, '.ts'); + } + }; + const strategy = new UnifiedModulesStrategy(new TypeScriptReflectionHost(checker), host); + const decl = getDeclaration(program, _('/index.ts'), 'Foo', ts.isClassDeclaration); + const context = program.getSourceFile(_('/context.ts'))!; + const emitted = strategy.emit(new Reference(decl), context); + if (emitted === null) { + return fail('Reference should be emitted'); + } + if (!(emitted.expression instanceof ExternalExpr)) { + return fail('Reference should be emitted as ExternalExpr'); + } + expect(emitted.expression.value.name).toEqual('Foo'); + expect(emitted.expression.value.moduleName).toEqual('index'); + }); }); }); diff --git a/packages/compiler-cli/src/ngtsc/incremental/BUILD.bazel b/packages/compiler-cli/src/ngtsc/incremental/BUILD.bazel index 0e89dfbed2..78f5074011 100644 --- a/packages/compiler-cli/src/ngtsc/incremental/BUILD.bazel +++ b/packages/compiler-cli/src/ngtsc/incremental/BUILD.bazel @@ -15,6 +15,7 @@ ts_library( "//packages/compiler-cli/src/ngtsc/metadata", "//packages/compiler-cli/src/ngtsc/partial_evaluator", "//packages/compiler-cli/src/ngtsc/perf", + "//packages/compiler-cli/src/ngtsc/program_driver", "//packages/compiler-cli/src/ngtsc/reflection", "//packages/compiler-cli/src/ngtsc/scope", "//packages/compiler-cli/src/ngtsc/transform", diff --git a/packages/compiler-cli/src/ngtsc/incremental/api.ts b/packages/compiler-cli/src/ngtsc/incremental/api.ts index 0f3ca34258..5a52c8627e 100644 --- a/packages/compiler-cli/src/ngtsc/incremental/api.ts +++ b/packages/compiler-cli/src/ngtsc/incremental/api.ts @@ -21,7 +21,7 @@ export interface IncrementalBuild { /** * Retrieve the prior analysis work, if any, done for the given source file. */ - priorWorkFor(sf: ts.SourceFile): AnalysisT[]|null; + priorAnalysisFor(sf: ts.SourceFile): AnalysisT[]|null; /** * Retrieve the prior type-checking work, if any, that's been done for the given source file. diff --git a/packages/compiler-cli/src/ngtsc/incremental/index.ts b/packages/compiler-cli/src/ngtsc/incremental/index.ts index 887ea6ede7..8bcda25025 100644 --- a/packages/compiler-cli/src/ngtsc/incremental/index.ts +++ b/packages/compiler-cli/src/ngtsc/incremental/index.ts @@ -6,6 +6,8 @@ * found in the LICENSE file at https://angular.io/license */ +export {IncrementalCompilation} from './src/incremental'; export {NOOP_INCREMENTAL_BUILD} from './src/noop'; -export {IncrementalDriver} from './src/state'; +export {AnalyzedIncrementalState, DeltaIncrementalState, FreshIncrementalState, IncrementalState, IncrementalStateKind} from './src/state'; + export * from './src/strategy'; diff --git a/packages/compiler-cli/src/ngtsc/incremental/semantic_graph/src/graph.ts b/packages/compiler-cli/src/ngtsc/incremental/semantic_graph/src/graph.ts index 0c62c8b0d5..7baef8b304 100644 --- a/packages/compiler-cli/src/ngtsc/incremental/semantic_graph/src/graph.ts +++ b/packages/compiler-cli/src/ngtsc/incremental/semantic_graph/src/graph.ts @@ -35,11 +35,11 @@ export interface SemanticDependencyResult { * compilation. */ class OpaqueSymbol extends SemanticSymbol { - isPublicApiAffected(): false { + override isPublicApiAffected(): false { return false; } - isTypeCheckApiAffected(): false { + override isTypeCheckApiAffected(): false { return false; } } diff --git a/packages/compiler-cli/src/ngtsc/incremental/src/dependency_tracking.ts b/packages/compiler-cli/src/ngtsc/incremental/src/dependency_tracking.ts index 0dded69344..63a557da16 100644 --- a/packages/compiler-cli/src/ngtsc/incremental/src/dependency_tracking.ts +++ b/packages/compiler-cli/src/ngtsc/incremental/src/dependency_tracking.ts @@ -8,7 +8,7 @@ import * as ts from 'typescript'; -import {AbsoluteFsPath} from '../../file_system'; +import {absoluteFromSourceFile, AbsoluteFsPath} from '../../file_system'; import {DependencyTracker} from '../api'; /** @@ -28,7 +28,7 @@ export class FileDependencyGraph i private nodes = new Map(); addDependency(from: T, on: T): void { - this.nodeFor(from).dependsOn.add(on.fileName); + this.nodeFor(from).dependsOn.add(absoluteFromSourceFile(on)); } addResourceDependency(from: T, resource: AbsoluteFsPath): void { @@ -67,15 +67,17 @@ export class FileDependencyGraph i * P(n) = the physically changed files from build n - 1 to build n. */ updateWithPhysicalChanges( - previous: FileDependencyGraph, changedTsPaths: Set, deletedTsPaths: Set, - changedResources: Set): Set { - const logicallyChanged = new Set(); + previous: FileDependencyGraph, changedTsPaths: Set, + deletedTsPaths: Set, + changedResources: Set): Set { + const logicallyChanged = new Set(); for (const sf of previous.nodes.keys()) { + const sfPath = absoluteFromSourceFile(sf); const node = previous.nodeFor(sf); if (isLogicallyChanged(sf, node, changedTsPaths, deletedTsPaths, changedResources)) { - logicallyChanged.add(sf.fileName); - } else if (!deletedTsPaths.has(sf.fileName)) { + logicallyChanged.add(sfPath); + } else if (!deletedTsPaths.has(sfPath)) { this.nodes.set(sf, { dependsOn: new Set(node.dependsOn), usesResources: new Set(node.usesResources), @@ -90,7 +92,7 @@ export class FileDependencyGraph i private nodeFor(sf: T): FileNode { if (!this.nodes.has(sf)) { this.nodes.set(sf, { - dependsOn: new Set(), + dependsOn: new Set(), usesResources: new Set(), failedAnalysis: false, }); @@ -104,7 +106,8 @@ export class FileDependencyGraph i * changed files and resources. */ function isLogicallyChanged( - sf: T, node: FileNode, changedTsPaths: ReadonlySet, deletedTsPaths: ReadonlySet, + sf: T, node: FileNode, changedTsPaths: ReadonlySet, + deletedTsPaths: ReadonlySet, changedResources: ReadonlySet): boolean { // A file is assumed to have logically changed if its dependencies could not be determined // accurately. @@ -112,8 +115,10 @@ function isLogicallyChanged( return true; } + const sfPath = absoluteFromSourceFile(sf); + // A file is logically changed if it has physically changed itself (including being deleted). - if (changedTsPaths.has(sf.fileName) || deletedTsPaths.has(sf.fileName)) { + if (changedTsPaths.has(sfPath) || deletedTsPaths.has(sfPath)) { return true; } @@ -134,7 +139,7 @@ function isLogicallyChanged( } interface FileNode { - dependsOn: Set; + dependsOn: Set; usesResources: Set; failedAnalysis: boolean; } diff --git a/packages/compiler-cli/src/ngtsc/incremental/src/incremental.ts b/packages/compiler-cli/src/ngtsc/incremental/src/incremental.ts new file mode 100644 index 0000000000..7ef18d83c2 --- /dev/null +++ b/packages/compiler-cli/src/ngtsc/incremental/src/incremental.ts @@ -0,0 +1,402 @@ +/** + * @license + * 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 + */ + +import * as ts from 'typescript'; + +import {absoluteFromSourceFile, AbsoluteFsPath, resolve} from '../../file_system'; +import {PerfPhase, PerfRecorder} from '../../perf'; +import {MaybeSourceFileWithOriginalFile, NgOriginalFile} from '../../program_driver'; +import {ClassRecord, TraitCompiler} from '../../transform'; +import {FileTypeCheckingData} from '../../typecheck'; +import {toUnredirectedSourceFile} from '../../util/src/typescript'; +import {IncrementalBuild} from '../api'; +import {SemanticDepGraphUpdater} from '../semantic_graph'; + +import {FileDependencyGraph} from './dependency_tracking'; +import {AnalyzedIncrementalState, DeltaIncrementalState, IncrementalState, IncrementalStateKind} from './state'; + +/** + * Information about the previous compilation being used as a starting point for the current one, + * including the delta of files which have logically changed and need to be reanalyzed. + */ +interface IncrementalStep { + priorState: AnalyzedIncrementalState; + logicallyChangedTsFiles: Set; +} + +/** + * Discriminant of the `Phase` type union. + */ +enum PhaseKind { + Analysis, + TypeCheckAndEmit, +} + +/** + * An incremental compilation undergoing analysis, and building a semantic dependency graph. + */ +interface AnalysisPhase { + kind: PhaseKind.Analysis; + semanticDepGraphUpdater: SemanticDepGraphUpdater; +} + +/** + * An incremental compilation that completed analysis and is undergoing template type-checking and + * emit. + */ +interface TypeCheckAndEmitPhase { + kind: PhaseKind.TypeCheckAndEmit; + needsEmit: Set; + needsTypeCheckEmit: Set; +} + +/** + * Represents the current phase of a compilation. + */ +type Phase = AnalysisPhase|TypeCheckAndEmitPhase; + +/** + * Manages the incremental portion of an Angular compilation, allowing for reuse of a prior + * compilation if available, and producing an output state for reuse of the current compilation in a + * future one. + */ +export class IncrementalCompilation implements IncrementalBuild { + private phase: Phase; + + /** + * `IncrementalState` of this compilation if it were to be reused in a subsequent incremental + * compilation at the current moment. + * + * Exposed via the `state` read-only getter. + */ + private _state: IncrementalState; + + private constructor( + state: IncrementalState, readonly depGraph: FileDependencyGraph, + private versions: Map|null, private step: IncrementalStep|null) { + this._state = state; + + // The compilation begins in analysis phase. + this.phase = { + kind: PhaseKind.Analysis, + semanticDepGraphUpdater: + new SemanticDepGraphUpdater(step !== null ? step.priorState.semanticDepGraph : null), + }; + } + + /** + * Begin a fresh `IncrementalCompilation`. + */ + static fresh(program: ts.Program, versions: Map|null): + IncrementalCompilation { + const state: IncrementalState = { + kind: IncrementalStateKind.Fresh, + }; + return new IncrementalCompilation(state, new FileDependencyGraph(), versions, /* reuse */ null); + } + + static incremental( + program: ts.Program, newVersions: Map|null, oldProgram: ts.Program, + oldState: IncrementalState, modifiedResourceFiles: Set|null, + perf: PerfRecorder): IncrementalCompilation { + return perf.inPhase(PerfPhase.Reconciliation, () => { + const physicallyChangedTsFiles = new Set(); + const changedResourceFiles = new Set(modifiedResourceFiles ?? []); + + + let priorAnalysis: AnalyzedIncrementalState; + switch (oldState.kind) { + case IncrementalStateKind.Fresh: + // Since this line of program has never been successfully analyzed to begin with, treat + // this as a fresh compilation. + return IncrementalCompilation.fresh(program, newVersions); + case IncrementalStateKind.Analyzed: + // The most recent program was analyzed successfully, so we can use that as our prior + // state and don't need to consider any other deltas except changes in the most recent + // program. + priorAnalysis = oldState; + break; + case IncrementalStateKind.Delta: + // There is an ancestor program which was analyzed successfully and can be used as a + // starting point, but we need to determine what's changed since that program. + priorAnalysis = oldState.lastAnalyzedState; + for (const sfPath of oldState.physicallyChangedTsFiles) { + physicallyChangedTsFiles.add(sfPath); + } + for (const resourcePath of oldState.changedResourceFiles) { + changedResourceFiles.add(resourcePath); + } + break; + } + + const oldVersions = priorAnalysis.versions; + + const oldFilesArray = oldProgram.getSourceFiles().map(toOriginalSourceFile); + const oldFiles = new Set(oldFilesArray); + const deletedTsFiles = new Set(oldFilesArray.map(sf => absoluteFromSourceFile(sf))); + + for (const possiblyRedirectedNewFile of program.getSourceFiles()) { + const sf = toOriginalSourceFile(possiblyRedirectedNewFile); + const sfPath = absoluteFromSourceFile(sf); + // Since we're seeing a file in the incoming program with this name, it can't have been + // deleted. + deletedTsFiles.delete(sfPath); + + if (oldFiles.has(sf)) { + // This source file has the same object identity as in the previous program. We need to + // determine if it's really the same file, or if it might have changed versions since the + // last program without changing its identity. + + // If there's no version information available, then this is the same file, and we can + // skip it. + if (oldVersions === null || newVersions === null) { + continue; + } + + // If a version is available for the file from both the prior and the current program, and + // that version is the same, then this is the same file, and we can skip it. + if (oldVersions.has(sfPath) && newVersions.has(sfPath) && + oldVersions.get(sfPath)! === newVersions.get(sfPath)!) { + continue; + } + + // Otherwise, assume that the file has changed. Either its versions didn't match, or we + // were missing version information about it on one side for some reason. + } + + // Bail out if a .d.ts file changes - the semantic dep graph is not able to process such + // changes correctly yet. + if (sf.isDeclarationFile) { + return IncrementalCompilation.fresh(program, newVersions); + } + + // The file has changed physically, so record it. + physicallyChangedTsFiles.add(sfPath); + } + + // Remove any files that have been deleted from the list of physical changes. + for (const deletedFileName of deletedTsFiles) { + physicallyChangedTsFiles.delete(resolve(deletedFileName)); + } + + // Use the prior dependency graph to project physical changes into a set of logically changed + // files. + const depGraph = new FileDependencyGraph(); + const logicallyChangedTsFiles = depGraph.updateWithPhysicalChanges( + priorAnalysis.depGraph, physicallyChangedTsFiles, deletedTsFiles, changedResourceFiles); + + // Physically changed files aren't necessarily counted as logically changed by the dependency + // graph (files do not have edges to themselves), so add them to the logical changes + // explicitly. + for (const sfPath of physicallyChangedTsFiles) { + logicallyChangedTsFiles.add(sfPath); + } + + // Start off in a `DeltaIncrementalState` as a delta against the previous successful analysis, + // until this compilation completes its own analysis. + const state: DeltaIncrementalState = { + kind: IncrementalStateKind.Delta, + physicallyChangedTsFiles, + changedResourceFiles, + lastAnalyzedState: priorAnalysis, + }; + + return new IncrementalCompilation(state, depGraph, newVersions, { + priorState: priorAnalysis, + logicallyChangedTsFiles, + }); + }); + } + + get state(): IncrementalState { + return this._state; + } + + get semanticDepGraphUpdater(): SemanticDepGraphUpdater { + if (this.phase.kind !== PhaseKind.Analysis) { + throw new Error( + `AssertionError: Cannot update the SemanticDepGraph after analysis completes`); + } + return this.phase.semanticDepGraphUpdater; + } + + recordSuccessfulAnalysis(traitCompiler: TraitCompiler): void { + if (this.phase.kind !== PhaseKind.Analysis) { + throw new Error(`AssertionError: Incremental compilation in phase ${ + PhaseKind[this.phase.kind]}, expected Analysis`); + } + + const {needsEmit, needsTypeCheckEmit, newGraph} = this.phase.semanticDepGraphUpdater.finalize(); + + // Determine the set of files which have already been emitted. + let emitted: Set; + if (this.step === null) { + // Since there is no prior compilation, no files have yet been emitted. + emitted = new Set(); + } else { + // Begin with the files emitted by the prior successful compilation, but remove those which we + // know need to bee re-emitted. + emitted = new Set(this.step.priorState.emitted); + + // Files need re-emitted if they've logically changed. + for (const sfPath of this.step.logicallyChangedTsFiles) { + emitted.delete(sfPath); + } + + // Files need re-emitted if they've semantically changed. + for (const sfPath of needsEmit) { + emitted.delete(sfPath); + } + } + + // Transition to a successfully analyzed compilation. At this point, a subsequent compilation + // could use this state as a starting point. + this._state = { + kind: IncrementalStateKind.Analyzed, + versions: this.versions, + depGraph: this.depGraph, + semanticDepGraph: newGraph, + priorAnalysis: traitCompiler.getAnalyzedRecords(), + typeCheckResults: null, + emitted, + }; + + // We now enter the type-check and emit phase of compilation. + this.phase = { + kind: PhaseKind.TypeCheckAndEmit, + needsEmit, + needsTypeCheckEmit, + }; + } + + recordSuccessfulTypeCheck(results: Map): void { + if (this._state.kind !== IncrementalStateKind.Analyzed) { + throw new Error(`AssertionError: Expected successfully analyzed compilation.`); + } else if (this.phase.kind !== PhaseKind.TypeCheckAndEmit) { + throw new Error(`AssertionError: Incremental compilation in phase ${ + PhaseKind[this.phase.kind]}, expected TypeCheck`); + } + + this._state.typeCheckResults = results; + } + + + recordSuccessfulEmit(sf: ts.SourceFile): void { + if (this._state.kind !== IncrementalStateKind.Analyzed) { + throw new Error(`AssertionError: Expected successfully analyzed compilation.`); + } + this._state.emitted.add(absoluteFromSourceFile(sf)); + } + + priorAnalysisFor(sf: ts.SourceFile): ClassRecord[]|null { + if (this.step === null) { + return null; + } + + const sfPath = absoluteFromSourceFile(sf); + + // If the file has logically changed, its previous analysis cannot be reused. + if (this.step.logicallyChangedTsFiles.has(sfPath)) { + return null; + } + + const priorAnalysis = this.step.priorState.priorAnalysis; + if (!priorAnalysis.has(sf)) { + return null; + } + return priorAnalysis.get(sf)!; + } + + priorTypeCheckingResultsFor(sf: ts.SourceFile): FileTypeCheckingData|null { + if (this.phase.kind !== PhaseKind.TypeCheckAndEmit) { + throw new Error(`AssertionError: Expected successfully analyzed compilation.`); + } + + if (this.step === null) { + return null; + } + + const sfPath = absoluteFromSourceFile(sf); + + // If the file has logically changed, or its template type-checking results have semantically + // changed, then past type-checking results cannot be reused. + if (this.step.logicallyChangedTsFiles.has(sfPath) || + this.phase.needsTypeCheckEmit.has(sfPath)) { + return null; + } + + // Past results also cannot be reused if they're not available. + if (this.step.priorState.typeCheckResults === null || + !this.step.priorState.typeCheckResults.has(sfPath)) { + return null; + } + + const priorResults = this.step.priorState.typeCheckResults.get(sfPath)!; + // If the past results relied on inlining, they're not safe for reuse. + if (priorResults.hasInlines) { + return null; + } + + return priorResults; + } + + safeToSkipEmit(sf: ts.SourceFile): boolean { + // If this is a fresh compilation, it's never safe to skip an emit. + if (this.step === null) { + return false; + } + + const sfPath = absoluteFromSourceFile(sf); + + // If the file has itself logically changed, it must be emitted. + if (this.step.logicallyChangedTsFiles.has(sfPath)) { + return false; + } + + if (this.phase.kind !== PhaseKind.TypeCheckAndEmit) { + throw new Error( + `AssertionError: Expected successful analysis before attempting to emit files`); + } + + // If during analysis it was determined that this file has semantically changed, it must be + // emitted. + if (this.phase.needsEmit.has(sfPath)) { + return false; + } + + // Generally it should be safe to assume here that the file was previously emitted by the last + // successful compilation. However, as a defense-in-depth against incorrectness, we explicitly + // check that the last emit included this file, and re-emit it otherwise. + return this.step.priorState.emitted.has(sfPath); + } +} + +/** + * To accurately detect whether a source file was affected during an incremental rebuild, the + * "original" source file needs to be consistently used. + * + * First, TypeScript may have created source file redirects when declaration files of the same + * version of a library are included multiple times. The non-redirected source file should be used + * to detect changes, as otherwise the redirected source files cause a mismatch when compared to + * a prior program. + * + * Second, the program that is used for template type checking may contain mutated source files, if + * inline type constructors or inline template type-check blocks had to be used. Such source files + * store their original, non-mutated source file from the original program in a symbol. For + * computing the affected files in an incremental build this original source file should be used, as + * the mutated source file would always be considered affected. + */ +function toOriginalSourceFile(sf: ts.SourceFile): ts.SourceFile { + const unredirectedSf = toUnredirectedSourceFile(sf); + const originalFile = (unredirectedSf as MaybeSourceFileWithOriginalFile)[NgOriginalFile]; + if (originalFile !== undefined) { + return originalFile; + } else { + return unredirectedSf; + } +} diff --git a/packages/compiler-cli/src/ngtsc/incremental/src/noop.ts b/packages/compiler-cli/src/ngtsc/incremental/src/noop.ts index 4f4803232e..378afd375c 100644 --- a/packages/compiler-cli/src/ngtsc/incremental/src/noop.ts +++ b/packages/compiler-cli/src/ngtsc/incremental/src/noop.ts @@ -9,7 +9,7 @@ import {IncrementalBuild} from '../api'; export const NOOP_INCREMENTAL_BUILD: IncrementalBuild = { - priorWorkFor: () => null, + priorAnalysisFor: () => null, priorTypeCheckingResultsFor: () => null, recordSuccessfulTypeCheck: () => {}, }; diff --git a/packages/compiler-cli/src/ngtsc/incremental/src/state.ts b/packages/compiler-cli/src/ngtsc/incremental/src/state.ts index cd5f5fa431..5526affe5c 100644 --- a/packages/compiler-cli/src/ngtsc/incremental/src/state.ts +++ b/packages/compiler-cli/src/ngtsc/incremental/src/state.ts @@ -8,404 +8,107 @@ import * as ts from 'typescript'; -import {absoluteFrom, absoluteFromSourceFile, AbsoluteFsPath} from '../../file_system'; -import {PerfEvent, PerfPhase, PerfRecorder} from '../../perf'; -import {ClassDeclaration} from '../../reflection'; -import {ClassRecord, TraitCompiler} from '../../transform'; +import {AbsoluteFsPath} from '../../file_system'; +import {ClassRecord} from '../../transform'; import {FileTypeCheckingData} from '../../typecheck/src/checker'; -import {IncrementalBuild} from '../api'; -import {SemanticDepGraph, SemanticDepGraphUpdater} from '../semantic_graph'; +import {SemanticDepGraph} from '../semantic_graph'; import {FileDependencyGraph} from './dependency_tracking'; /** - * Drives an incremental build, by tracking changes and determining which files need to be emitted. + * Discriminant of the `IncrementalState` union. */ -export class IncrementalDriver implements IncrementalBuild { - /** - * State of the current build. - * - * This transitions as the compilation progresses. - */ - private state: BuildState; - - private constructor( - state: PendingBuildState, readonly depGraph: FileDependencyGraph, - private logicalChanges: Set|null) { - this.state = state; - } - - /** - * Construct an `IncrementalDriver` with a starting state that incorporates the results of a - * previous build. - * - * The previous build's `BuildState` is reconciled with the new program's changes, and the results - * are merged into the new build's `PendingBuildState`. - */ - static reconcile( - oldProgram: ts.Program, oldDriver: IncrementalDriver, newProgram: ts.Program, - modifiedResourceFiles: Set|null, perf: PerfRecorder): IncrementalDriver { - return perf.inPhase(PerfPhase.Reconciliation, () => { - // Initialize the state of the current build based on the previous one. - let state: PendingBuildState; - if (oldDriver.state.kind === BuildStateKind.Pending) { - // The previous build never made it past the pending state. Reuse it as the starting state - // for this build. - state = oldDriver.state; - } else { - let priorGraph: SemanticDepGraph|null = null; - if (oldDriver.state.lastGood !== null) { - priorGraph = oldDriver.state.lastGood.semanticDepGraph; - } - - // The previous build was successfully analyzed. `pendingEmit` is the only state carried - // forward into this build. - state = { - kind: BuildStateKind.Pending, - pendingEmit: oldDriver.state.pendingEmit, - pendingTypeCheckEmit: oldDriver.state.pendingTypeCheckEmit, - changedResourcePaths: new Set(), - changedTsPaths: new Set(), - lastGood: oldDriver.state.lastGood, - semanticDepGraphUpdater: new SemanticDepGraphUpdater(priorGraph), - }; - } - - // Merge the freshly modified resource files with any prior ones. - if (modifiedResourceFiles !== null) { - for (const resFile of modifiedResourceFiles) { - state.changedResourcePaths.add(absoluteFrom(resFile)); - } - } - - // Next, process the files in the new program, with a couple of goals: - // 1) Determine which TS files have changed, if any, and merge them into `changedTsFiles`. - // 2) Produce a list of TS files which no longer exist in the program (they've been deleted - // since the previous compilation). These need to be removed from the state tracking to - // avoid leaking memory. - - // All files in the old program, for easy detection of changes. - const oldFiles = new Set(oldProgram.getSourceFiles()); - - // Assume all the old files were deleted to begin with. Only TS files are tracked. - const deletedTsPaths = new Set(tsOnlyFiles(oldProgram).map(sf => sf.fileName)); - - for (const newFile of newProgram.getSourceFiles()) { - if (!newFile.isDeclarationFile) { - // This file exists in the new program, so remove it from `deletedTsPaths`. - deletedTsPaths.delete(newFile.fileName); - } - - if (oldFiles.has(newFile)) { - // This file hasn't changed; no need to look at it further. - continue; - } - - // The file has changed since the last successful build. The appropriate reaction depends on - // what kind of file it is. - if (!newFile.isDeclarationFile) { - // It's a .ts file, so track it as a change. - state.changedTsPaths.add(newFile.fileName); - } else { - // It's a .d.ts file. Currently the compiler does not do a great job of tracking - // dependencies on .d.ts files, so bail out of incremental builds here and do a full - // build. This usually only happens if something in node_modules changes. - return IncrementalDriver.fresh(newProgram); - } - } - - // The next step is to remove any deleted files from the state. - for (const filePath of deletedTsPaths) { - state.pendingEmit.delete(filePath); - state.pendingTypeCheckEmit.delete(filePath); - - // Even if the file doesn't exist in the current compilation, it still might have been - // changed in a previous one, so delete it from the set of changed TS files, just in case. - state.changedTsPaths.delete(filePath); - } - - perf.eventCount(PerfEvent.SourceFilePhysicalChange, state.changedTsPaths.size); - - // Now, changedTsPaths contains physically changed TS paths. Use the previous program's - // logical dependency graph to determine logically changed files. - const depGraph = new FileDependencyGraph(); - - // If a previous compilation exists, use its dependency graph to determine the set of - // logically changed files. - let logicalChanges: Set|null = null; - if (state.lastGood !== null) { - // Extract the set of logically changed files. At the same time, this operation populates - // the current (fresh) dependency graph with information about those files which have not - // logically changed. - logicalChanges = depGraph.updateWithPhysicalChanges( - state.lastGood.depGraph, state.changedTsPaths, deletedTsPaths, - state.changedResourcePaths); - perf.eventCount(PerfEvent.SourceFileLogicalChange, logicalChanges.size); - for (const fileName of state.changedTsPaths) { - logicalChanges.add(fileName); - } - - // Any logically changed files need to be re-emitted. Most of the time this would happen - // regardless because the new dependency graph would _also_ identify the file as stale. - // However there are edge cases such as removing a component from an NgModule without adding - // it to another one, where the previous graph identifies the file as logically changed, but - // the new graph (which does not have that edge) fails to identify that the file should be - // re-emitted. - for (const change of logicalChanges) { - state.pendingEmit.add(change); - state.pendingTypeCheckEmit.add(change); - } - } - - // `state` now reflects the initial pending state of the current compilation. - return new IncrementalDriver(state, depGraph, logicalChanges); - }); - } - - static fresh(program: ts.Program): IncrementalDriver { - // Initialize the set of files which need to be emitted to the set of all TS files in the - // program. - const tsFiles = tsOnlyFiles(program); - - const state: PendingBuildState = { - kind: BuildStateKind.Pending, - pendingEmit: new Set(tsFiles.map(sf => sf.fileName)), - pendingTypeCheckEmit: new Set(tsFiles.map(sf => sf.fileName)), - changedResourcePaths: new Set(), - changedTsPaths: new Set(), - lastGood: null, - semanticDepGraphUpdater: new SemanticDepGraphUpdater(/* priorGraph */ null), - }; - - return new IncrementalDriver(state, new FileDependencyGraph(), /* logicalChanges */ null); - } - - getSemanticDepGraphUpdater(): SemanticDepGraphUpdater { - if (this.state.kind !== BuildStateKind.Pending) { - throw new Error('Semantic dependency updater is only available when pending analysis'); - } - return this.state.semanticDepGraphUpdater; - } - - recordSuccessfulAnalysis(traitCompiler: TraitCompiler): void { - if (this.state.kind !== BuildStateKind.Pending) { - // Changes have already been incorporated. - return; - } - - const {needsEmit, needsTypeCheckEmit, newGraph} = this.state.semanticDepGraphUpdater.finalize(); - - const pendingEmit = this.state.pendingEmit; - for (const path of needsEmit) { - pendingEmit.add(path); - } - - const pendingTypeCheckEmit = this.state.pendingTypeCheckEmit; - for (const path of needsTypeCheckEmit) { - pendingTypeCheckEmit.add(path); - } - - // Update the state to an `AnalyzedBuildState`. - this.state = { - kind: BuildStateKind.Analyzed, - pendingEmit, - pendingTypeCheckEmit, - - // Since this compilation was successfully analyzed, update the "last good" artifacts to the - // ones from the current compilation. - lastGood: { - depGraph: this.depGraph, - semanticDepGraph: newGraph, - traitCompiler: traitCompiler, - typeCheckingResults: null, - }, - - priorTypeCheckingResults: - this.state.lastGood !== null ? this.state.lastGood.typeCheckingResults : null, - }; - } - - recordSuccessfulTypeCheck(results: Map): void { - if (this.state.lastGood === null || this.state.kind !== BuildStateKind.Analyzed) { - return; - } - this.state.lastGood.typeCheckingResults = results; - - // Delete the files for which type-check code was generated from the set of pending type-check - // files. - for (const fileName of results.keys()) { - this.state.pendingTypeCheckEmit.delete(fileName); - } - } - - recordSuccessfulEmit(sf: ts.SourceFile): void { - this.state.pendingEmit.delete(sf.fileName); - } - - safeToSkipEmit(sf: ts.SourceFile): boolean { - return !this.state.pendingEmit.has(sf.fileName); - } - - priorWorkFor(sf: ts.SourceFile): ClassRecord[]|null { - if (this.state.lastGood === null || this.logicalChanges === null) { - // There is no previous good build, so no prior work exists. - return null; - } else if (this.logicalChanges.has(sf.fileName)) { - // Prior work might exist, but would be stale as the file in question has logically changed. - return null; - } else { - // Prior work might exist, and if it does then it's usable! - return this.state.lastGood.traitCompiler.recordsFor(sf); - } - } - - priorTypeCheckingResultsFor(sf: ts.SourceFile): FileTypeCheckingData|null { - if (this.state.kind !== BuildStateKind.Analyzed || - this.state.priorTypeCheckingResults === null || this.logicalChanges === null) { - return null; - } - - if (this.logicalChanges.has(sf.fileName) || this.state.pendingTypeCheckEmit.has(sf.fileName)) { - return null; - } - - const fileName = absoluteFromSourceFile(sf); - if (!this.state.priorTypeCheckingResults.has(fileName)) { - return null; - } - const data = this.state.priorTypeCheckingResults.get(fileName)!; - if (data.hasInlines) { - return null; - } - - return data; - } -} - -type BuildState = PendingBuildState|AnalyzedBuildState; - -enum BuildStateKind { - Pending, +export enum IncrementalStateKind { + Fresh, + Delta, Analyzed, } -interface BaseBuildState { - kind: BuildStateKind; - - /** - * The heart of incremental builds. This `Set` tracks the set of files which need to be emitted - * during the current compilation. - * - * This starts out as the set of files which are still pending from the previous program (or the - * full set of .ts files on a fresh build). - * - * After analysis, it's updated to include any files which might have changed and need a re-emit - * as a result of incremental changes. - * - * If an emit happens, any written files are removed from the `Set`, as they're no longer - * pending. - * - * Thus, after compilation `pendingEmit` should be empty (on a successful build) or contain the - * files which still need to be emitted but have not yet been (due to errors). - * - * `pendingEmit` is tracked as as `Set` instead of a `Set`, because the - * contents of the file are not important here, only whether or not the current version of it - * needs to be emitted. The `string`s here are TS file paths. - * - * See the README.md for more information on this algorithm. - */ - pendingEmit: Set; - - /** - * Similar to `pendingEmit`, but then for representing the set of files for which the type-check - * file should be regenerated. It behaves identically with respect to errored compilations as - * `pendingEmit`. - */ - pendingTypeCheckEmit: Set; - - - /** - * Specific aspects of the last compilation which successfully completed analysis, if any. - */ - lastGood: { - /** - * The dependency graph from the last successfully analyzed build. - * - * This is used to determine the logical impact of physical file changes. - */ - depGraph: FileDependencyGraph; - - /** - * The semantic dependency graph from the last successfully analyzed build. - * - * This is used to perform in-depth comparison of Angular decorated classes, to determine - * which files have to be re-emitted and/or re-type-checked. - */ - semanticDepGraph: SemanticDepGraph; - - /** - * The `TraitCompiler` from the last successfully analyzed build. - * - * This is used to extract "prior work" which might be reusable in this compilation. - */ - traitCompiler: TraitCompiler; - - /** - * Type checking results which will be passed onto the next build. - */ - typeCheckingResults: Map| null; - }|null; +/** + * Placeholder state for a fresh compilation that has never been successfully analyzed. + */ +export interface FreshIncrementalState { + kind: IncrementalStateKind.Fresh; } /** - * State of a build before the Angular analysis phase completes. + * State captured from a compilation that completed analysis successfully, that can serve as a + * starting point for a future incremental build. */ -interface PendingBuildState extends BaseBuildState { - kind: BuildStateKind.Pending; +export interface AnalyzedIncrementalState { + kind: IncrementalStateKind.Analyzed; /** - * Set of files which are known to need an emit. + * Dependency graph extracted from the build, to be used to determine the logical impact of + * physical file changes. + */ + depGraph: FileDependencyGraph; + + /** + * The semantic dependency graph from the build. * - * Before the compiler's analysis phase completes, `pendingEmit` only contains files that were - * still pending after the previous build. + * This is used to perform in-depth comparison of Angular decorated classes, to determine + * which files have to be re-emitted and/or re-type-checked. */ - pendingEmit: Set; + semanticDepGraph: SemanticDepGraph; /** - * Set of TypeScript file paths which have changed since the last successfully analyzed build. + * The analysis data from a prior compilation. This stores the trait information for all source + * files that was present in a prior compilation. */ - changedTsPaths: Set; + priorAnalysis: Map; /** - * Set of resource file paths which have changed since the last successfully analyzed build. + * All generated template type-checking files produced as part of this compilation, or `null` if + * type-checking was not (yet) performed. */ - changedResourcePaths: Set; + typeCheckResults: Map|null; /** - * In a pending state, the semantic dependency graph is available to the compilation to register - * the incremental symbols into. + * Cumulative set of source file paths which were definitively emitted by this compilation or + * carried forward from a prior one. */ - semanticDepGraphUpdater: SemanticDepGraphUpdater; + emitted: Set; + + /** + * Map of source file paths to the version of this file as seen in the compilation. + */ + versions: Map|null; } -interface AnalyzedBuildState extends BaseBuildState { - kind: BuildStateKind.Analyzed; +/** + * Incremental state for a compilation that has not been successfully analyzed, but that can be + * based on a previous compilation which was. + * + * This is the state produced by an incremeental compilation until its own analysis succeeds. If + * analysis fails, this state carries forward information about which files have changed since the + * last successful build (the `lastAnalyzedState`), so that the next incremental build can consider + * the total delta between the `lastAnalyzedState` and the current program in its incremental + * analysis. + */ +export interface DeltaIncrementalState { + kind: IncrementalStateKind.Delta; /** - * Set of files which are known to need an emit. - * - * After analysis completes (that is, the state transitions to `AnalyzedBuildState`), the - * `pendingEmit` set takes into account any on-disk changes made since the last successfully - * analyzed build. + * If available, the `AnalyzedIncrementalState` for the most recent ancestor of the current + * program which was successfully analyzed. */ - pendingEmit: Set; + lastAnalyzedState: AnalyzedIncrementalState; /** - * Type checking results from the previous compilation, which can be reused in this one. + * Set of file paths which have changed since the `lastAnalyzedState` compilation. */ - priorTypeCheckingResults: Map|null; + physicallyChangedTsFiles: Set; + + /** + * Set of resource file paths which have changed since the `lastAnalyzedState` compilation. + */ + changedResourceFiles: Set; } -function tsOnlyFiles(program: ts.Program): ReadonlyArray { - return program.getSourceFiles().filter(sf => !sf.isDeclarationFile); -} +/** + * State produced by a compilation that's usable as the starting point for a subsequent compilation. + * + * Discriminated by the `IncrementalStateKind` enum. + */ +export type IncrementalState = AnalyzedIncrementalState|DeltaIncrementalState|FreshIncrementalState; diff --git a/packages/compiler-cli/src/ngtsc/incremental/src/strategy.ts b/packages/compiler-cli/src/ngtsc/incremental/src/strategy.ts index 9eacb262c7..94525a767a 100644 --- a/packages/compiler-cli/src/ngtsc/incremental/src/strategy.ts +++ b/packages/compiler-cli/src/ngtsc/incremental/src/strategy.ts @@ -7,7 +7,7 @@ */ import * as ts from 'typescript'; -import {IncrementalDriver} from './state'; +import {IncrementalState} from './state'; /** * Strategy used to manage the association between a `ts.Program` and the `IncrementalDriver` which @@ -17,13 +17,13 @@ export interface IncrementalBuildStrategy { /** * Determine the Angular `IncrementalDriver` for the given `ts.Program`, if one is available. */ - getIncrementalDriver(program: ts.Program): IncrementalDriver|null; + getIncrementalState(program: ts.Program): IncrementalState|null; /** * Associate the given `IncrementalDriver` with the given `ts.Program` and make it available to * future compilations. */ - setIncrementalDriver(driver: IncrementalDriver, program: ts.Program): void; + setIncrementalState(driver: IncrementalState, program: ts.Program): void; /** * Convert this `IncrementalBuildStrategy` into a possibly new instance to be used in the next @@ -37,11 +37,11 @@ export interface IncrementalBuildStrategy { * incremental data. */ export class NoopIncrementalBuildStrategy implements IncrementalBuildStrategy { - getIncrementalDriver(): null { + getIncrementalState(): null { return null; } - setIncrementalDriver(): void {} + setIncrementalState(): void {} toNextBuildStrategy(): IncrementalBuildStrategy { return this; @@ -52,22 +52,22 @@ export class NoopIncrementalBuildStrategy implements IncrementalBuildStrategy { * Tracks an `IncrementalDriver` within the strategy itself. */ export class TrackedIncrementalBuildStrategy implements IncrementalBuildStrategy { - private driver: IncrementalDriver|null = null; + private state: IncrementalState|null = null; private isSet: boolean = false; - getIncrementalDriver(): IncrementalDriver|null { - return this.driver; + getIncrementalState(): IncrementalState|null { + return this.state; } - setIncrementalDriver(driver: IncrementalDriver): void { - this.driver = driver; + setIncrementalState(state: IncrementalState): void { + this.state = state; this.isSet = true; } toNextBuildStrategy(): TrackedIncrementalBuildStrategy { const strategy = new TrackedIncrementalBuildStrategy(); - // Only reuse a driver that was explicitly set via `setIncrementalDriver`. - strategy.driver = this.isSet ? this.driver : null; + // Only reuse state that was explicitly set via `setIncrementalState`. + strategy.state = this.isSet ? this.state : null; return strategy; } } @@ -77,16 +77,16 @@ export class TrackedIncrementalBuildStrategy implements IncrementalBuildStrategy * program under `SYM_INCREMENTAL_DRIVER`. */ export class PatchedProgramIncrementalBuildStrategy implements IncrementalBuildStrategy { - getIncrementalDriver(program: ts.Program): IncrementalDriver|null { - const driver = (program as any)[SYM_INCREMENTAL_DRIVER]; - if (driver === undefined || !(driver instanceof IncrementalDriver)) { + getIncrementalState(program: ts.Program): IncrementalState|null { + const state = (program as MayHaveIncrementalState)[SYM_INCREMENTAL_STATE]; + if (state === undefined) { return null; } - return driver; + return state; } - setIncrementalDriver(driver: IncrementalDriver, program: ts.Program): void { - (program as any)[SYM_INCREMENTAL_DRIVER] = driver; + setIncrementalState(state: IncrementalState, program: ts.Program): void { + (program as MayHaveIncrementalState)[SYM_INCREMENTAL_STATE] = state; } toNextBuildStrategy(): IncrementalBuildStrategy { @@ -108,4 +108,8 @@ export class PatchedProgramIncrementalBuildStrategy implements IncrementalBuildS * support this behind the API of passing an old `ts.Program`, the `IncrementalDriver` is stored on * the `ts.Program` under this symbol. */ -const SYM_INCREMENTAL_DRIVER = Symbol('NgIncrementalDriver'); +const SYM_INCREMENTAL_STATE = Symbol('NgIncrementalState'); + +interface MayHaveIncrementalState { + [SYM_INCREMENTAL_STATE]?: IncrementalState; +} diff --git a/packages/compiler-cli/src/ngtsc/incremental/test/BUILD.bazel b/packages/compiler-cli/src/ngtsc/incremental/test/BUILD.bazel new file mode 100644 index 0000000000..77fb8e15f5 --- /dev/null +++ b/packages/compiler-cli/src/ngtsc/incremental/test/BUILD.bazel @@ -0,0 +1,30 @@ +load("//tools:defaults.bzl", "jasmine_node_test", "ts_library") + +package(default_visibility = ["//visibility:public"]) + +ts_library( + name = "test_lib", + testonly = True, + srcs = glob([ + "**/*.ts", + ]), + deps = [ + "//packages:types", + "//packages/compiler", + "//packages/compiler-cli/src/ngtsc/file_system", + "//packages/compiler-cli/src/ngtsc/file_system/testing", + "//packages/compiler-cli/src/ngtsc/incremental", + "//packages/compiler-cli/src/ngtsc/perf", + "//packages/compiler-cli/src/ngtsc/testing", + "//packages/compiler-cli/src/ngtsc/transform", + "@npm//typescript", + ], +) + +jasmine_node_test( + name = "test", + bootstrap = ["//tools/testing:node_no_angular_es5"], + deps = [ + ":test_lib", + ], +) diff --git a/packages/compiler-cli/src/ngtsc/incremental/test/incremental_spec.ts b/packages/compiler-cli/src/ngtsc/incremental/test/incremental_spec.ts new file mode 100644 index 0000000000..1dd3edca02 --- /dev/null +++ b/packages/compiler-cli/src/ngtsc/incremental/test/incremental_spec.ts @@ -0,0 +1,43 @@ +/** + * @license + * 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 + */ + +import {absoluteFrom, getSourceFileOrError} from '../../file_system'; +import {runInEachFileSystem} from '../../file_system/testing'; +import {NOOP_PERF_RECORDER} from '../../perf'; +import {makeProgram} from '../../testing'; +import {TraitCompiler} from '../../transform'; +import {IncrementalCompilation} from '../src/incremental'; + +runInEachFileSystem(() => { + describe('incremental reconciliation', () => { + it('should treat source files with changed versions as changed', () => { + const FOO_PATH = absoluteFrom('/foo.ts'); + const {program} = makeProgram([ + {name: FOO_PATH, contents: `export const FOO = true;`}, + ]); + const fooSf = getSourceFileOrError(program, FOO_PATH); + const traitCompiler = {getAnalyzedRecords: () => new Map()} as TraitCompiler; + + const versionMapFirst = new Map([[FOO_PATH, 'version.1']]); + const firstCompilation = IncrementalCompilation.fresh( + program, + versionMapFirst, + ); + firstCompilation.recordSuccessfulAnalysis(traitCompiler); + firstCompilation.recordSuccessfulEmit(fooSf); + + const versionMapSecond = new Map([[FOO_PATH, 'version.2']]); + const secondCompilation = IncrementalCompilation.incremental( + program, versionMapSecond, program, firstCompilation.state, new Set(), + NOOP_PERF_RECORDER); + + secondCompilation.recordSuccessfulAnalysis(traitCompiler); + expect(secondCompilation.safeToSkipEmit(fooSf)).toBeFalse(); + }); + }); +}); diff --git a/packages/compiler-cli/src/ngtsc/indexer/src/template.ts b/packages/compiler-cli/src/ngtsc/indexer/src/template.ts index e8ec2507ed..b7c3693925 100644 --- a/packages/compiler-cli/src/ngtsc/indexer/src/template.ts +++ b/packages/compiler-cli/src/ngtsc/indexer/src/template.ts @@ -62,21 +62,21 @@ class ExpressionVisitor extends RecursiveAstVisitor { return visitor.identifiers; } - visit(ast: AST) { + override visit(ast: AST) { ast.visit(this); } - visitMethodCall(ast: MethodCall, context: {}) { + override visitMethodCall(ast: MethodCall, context: {}) { this.visitIdentifier(ast, IdentifierKind.Method); super.visitMethodCall(ast, context); } - visitPropertyRead(ast: PropertyRead, context: {}) { + override visitPropertyRead(ast: PropertyRead, context: {}) { this.visitIdentifier(ast, IdentifierKind.Property); super.visitPropertyRead(ast, context); } - visitPropertyWrite(ast: PropertyWrite, context: {}) { + override visitPropertyWrite(ast: PropertyWrite, context: {}) { this.visitIdentifier(ast, IdentifierKind.Property); super.visitPropertyWrite(ast, context); } @@ -165,7 +165,7 @@ class TemplateVisitor extends TmplAstRecursiveVisitor { * * @param element */ - visitElement(element: TmplAstElement) { + override visitElement(element: TmplAstElement) { const elementIdentifier = this.elementOrTemplateToIdentifier(element); this.identifiers.add(elementIdentifier); @@ -176,7 +176,7 @@ class TemplateVisitor extends TmplAstRecursiveVisitor { this.visitAll(element.children); this.visitAll(element.outputs); } - visitTemplate(template: TmplAstTemplate) { + override visitTemplate(template: TmplAstTemplate) { const templateIdentifier = this.elementOrTemplateToIdentifier(template); this.identifiers.add(templateIdentifier); @@ -187,7 +187,7 @@ class TemplateVisitor extends TmplAstRecursiveVisitor { this.visitAll(template.children); this.visitAll(template.references); } - visitBoundAttribute(attribute: TmplAstBoundAttribute) { + override visitBoundAttribute(attribute: TmplAstBoundAttribute) { // If the bound attribute has no value, it cannot have any identifiers in the value expression. if (attribute.valueSpan === undefined) { return; @@ -198,18 +198,18 @@ class TemplateVisitor extends TmplAstRecursiveVisitor { this.boundTemplate, this.targetToIdentifier.bind(this)); identifiers.forEach(id => this.identifiers.add(id)); } - visitBoundEvent(attribute: TmplAstBoundEvent) { + override visitBoundEvent(attribute: TmplAstBoundEvent) { this.visitExpression(attribute.handler); } - visitBoundText(text: TmplAstBoundText) { + override visitBoundText(text: TmplAstBoundText) { this.visitExpression(text.value); } - visitReference(reference: TmplAstReference) { + override visitReference(reference: TmplAstReference) { const referenceIdentifer = this.targetToIdentifier(reference); this.identifiers.add(referenceIdentifer); } - visitVariable(variable: TmplAstVariable) { + override visitVariable(variable: TmplAstVariable) { const variableIdentifier = this.targetToIdentifier(variable); this.identifiers.add(variableIdentifier); diff --git a/packages/compiler-cli/src/ngtsc/metadata/src/api.ts b/packages/compiler-cli/src/ngtsc/metadata/src/api.ts index 0b48090de9..d686e2faab 100644 --- a/packages/compiler-cli/src/ngtsc/metadata/src/api.ts +++ b/packages/compiler-cli/src/ngtsc/metadata/src/api.ts @@ -80,10 +80,17 @@ export interface DirectiveTypeCheckMeta { isGeneric: boolean; } +export enum MetaType { + Pipe, + Directive, +} + /** * Metadata collected for a directive within an NgModule's scope. */ export interface DirectiveMeta extends T2DirectiveMeta, DirectiveTypeCheckMeta { + type: MetaType.Directive; + ref: Reference; /** * Unparsed selector of the directive, or null if the directive does not have a selector. @@ -144,8 +151,10 @@ export interface TemplateGuardMeta { * Metadata for a pipe within an NgModule's scope. */ export interface PipeMeta { + type: MetaType.Pipe; ref: Reference; name: string; + nameExpr: ts.Expression|null; } /** diff --git a/packages/compiler-cli/src/ngtsc/metadata/src/dts.ts b/packages/compiler-cli/src/ngtsc/metadata/src/dts.ts index d88bf1a296..2ea11b0c8e 100644 --- a/packages/compiler-cli/src/ngtsc/metadata/src/dts.ts +++ b/packages/compiler-cli/src/ngtsc/metadata/src/dts.ts @@ -11,7 +11,7 @@ import * as ts from 'typescript'; import {Reference} from '../../imports'; import {ClassDeclaration, isNamedClassDeclaration, ReflectionHost, TypeValueReferenceKind} from '../../reflection'; -import {DirectiveMeta, MetadataReader, NgModuleMeta, PipeMeta} from './api'; +import {DirectiveMeta, MetadataReader, MetaType, NgModuleMeta, PipeMeta} from './api'; import {ClassPropertyMapping} from './property_mapping'; import {extractDirectiveTypeCheckMeta, extractReferencesFromType, readStringArrayType, readStringMapType, readStringType} from './util'; @@ -30,7 +30,7 @@ export class DtsMetadataReader implements MetadataReader { */ getNgModuleMetadata(ref: Reference): NgModuleMeta|null { const clazz = ref.node; - const resolutionContext = clazz.getSourceFile().fileName; + // This operation is explicitly not memoized, as it depends on `ref.ownedByModuleGuess`. // TODO(alxhub): investigate caching of .d.ts module metadata. const ngModuleDef = this.reflector.getMembersOfClass(clazz).find( @@ -49,12 +49,10 @@ export class DtsMetadataReader implements MetadataReader { const [_, declarationMetadata, importMetadata, exportMetadata] = ngModuleDef.type.typeArguments; return { ref, - declarations: extractReferencesFromType( - this.checker, declarationMetadata, ref.ownedByModuleGuess, resolutionContext), - exports: extractReferencesFromType( - this.checker, exportMetadata, ref.ownedByModuleGuess, resolutionContext), - imports: extractReferencesFromType( - this.checker, importMetadata, ref.ownedByModuleGuess, resolutionContext), + declarations: + extractReferencesFromType(this.checker, declarationMetadata, ref.bestGuessOwningModule), + exports: extractReferencesFromType(this.checker, exportMetadata, ref.bestGuessOwningModule), + imports: extractReferencesFromType(this.checker, importMetadata, ref.bestGuessOwningModule), schemas: [], rawDeclarations: null, }; @@ -95,6 +93,7 @@ export class DtsMetadataReader implements MetadataReader { const outputs = ClassPropertyMapping.fromMappedObject(readStringMapType(def.type.typeArguments[4])); return { + type: MetaType.Directive, ref, name: clazz.name.text, isComponent, @@ -131,7 +130,12 @@ export class DtsMetadataReader implements MetadataReader { return null; } const name = type.literal.text; - return {ref, name}; + return { + type: MetaType.Pipe, + ref, + name, + nameExpr: null, + }; } } diff --git a/packages/compiler-cli/src/ngtsc/metadata/src/util.ts b/packages/compiler-cli/src/ngtsc/metadata/src/util.ts index a27a1b2654..597417440f 100644 --- a/packages/compiler-cli/src/ngtsc/metadata/src/util.ts +++ b/packages/compiler-cli/src/ngtsc/metadata/src/util.ts @@ -8,7 +8,7 @@ import * as ts from 'typescript'; -import {Reference} from '../../imports'; +import {OwningModule, Reference} from '../../imports'; import {ClassDeclaration, ClassMember, ClassMemberKind, isNamedClassDeclaration, ReflectionHost, reflectTypeEntityToDeclaration} from '../../reflection'; import {nodeDebugInfo} from '../../util/src/typescript'; @@ -16,8 +16,8 @@ import {DirectiveMeta, DirectiveTypeCheckMeta, MetadataReader, NgModuleMeta, Pip import {ClassPropertyMapping, ClassPropertyName} from './property_mapping'; export function extractReferencesFromType( - checker: ts.TypeChecker, def: ts.TypeNode, ngModuleImportedFrom: string|null, - resolutionContext: string): Reference[] { + checker: ts.TypeChecker, def: ts.TypeNode, + bestGuessOwningModule: OwningModule|null): Reference[] { if (!ts.isTupleTypeNode(def)) { return []; } @@ -31,11 +31,15 @@ export function extractReferencesFromType( if (!isNamedClassDeclaration(node)) { throw new Error(`Expected named ClassDeclaration: ${nodeDebugInfo(node)}`); } - const specifier = (from !== null && !from.startsWith('.') ? from : ngModuleImportedFrom); - if (specifier !== null) { - return new Reference(node, {specifier, resolutionContext}); + if (from !== null && !from.startsWith('.')) { + // The symbol was imported using an absolute module specifier so return a reference that + // uses that absolute module specifier as its best guess owning module. + return new Reference( + node, {specifier: from, resolutionContext: def.getSourceFile().fileName}); } else { - return new Reference(node); + // For local symbols or symbols that were imported using a relative module import it is + // assumed that the symbol is exported from the provided best guess owning module. + return new Reference(node, bestGuessOwningModule); } }); } diff --git a/packages/compiler-cli/src/ngtsc/metadata/test/dts_spec.ts b/packages/compiler-cli/src/ngtsc/metadata/test/dts_spec.ts index c34de79b16..f3acf1e479 100644 --- a/packages/compiler-cli/src/ngtsc/metadata/test/dts_spec.ts +++ b/packages/compiler-cli/src/ngtsc/metadata/test/dts_spec.ts @@ -10,7 +10,7 @@ import * as ts from 'typescript'; import {absoluteFrom, getFileSystem, getSourceFileOrError} from '../../file_system'; import {runInEachFileSystem} from '../../file_system/testing'; -import {Reference} from '../../imports'; +import {OwningModule, Reference} from '../../imports'; import {isNamedClassDeclaration, TypeScriptReflectionHost} from '../../reflection'; import {loadFakeCore, makeProgram} from '../../testing'; @@ -89,5 +89,93 @@ runInEachFileSystem(() => { const meta = dtsReader.getDirectiveMetadata(new Reference(clazz))!; expect(meta.isStructural).toBeTrue(); }); + + it('should retain an absolute owning module for relative imports', () => { + const externalPath = absoluteFrom('/external.d.ts'); + const {program} = makeProgram( + [ + { + name: externalPath, + contents: ` + import * as i0 from '@angular/core'; + import * as i1 from 'absolute'; + import * as i2 from './relative'; + + export declare class ExternalModule { + static ɵmod: i0.ɵɵNgModuleDeclaration; + } + ` + }, + { + name: absoluteFrom('/relative.d.ts'), + contents: ` + import * as i0 from '@angular/core'; + + export declare class RelativeDir { + static ɵdir: i0.ɵɵDirectiveDeclaration; + } + ` + }, + { + name: absoluteFrom('/node_modules/absolute.d.ts'), + contents: ` + import * as i0 from '@angular/core'; + + export declare class AbsoluteDir { + static ɵdir: i0.ɵɵDirectiveDeclaration; + } + ` + } + ], + { + skipLibCheck: true, + lib: ['es6', 'dom'], + }); + + const externalSf = getSourceFileOrError(program, externalPath); + const clazz = externalSf.statements[3]; + if (!isNamedClassDeclaration(clazz)) { + return fail('Expected class declaration'); + } + + const typeChecker = program.getTypeChecker(); + const dtsReader = + new DtsMetadataReader(typeChecker, new TypeScriptReflectionHost(typeChecker)); + + const withoutOwningModule = dtsReader.getNgModuleMetadata(new Reference(clazz))!; + expect(withoutOwningModule.exports.length).toBe(2); + + // `AbsoluteDir` was imported from an absolute module so the export Reference should have + // a corresponding best guess owning module. + expect(withoutOwningModule.exports[0].bestGuessOwningModule).toEqual({ + specifier: 'absolute', + resolutionContext: externalSf.fileName, + }); + + // `RelativeDir` was imported from a relative module specifier so the original reference's + // best guess owning module should have been retained, which was null. + expect(withoutOwningModule.exports[1].bestGuessOwningModule).toBeNull(); + + const owningModule: OwningModule = { + specifier: 'module', + resolutionContext: absoluteFrom('/context.ts'), + }; + const withOwningModule = dtsReader.getNgModuleMetadata(new Reference(clazz, owningModule))!; + expect(withOwningModule.exports.length).toBe(2); + + // Again, `AbsoluteDir` was imported from an absolute module so the export Reference should + // have a corresponding best guess owning module; the owning module of the incoming reference + // is irrelevant here. + expect(withOwningModule.exports[0].bestGuessOwningModule).toEqual({ + specifier: 'absolute', + resolutionContext: externalSf.fileName, + }); + + // As `RelativeDir` was imported from a relative module specifier, the export Reference should + // continue to have the owning module of the incoming reference as the relatively imported + // symbol is assumed to also be exported from the absolute module specifier as captured in the + // best guess owning module. + expect(withOwningModule.exports[1].bestGuessOwningModule).toEqual(owningModule); + }); }); }); diff --git a/packages/compiler-cli/src/ngtsc/modulewithproviders/BUILD.bazel b/packages/compiler-cli/src/ngtsc/modulewithproviders/BUILD.bazel deleted file mode 100644 index 2dfe50b6ba..0000000000 --- a/packages/compiler-cli/src/ngtsc/modulewithproviders/BUILD.bazel +++ /dev/null @@ -1,17 +0,0 @@ -load("//tools:defaults.bzl", "ts_library") - -package(default_visibility = ["//visibility:public"]) - -ts_library( - name = "modulewithproviders", - srcs = ["index.ts"] + glob([ - "src/**/*.ts", - ]), - deps = [ - "//packages/compiler", - "//packages/compiler-cli/src/ngtsc/imports", - "//packages/compiler-cli/src/ngtsc/partial_evaluator", - "//packages/compiler-cli/src/ngtsc/reflection", - "@npm//typescript", - ], -) diff --git a/packages/compiler-cli/src/ngtsc/modulewithproviders/src/scanner.ts b/packages/compiler-cli/src/ngtsc/modulewithproviders/src/scanner.ts deleted file mode 100644 index 573dd20a2d..0000000000 --- a/packages/compiler-cli/src/ngtsc/modulewithproviders/src/scanner.ts +++ /dev/null @@ -1,166 +0,0 @@ -/** - * @license - * 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 - */ - -import {ExpressionType, ExternalExpr, R3Identifiers as Identifiers, Type} from '@angular/compiler'; -import * as ts from 'typescript'; - -import {ImportFlags, Reference, ReferenceEmitter} from '../../imports'; -import {PartialEvaluator, ResolvedValueMap} from '../../partial_evaluator'; -import {ReflectionHost} from '../../reflection'; - -export interface DtsHandler { - addTypeReplacement(node: ts.Declaration, type: Type): void; -} - -export class ModuleWithProvidersScanner { - constructor( - private host: ReflectionHost, private evaluator: PartialEvaluator, - private emitter: ReferenceEmitter) {} - - scan(sf: ts.SourceFile, dts: DtsHandler): void { - for (const stmt of sf.statements) { - this.visitStatement(dts, stmt); - } - } - - private visitStatement(dts: DtsHandler, stmt: ts.Statement): void { - // Detect whether a statement is exported, which is used as one of the hints whether to look - // more closely at possible MWP functions within. This is a syntactic check, not a semantic - // check, so it won't detect cases like: - // - // var X = ...; - // export {X} - // - // This is intentional, because the alternative is slow and this will catch 99% of the cases we - // need to handle. - const isExported = stmt.modifiers !== undefined && - stmt.modifiers.some(mod => mod.kind === ts.SyntaxKind.ExportKeyword); - - if (!isExported) { - return; - } - - if (ts.isClassDeclaration(stmt)) { - for (const member of stmt.members) { - if (!ts.isMethodDeclaration(member) || !isStatic(member)) { - continue; - } - - this.visitFunctionOrMethodDeclaration(dts, member); - } - } else if (ts.isFunctionDeclaration(stmt)) { - this.visitFunctionOrMethodDeclaration(dts, stmt); - } - } - - private visitFunctionOrMethodDeclaration( - dts: DtsHandler, decl: ts.MethodDeclaration|ts.FunctionDeclaration): void { - // First, some sanity. This should have a method body with a single return statement. - if (decl.body === undefined || decl.body.statements.length !== 1) { - return; - } - const retStmt = decl.body.statements[0]; - if (!ts.isReturnStatement(retStmt) || retStmt.expression === undefined) { - return; - } - const retValue = retStmt.expression; - - // Now, look at the return type of the method. Maybe bail if the type is already marked, or if - // it's incompatible with a MWP function. - const returnType = this.returnTypeOf(decl); - if (returnType === ReturnType.OTHER || returnType === ReturnType.MWP_WITH_TYPE) { - // Don't process this declaration, it either already declares the right return type, or an - // incompatible one. - return; - } - - const value = this.evaluator.evaluate(retValue); - if (!(value instanceof Map) || !value.has('ngModule')) { - // The return value does not provide sufficient information to be able to add a generic type. - return; - } - - if (returnType === ReturnType.INFERRED && !isModuleWithProvidersType(value)) { - // The return type is inferred but the returned object is not of the correct shape, so we - // shouldn's modify the return type to become `ModuleWithProviders`. - return; - } - - // The return type has been verified to represent the `ModuleWithProviders` type, but either the - // return type is inferred or the generic type argument is missing. In both cases, a new return - // type is created where the `ngModule` type is included as generic type argument. - const ngModule = value.get('ngModule'); - if (!(ngModule instanceof Reference) || !ts.isClassDeclaration(ngModule.node)) { - return; - } - - const ngModuleExpr = - this.emitter.emit(ngModule, decl.getSourceFile(), ImportFlags.ForceNewImport); - const ngModuleType = new ExpressionType(ngModuleExpr.expression); - const mwpNgType = new ExpressionType( - new ExternalExpr(Identifiers.ModuleWithProviders), [/* modifiers */], [ngModuleType]); - - dts.addTypeReplacement(decl, mwpNgType); - } - - private returnTypeOf(decl: ts.FunctionDeclaration|ts.MethodDeclaration| - ts.VariableDeclaration): ReturnType { - if (decl.type === undefined) { - return ReturnType.INFERRED; - } else if (!ts.isTypeReferenceNode(decl.type)) { - return ReturnType.OTHER; - } - - // Try to figure out if the type is of a familiar form, something that looks like it was - // imported. - let typeId: ts.Identifier; - if (ts.isIdentifier(decl.type.typeName)) { - // def: ModuleWithProviders - typeId = decl.type.typeName; - } else if (ts.isQualifiedName(decl.type.typeName) && ts.isIdentifier(decl.type.typeName.left)) { - // def: i0.ModuleWithProviders - typeId = decl.type.typeName.right; - } else { - return ReturnType.OTHER; - } - - const importDecl = this.host.getImportOfIdentifier(typeId); - if (importDecl === null || importDecl.from !== '@angular/core' || - importDecl.name !== 'ModuleWithProviders') { - return ReturnType.OTHER; - } - - if (decl.type.typeArguments === undefined || decl.type.typeArguments.length === 0) { - // The return type is indeed ModuleWithProviders, but no generic type parameter was found. - return ReturnType.MWP_NO_TYPE; - } else { - // The return type is ModuleWithProviders, and the user has already specified a generic type. - return ReturnType.MWP_WITH_TYPE; - } - } -} - -enum ReturnType { - INFERRED, - MWP_NO_TYPE, - MWP_WITH_TYPE, - OTHER, -} - -/** Whether the resolved value map represents a ModuleWithProviders object */ -function isModuleWithProvidersType(value: ResolvedValueMap): boolean { - const ngModule = value.has('ngModule'); - const providers = value.has('providers'); - - return ngModule && (value.size === 1 || (providers && value.size === 2)); -} - -function isStatic(node: ts.Node): boolean { - return node.modifiers !== undefined && - node.modifiers.some(mod => mod.kind === ts.SyntaxKind.StaticKeyword); -} diff --git a/packages/compiler-cli/src/ngtsc/partial_evaluator/src/builtin.ts b/packages/compiler-cli/src/ngtsc/partial_evaluator/src/builtin.ts index 8f28792609..92ad9d60a0 100644 --- a/packages/compiler-cli/src/ngtsc/partial_evaluator/src/builtin.ts +++ b/packages/compiler-cli/src/ngtsc/partial_evaluator/src/builtin.ts @@ -16,7 +16,7 @@ export class ArraySliceBuiltinFn extends KnownFn { super(); } - evaluate(node: ts.CallExpression, args: ResolvedValueArray): ResolvedValue { + override evaluate(node: ts.CallExpression, args: ResolvedValueArray): ResolvedValue { if (args.length === 0) { return this.lhs; } else { @@ -30,7 +30,7 @@ export class ArrayConcatBuiltinFn extends KnownFn { super(); } - evaluate(node: ts.CallExpression, args: ResolvedValueArray): ResolvedValue { + override evaluate(node: ts.CallExpression, args: ResolvedValueArray): ResolvedValue { const result: ResolvedValueArray = [...this.lhs]; for (const arg of args) { if (arg instanceof DynamicValue) { @@ -46,7 +46,7 @@ export class ArrayConcatBuiltinFn extends KnownFn { } export class ObjectAssignBuiltinFn extends KnownFn { - evaluate(node: ts.CallExpression, args: ResolvedValueArray): ResolvedValue { + override evaluate(node: ts.CallExpression, args: ResolvedValueArray): ResolvedValue { if (args.length === 0) { return DynamicValue.fromUnsupportedSyntax(node); } diff --git a/packages/compiler-cli/src/ngtsc/partial_evaluator/src/diagnostics.ts b/packages/compiler-cli/src/ngtsc/partial_evaluator/src/diagnostics.ts index e270cb213c..17af7e00f6 100644 --- a/packages/compiler-cli/src/ngtsc/partial_evaluator/src/diagnostics.ts +++ b/packages/compiler-cli/src/ngtsc/partial_evaluator/src/diagnostics.ts @@ -127,6 +127,10 @@ class TraceDynamicValueVisitor implements DynamicValueVisitor { return new DynamicValue(node, fn, DynamicValueReason.COMPLEX_FUNCTION_CALL); } + static fromDynamicType(node: ts.TypeNode): DynamicValue { + return new DynamicValue(node, undefined, DynamicValueReason.DYNAMIC_TYPE); + } + static fromUnknown(node: ts.Node): DynamicValue { return new DynamicValue(node, undefined, DynamicValueReason.UNKNOWN); } @@ -136,6 +156,10 @@ export class DynamicValue { return this.code === DynamicValueReason.COMPLEX_FUNCTION_CALL; } + isFromDynamicType(this: DynamicValue): this is DynamicValue { + return this.code === DynamicValueReason.DYNAMIC_TYPE; + } + isFromUnknown(this: DynamicValue): this is DynamicValue { return this.code === DynamicValueReason.UNKNOWN; } @@ -158,6 +182,8 @@ export class DynamicValue { case DynamicValueReason.COMPLEX_FUNCTION_CALL: return visitor.visitComplexFunctionCall( this as unknown as DynamicValue); + case DynamicValueReason.DYNAMIC_TYPE: + return visitor.visitDynamicType(this); case DynamicValueReason.UNKNOWN: return visitor.visitUnknown(this); } @@ -172,5 +198,6 @@ export interface DynamicValueVisitor { visitUnknownIdentifier(value: DynamicValue): R; visitInvalidExpressionType(value: DynamicValue): R; visitComplexFunctionCall(value: DynamicValue): R; + visitDynamicType(value: DynamicValue): R; visitUnknown(value: DynamicValue): R; } diff --git a/packages/compiler-cli/src/ngtsc/partial_evaluator/src/interpreter.ts b/packages/compiler-cli/src/ngtsc/partial_evaluator/src/interpreter.ts index 5579e6ccf3..7102efbcdd 100644 --- a/packages/compiler-cli/src/ngtsc/partial_evaluator/src/interpreter.ts +++ b/packages/compiler-cli/src/ngtsc/partial_evaluator/src/interpreter.ts @@ -276,12 +276,28 @@ export class StaticInterpreter { return this.getReference(node, context); } } - private visitVariableDeclaration(node: ts.VariableDeclaration, context: Context): ResolvedValue { const value = this.host.getVariableValue(node); if (value !== null) { return this.visitExpression(value, context); } else if (isVariableDeclarationDeclared(node)) { + // If the declaration has a literal type that can be statically reduced to a value, resolve to + // that value. If not, the historical behavior for variable declarations is to return a + // `Reference` to the variable, as the consumer could use it in a context where knowing its + // static value is not necessary. + // + // Arguably, since the value cannot be statically determined, we should return a + // `DynamicValue`. This returns a `Reference` because it's the same behavior as before + // `visitType` was introduced. + // + // TODO(zarend): investigate switching to a `DynamicValue` and verify this won't break any + // use cases, especially in ngcc + if (node.type !== undefined) { + const evaluatedType = this.visitType(node.type, context); + if (!(evaluatedType instanceof DynamicValue)) { + return evaluatedType; + } + } return this.getReference(node, context); } else { return undefined; @@ -447,13 +463,14 @@ export class StaticInterpreter { node, DynamicValue.fromExternalReference(node.expression, lhs)); } - // If the function is declared in a different file, resolve the foreign function expression - // using the absolute module name of that file (if any). - if (lhs.bestGuessOwningModule !== null) { + // If the foreign expression occurs in a different file, then assume that the owning module + // of the call expression should also be used for the resolved foreign expression. + if (expr.getSourceFile() !== node.expression.getSourceFile() && + lhs.bestGuessOwningModule !== null) { context = { ...context, absoluteModuleName: lhs.bestGuessOwningModule.specifier, - resolutionContext: node.getSourceFile().fileName, + resolutionContext: lhs.bestGuessOwningModule.resolutionContext, }; } @@ -681,6 +698,28 @@ export class StaticInterpreter { private getReference(node: T, context: Context): Reference { return new Reference(node, owningModule(context)); } + + private visitType(node: ts.TypeNode, context: Context): ResolvedValue { + if (ts.isLiteralTypeNode(node)) { + return this.visitExpression(node.literal, context); + } else if (ts.isTupleTypeNode(node)) { + return this.visitTupleType(node, context); + } else if (ts.isNamedTupleMember(node)) { + return this.visitType(node.type, context); + } + + return DynamicValue.fromDynamicType(node); + } + + private visitTupleType(node: ts.TupleTypeNode, context: Context): ResolvedValueArray { + const res: ResolvedValueArray = []; + + for (const elem of node.elements) { + res.push(this.visitType(elem, context)); + } + + return res; + } } function isFunctionOrMethodReference(ref: Reference): diff --git a/packages/compiler-cli/src/ngtsc/partial_evaluator/src/ts_helpers.ts b/packages/compiler-cli/src/ngtsc/partial_evaluator/src/ts_helpers.ts index 109ef11292..5000ef201e 100644 --- a/packages/compiler-cli/src/ngtsc/partial_evaluator/src/ts_helpers.ts +++ b/packages/compiler-cli/src/ngtsc/partial_evaluator/src/ts_helpers.ts @@ -19,7 +19,7 @@ export class AssignHelperFn extends ObjectAssignBuiltinFn {} // Used for both `__spread()` and `__spreadArrays()` TypeScript helper functions. export class SpreadHelperFn extends KnownFn { - evaluate(node: ts.Node, args: ResolvedValueArray): ResolvedValueArray { + override evaluate(node: ts.Node, args: ResolvedValueArray): ResolvedValueArray { const result: ResolvedValueArray = []; for (const arg of args) { @@ -38,7 +38,7 @@ export class SpreadHelperFn extends KnownFn { // Used for `__spreadArray` TypeScript helper function. export class SpreadArrayHelperFn extends KnownFn { - evaluate(node: ts.Node, args: ResolvedValueArray): ResolvedValue { + override evaluate(node: ts.Node, args: ResolvedValueArray): ResolvedValue { if (args.length !== 2) { return DynamicValue.fromUnknown(node); } @@ -62,7 +62,7 @@ export class SpreadArrayHelperFn extends KnownFn { // Used for `__read` TypeScript helper function. export class ReadHelperFn extends KnownFn { - evaluate(node: ts.Node, args: ResolvedValueArray): ResolvedValue { + override evaluate(node: ts.Node, args: ResolvedValueArray): ResolvedValue { if (args.length !== 1) { // The `__read` helper accepts a second argument `n` but that case is not supported. return DynamicValue.fromUnknown(node); diff --git a/packages/compiler-cli/src/ngtsc/partial_evaluator/test/evaluator_spec.ts b/packages/compiler-cli/src/ngtsc/partial_evaluator/test/evaluator_spec.ts index e597f6d0f3..452b7dd412 100644 --- a/packages/compiler-cli/src/ngtsc/partial_evaluator/test/evaluator_spec.ts +++ b/packages/compiler-cli/src/ngtsc/partial_evaluator/test/evaluator_spec.ts @@ -14,10 +14,10 @@ import {DependencyTracker} from '../../incremental/api'; import {Declaration, DeclarationKind, isConcreteDeclaration, KnownDeclaration, SpecialDeclarationKind, TypeScriptReflectionHost} from '../../reflection'; import {getDeclaration, makeProgram} from '../../testing'; import {DynamicValue} from '../src/dynamic'; -import {PartialEvaluator} from '../src/interface'; +import {ForeignFunctionResolver, PartialEvaluator} from '../src/interface'; import {EnumValue, ResolvedValue} from '../src/result'; -import {evaluate, firstArgFfr, makeEvaluator, makeExpression, owningModuleOf} from './utils'; +import {arrowReturnValueFfr, evaluate, firstArgFfr, makeEvaluator, makeExpression, owningModuleOf, returnTypeFfr} from './utils'; runInEachFileSystem(() => { describe('ngtsc metadata', () => { @@ -357,6 +357,30 @@ runInEachFileSystem(() => { expect(value.reason.node.getText()).toEqual('window: any'); }); + it('supports declarations of primitive constant types', () => { + expect(evaluate(`declare const x: 'foo';`, `x`)).toEqual('foo'); + expect(evaluate(`declare const x: 42;`, `x`)).toEqual(42); + expect(evaluate(`declare const x: null;`, `x`)).toEqual(null); + expect(evaluate(`declare const x: true;`, `x`)).toEqual(true); + }); + + it('supports declarations of tuples', () => { + expect(evaluate(`declare const x: ['foo', 42, null, true];`, `x`)).toEqual([ + 'foo', 42, null, true + ]); + expect(evaluate(`declare const x: ['bar'];`, `[...x]`)).toEqual(['bar']); + }); + + it('evaluates tuple elements it cannot understand to DynamicValue', () => { + const value = evaluate(`declare const x: ['foo', string];`, `x`) as [string, DynamicValue]; + + expect(Array.isArray(value)).toBeTrue(); + expect(value[0]).toEqual('foo'); + expect(value[1] instanceof DynamicValue).toBeTrue(); + expect(value[1].isFromDynamicType()).toBe(true); + }); + + it('imports work', () => { const {program} = makeProgram([ {name: _('/second.ts'), contents: 'export function foo(bar) { return bar; }'}, @@ -622,6 +646,96 @@ runInEachFileSystem(() => { expect(id.text).toEqual('Target'); }); + it('should not associate an owning module when a FFR-resolved expression is within the originating source file', + () => { + const resolved = evaluate( + `import {forwardRef} from 'forward'; + class Foo {}`, + 'forwardRef(() => Foo)', [{ + name: _('/node_modules/forward/index.d.ts'), + contents: `export declare function forwardRef(fn: () => T): T;`, + }], + arrowReturnValueFfr); + if (!(resolved instanceof Reference)) { + return fail('Expected expression to resolve to a reference'); + } + expect((resolved.node as ts.ClassDeclaration).name!.text).toBe('Foo'); + expect(resolved.bestGuessOwningModule).toBeNull(); + }); + + it('should not associate an owning module when a FFR-resolved expression is imported using a relative import', + () => { + const resolved = evaluate( + `import {forwardRef} from 'forward'; + import {Foo} from './foo';`, + 'forwardRef(() => Foo)', + [ + { + name: _('/node_modules/forward/index.d.ts'), + contents: `export declare function forwardRef(fn: () => T): T;`, + }, + { + name: _('/foo.ts'), + contents: `export class Foo {}`, + } + ], + arrowReturnValueFfr); + if (!(resolved instanceof Reference)) { + return fail('Expected expression to resolve to a reference'); + } + expect((resolved.node as ts.ClassDeclaration).name!.text).toBe('Foo'); + expect(resolved.bestGuessOwningModule).toBeNull(); + }); + + it('should associate an owning module when a FFR-resolved expression is imported using an absolute import', + () => { + const {expression, checker} = makeExpression( + `import {forwardRef} from 'forward'; + import {Foo} from 'external';`, + `forwardRef(() => Foo)`, [ + { + name: _('/node_modules/forward/index.d.ts'), + contents: `export declare function forwardRef(fn: () => T): T;`, + }, + { + name: _('/node_modules/external/index.d.ts'), + contents: `export declare class Foo {}`, + } + ]); + const evaluator = makeEvaluator(checker); + const resolved = evaluator.evaluate(expression, arrowReturnValueFfr); + if (!(resolved instanceof Reference)) { + return fail('Expected expression to resolve to a reference'); + } + expect((resolved.node as ts.ClassDeclaration).name!.text).toBe('Foo'); + expect(resolved.bestGuessOwningModule).toEqual({ + specifier: 'external', + resolutionContext: expression.getSourceFile().fileName, + }); + }); + + it('should associate an owning module when a FFR-resolved expression is within the foreign file', + () => { + const {expression, checker} = + makeExpression(`import {external} from 'external';`, `external()`, [{ + name: _('/node_modules/external/index.d.ts'), + contents: ` + export declare class Foo {} + export declare function external(): Foo; + ` + }]); + const evaluator = makeEvaluator(checker); + const resolved = evaluator.evaluate(expression, returnTypeFfr); + if (!(resolved instanceof Reference)) { + return fail('Expected expression to resolve to a reference'); + } + expect((resolved.node as ts.ClassDeclaration).name!.text).toBe('Foo'); + expect(resolved.bestGuessOwningModule).toEqual({ + specifier: 'external', + resolutionContext: expression.getSourceFile().fileName, + }); + }); + it('should resolve functions with more than one statement to a complex function call', () => { const value = evaluate(`function foo(bar) { const b = bar; return b; }`, 'foo("test")'); @@ -1012,7 +1126,7 @@ runInEachFileSystem(() => { }); class DownleveledEnumReflectionHost extends TypeScriptReflectionHost { - getDeclarationOfIdentifier(id: ts.Identifier): Declaration|null { + override getDeclarationOfIdentifier(id: ts.Identifier): Declaration|null { const declaration = super.getDeclarationOfIdentifier(id); if (declaration !== null && isConcreteDeclaration(declaration)) { const enumMembers = [ @@ -1031,7 +1145,7 @@ runInEachFileSystem(() => { * TypeScript host, as only ngcc's ES5 hosts will have special powers to recognize such functions. */ class TsLibAwareReflectionHost extends TypeScriptReflectionHost { - getExportsOfModule(node: ts.Node): Map|null { + override getExportsOfModule(node: ts.Node): Map|null { const map = super.getExportsOfModule(node); if (map !== null) { @@ -1041,7 +1155,7 @@ runInEachFileSystem(() => { return map; } - getDeclarationOfIdentifier(id: ts.Identifier): Declaration|null { + override getDeclarationOfIdentifier(id: ts.Identifier): Declaration|null { const superDeclaration = super.getDeclarationOfIdentifier(id); if (superDeclaration === null || superDeclaration.node === null) { diff --git a/packages/compiler-cli/src/ngtsc/partial_evaluator/test/utils.ts b/packages/compiler-cli/src/ngtsc/partial_evaluator/test/utils.ts index 38daf368e1..1bb6c46d83 100644 --- a/packages/compiler-cli/src/ngtsc/partial_evaluator/test/utils.ts +++ b/packages/compiler-cli/src/ngtsc/partial_evaluator/test/utils.ts @@ -62,3 +62,14 @@ export function firstArgFfr( args: ReadonlyArray): ts.Expression { return args[0]; } + +export const arrowReturnValueFfr: ForeignFunctionResolver = (_ref, args) => { + // Extracts the `Foo` from `() => Foo`. + return (args[0] as ts.ArrowFunction).body as ts.Expression; +}; + +export const returnTypeFfr: ForeignFunctionResolver = (ref) => { + // Extract the `Foo` from the return type of the `external` function declaration. + return ((ref.node as ts.FunctionDeclaration).type as ts.TypeReferenceNode).typeName as + ts.Identifier; +}; diff --git a/packages/compiler-cli/src/ngtsc/perf/src/api.ts b/packages/compiler-cli/src/ngtsc/perf/src/api.ts index 39e2a44bc0..1f6ffa50a3 100644 --- a/packages/compiler-cli/src/ngtsc/perf/src/api.ts +++ b/packages/compiler-cli/src/ngtsc/perf/src/api.ts @@ -144,6 +144,11 @@ export enum PerfPhase { */ LsComponentLocations, + /** + * Time spent by the Angular Language Service calculating signature help. + */ + LsSignatureHelp, + /** * Tracks the number of `PerfPhase`s, and must appear at the end of the list. */ diff --git a/packages/compiler-cli/src/ngtsc/program.ts b/packages/compiler-cli/src/ngtsc/program.ts index 1eb8ae18e7..2f967a3f9c 100644 --- a/packages/compiler-cli/src/ngtsc/program.ts +++ b/packages/compiler-cli/src/ngtsc/program.ts @@ -6,25 +6,24 @@ * found in the LICENSE file at https://angular.io/license */ -import {GeneratedFile} from '@angular/compiler'; +import {GeneratedFile, HtmlParser, MessageBundle} from '@angular/compiler'; import * as ts from 'typescript'; import * as api from '../transformers/api'; +import {i18nExtract} from '../transformers/i18n'; import {verifySupportedTypeScriptVersion} from '../typescript_support'; import {CompilationTicket, freshCompilationTicket, incrementalFromCompilerTicket, NgCompiler, NgCompilerHost} from './core'; import {NgCompilerOptions} from './core/api'; -import {absoluteFrom, AbsoluteFsPath, getFileSystem} from './file_system'; +import {absoluteFrom, AbsoluteFsPath, getFileSystem, resolve} from './file_system'; import {TrackedIncrementalBuildStrategy} from './incremental'; import {IndexedComponent} from './indexer'; import {ActivePerfRecorder, PerfCheckpoint as PerfCheckpoint, PerfEvent, PerfPhase} from './perf'; +import {TsCreateProgramDriver} from './program_driver'; import {DeclarationNode} from './reflection'; import {retagAllTsFiles, untagAllTsFiles} from './shims'; -import {ReusedProgramStrategy} from './typecheck'; import {OptimizeFor} from './typecheck/api'; - - /** * Entrypoint to the Angular Compiler (Ivy+) which sits behind the `api.Program` interface, allowing * it to be a drop-in replacement for the legacy View Engine compiler to tooling such as the @@ -38,20 +37,6 @@ export class NgtscProgram implements api.Program { */ private tsProgram: ts.Program; - /** - * The TypeScript program to use for the next incremental compilation. - * - * Once a TS program is used to create another (an incremental compilation operation), it can no - * longer be used to do so again. - * - * Since template type-checking uses the primary program to create a type-checking program, after - * this happens the primary program is no longer suitable for starting a subsequent compilation, - * and the template type-checking program should be used instead. - * - * Thus, the program which should be used for the next incremental compilation is tracked in - * `reuseTsProgram`, separately from the "primary" program which is always used for emit. - */ - private reuseTsProgram: ts.Program; private closureCompilerEnabled: boolean; private host: NgCompilerHost; private incrementalStrategy: TrackedIncrementalBuildStrategy; @@ -70,7 +55,7 @@ export class NgtscProgram implements api.Program { this.closureCompilerEnabled = !!options.annotateForClosureCompiler; - const reuseProgram = oldProgram?.reuseTsProgram; + const reuseProgram = oldProgram?.compiler.getCurrentProgram(); this.host = NgCompilerHost.wrap(delegateHost, rootNames, options, reuseProgram ?? null); if (reuseProgram !== undefined) { @@ -84,7 +69,6 @@ export class NgtscProgram implements api.Program { this.tsProgram = perfRecorder.inPhase( PerfPhase.TypeScriptProgramCreate, () => ts.createProgram(this.host.inputFiles, options, this.host, reuseProgram)); - this.reuseTsProgram = this.tsProgram; perfRecorder.phase(PerfPhase.Unaccounted); perfRecorder.memory(PerfCheckpoint.TypeScriptProgramCreate); @@ -95,7 +79,7 @@ export class NgtscProgram implements api.Program { // the program. untagAllTsFiles(this.tsProgram); - const reusedProgramStrategy = new ReusedProgramStrategy( + const programDriver = new TsCreateProgramDriver( this.tsProgram, this.host, this.options, this.host.shimExtensionPrefixes); this.incrementalStrategy = oldProgram !== undefined ? @@ -114,14 +98,14 @@ export class NgtscProgram implements api.Program { let ticket: CompilationTicket; if (oldProgram === undefined) { ticket = freshCompilationTicket( - this.tsProgram, options, this.incrementalStrategy, reusedProgramStrategy, perfRecorder, + this.tsProgram, options, this.incrementalStrategy, programDriver, perfRecorder, /* enableTemplateTypeChecker */ false, /* usePoisonedData */ false); } else { ticket = incrementalFromCompilerTicket( oldProgram.compiler, this.tsProgram, this.incrementalStrategy, - reusedProgramStrategy, + programDriver, modifiedResourceFiles, perfRecorder, ); @@ -137,7 +121,7 @@ export class NgtscProgram implements api.Program { } getReuseTsProgram(): ts.Program { - return this.reuseTsProgram; + return this.compiler.getCurrentProgram(); } getTsOptionDiagnostics(cancellationToken?: ts.CancellationToken| @@ -220,11 +204,11 @@ export class NgtscProgram implements api.Program { } } - const diagnostics = sf === undefined ? - this.compiler.getDiagnostics() : - this.compiler.getDiagnosticsForFile(sf, OptimizeFor.WholeProgram); - this.reuseTsProgram = this.compiler.getNextProgram(); - return diagnostics; + if (sf === undefined) { + return this.compiler.getDiagnostics(); + } else { + return this.compiler.getDiagnosticsForFile(sf, OptimizeFor.WholeProgram); + } } /** @@ -242,6 +226,14 @@ export class NgtscProgram implements api.Program { return this.compiler.listLazyRoutes(entryRoute); } + private emitXi18n(): void { + const ctx = new MessageBundle(new HtmlParser(), [], {}, this.options.i18nOutLocale ?? null); + this.compiler.xi18n(ctx); + i18nExtract( + this.options.i18nOutFormat ?? null, this.options.i18nOutFile ?? null, this.host, + this.options, ctx, resolve); + } + emit(opts?: { emitFlags?: api.EmitFlags|undefined; cancellationToken?: ts.CancellationToken | undefined; @@ -249,6 +241,23 @@ export class NgtscProgram implements api.Program { emitCallback?: api.TsEmitCallback | undefined; mergeEmitResultsCallback?: api.TsMergeEmitResultsCallback | undefined; }|undefined): ts.EmitResult { + // Check if emission of the i18n messages bundle was requested. + if (opts !== undefined && opts.emitFlags !== undefined && + opts.emitFlags & api.EmitFlags.I18nBundle) { + this.emitXi18n(); + + // `api.EmitFlags` is a View Engine compiler concept. We only pay attention to the absence of + // the other flags here if i18n emit was requested (since this is usually done in the xi18n + // flow, where we don't want to emit JS at all). + if (!(opts.emitFlags & api.EmitFlags.JS)) { + return { + diagnostics: [], + emitSkipped: true, + emittedFiles: [], + }; + } + } + this.compiler.perfRecorder.memory(PerfCheckpoint.PreEmit); const res = this.compiler.perfRecorder.inPhase(PerfPhase.TypeScriptEmit, () => { @@ -268,7 +277,7 @@ export class NgtscProgram implements api.Program { continue; } - this.compiler.incrementalDriver.recordSuccessfulEmit(writtenSf); + this.compiler.incrementalCompilation.recordSuccessfulEmit(writtenSf); } } this.host.writeFile(fileName, data, writeByteOrderMark, onError, sourceFiles); @@ -289,7 +298,7 @@ export class NgtscProgram implements api.Program { continue; } - if (this.compiler.incrementalDriver.safeToSkipEmit(targetSourceFile)) { + if (this.compiler.incrementalCompilation.safeToSkipEmit(targetSourceFile)) { this.compiler.perfRecorder.eventCount(PerfEvent.EmitSkipSourceFile); continue; } diff --git a/packages/compiler-cli/src/ngtsc/program_driver/BUILD.bazel b/packages/compiler-cli/src/ngtsc/program_driver/BUILD.bazel new file mode 100644 index 0000000000..cc52a91289 --- /dev/null +++ b/packages/compiler-cli/src/ngtsc/program_driver/BUILD.bazel @@ -0,0 +1,17 @@ +load("//tools:defaults.bzl", "ts_library") + +package(default_visibility = ["//visibility:public"]) + +ts_library( + name = "program_driver", + srcs = ["index.ts"] + glob([ + "src/*.ts", + ]), + module_name = "@angular/compiler-cli/src/ngtsc/program_driver", + deps = [ + "//packages/compiler-cli/src/ngtsc/file_system", + "//packages/compiler-cli/src/ngtsc/shims", + "//packages/compiler-cli/src/ngtsc/util", + "@npm//typescript", + ], +) diff --git a/packages/compiler-cli/src/ngtsc/program_driver/README.md b/packages/compiler-cli/src/ngtsc/program_driver/README.md new file mode 100644 index 0000000000..9d230f5bbb --- /dev/null +++ b/packages/compiler-cli/src/ngtsc/program_driver/README.md @@ -0,0 +1,18 @@ +# The Program Driver interface + +`ProgramDriver` is a small but important interface which allows the template type-checking machinery to request changes to the current `ts.Program`, and to receive a new `ts.Program` with those changes applied. This is used to add template type-checking code to the current `ts.Program`, eventually allowing for diagnostics to be produced within that code. This operation is abstracted behind this interface because different clients create `ts.Program`s differently. The Language Service, for example, creates `ts.Program`s from the current editor state on request, while the TS compiler API creates them explicitly. + +When running using the TS APIs, it's important that each new `ts.Program` be created incrementally from the previous `ts.Program`. Under a normal compilation, this means that programs alternate between template type checking programs and user programs: + +* `ts.Program#1` is created from user input (the user's source files). +* `ts.Program#2` is created incrementally on top of #1 for template type-checking, and adds private TCB code. +* `ts.Program#3` is created incrementally on top of #2 when the user makes changes to files on disk (incremental build). +* `ts.Program#4` is created incrementally on top of #3 to adjust template type-checking code according to the user's changes. + +The `TsCreateProgramDriver` performs this operation for template type-checking `ts.Program`s built by the command-line compiler or by the CLI. The latest template type-checking program is then exposed via the `NgCompiler`'s `getCurrentProgram()` operation, and new user programs are expected to be created incrementally on top of the previous template type-checking program. + +## Programs and the compiler as a service + +Not all clients of the compiler follow the incremental tick-tock scenario above. When the compiler is used as a service, new `ts.Program`s may be generated in response to various queries, either directly to `NgCompiler` or via the `TemplateTypeChecker`. Internally, the compiler will use the current `ProgramDriver` to create these additional `ts.Program`s as needed. + +Incremental builds (new user code changes) may also require changing the `ts.Program`, using the compiler's incremental ticket process. If the `TsCreateProgramDriver` is used, the client is responsible for ensuring that any new incremental `ts.Program`s are created on top of the current program from the previous compilation, which can be obtained via `NgCompiler`'s `getCurrentProgram()`. \ No newline at end of file diff --git a/tools/ts-api-guardian/test/fixtures/empty.ts b/packages/compiler-cli/src/ngtsc/program_driver/index.ts similarity index 67% rename from tools/ts-api-guardian/test/fixtures/empty.ts rename to packages/compiler-cli/src/ngtsc/program_driver/index.ts index 823e9bf40a..5478afc976 100644 --- a/tools/ts-api-guardian/test/fixtures/empty.ts +++ b/packages/compiler-cli/src/ngtsc/program_driver/index.ts @@ -5,3 +5,6 @@ * 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 */ + +export * from './src/api'; +export {TsCreateProgramDriver} from './src/ts_create_program_driver'; diff --git a/packages/compiler-cli/src/ngtsc/program_driver/src/api.ts b/packages/compiler-cli/src/ngtsc/program_driver/src/api.ts new file mode 100644 index 0000000000..f837244d16 --- /dev/null +++ b/packages/compiler-cli/src/ngtsc/program_driver/src/api.ts @@ -0,0 +1,78 @@ +/** + * @license + * 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 + */ + +import * as ts from 'typescript'; +import {AbsoluteFsPath} from '../../file_system'; + +export interface FileUpdate { + /** + * The source file text. + */ + newText: string; + + /** + * Represents the source file from the original program that is being updated. If the file update + * targets a shim file then this is null, as shim files do not have an associated original file. + */ + originalFile: ts.SourceFile|null; +} + +export const NgOriginalFile = Symbol('NgOriginalFile'); + +/** + * If an updated file has an associated original source file, then the original source file + * is attached to the updated file using the `NgOriginalFile` symbol. + */ +export interface MaybeSourceFileWithOriginalFile extends ts.SourceFile { + [NgOriginalFile]?: ts.SourceFile; +} + +export interface ProgramDriver { + /** + * Whether this strategy supports modifying user files (inline modifications) in addition to + * modifying type-checking shims. + */ + readonly supportsInlineOperations: boolean; + + /** + * Retrieve the latest version of the program, containing all the updates made thus far. + */ + getProgram(): ts.Program; + + /** + * Incorporate a set of changes to either augment or completely replace the type-checking code + * included in the type-checking program. + */ + updateFiles(contents: Map, updateMode: UpdateMode): void; + + /** + * Retrieve a string version for a given `ts.SourceFile`, which much change when the contents of + * the file have changed. + * + * If this method is present, the compiler will use these versions in addition to object identity + * for `ts.SourceFile`s to determine what's changed between two incremental programs. This is + * valuable for some clients (such as the Language Service) that treat `ts.SourceFile`s as mutable + * objects. + */ + getSourceFileVersion?(sf: ts.SourceFile): string; +} + +export enum UpdateMode { + /** + * A complete update creates a completely new overlay of type-checking code on top of the user's + * original program, which doesn't include type-checking code from previous calls to + * `updateFiles`. + */ + Complete, + + /** + * An incremental update changes the contents of some files in the type-checking program without + * reverting any prior changes. + */ + Incremental, +} diff --git a/packages/compiler-cli/src/ngtsc/typecheck/src/host.ts b/packages/compiler-cli/src/ngtsc/program_driver/src/ts_create_program_driver.ts similarity index 58% rename from packages/compiler-cli/src/ngtsc/typecheck/src/host.ts rename to packages/compiler-cli/src/ngtsc/program_driver/src/ts_create_program_driver.ts index 41b6d9dfdc..5c4c483fb1 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/src/host.ts +++ b/packages/compiler-cli/src/ngtsc/program_driver/src/ts_create_program_driver.ts @@ -8,8 +8,11 @@ import * as ts from 'typescript'; -import {copyFileShimData, ShimReferenceTagger} from '../../shims'; -import {RequiredDelegations} from '../../util/src/typescript'; +import {AbsoluteFsPath} from '../../file_system'; +import {copyFileShimData, retagAllTsFiles, ShimReferenceTagger, untagAllTsFiles} from '../../shims'; +import {RequiredDelegations, toUnredirectedSourceFile} from '../../util/src/typescript'; + +import {FileUpdate, MaybeSourceFileWithOriginalFile, NgOriginalFile, ProgramDriver, UpdateMode} from './api'; /** * Delegates all methods of `ts.CompilerHost` to a delegate, with the exception of @@ -51,10 +54,9 @@ export class DelegatingCompilerHost implements } /** - * A `ts.CompilerHost` which augments source files with type checking code from a - * `TypeCheckContext`. + * A `ts.CompilerHost` which augments source files. */ -export class TypeCheckProgramHost extends DelegatingCompilerHost { +class UpdatedProgramHost extends DelegatingCompilerHost { /** * Map of source file names to `ts.SourceFile` instances. */ @@ -63,12 +65,12 @@ export class TypeCheckProgramHost extends DelegatingCompilerHost { /** * The `ShimReferenceTagger` responsible for tagging `ts.SourceFile`s loaded via this host. * - * The `TypeCheckProgramHost` is used in the creation of a new `ts.Program`. Even though this new + * The `UpdatedProgramHost` is used in the creation of a new `ts.Program`. Even though this new * program is based on a prior one, TypeScript will still start from the root files and enumerate * all source files to include in the new program. This means that just like during the original * program's creation, these source files must be tagged with references to per-file shims in * order for those shims to be loaded, and then cleaned up afterwards. Thus the - * `TypeCheckProgramHost` has its own `ShimReferenceTagger` to perform this function. + * `UpdatedProgramHost` has its own `ShimReferenceTagger` to perform this function. */ private shimTagger = new ShimReferenceTagger(this.shimExtensionPrefixes); @@ -104,12 +106,9 @@ export class TypeCheckProgramHost extends DelegatingCompilerHost { } else { sf = delegateSf; } - // TypeScript doesn't allow returning redirect source files. To avoid unforseen errors we + // TypeScript doesn't allow returning redirect source files. To avoid unforeseen errors we // return the original source file instead of the redirect target. - const redirectInfo = (sf as any).redirectInfo; - if (redirectInfo !== undefined) { - sf = redirectInfo.unredirected; - } + sf = toUnredirectedSourceFile(sf); this.shimTagger.tag(sf); return sf; @@ -127,3 +126,76 @@ export class TypeCheckProgramHost extends DelegatingCompilerHost { return this.sfMap.has(fileName) || this.delegate.fileExists(fileName); } } + + +/** + * Updates a `ts.Program` instance with a new one that incorporates specific changes, using the + * TypeScript compiler APIs for incremental program creation. + */ +export class TsCreateProgramDriver implements ProgramDriver { + /** + * A map of source file paths to replacement `ts.SourceFile`s for those paths. + * + * Effectively, this tracks the delta between the user's program (represented by the + * `originalHost`) and the template type-checking program being managed. + */ + private sfMap = new Map(); + + private program: ts.Program = this.originalProgram; + + constructor( + private originalProgram: ts.Program, private originalHost: ts.CompilerHost, + private options: ts.CompilerOptions, private shimExtensionPrefixes: string[]) {} + + readonly supportsInlineOperations = true; + + getProgram(): ts.Program { + return this.program; + } + + updateFiles(contents: Map, updateMode: UpdateMode): void { + if (contents.size === 0) { + // No changes have been requested. Is it safe to skip updating entirely? + // If UpdateMode is Incremental, then yes. If UpdateMode is Complete, then it's safe to skip + // only if there are no active changes already (that would be cleared by the update). + + if (updateMode !== UpdateMode.Complete || this.sfMap.size === 0) { + // No changes would be made to the `ts.Program` anyway, so it's safe to do nothing here. + return; + } + } + + if (updateMode === UpdateMode.Complete) { + this.sfMap.clear(); + } + + for (const [filePath, {newText, originalFile}] of contents.entries()) { + const sf = ts.createSourceFile(filePath, newText, ts.ScriptTarget.Latest, true); + if (originalFile !== null) { + (sf as MaybeSourceFileWithOriginalFile)[NgOriginalFile] = originalFile; + } + this.sfMap.set(filePath, sf); + } + + const host = new UpdatedProgramHost( + this.sfMap, this.originalProgram, this.originalHost, this.shimExtensionPrefixes); + const oldProgram = this.program; + + // Retag the old program's `ts.SourceFile`s with shim tags, to allow TypeScript to reuse the + // most data. + retagAllTsFiles(oldProgram); + + this.program = ts.createProgram({ + host, + rootNames: this.program.getRootFileNames(), + options: this.options, + oldProgram, + }); + host.postProgramCreationCleanup(); + + // And untag them afterwards. We explicitly untag both programs here, because the oldProgram + // may still be used for emit and needs to not contain tags. + untagAllTsFiles(this.program); + untagAllTsFiles(oldProgram); + } +} diff --git a/packages/compiler-cli/src/ngtsc/reflection/src/host.ts b/packages/compiler-cli/src/ngtsc/reflection/src/host.ts index 7b6adeadbb..851880f5ef 100644 --- a/packages/compiler-cli/src/ngtsc/reflection/src/host.ts +++ b/packages/compiler-cli/src/ngtsc/reflection/src/host.ts @@ -856,4 +856,14 @@ export interface ReflectionHost { * have a different name than it does externally. */ getAdjacentNameOfClass(clazz: ClassDeclaration): ts.Identifier; + + /** + * Returns `true` if a class is exported from the module in which it's defined. + * + * Not all mechanisms by which a class is exported can be statically detected, especially when + * processing already compiled JavaScript. A `false` result does not indicate that the class is + * never visible outside its module, only that it was not exported via one of the export + * mechanisms that the `ReflectionHost` is capable of statically checking. + */ + isStaticallyExported(clazz: ClassDeclaration): boolean; } diff --git a/packages/compiler-cli/src/ngtsc/reflection/src/typescript.ts b/packages/compiler-cli/src/ngtsc/reflection/src/typescript.ts index 451d0c9ae3..7c3ebc6e56 100644 --- a/packages/compiler-cli/src/ngtsc/reflection/src/typescript.ts +++ b/packages/compiler-cli/src/ngtsc/reflection/src/typescript.ts @@ -199,6 +199,35 @@ export class TypeScriptReflectionHost implements ReflectionHost { return clazz.name; } + isStaticallyExported(clazz: ClassDeclaration): boolean { + // First check if there's an `export` modifier directly on the class declaration. + let topLevel: ts.Node = clazz; + if (ts.isVariableDeclaration(clazz) && ts.isVariableDeclarationList(clazz.parent)) { + topLevel = clazz.parent.parent; + } + if (topLevel.modifiers !== undefined && + topLevel.modifiers.some(modifier => modifier.kind === ts.SyntaxKind.ExportKeyword)) { + // The node is part of a declaration that's directly exported. + return true; + } + + // If `topLevel` is not directly exported via a modifier, then it might be indirectly exported, + // e.g.: + // + // class Foo {} + // export {Foo}; + // + // The only way to check this is to look at the module level for exports of the class. As a + // performance optimization, this check is only performed if the class is actually declared at + // the top level of the file and thus eligible for exporting in the first place. + if (topLevel.parent === undefined || !ts.isSourceFile(topLevel.parent)) { + return false; + } + + const localExports = this.getLocalExportedClassesOfSourceFile(clazz.getSourceFile()); + return localExports.has(clazz); + } + protected getDirectImportOfIdentifier(id: ts.Identifier): Import|null { const symbol = this.checker.getSymbolAtLocation(id); @@ -248,7 +277,7 @@ export class TypeScriptReflectionHost implements ReflectionHost { return null; } const namespaceSymbol = this.checker.getSymbolAtLocation(namespaceIdentifier); - if (!namespaceSymbol) { + if (!namespaceSymbol || namespaceSymbol.declarations === undefined) { return null; } const declaration = @@ -413,6 +442,58 @@ export class TypeScriptReflectionHost implements ReflectionHost { isStatic, }; } + + /** + * Get the set of classes declared in `file` which are exported. + */ + private getLocalExportedClassesOfSourceFile(file: ts.SourceFile): Set { + const cacheSf: SourceFileWithCachedExports = file as SourceFileWithCachedExports; + if (cacheSf[LocalExportedClasses] !== undefined) { + // TS does not currently narrow symbol-keyed fields, hence the non-null assert is needed. + return cacheSf[LocalExportedClasses]!; + } + + const exportSet = new Set(); + cacheSf[LocalExportedClasses] = exportSet; + + const sfSymbol = this.checker.getSymbolAtLocation(cacheSf); + + if (sfSymbol === undefined || sfSymbol.exports === undefined) { + return exportSet; + } + + // Scan the exported symbol of the `ts.SourceFile` for the original `symbol` of the class + // declaration. + // + // Note: when checking multiple classes declared in the same file, this repeats some operations. + // In theory, this could be expensive if run in the context of a massive input file (like a + // large FESM in ngcc). If performance does become an issue here, it should be possible to + // create a `Set<>` + + // Unfortunately, `ts.Iterator` doesn't implement the iterator protocol, so iteration here is + // done manually. + const iter = sfSymbol.exports.values(); + let item = iter.next(); + while (item.done !== true) { + let exportedSymbol = item.value; + + // If this exported symbol comes from an `export {Foo}` statement, then the symbol is actually + // for the export declaration, not the original declaration. Such a symbol will be an alias, + // so unwrap aliasing if necessary. + if (exportedSymbol.flags & ts.SymbolFlags.Alias) { + exportedSymbol = this.checker.getAliasedSymbol(exportedSymbol); + } + + if (exportedSymbol.valueDeclaration !== undefined && + exportedSymbol.valueDeclaration.getSourceFile() === file && + this.isClass(exportedSymbol.valueDeclaration)) { + exportSet.add(exportedSymbol.valueDeclaration); + } + item = iter.next(); + } + + return exportSet; + } } export function reflectNameOfDeclaration(decl: ts.Declaration): string|null { @@ -467,6 +548,8 @@ export function reflectTypeEntityToDeclaration( throw new Error(`Module specifier is not a string`); } return {node, from: importDecl.moduleSpecifier.text}; + } else if (ts.isModuleDeclaration(decl)) { + return {node, from: null}; } else { throw new Error(`Unknown import type?`); } @@ -593,3 +676,26 @@ function getExportedName(decl: ts.Declaration, originalId: ts.Identifier): strin (decl.propertyName !== undefined ? decl.propertyName : decl.name).text : originalId.text; } + +const LocalExportedClasses = Symbol('LocalExportedClasses'); + +/** + * A `ts.SourceFile` expando which includes a cached `Set` of local `ClassDeclarations` that are + * exported either directly (`export class ...`) or indirectly (via `export {...}`). + * + * This cache does not cause memory leaks as: + * + * 1. The only references cached here are local to the `ts.SourceFile`, and thus also available in + * `this.statements`. + * + * 2. The only way this `Set` could change is if the source file itself was changed, which would + * invalidate the entire `ts.SourceFile` object in favor of a new version. Thus, changing the + * source file also invalidates this cache. + */ +interface SourceFileWithCachedExports extends ts.SourceFile { + /** + * Cached `Set` of `ClassDeclaration`s which are locally declared in this file and are exported + * either directly or indirectly. + */ + [LocalExportedClasses]?: Set; +} diff --git a/packages/compiler-cli/src/ngtsc/reflection/test/ts_host_spec.ts b/packages/compiler-cli/src/ngtsc/reflection/test/ts_host_spec.ts index d298d2441c..fd5c7c7ffb 100644 --- a/packages/compiler-cli/src/ngtsc/reflection/test/ts_host_spec.ts +++ b/packages/compiler-cli/src/ngtsc/reflection/test/ts_host_spec.ts @@ -153,6 +153,30 @@ runInEachFileSystem(() => { expectParameter(args[0], 'bar', {moduleName: './bar', name: 'Bar'}); }); + it('should reflect an argument from a namespace declarations', () => { + const {program} = makeProgram([{ + name: _('/entry.ts'), + contents: ` + export declare class Bar {} + declare namespace i1 { + export { + Bar, + } + } + + class Foo { + constructor(bar: i1.Bar) {} + } + ` + }]); + const clazz = getDeclaration(program, _('/entry.ts'), 'Foo', isNamedClassDeclaration); + const checker = program.getTypeChecker(); + const host = new TypeScriptReflectionHost(checker); + const args = host.getConstructorParameters(clazz)!; + expect(args.length).toBe(1); + expectParameter(args[0], 'bar', 'i1.Bar'); + }); + it('should reflect an argument from a default import', () => { const {program} = makeProgram([ { diff --git a/packages/compiler-cli/src/ngtsc/resource/src/loader.ts b/packages/compiler-cli/src/ngtsc/resource/src/loader.ts index 9db512d65b..ad18b05a6e 100644 --- a/packages/compiler-cli/src/ngtsc/resource/src/loader.ts +++ b/packages/compiler-cli/src/ngtsc/resource/src/loader.ts @@ -46,7 +46,8 @@ export class AdapterResourceLoader implements ResourceLoader { resolve(url: string, fromFile: string): string { let resolvedUrl: string|null = null; if (this.adapter.resourceNameToFileName) { - resolvedUrl = this.adapter.resourceNameToFileName(url, fromFile); + resolvedUrl = this.adapter.resourceNameToFileName( + url, fromFile, (url: string, fromFile: string) => this.fallbackResolve(url, fromFile)); } else { resolvedUrl = this.fallbackResolve(url, fromFile); } diff --git a/packages/compiler-cli/src/ngtsc/scope/index.ts b/packages/compiler-cli/src/ngtsc/scope/index.ts index 920f8dba8a..7904cd224b 100644 --- a/packages/compiler-cli/src/ngtsc/scope/index.ts +++ b/packages/compiler-cli/src/ngtsc/scope/index.ts @@ -10,4 +10,4 @@ export {ExportScope, ScopeData} from './src/api'; export {ComponentScopeReader, CompoundComponentScopeReader} from './src/component_scope'; export {DtsModuleScopeResolver, MetadataDtsModuleScopeResolver} from './src/dependency'; export {DeclarationData, LocalModuleScope, LocalModuleScopeRegistry, LocalNgModuleData} from './src/local'; -export {TypeCheckScope, TypeCheckScopeRegistry} from './src/typecheck'; \ No newline at end of file +export {TypeCheckScope, TypeCheckScopeRegistry} from './src/typecheck'; diff --git a/packages/compiler-cli/src/ngtsc/scope/src/api.ts b/packages/compiler-cli/src/ngtsc/scope/src/api.ts index 70ba24bc13..d04fdac1e7 100644 --- a/packages/compiler-cli/src/ngtsc/scope/src/api.ts +++ b/packages/compiler-cli/src/ngtsc/scope/src/api.ts @@ -62,4 +62,4 @@ export interface RemoteScope { * Those pipes used by the component that requires this scope to be set remotely. */ pipes: Reference[]; -} \ No newline at end of file +} diff --git a/packages/compiler-cli/src/ngtsc/scope/src/dependency.ts b/packages/compiler-cli/src/ngtsc/scope/src/dependency.ts index e278c6e3d7..f682352dd0 100644 --- a/packages/compiler-cli/src/ngtsc/scope/src/dependency.ts +++ b/packages/compiler-cli/src/ngtsc/scope/src/dependency.ts @@ -150,9 +150,12 @@ export class MetadataDtsModuleScopeResolver implements DtsModuleScopeResolver { return dirOrPipe; } + // TypeScript incorrectly narrows the type here: + // https://github.com/microsoft/TypeScript/issues/43966. + // TODO: Remove/Update once https://github.com/microsoft/TypeScript/issues/43966 is resolved. return { ...dirOrPipe, ref: ref.cloneWithAlias(alias), - }; + } as T; } } diff --git a/packages/compiler-cli/src/ngtsc/scope/src/typecheck.ts b/packages/compiler-cli/src/ngtsc/scope/src/typecheck.ts deleted file mode 100644 index a162a9a728..0000000000 --- a/packages/compiler-cli/src/ngtsc/scope/src/typecheck.ts +++ /dev/null @@ -1,129 +0,0 @@ -/** - * @license - * 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 - */ - -import {CssSelector, SchemaMetadata, SelectorMatcher} from '@angular/compiler'; -import * as ts from 'typescript'; - -import {Reference} from '../../imports'; -import {DirectiveMeta, flattenInheritedDirectiveMetadata, MetadataReader} from '../../metadata'; -import {ClassDeclaration} from '../../reflection'; - -import {ComponentScopeReader} from './component_scope'; - -/** - * The scope that is used for type-check code generation of a component template. - */ -export interface TypeCheckScope { - /** - * A `SelectorMatcher` instance that contains the flattened directive metadata of all directives - * that are in the compilation scope of the declaring NgModule. - */ - matcher: SelectorMatcher; - - /** - * All of the directives available in the compilation scope of the declaring NgModule. - */ - directives: DirectiveMeta[]; - - /** - * The pipes that are available in the compilation scope. - */ - pipes: Map>>; - - /** - * The schemas that are used in this scope. - */ - schemas: SchemaMetadata[]; - - /** - * Whether the original compilation scope which produced this `TypeCheckScope` was itself poisoned - * (contained semantic errors during its production). - */ - isPoisoned: boolean; -} - -/** - * Computes scope information to be used in template type checking. - */ -export class TypeCheckScopeRegistry { - /** - * Cache of flattened directive metadata. Because flattened metadata is scope-invariant it's - * cached individually, such that all scopes refer to the same flattened metadata. - */ - private flattenedDirectiveMetaCache = new Map(); - - /** - * Cache of the computed type check scope per NgModule declaration. - */ - private scopeCache = new Map(); - - constructor(private scopeReader: ComponentScopeReader, private metaReader: MetadataReader) {} - - /** - * Computes the type-check scope information for the component declaration. If the NgModule - * contains an error, then 'error' is returned. If the component is not declared in any NgModule, - * an empty type-check scope is returned. - */ - getTypeCheckScope(node: ClassDeclaration): TypeCheckScope { - const matcher = new SelectorMatcher(); - const directives: DirectiveMeta[] = []; - const pipes = new Map>>(); - - const scope = this.scopeReader.getScopeForComponent(node); - if (scope === null) { - return { - matcher, - directives, - pipes, - schemas: [], - isPoisoned: false, - }; - } - - if (this.scopeCache.has(scope.ngModule)) { - return this.scopeCache.get(scope.ngModule)!; - } - - for (const meta of scope.compilation.directives) { - if (meta.selector !== null) { - const extMeta = this.getTypeCheckDirectiveMetadata(meta.ref); - matcher.addSelectables(CssSelector.parse(meta.selector), extMeta); - directives.push(extMeta); - } - } - - for (const {name, ref} of scope.compilation.pipes) { - if (!ts.isClassDeclaration(ref.node)) { - throw new Error(`Unexpected non-class declaration ${ - ts.SyntaxKind[ref.node.kind]} for pipe ${ref.debugName}`); - } - pipes.set(name, ref as Reference>); - } - - const typeCheckScope: TypeCheckScope = { - matcher, - directives, - pipes, - schemas: scope.schemas, - isPoisoned: scope.compilation.isPoisoned || scope.exported.isPoisoned, - }; - this.scopeCache.set(scope.ngModule, typeCheckScope); - return typeCheckScope; - } - - getTypeCheckDirectiveMetadata(ref: Reference): DirectiveMeta { - const clazz = ref.node; - if (this.flattenedDirectiveMetaCache.has(clazz)) { - return this.flattenedDirectiveMetaCache.get(clazz)!; - } - - const meta = flattenInheritedDirectiveMetadata(this.metaReader, ref); - this.flattenedDirectiveMetaCache.set(clazz, meta); - return meta; - } -} diff --git a/packages/compiler-cli/src/ngtsc/scope/test/dependency_spec.ts b/packages/compiler-cli/src/ngtsc/scope/test/dependency_spec.ts index 861348c039..8298910a4d 100644 --- a/packages/compiler-cli/src/ngtsc/scope/test/dependency_spec.ts +++ b/packages/compiler-cli/src/ngtsc/scope/test/dependency_spec.ts @@ -68,8 +68,7 @@ function makeTestEnv( const exportedSymbol = symbol.exports!.get(name as ts.__String); if (exportedSymbol !== undefined) { const decl = exportedSymbol.valueDeclaration as ts.ClassDeclaration; - const specifier = MODULE_FROM_NODE_MODULES_PATH.exec(sf.fileName)![1]; - return new Reference(decl, {specifier, resolutionContext: sf.fileName}); + return new Reference(decl); } } throw new Error('Class not found: ' + name); @@ -143,10 +142,13 @@ runInEachFileSystem(() => { }); const {Dir, ModuleB} = refs; const scope = resolver.resolve(ModuleB)!; - expect(scopeToRefs(scope)).toEqual([Dir]); + expect(scopeToRefs(scope).map(ref => ref.node)).toEqual([Dir.node]); // Explicitly verify that the directive has the correct owning module. - expect(scope.exported.directives[0].ref.ownedByModuleGuess).toBe('declaration'); + expect(scope.exported.directives[0].ref.bestGuessOwningModule).toEqual({ + specifier: 'declaration', + resolutionContext: ModuleB.node.getSourceFile().fileName, + }); }); it('should write correct aliases for deep dependencies', () => { diff --git a/packages/compiler-cli/src/ngtsc/scope/test/local_spec.ts b/packages/compiler-cli/src/ngtsc/scope/test/local_spec.ts index 38a8ad79dd..0aa1d0c49f 100644 --- a/packages/compiler-cli/src/ngtsc/scope/test/local_spec.ts +++ b/packages/compiler-cli/src/ngtsc/scope/test/local_spec.ts @@ -9,7 +9,7 @@ import * as ts from 'typescript'; import {Reference, ReferenceEmitter} from '../../imports'; -import {ClassPropertyMapping, CompoundMetadataRegistry, DirectiveMeta, LocalMetadataRegistry, MetadataRegistry, PipeMeta} from '../../metadata'; +import {ClassPropertyMapping, CompoundMetadataRegistry, DirectiveMeta, LocalMetadataRegistry, MetadataRegistry, MetaType, PipeMeta} from '../../metadata'; import {ClassDeclaration} from '../../reflection'; import {ScopeData} from '../src/api'; import {DtsModuleScopeResolver} from '../src/dependency'; @@ -232,6 +232,7 @@ describe('LocalModuleScopeRegistry', () => { function fakeDirective(ref: Reference): DirectiveMeta { const name = ref.debugName!; return { + type: MetaType.Directive, ref, name, selector: `[${ref.debugName}]`, @@ -255,7 +256,7 @@ function fakeDirective(ref: Reference): DirectiveMeta { function fakePipe(ref: Reference): PipeMeta { const name = ref.debugName!; - return {ref, name}; + return {type: MetaType.Pipe, ref, name, nameExpr: null}; } class MockDtsModuleScopeResolver implements DtsModuleScopeResolver { diff --git a/packages/compiler-cli/src/ngtsc/testing/fake_common/BUILD.bazel b/packages/compiler-cli/src/ngtsc/testing/fake_common/BUILD.bazel index a6a4a1bd63..23b98820f0 100644 --- a/packages/compiler-cli/src/ngtsc/testing/fake_common/BUILD.bazel +++ b/packages/compiler-cli/src/ngtsc/testing/fake_common/BUILD.bazel @@ -1,7 +1,7 @@ -package(default_visibility = ["//visibility:public"]) - load("//tools:defaults.bzl", "ng_package", "ts_library") +package(default_visibility = ["//visibility:public"]) + ts_library( name = "fake_common", srcs = [ diff --git a/packages/compiler-cli/src/ngtsc/testing/fake_common/index.ts b/packages/compiler-cli/src/ngtsc/testing/fake_common/index.ts index c32be348b1..a7a3989e4a 100644 --- a/packages/compiler-cli/src/ngtsc/testing/fake_common/index.ts +++ b/packages/compiler-cli/src/ngtsc/testing/fake_common/index.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {NgIterable, TemplateRef, ɵɵDirectiveDeclaration, ɵɵNgModuleDeclaration, ɵɵPipeDeclaration} from '@angular/core'; +import {NgIterable, TemplateRef, TrackByFunction, ɵɵDirectiveDeclaration, ɵɵNgModuleDeclaration, ɵɵPipeDeclaration} from '@angular/core'; export interface NgForOfContext> { $implicit: T; @@ -19,10 +19,6 @@ export interface NgForOfContext> { index: number; } -export interface TrackByFunction { - (index: number, item: T): any; -} - export interface NgIfContext { $implicit: T; ngIf: T; @@ -56,6 +52,7 @@ export declare class NgIf { 'ngIfElse': 'ngIfElse'; } , {}, never > ; + static ngTemplateGuard_ngIf: 'binding'; static ngTemplateContextGuard(dir: NgIf, ctx: any): ctx is NgIfContext>; } @@ -83,8 +80,16 @@ export declare class DatePipe { static ɵpipe: ɵɵPipeDeclaration; } +export declare class IndexPipe { + transform(value: T[], index: number): T; + + static ɵpipe: ɵɵPipeDeclaration; +} + export declare class CommonModule { static ɵmod: ɵɵNgModuleDeclaration< - CommonModule, [typeof NgForOf, typeof NgIf, typeof DatePipe, typeof NgTemplateOutlet], never, - [typeof NgForOf, typeof NgIf, typeof DatePipe, typeof NgTemplateOutlet]>; + CommonModule, + [typeof NgForOf, typeof NgIf, typeof DatePipe, typeof IndexPipe, typeof NgTemplateOutlet], + never, + [typeof NgForOf, typeof NgIf, typeof DatePipe, typeof IndexPipe, typeof NgTemplateOutlet]>; } diff --git a/packages/compiler-cli/src/ngtsc/testing/fake_core/BUILD.bazel b/packages/compiler-cli/src/ngtsc/testing/fake_core/BUILD.bazel index 5688e31a4e..18a4907a68 100644 --- a/packages/compiler-cli/src/ngtsc/testing/fake_core/BUILD.bazel +++ b/packages/compiler-cli/src/ngtsc/testing/fake_core/BUILD.bazel @@ -1,7 +1,7 @@ -package(default_visibility = ["//visibility:public"]) - load("//tools:defaults.bzl", "ng_package", "ts_library") +package(default_visibility = ["//visibility:public"]) + ts_library( name = "fake_core", srcs = [ diff --git a/packages/compiler-cli/src/ngtsc/testing/fake_core/index.ts b/packages/compiler-cli/src/ngtsc/testing/fake_core/index.ts index 35fe9a2575..07af668366 100644 --- a/packages/compiler-cli/src/ngtsc/testing/fake_core/index.ts +++ b/packages/compiler-cli/src/ngtsc/testing/fake_core/index.ts @@ -114,3 +114,7 @@ export interface PipeTransform { export interface OnDestroy { ngOnDestroy(): void; } + +export interface TrackByFunction { + (index: number, item: T&U): any; +} diff --git a/packages/compiler-cli/src/ngtsc/testing/src/compiler_host.ts b/packages/compiler-cli/src/ngtsc/testing/src/compiler_host.ts index 83ca99ee1b..1ccb9ed120 100644 --- a/packages/compiler-cli/src/ngtsc/testing/src/compiler_host.ts +++ b/packages/compiler-cli/src/ngtsc/testing/src/compiler_host.ts @@ -15,7 +15,8 @@ import {getCachedSourceFile} from './cached_source_files'; * reuse across tests. */ export class NgtscTestCompilerHost extends NgtscCompilerHost { - getSourceFile(fileName: string, languageVersion: ts.ScriptTarget): ts.SourceFile|undefined { + override getSourceFile(fileName: string, languageVersion: ts.ScriptTarget): ts.SourceFile + |undefined { const cachedSf = getCachedSourceFile(fileName, () => this.readFile(fileName)); if (cachedSf !== null) { return cachedSf; diff --git a/packages/compiler-cli/src/ngtsc/testing/src/utils.ts b/packages/compiler-cli/src/ngtsc/testing/src/utils.ts index 13fe87a560..fe72f5e67f 100644 --- a/packages/compiler-cli/src/ngtsc/testing/src/utils.ts +++ b/packages/compiler-cli/src/ngtsc/testing/src/utils.ts @@ -138,3 +138,12 @@ function bindingNameEquals(node: ts.BindingName, name: string): boolean { } return false; } + +export function getSourceCodeForDiagnostic(diag: ts.Diagnostic): string { + if (diag.file === undefined || diag.start === undefined || diag.length === undefined) { + throw new Error( + `Unable to get source code for diagnostic. Provided diagnostic instance doesn't contain "file", "start" and/or "length" properties.`); + } + const text = diag.file.text; + return text.substr(diag.start, diag.length); +} diff --git a/packages/compiler-cli/src/ngtsc/transform/BUILD.bazel b/packages/compiler-cli/src/ngtsc/transform/BUILD.bazel index 1ecafaa34f..86d831269d 100644 --- a/packages/compiler-cli/src/ngtsc/transform/BUILD.bazel +++ b/packages/compiler-cli/src/ngtsc/transform/BUILD.bazel @@ -15,12 +15,12 @@ ts_library( "//packages/compiler-cli/src/ngtsc/incremental:api", "//packages/compiler-cli/src/ngtsc/incremental/semantic_graph", "//packages/compiler-cli/src/ngtsc/indexer", - "//packages/compiler-cli/src/ngtsc/modulewithproviders", "//packages/compiler-cli/src/ngtsc/perf", "//packages/compiler-cli/src/ngtsc/reflection", "//packages/compiler-cli/src/ngtsc/translator", "//packages/compiler-cli/src/ngtsc/typecheck/api", "//packages/compiler-cli/src/ngtsc/util", + "//packages/compiler-cli/src/ngtsc/xi18n", "@npm//typescript", ], ) diff --git a/packages/compiler-cli/src/ngtsc/transform/index.ts b/packages/compiler-cli/src/ngtsc/transform/index.ts index a3fe99dfe6..e3da19c3b1 100644 --- a/packages/compiler-cli/src/ngtsc/transform/index.ts +++ b/packages/compiler-cli/src/ngtsc/transform/index.ts @@ -9,6 +9,6 @@ export * from './src/api'; export {aliasTransformFactory} from './src/alias'; export {ClassRecord, TraitCompiler} from './src/compilation'; -export {declarationTransformFactory, DtsTransformRegistry, IvyDeclarationDtsTransform, ReturnTypeTransform} from './src/declaration'; +export {declarationTransformFactory, DtsTransformRegistry, IvyDeclarationDtsTransform} from './src/declaration'; export {AnalyzedTrait, PendingTrait, ResolvedTrait, SkippedTrait, Trait, TraitState} from './src/trait'; export {ivyTransformFactory} from './src/transform'; diff --git a/packages/compiler-cli/src/ngtsc/transform/src/api.ts b/packages/compiler-cli/src/ngtsc/transform/src/api.ts index 01054b5f71..4387a651c5 100644 --- a/packages/compiler-cli/src/ngtsc/transform/src/api.ts +++ b/packages/compiler-cli/src/ngtsc/transform/src/api.ts @@ -15,6 +15,7 @@ import {IndexingContext} from '../../indexer'; import {ClassDeclaration, Decorator} from '../../reflection'; import {ImportManager} from '../../translator'; import {TypeCheckContext} from '../../typecheck/api'; +import {Xi18nContext} from '../../xi18n'; /** * Specifies the compilation mode that is used for the compilation. @@ -176,6 +177,12 @@ export interface DecoratorHandler { */ resolve?(node: ClassDeclaration, analysis: Readonly, symbol: S): ResolveResult; + /** + * Extract i18n messages into the `Xi18nContext`, which is useful for generating various formats + * of message file outputs. + */ + xi18n?(bundle: Xi18nContext, node: ClassDeclaration, analysis: Readonly): void; + typeCheck? (ctx: TypeCheckContext, node: ClassDeclaration, analysis: Readonly, resolution: Readonly): void; diff --git a/packages/compiler-cli/src/ngtsc/transform/src/compilation.ts b/packages/compiler-cli/src/ngtsc/transform/src/compilation.ts index d26059c9b6..87186fbb2b 100644 --- a/packages/compiler-cli/src/ngtsc/transform/src/compilation.ts +++ b/packages/compiler-cli/src/ngtsc/transform/src/compilation.ts @@ -17,6 +17,7 @@ import {PerfEvent, PerfRecorder} from '../../perf'; import {ClassDeclaration, DeclarationNode, Decorator, ReflectionHost} from '../../reflection'; import {ProgramTypeCheckAdapter, TypeCheckContext} from '../../typecheck/api'; import {getSourceFile, isExported} from '../../util/src/typescript'; +import {Xi18nContext} from '../../xi18n'; import {AnalysisOutput, CompilationMode, CompileResult, DecoratorHandler, HandlerFlags, HandlerPrecedence, ResolveResult} from './api'; import {DtsTransformRegistry} from './declaration'; @@ -81,6 +82,12 @@ export class TraitCompiler implements ProgramTypeCheckAdapter { */ protected fileToClasses = new Map>(); + /** + * Tracks which source files have been analyzed but did not contain any traits. This set allows + * the compiler to skip analyzing these files in an incremental rebuild. + */ + protected filesWithoutTraits = new Set(); + private reexportMap = new Map>(); private handlersByName = @@ -118,14 +125,19 @@ export class TraitCompiler implements ProgramTypeCheckAdapter { // type of 'void', so `undefined` is used instead. const promises: Promise[] = []; - const priorWork = this.incrementalBuild.priorWorkFor(sf); + const priorWork = this.incrementalBuild.priorAnalysisFor(sf); if (priorWork !== null) { - for (const priorRecord of priorWork) { - this.adopt(priorRecord); - } - this.perf.eventCount(PerfEvent.SourceFileReuseAnalysis); - this.perf.eventCount(PerfEvent.TraitReuseAnalysis, priorWork.length); + + if (priorWork.length > 0) { + for (const priorRecord of priorWork) { + this.adopt(priorRecord); + } + + this.perf.eventCount(PerfEvent.TraitReuseAnalysis, priorWork.length); + } else { + this.filesWithoutTraits.add(sf); + } // Skip the rest of analysis, as this file's prior traits are being reused. return; @@ -166,6 +178,21 @@ export class TraitCompiler implements ProgramTypeCheckAdapter { return records; } + getAnalyzedRecords(): Map { + const result = new Map(); + for (const [sf, classes] of this.fileToClasses) { + const records: ClassRecord[] = []; + for (const clazz of classes) { + records.push(this.classes.get(clazz)!); + } + result.set(sf, records); + } + for (const sf of this.filesWithoutTraits) { + result.set(sf, []); + } + return result; + } + /** * Import a `ClassRecord` from a previous compilation. * @@ -211,7 +238,7 @@ export class TraitCompiler implements ProgramTypeCheckAdapter { private scanClassForTraits(clazz: ClassDeclaration): PendingTrait[]|null { - if (!this.compileNonExportedClasses && !isExported(clazz)) { + if (!this.compileNonExportedClasses && !this.reflector.isStaticallyExported(clazz)) { return null; } @@ -482,6 +509,25 @@ export class TraitCompiler implements ProgramTypeCheckAdapter { } } + xi18n(bundle: Xi18nContext): void { + for (const clazz of this.classes.keys()) { + const record = this.classes.get(clazz)!; + for (const trait of record.traits) { + if (trait.state !== TraitState.Analyzed && trait.state !== TraitState.Resolved) { + // Skip traits that haven't been analyzed successfully. + continue; + } else if (trait.handler.xi18n === undefined) { + // Skip traits that don't support xi18n. + continue; + } + + if (trait.analysis !== null) { + trait.handler.xi18n(bundle, clazz, trait.analysis); + } + } + } + } + updateResources(clazz: DeclarationNode): void { if (!this.reflector.isClass(clazz) || !this.classes.has(clazz)) { return; diff --git a/packages/compiler-cli/src/ngtsc/transform/src/declaration.ts b/packages/compiler-cli/src/ngtsc/transform/src/declaration.ts index f5f3c26e5a..4adeee9ddb 100644 --- a/packages/compiler-cli/src/ngtsc/transform/src/declaration.ts +++ b/packages/compiler-cli/src/ngtsc/transform/src/declaration.ts @@ -22,7 +22,6 @@ import {addImports} from './utils'; */ export class DtsTransformRegistry { private ivyDeclarationTransforms = new Map(); - private returnTypeTransforms = new Map(); getIvyDeclarationTransform(sf: ts.SourceFile): IvyDeclarationDtsTransform { if (!this.ivyDeclarationTransforms.has(sf)) { @@ -31,13 +30,6 @@ export class DtsTransformRegistry { return this.ivyDeclarationTransforms.get(sf)!; } - getReturnTypeTransform(sf: ts.SourceFile): ReturnTypeTransform { - if (!this.returnTypeTransforms.has(sf)) { - this.returnTypeTransforms.set(sf, new ReturnTypeTransform()); - } - return this.returnTypeTransforms.get(sf)!; - } - /** * Gets the dts transforms to be applied for the given source file, or `null` if no transform is * necessary. @@ -57,10 +49,6 @@ export class DtsTransformRegistry { transforms = []; transforms.push(this.ivyDeclarationTransforms.get(originalSf)!); } - if (this.returnTypeTransforms.has(originalSf)) { - transforms = transforms || []; - transforms.push(this.returnTypeTransforms.get(originalSf)!); - } return transforms; } } @@ -230,50 +218,3 @@ function markForEmitAsSingleLine(node: ts.Node) { ts.setEmitFlags(node, ts.EmitFlags.SingleLine); ts.forEachChild(node, markForEmitAsSingleLine); } - -export class ReturnTypeTransform implements DtsTransform { - private typeReplacements = new Map(); - - addTypeReplacement(declaration: ts.Declaration, type: Type): void { - this.typeReplacements.set(declaration, type); - } - - transformClassElement(element: ts.ClassElement, imports: ImportManager): ts.ClassElement { - if (ts.isMethodDeclaration(element)) { - const original = ts.getOriginalNode(element, ts.isMethodDeclaration); - if (!this.typeReplacements.has(original)) { - return element; - } - const returnType = this.typeReplacements.get(original)!; - const tsReturnType = translateType(returnType, imports); - - return ts.updateMethod( - element, element.decorators, element.modifiers, element.asteriskToken, element.name, - element.questionToken, element.typeParameters, element.parameters, tsReturnType, - element.body); - } - - return element; - } - - transformFunctionDeclaration(element: ts.FunctionDeclaration, imports: ImportManager): - ts.FunctionDeclaration { - const original = ts.getOriginalNode(element) as ts.FunctionDeclaration; - if (!this.typeReplacements.has(original)) { - return element; - } - const returnType = this.typeReplacements.get(original)!; - const tsReturnType = translateType(returnType, imports); - - return ts.updateFunctionDeclaration( - /* node */ element, - /* decorators */ element.decorators, - /* modifiers */ element.modifiers, - /* asteriskToken */ element.asteriskToken, - /* name */ element.name, - /* typeParameters */ element.typeParameters, - /* parameters */ element.parameters, - /* type */ tsReturnType, - /* body */ element.body); - } -} diff --git a/packages/compiler-cli/src/ngtsc/transform/src/transform.ts b/packages/compiler-cli/src/ngtsc/transform/src/transform.ts index c9a0d7bd10..fd52a15a1e 100644 --- a/packages/compiler-cli/src/ngtsc/transform/src/transform.ts +++ b/packages/compiler-cli/src/ngtsc/transform/src/transform.ts @@ -9,10 +9,11 @@ import {ConstantPool} from '@angular/compiler'; import * as ts from 'typescript'; -import {DefaultImportRecorder, ImportRewriter} from '../../imports'; +import {DefaultImportTracker, ImportRewriter} from '../../imports'; +import {getDefaultImportDeclaration} from '../../imports/src/default'; import {PerfPhase, PerfRecorder} from '../../perf'; import {Decorator, ReflectionHost} from '../../reflection'; -import {ImportManager, RecordWrappedNodeExprFn, translateExpression, translateStatement, TranslatorOptions} from '../../translator'; +import {ImportManager, RecordWrappedNodeFn, translateExpression, translateStatement, TranslatorOptions} from '../../translator'; import {visit, VisitListEntryResult, Visitor} from '../../util/src/visitor'; import {CompileResult} from './api'; @@ -34,16 +35,16 @@ interface FileOverviewMeta { export function ivyTransformFactory( compilation: TraitCompiler, reflector: ReflectionHost, importRewriter: ImportRewriter, - defaultImportRecorder: DefaultImportRecorder, perf: PerfRecorder, isCore: boolean, + defaultImportTracker: DefaultImportTracker, perf: PerfRecorder, isCore: boolean, isClosureCompilerEnabled: boolean): ts.TransformerFactory { - const recordWrappedNodeExpr = createRecorderFn(defaultImportRecorder); + const recordWrappedNode = createRecorderFn(defaultImportTracker); return (context: ts.TransformationContext): ts.Transformer => { return (file: ts.SourceFile): ts.SourceFile => { return perf.inPhase( PerfPhase.Compile, () => transformIvySourceFile( compilation, context, reflector, importRewriter, file, isCore, - isClosureCompilerEnabled, recordWrappedNodeExpr)); + isClosureCompilerEnabled, recordWrappedNode)); }; }; } @@ -60,7 +61,7 @@ class IvyCompilationVisitor extends Visitor { super(); } - visitClassDeclaration(node: ts.ClassDeclaration): + override visitClassDeclaration(node: ts.ClassDeclaration): VisitListEntryResult { // Determine if this class has an Ivy field that needs to be added, and compile the field // to an expression if so. @@ -81,12 +82,12 @@ class IvyTransformationVisitor extends Visitor { private compilation: TraitCompiler, private classCompilationMap: Map, private reflector: ReflectionHost, private importManager: ImportManager, - private recordWrappedNodeExpr: RecordWrappedNodeExprFn, + private recordWrappedNodeExpr: RecordWrappedNodeFn, private isClosureCompilerEnabled: boolean, private isCore: boolean) { super(); } - visitClassDeclaration(node: ts.ClassDeclaration): + override visitClassDeclaration(node: ts.ClassDeclaration): VisitListEntryResult { // If this class is not registered in the map, it means that it doesn't have Angular decorators, // thus no further processing is required. @@ -95,7 +96,7 @@ class IvyTransformationVisitor extends Visitor { } const translateOptions: TranslatorOptions = { - recordWrappedNodeExpr: this.recordWrappedNodeExpr, + recordWrappedNode: this.recordWrappedNodeExpr, annotateForClosureCompiler: this.isClosureCompilerEnabled, }; @@ -252,7 +253,7 @@ function transformIvySourceFile( compilation: TraitCompiler, context: ts.TransformationContext, reflector: ReflectionHost, importRewriter: ImportRewriter, file: ts.SourceFile, isCore: boolean, isClosureCompilerEnabled: boolean, - recordWrappedNodeExpr: RecordWrappedNodeExprFn): ts.SourceFile { + recordWrappedNode: RecordWrappedNodeFn): ts.SourceFile { const constantPool = new ConstantPool(isClosureCompilerEnabled); const importManager = new ImportManager(importRewriter); @@ -274,7 +275,7 @@ function transformIvySourceFile( // results obtained at Step 1. const transformationVisitor = new IvyTransformationVisitor( compilation, compilationVisitor.classCompilationMap, reflector, importManager, - recordWrappedNodeExpr, isClosureCompilerEnabled, isCore); + recordWrappedNode, isClosureCompilerEnabled, isCore); let sf = visit(file, transformationVisitor, context); // Generate the constant statements first, as they may involve adding additional imports @@ -282,7 +283,7 @@ function transformIvySourceFile( const downlevelTranslatedCode = getLocalizeCompileTarget(context) < ts.ScriptTarget.ES2015; const constants = constantPool.statements.map(stmt => translateStatement(stmt, importManager, { - recordWrappedNodeExpr, + recordWrappedNode, downlevelTaggedTemplates: downlevelTranslatedCode, downlevelVariableDeclarations: downlevelTranslatedCode, annotateForClosureCompiler: isClosureCompilerEnabled, @@ -370,11 +371,12 @@ function isFromAngularCore(decorator: Decorator): boolean { return decorator.import !== null && decorator.import.from === '@angular/core'; } -function createRecorderFn(defaultImportRecorder: DefaultImportRecorder): - RecordWrappedNodeExprFn { - return expr => { - if (ts.isIdentifier(expr)) { - defaultImportRecorder.recordUsedIdentifier(expr); +function createRecorderFn(defaultImportTracker: DefaultImportTracker): + RecordWrappedNodeFn { + return node => { + const importDecl = getDefaultImportDeclaration(node); + if (importDecl !== null) { + defaultImportTracker.recordUsedImport(importDecl); } }; } diff --git a/packages/compiler-cli/src/ngtsc/translator/index.ts b/packages/compiler-cli/src/ngtsc/translator/index.ts index b6300ba02a..7fa09856f8 100644 --- a/packages/compiler-cli/src/ngtsc/translator/index.ts +++ b/packages/compiler-cli/src/ngtsc/translator/index.ts @@ -10,7 +10,7 @@ export {AstFactory, BinaryOperator, LeadingComment, ObjectLiteralProperty, Sourc export {ImportGenerator, NamedImport} from './src/api/import_generator'; export {Context} from './src/context'; export {Import, ImportManager} from './src/import_manager'; -export {ExpressionTranslatorVisitor, RecordWrappedNodeExprFn, TranslatorOptions} from './src/translator'; +export {ExpressionTranslatorVisitor, RecordWrappedNodeFn, TranslatorOptions} from './src/translator'; export {translateType} from './src/type_translator'; export {attachComments, createTemplateMiddle, createTemplateTail, TypeScriptAstFactory} from './src/typescript_ast_factory'; export {translateExpression, translateStatement} from './src/typescript_translator'; diff --git a/packages/compiler-cli/src/ngtsc/translator/src/api/ast_factory.ts b/packages/compiler-cli/src/ngtsc/translator/src/api/ast_factory.ts index 4a5890756d..cc430f1f5f 100644 --- a/packages/compiler-cli/src/ngtsc/translator/src/api/ast_factory.ts +++ b/packages/compiler-cli/src/ngtsc/translator/src/api/ast_factory.ts @@ -245,7 +245,7 @@ export type UnaryOperator = '+'|'-'|'!'; * The binary operators supported by the `AstFactory`. */ export type BinaryOperator = - '&&'|'>'|'>='|'&'|'/'|'=='|'==='|'<'|'<='|'-'|'%'|'*'|'!='|'!=='|'||'|'+'; + '&&'|'>'|'>='|'&'|'/'|'=='|'==='|'<'|'<='|'-'|'%'|'*'|'!='|'!=='|'||'|'+'|'??'; /** * The original location of the start or end of a node created by the `AstFactory`. diff --git a/packages/compiler-cli/src/ngtsc/translator/src/translator.ts b/packages/compiler-cli/src/ngtsc/translator/src/translator.ts index f2d71023a6..81a6377abf 100644 --- a/packages/compiler-cli/src/ngtsc/translator/src/translator.ts +++ b/packages/compiler-cli/src/ngtsc/translator/src/translator.ts @@ -34,14 +34,15 @@ const BINARY_OPERATORS = new Map([ [o.BinaryOperator.NotIdentical, '!=='], [o.BinaryOperator.Or, '||'], [o.BinaryOperator.Plus, '+'], + [o.BinaryOperator.NullishCoalesce, '??'], ]); -export type RecordWrappedNodeExprFn = (expr: TExpression) => void; +export type RecordWrappedNodeFn = (node: o.WrappedNodeExpr) => void; export interface TranslatorOptions { downlevelTaggedTemplates?: boolean; downlevelVariableDeclarations?: boolean; - recordWrappedNodeExpr?: RecordWrappedNodeExprFn; + recordWrappedNode?: RecordWrappedNodeFn; annotateForClosureCompiler?: boolean; } @@ -49,14 +50,14 @@ export class ExpressionTranslatorVisitor implements o.E o.StatementVisitor { private downlevelTaggedTemplates: boolean; private downlevelVariableDeclarations: boolean; - private recordWrappedNodeExpr: RecordWrappedNodeExprFn; + private recordWrappedNode: RecordWrappedNodeFn; constructor( private factory: AstFactory, private imports: ImportGenerator, options: TranslatorOptions) { this.downlevelTaggedTemplates = options.downlevelTaggedTemplates === true; this.downlevelVariableDeclarations = options.downlevelVariableDeclarations === true; - this.recordWrappedNodeExpr = options.recordWrappedNodeExpr || (() => {}); + this.recordWrappedNode = options.recordWrappedNode || (() => {}); } visitDeclareVarStmt(stmt: o.DeclareVarStmt, context: Context): TStatement { @@ -381,7 +382,7 @@ export class ExpressionTranslatorVisitor implements o.E } visitWrappedNodeExpr(ast: o.WrappedNodeExpr, _context: Context): any { - this.recordWrappedNodeExpr(ast.node); + this.recordWrappedNode(ast); return ast.node; } diff --git a/packages/compiler-cli/src/ngtsc/translator/src/typescript_ast_factory.ts b/packages/compiler-cli/src/ngtsc/translator/src/typescript_ast_factory.ts index 6de1302c31..ebe0f3f0e3 100644 --- a/packages/compiler-cli/src/ngtsc/translator/src/typescript_ast_factory.ts +++ b/packages/compiler-cli/src/ngtsc/translator/src/typescript_ast_factory.ts @@ -47,6 +47,7 @@ const BINARY_OPERATORS: Record = { '!==': ts.SyntaxKind.ExclamationEqualsEqualsToken, '||': ts.SyntaxKind.BarBarToken, '+': ts.SyntaxKind.PlusToken, + '??': ts.SyntaxKind.QuestionQuestionToken, }; const VAR_TYPES: Record = { diff --git a/packages/compiler-cli/src/ngtsc/tsc_plugin.ts b/packages/compiler-cli/src/ngtsc/tsc_plugin.ts index 292c472a19..7f90bd12a7 100644 --- a/packages/compiler-cli/src/ngtsc/tsc_plugin.ts +++ b/packages/compiler-cli/src/ngtsc/tsc_plugin.ts @@ -8,14 +8,14 @@ import * as ts from 'typescript'; -import {CompilationTicket, freshCompilationTicket, incrementalFromDriverTicket, NgCompiler, NgCompilerHost} from './core'; +import {CompilationTicket, freshCompilationTicket, incrementalFromStateTicket, NgCompiler, NgCompilerHost} from './core'; import {NgCompilerOptions, UnifiedModulesHost} from './core/api'; -import {NodeJSFileSystem, setFileSystem} from './file_system'; +import {AbsoluteFsPath, NodeJSFileSystem, resolve, setFileSystem} from './file_system'; import {PatchedProgramIncrementalBuildStrategy} from './incremental'; -import {ActivePerfRecorder, NOOP_PERF_RECORDER, PerfPhase} from './perf'; +import {ActivePerfRecorder, PerfPhase} from './perf'; +import {TsCreateProgramDriver} from './program_driver'; import {untagAllTsFiles} from './shims'; import {OptimizeFor} from './typecheck/api'; -import {ReusedProgramStrategy} from './typecheck/src/augmented_program'; // The following is needed to fix a the chicken-and-egg issue where the sync (into g3) script will // refuse to accept this file unless the following string appears: @@ -106,28 +106,27 @@ export class NgTscPlugin implements TscPlugin { } this.host.postProgramCreationCleanup(); untagAllTsFiles(program); - const typeCheckStrategy = new ReusedProgramStrategy( + const programDriver = new TsCreateProgramDriver( program, this.host, this.options, this.host.shimExtensionPrefixes); const strategy = new PatchedProgramIncrementalBuildStrategy(); - const oldDriver = oldProgram !== undefined ? strategy.getIncrementalDriver(oldProgram) : null; + const oldState = oldProgram !== undefined ? strategy.getIncrementalState(oldProgram) : null; let ticket: CompilationTicket; - let modifiedResourceFiles: Set|undefined = undefined; + const modifiedResourceFiles = new Set(); if (this.host.getModifiedResourceFiles !== undefined) { - modifiedResourceFiles = this.host.getModifiedResourceFiles(); - } - if (modifiedResourceFiles === undefined) { - modifiedResourceFiles = new Set(); + for (const resourceFile of this.host.getModifiedResourceFiles() ?? []) { + modifiedResourceFiles.add(resolve(resourceFile)); + } } - if (oldProgram === undefined || oldDriver === null) { + if (oldProgram === undefined || oldState === null) { ticket = freshCompilationTicket( - program, this.options, strategy, typeCheckStrategy, perfRecorder, + program, this.options, strategy, programDriver, perfRecorder, /* enableTemplateTypeChecker */ false, /* usePoisonedData */ false); } else { - strategy.toNextBuildStrategy().getIncrementalDriver(oldProgram); - ticket = incrementalFromDriverTicket( - oldProgram, oldDriver, program, this.options, strategy, typeCheckStrategy, + strategy.toNextBuildStrategy().getIncrementalState(oldProgram); + ticket = incrementalFromStateTicket( + oldProgram, oldState, program, this.options, strategy, programDriver, modifiedResourceFiles, perfRecorder, false, false); } this._compiler = NgCompiler.fromTicket(ticket, this.host); @@ -149,7 +148,7 @@ export class NgTscPlugin implements TscPlugin { } getNextProgram(): ts.Program { - return this.compiler.getNextProgram(); + return this.compiler.getCurrentProgram(); } createTransformers(): ts.CustomTransformers { diff --git a/packages/compiler-cli/src/ngtsc/typecheck/BUILD.bazel b/packages/compiler-cli/src/ngtsc/typecheck/BUILD.bazel index a258bcd9be..47a64194b2 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/BUILD.bazel +++ b/packages/compiler-cli/src/ngtsc/typecheck/BUILD.bazel @@ -16,6 +16,7 @@ ts_library( "//packages/compiler-cli/src/ngtsc/incremental:api", "//packages/compiler-cli/src/ngtsc/metadata", "//packages/compiler-cli/src/ngtsc/perf", + "//packages/compiler-cli/src/ngtsc/program_driver", "//packages/compiler-cli/src/ngtsc/reflection", "//packages/compiler-cli/src/ngtsc/scope", "//packages/compiler-cli/src/ngtsc/shims", diff --git a/packages/compiler-cli/src/ngtsc/typecheck/api/BUILD.bazel b/packages/compiler-cli/src/ngtsc/typecheck/api/BUILD.bazel index aa34cc2d95..ef61fe05f1 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/api/BUILD.bazel +++ b/packages/compiler-cli/src/ngtsc/typecheck/api/BUILD.bazel @@ -9,10 +9,12 @@ ts_library( deps = [ "//packages:types", "//packages/compiler", + "//packages/compiler-cli/src/ngtsc/diagnostics", "//packages/compiler-cli/src/ngtsc/file_system", "//packages/compiler-cli/src/ngtsc/imports", "//packages/compiler-cli/src/ngtsc/metadata", "//packages/compiler-cli/src/ngtsc/reflection", + "//packages/compiler-cli/src/ngtsc/util", "@npm//typescript", ], ) diff --git a/packages/compiler-cli/src/ngtsc/typecheck/api/api.ts b/packages/compiler-cli/src/ngtsc/typecheck/api/api.ts index 8f3c5a7d07..42c947784f 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/api/api.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/api/api.ts @@ -352,63 +352,3 @@ export interface FullTemplateMapping { templateSourceMapping: TemplateSourceMapping; span: ParseSourceSpan; } - -/** - * Abstracts the operation of determining which shim file will host a particular component's - * template type-checking code. - * - * Different consumers of the type checking infrastructure may choose different approaches to - * optimize for their specific use case (for example, the command-line compiler optimizes for - * efficient `ts.Program` reuse in watch mode). - */ -export interface ComponentToShimMappingStrategy { - /** - * Given a component, determine a path to the shim file into which that component's type checking - * code will be generated. - * - * A major constraint is that components in different input files must not share the same shim - * file. The behavior of the template type-checking system is undefined if this is violated. - */ - shimPathForComponent(node: ts.ClassDeclaration): AbsoluteFsPath; -} - -/** - * Strategy used to manage a `ts.Program` which contains template type-checking code and update it - * over time. - * - * This abstraction allows both the Angular compiler itself as well as the language service to - * implement efficient template type-checking using common infrastructure. - */ -export interface TypeCheckingProgramStrategy extends ComponentToShimMappingStrategy { - /** - * Whether this strategy supports modifying user files (inline modifications) in addition to - * modifying type-checking shims. - */ - readonly supportsInlineOperations: boolean; - - /** - * Retrieve the latest version of the program, containing all the updates made thus far. - */ - getProgram(): ts.Program; - - /** - * Incorporate a set of changes to either augment or completely replace the type-checking code - * included in the type-checking program. - */ - updateFiles(contents: Map, updateMode: UpdateMode): void; -} - -export enum UpdateMode { - /** - * A complete update creates a completely new overlay of type-checking code on top of the user's - * original program, which doesn't include type-checking code from previous calls to - * `updateFiles`. - */ - Complete, - - /** - * An incremental update changes the contents of some files in the type-checking program without - * reverting any prior changes. - */ - Incremental, -} diff --git a/packages/compiler-cli/src/ngtsc/typecheck/api/checker.ts b/packages/compiler-cli/src/ngtsc/typecheck/api/checker.ts index da1d0bb294..2354b85cf8 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/api/checker.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/api/checker.ts @@ -6,9 +6,11 @@ * found in the LICENSE file at https://angular.io/license */ -import {AST, MethodCall, ParseError, PropertyRead, SafeMethodCall, SafePropertyRead, TmplAstElement, TmplAstNode, TmplAstTemplate} from '@angular/compiler'; +import {AST, LiteralPrimitive, MethodCall, ParseError, ParseSourceSpan, PropertyRead, SafeMethodCall, SafePropertyRead, TmplAstElement, TmplAstNode, TmplAstTemplate} from '@angular/compiler'; import {AbsoluteFsPath} from '@angular/compiler-cli/src/ngtsc/file_system'; +import {TextAttribute} from '@angular/compiler/src/render3/r3_ast'; import * as ts from 'typescript'; +import {ErrorCode} from '../../diagnostics'; import {FullTemplateMapping, TypeCheckableDirectiveMeta} from './api'; import {GlobalCompletion} from './completion'; @@ -105,8 +107,9 @@ export interface TemplateTypeChecker { * include completions from the template's context component, as well as any local references or * template variables which are in scope for that expression. */ - getGlobalCompletions(context: TmplAstTemplate|null, component: ts.ClassDeclaration): - GlobalCompletion|null; + getGlobalCompletions( + context: TmplAstTemplate|null, component: ts.ClassDeclaration, + node: AST|TmplAstNode): GlobalCompletion|null; /** @@ -117,6 +120,14 @@ export interface TemplateTypeChecker { expr: PropertyRead|SafePropertyRead|MethodCall|SafeMethodCall, component: ts.ClassDeclaration): ShimLocation|null; + /** + * For the given node represents a `LiteralPrimitive`(the `TextAttribute` represents a string + * literal), retrieve a `ShimLocation` that can be used to perform autocompletion at that point in + * the node, if such a location exists. + */ + getLiteralCompletionLocation( + strNode: LiteralPrimitive|TextAttribute, component: ts.ClassDeclaration): ShimLocation|null; + /** * Get basic metadata on the directives which are in scope for the given component. */ @@ -153,6 +164,18 @@ export interface TemplateTypeChecker { * the next request. */ invalidateClass(clazz: ts.ClassDeclaration): void; + + /** + * Constructs a `ts.Diagnostic` for a given `ParseSourceSpan` within a template. + */ + makeTemplateDiagnostic( + clazz: ts.ClassDeclaration, sourceSpan: ParseSourceSpan, category: ts.DiagnosticCategory, + errorCode: T, message: string, relatedInformation?: { + text: string, + start: number, + end: number, + sourceFile: ts.SourceFile, + }[]): ts.Diagnostic; } /** diff --git a/packages/compiler-cli/src/ngtsc/typecheck/api/completion.ts b/packages/compiler-cli/src/ngtsc/typecheck/api/completion.ts index 7fb996cfb4..47d09ddb26 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/api/completion.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/api/completion.ts @@ -71,4 +71,10 @@ export interface GlobalCompletion { * the same name (from the `componentContext` completions). */ templateContext: Map; + + /** + * A location within the type-checking shim where TypeScript's completion APIs can be used to + * access completions for the AST node of the cursor position (primitive constants). + */ + nodeContext: ShimLocation|null; } diff --git a/packages/compiler-cli/src/ngtsc/typecheck/api/scope.ts b/packages/compiler-cli/src/ngtsc/typecheck/api/scope.ts index 6593d0a63b..41dbe32c8b 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/api/scope.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/api/scope.ts @@ -8,6 +8,7 @@ import * as ts from 'typescript'; import {ClassDeclaration} from '../../reflection'; +import {SymbolWithValueDeclaration} from '../../util/src/typescript'; /** * Metadata on a directive which is available in the scope of a template. @@ -16,7 +17,7 @@ export interface DirectiveInScope { /** * The `ts.Symbol` for the directive class. */ - tsSymbol: ts.Symbol; + tsSymbol: SymbolWithValueDeclaration; /** * The module which declares the directive. diff --git a/packages/compiler-cli/src/ngtsc/typecheck/api/symbols.ts b/packages/compiler-cli/src/ngtsc/typecheck/api/symbols.ts index 0640ac103b..89b0f77aeb 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/api/symbols.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/api/symbols.ts @@ -10,7 +10,8 @@ import {TmplAstElement, TmplAstReference, TmplAstTemplate, TmplAstVariable} from import * as ts from 'typescript'; import {AbsoluteFsPath} from '../../file_system'; -import {ClassDeclaration} from '../../reflection'; +import {SymbolWithValueDeclaration} from '../../util/src/typescript'; + import {DirectiveInScope} from './scope'; export enum SymbolKind { @@ -303,7 +304,7 @@ export interface ClassSymbol { tsType: ts.Type; /** The `ts.Symbol` for class. */ - tsSymbol: ts.Symbol; + tsSymbol: SymbolWithValueDeclaration; /** The position for the variable declaration for the class instance. */ shimLocation: ShimLocation; diff --git a/packages/compiler-cli/src/ngtsc/typecheck/diagnostics/src/diagnostic.ts b/packages/compiler-cli/src/ngtsc/typecheck/diagnostics/src/diagnostic.ts index 4070a47a7a..61d2f143aa 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/diagnostics/src/diagnostic.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/diagnostics/src/diagnostic.ts @@ -33,21 +33,26 @@ export interface TemplateDiagnostic extends ts.Diagnostic { export function makeTemplateDiagnostic( templateId: TemplateId, mapping: TemplateSourceMapping, span: ParseSourceSpan, category: ts.DiagnosticCategory, code: number, messageText: string|ts.DiagnosticMessageChain, - relatedMessage?: { + relatedMessages?: { text: string, - span: ParseSourceSpan, - }): TemplateDiagnostic { + start: number, + end: number, + sourceFile: ts.SourceFile, + }[]): TemplateDiagnostic { if (mapping.type === 'direct') { let relatedInformation: ts.DiagnosticRelatedInformation[]|undefined = undefined; - if (relatedMessage !== undefined) { - relatedInformation = [{ - category: ts.DiagnosticCategory.Message, - code: 0, - file: mapping.node.getSourceFile(), - start: relatedMessage.span.start.offset, - length: relatedMessage.span.end.offset - relatedMessage.span.start.offset, - messageText: relatedMessage.text, - }]; + if (relatedMessages !== undefined) { + relatedInformation = []; + for (const relatedMessage of relatedMessages) { + relatedInformation.push({ + category: ts.DiagnosticCategory.Message, + code: 0, + file: relatedMessage.sourceFile, + start: relatedMessage.start, + length: relatedMessage.end - relatedMessage.start, + messageText: relatedMessage.text, + }); + } } // For direct mappings, the error is shown inline as ngtsc was able to pinpoint a string // constant within the `@Component` decorator for the template. This allows us to map the error @@ -82,15 +87,17 @@ export function makeTemplateDiagnostic( fileName, mapping.template, ts.ScriptTarget.Latest, false, ts.ScriptKind.JSX); let relatedInformation: ts.DiagnosticRelatedInformation[] = []; - if (relatedMessage !== undefined) { - relatedInformation.push({ - category: ts.DiagnosticCategory.Message, - code: 0, - file: sf, - start: relatedMessage.span.start.offset, - length: relatedMessage.span.end.offset - relatedMessage.span.start.offset, - messageText: relatedMessage.text, - }); + if (relatedMessages !== undefined) { + for (const relatedMessage of relatedMessages) { + relatedInformation.push({ + category: ts.DiagnosticCategory.Message, + code: 0, + file: relatedMessage.sourceFile, + start: relatedMessage.start, + length: relatedMessage.end - relatedMessage.start, + messageText: relatedMessage.text, + }); + } } relatedInformation.push({ diff --git a/packages/compiler-cli/src/ngtsc/typecheck/extended/BUILD.bazel b/packages/compiler-cli/src/ngtsc/typecheck/extended/BUILD.bazel new file mode 100644 index 0000000000..ca8d5b1c9f --- /dev/null +++ b/packages/compiler-cli/src/ngtsc/typecheck/extended/BUILD.bazel @@ -0,0 +1,15 @@ +load("//tools:defaults.bzl", "ts_library") + +ts_library( + name = "extended", + srcs = glob( + ["**/*.ts"], + ), + visibility = ["//packages/compiler-cli/src/ngtsc:__subpackages__"], + deps = [ + "//packages/compiler-cli/src/ngtsc/diagnostics", + "//packages/compiler-cli/src/ngtsc/typecheck/api", + "//packages/compiler-cli/src/ngtsc/typecheck/extended/api", + "@npm//typescript", + ], +) diff --git a/packages/compiler-cli/src/ngtsc/typecheck/extended/api/BUILD.bazel b/packages/compiler-cli/src/ngtsc/typecheck/extended/api/BUILD.bazel new file mode 100644 index 0000000000..a2174ecf81 --- /dev/null +++ b/packages/compiler-cli/src/ngtsc/typecheck/extended/api/BUILD.bazel @@ -0,0 +1,15 @@ +load("//tools:defaults.bzl", "ts_library") + +ts_library( + name = "api", + srcs = glob( + ["**/*.ts"], + ), + visibility = ["//packages/compiler-cli/src/ngtsc:__subpackages__"], + deps = [ + "//packages/compiler", + "//packages/compiler-cli/src/ngtsc/diagnostics", + "//packages/compiler-cli/src/ngtsc/typecheck/api", + "@npm//typescript", + ], +) diff --git a/packages/compiler-cli/src/ngtsc/typecheck/extended/api/api.ts b/packages/compiler-cli/src/ngtsc/typecheck/extended/api/api.ts new file mode 100644 index 0000000000..43ab0f1fec --- /dev/null +++ b/packages/compiler-cli/src/ngtsc/typecheck/extended/api/api.ts @@ -0,0 +1,47 @@ +/** + * @license + * 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 + */ + +import {TmplAstNode} from '@angular/compiler'; +import * as ts from 'typescript'; + +import {ErrorCode} from '../../../diagnostics'; +import {TemplateTypeChecker} from '../../api'; + +/** + * A `ts.Diangostic` with a specific error code. + */ +export type TemplateDiagnostic = ts.Diagnostic&{code: T}; + +/** + * A Template Check receives information about the template it's checking and returns + * information about the diagnostics to be generated. + */ +export interface TemplateCheck { + /** Unique template check code, used for configuration and searching the error. */ + code: T; + + /** Runs check and returns information about the diagnostics to be generated. */ + run(ctx: TemplateContext, template: TmplAstNode[]): TemplateDiagnostic[]; +} + +/** + * The TemplateContext provided to a Template Check to get diagnostic information. + */ +export interface TemplateContext { + /** Interface that provides information about template nodes. */ + templateTypeChecker: TemplateTypeChecker; + + /** + * TypeScript interface that provides type information about symbols that appear + * in the template (it is not to query types outside the Angular component). + */ + typeChecker: ts.TypeChecker; + + /** The `@Component()` class from which the template was obtained. */ + component: ts.ClassDeclaration; +} diff --git a/packages/compiler-cli/src/ngtsc/typecheck/extended/src/template_checker.ts b/packages/compiler-cli/src/ngtsc/typecheck/extended/src/template_checker.ts new file mode 100644 index 0000000000..f92e424216 --- /dev/null +++ b/packages/compiler-cli/src/ngtsc/typecheck/extended/src/template_checker.ts @@ -0,0 +1,92 @@ +/** + * @license + * 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 + */ + +import * as ts from 'typescript'; +import {ErrorCode} from '../../../diagnostics'; +import {TemplateTypeChecker} from '../../api'; +import {TemplateCheck, TemplateContext} from '../api/api'; + +/** + * Run all `TemplateChecks` for a component and return the generated `ts.Diagnostic`s. + * @param component the `@Component()` class from which the template is obtained + * @param templateTypeChecker interface to get information about template nodes + * @param typeChecker program's type checker + * @param templateChecks specific checks to be run + * @returns generated `ts.Diagnostic[]` + */ +export function getExtendedTemplateDiagnosticsForComponent( + component: ts.ClassDeclaration, templateTypeChecker: TemplateTypeChecker, + typeChecker: ts.TypeChecker, templateChecks: TemplateCheck[]): ts.Diagnostic[] { + const template = templateTypeChecker.getTemplate(component); + // Skip checks if component has no template. This can happen if the user writes a + // `@Component()` but doesn't add the template, could happen in the language service + // when users are in the middle of typing code. + if (template === null) { + return []; + } + const diagnostics: ts.Diagnostic[] = []; + + const ctx = {templateTypeChecker, typeChecker, component} as TemplateContext; + + for (const check of templateChecks) { + diagnostics.push(...deduplicateDiagnostics(check.run(ctx, template))); + } + + return diagnostics; +} + +// Filter out duplicated diagnostics, this is possible due to the way the compiler +// handles desugaring and produces `AST`s. Ex. +// +// ``` +//
test
+// ``` +// +// Would result in the following AST: +// +// ``` +// Template { +// outputs: [ +// BoundEvent { +// name: 'foo', +// /.../ +// } +// ], +// children: [ +// Element { +// outputs: [ +// BoundEvent { +// name: 'foo', +// /.../ +// } +// ] +// } +// ], +// /.../ +// } +// ``` +// +// In this case a duplicated diagnostic could be generated for the output `foo`. +// TODO(danieltrevino): handle duplicated diagnostics when they are being generated +// to avoid extra work (could be directly in the visitor). +// https://github.com/angular/angular/pull/42984#discussion_r684823926 +function deduplicateDiagnostics(diagnostics: ts.Diagnostic[]): ts.Diagnostic[] { + const result: ts.Diagnostic[] = []; + for (const newDiag of diagnostics) { + const isDuplicateDiag = result.some(existingDiag => areDiagnosticsEqual(newDiag, existingDiag)); + if (!isDuplicateDiag) { + result.push(newDiag); + } + } + return result; +} + +function areDiagnosticsEqual(first: ts.Diagnostic, second: ts.Diagnostic): boolean { + return first.file?.fileName === second.file?.fileName && first.start === second.start && + first.length === second.length && first.code === second.code; +} diff --git a/packages/compiler-cli/src/ngtsc/typecheck/extended/src/template_checks/invalid_banana_in_box/BUILD.bazel b/packages/compiler-cli/src/ngtsc/typecheck/extended/src/template_checks/invalid_banana_in_box/BUILD.bazel new file mode 100644 index 0000000000..f2a1359185 --- /dev/null +++ b/packages/compiler-cli/src/ngtsc/typecheck/extended/src/template_checks/invalid_banana_in_box/BUILD.bazel @@ -0,0 +1,13 @@ +load("//tools:defaults.bzl", "ts_library") + +ts_library( + name = "invalid_banana_in_box", + srcs = ["index.ts"], + visibility = ["//packages/compiler-cli/src/ngtsc/typecheck/extended:__subpackages__"], + deps = [ + "//packages/compiler", + "//packages/compiler-cli/src/ngtsc/diagnostics", + "//packages/compiler-cli/src/ngtsc/typecheck/extended/api", + "@npm//typescript", + ], +) diff --git a/packages/compiler-cli/src/ngtsc/typecheck/extended/src/template_checks/invalid_banana_in_box/index.ts b/packages/compiler-cli/src/ngtsc/typecheck/extended/src/template_checks/invalid_banana_in_box/index.ts new file mode 100644 index 0000000000..93ae48b89b --- /dev/null +++ b/packages/compiler-cli/src/ngtsc/typecheck/extended/src/template_checks/invalid_banana_in_box/index.ts @@ -0,0 +1,65 @@ +/** + * @license + * 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 + */ + +import {TmplAstBoundEvent, TmplAstNode, TmplAstRecursiveVisitor} from '@angular/compiler'; +import * as ts from 'typescript'; +import {ErrorCode} from '../../../../../diagnostics'; +import {TemplateCheck, TemplateContext, TemplateDiagnostic} from '../../../api/api'; + +/** + * Ensures the two-way binding syntax is correct. + * Parentheses should be inside the brackets "[()]". + * Will return diagnostic information when "([])" is found. + */ +export class InvalidBananaInBoxCheck implements TemplateCheck { + code: ErrorCode.INVALID_BANANA_IN_BOX = 8101; + + run(ctx: TemplateContext, + template: TmplAstNode[]): TemplateDiagnostic[] { + const visitor = new BananaVisitor(ctx); + + return visitor.getDiagnostics(template); + } +} + +class BananaVisitor extends TmplAstRecursiveVisitor { + private diagnostics: ts.Diagnostic[] = []; + + constructor(public readonly ctx: TemplateContext) { + super(); + } + + /** + * Check for outputs with names surrounded in brackets "[]". + * The syntax '([foo])="bar"' would be interpreted as an @Output() + * with name '[foo]'. Just like '(foo)="bar"' would have the name 'foo'. + * Generate diagnostic information for the cases found. + */ + override visitBoundEvent(boundEvent: TmplAstBoundEvent) { + const name = boundEvent.name; + if (name.startsWith('[') && name.endsWith(']')) { + const boundSyntax = boundEvent.sourceSpan.toString(); + const expectedBoundSyntax = boundSyntax.replace(`(${name})`, `[(${name.slice(1, -1)})]`); + this.diagnostics.push( + this.ctx.templateTypeChecker.makeTemplateDiagnostic( + this.ctx.component, boundEvent.sourceSpan, ts.DiagnosticCategory.Warning, + ErrorCode.INVALID_BANANA_IN_BOX, + `In the two-way binding syntax the parentheses should be inside the brackets, ex. '${ + expectedBoundSyntax}'. + Find more at https://angular.io/guide/two-way-binding`)); + } + } + + getDiagnostics(template: TmplAstNode[]): ts.Diagnostic[] { + this.diagnostics = []; + for (const node of template) { + node.visit(this); + } + return this.diagnostics; + } +} diff --git a/packages/compiler-cli/src/ngtsc/typecheck/extended/test/template_checks/invalid_banana_in_box/BUILD.bazel b/packages/compiler-cli/src/ngtsc/typecheck/extended/test/template_checks/invalid_banana_in_box/BUILD.bazel new file mode 100644 index 0000000000..0d5b080380 --- /dev/null +++ b/packages/compiler-cli/src/ngtsc/typecheck/extended/test/template_checks/invalid_banana_in_box/BUILD.bazel @@ -0,0 +1,26 @@ +load("//tools:defaults.bzl", "jasmine_node_test", "ts_library") + +ts_library( + name = "test_lib", + testonly = True, + srcs = ["spec.ts"], + deps = [ + "//packages/compiler", + "//packages/compiler-cli/src/ngtsc/diagnostics", + "//packages/compiler-cli/src/ngtsc/file_system", + "//packages/compiler-cli/src/ngtsc/file_system/testing", + "//packages/compiler-cli/src/ngtsc/testing", + "//packages/compiler-cli/src/ngtsc/typecheck/extended", + "//packages/compiler-cli/src/ngtsc/typecheck/extended/src/template_checks/invalid_banana_in_box", + "//packages/compiler-cli/src/ngtsc/typecheck/testing", + "@npm//typescript", + ], +) + +jasmine_node_test( + name = "test", + bootstrap = ["//tools/testing:node_no_angular_es5"], + deps = [ + ":test_lib", + ], +) diff --git a/packages/compiler-cli/src/ngtsc/typecheck/extended/test/template_checks/invalid_banana_in_box/spec.ts b/packages/compiler-cli/src/ngtsc/typecheck/extended/test/template_checks/invalid_banana_in_box/spec.ts new file mode 100644 index 0000000000..4561fd166a --- /dev/null +++ b/packages/compiler-cli/src/ngtsc/typecheck/extended/test/template_checks/invalid_banana_in_box/spec.ts @@ -0,0 +1,103 @@ +/** + * @license + * 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 + */ + +import * as ts from 'typescript'; +import {ErrorCode} from '../../../../../diagnostics'; +import {absoluteFrom, getSourceFileOrError} from '../../../../../file_system'; +import {runInEachFileSystem} from '../../../../../file_system/testing'; +import {getSourceCodeForDiagnostic} from '../../../../../testing'; +import {getClass, setup} from '../../../../testing'; +import {getExtendedTemplateDiagnosticsForComponent} from '../../../src/template_checker'; +import {InvalidBananaInBoxCheck} from '../../../src/template_checks/invalid_banana_in_box/index'; + +runInEachFileSystem(() => { + describe('TemplateChecks', () => { + it('should produce invalid banana in a box warning', () => { + const fileName = absoluteFrom('/main.ts'); + const {program, templateTypeChecker} = setup([{ + fileName, + templates: { + 'TestCmp': '
', + }, + source: 'export class TestCmp { var1: string = "text"; }' + }]); + const sf = getSourceFileOrError(program, fileName); + const component = getClass(sf, 'TestCmp'); + const diags = getExtendedTemplateDiagnosticsForComponent( + component, templateTypeChecker, program.getTypeChecker(), + [new InvalidBananaInBoxCheck()]); + expect(diags.length).toBe(1); + expect(diags[0].category).toBe(ts.DiagnosticCategory.Warning); + expect(diags[0].code).toBe(ErrorCode.INVALID_BANANA_IN_BOX); + expect(getSourceCodeForDiagnostic(diags[0])).toBe('([input])="var1"'); + }); + + it('should not produce invalid banana in a box warning if written correctly', () => { + const fileName = absoluteFrom('/main.ts'); + const {program, templateTypeChecker} = setup([{ + fileName, + templates: { + 'TestCmp': '
', + }, + source: 'export class TestCmp { var1: string = "text"; }' + }]); + const sf = getSourceFileOrError(program, fileName); + const component = getClass(sf, 'TestCmp'); + const diags = getExtendedTemplateDiagnosticsForComponent( + component, templateTypeChecker, program.getTypeChecker(), + [new InvalidBananaInBoxCheck()]); + expect(diags.length).toBe(0); + }); + + it('should not produce invalid banana in a box warning with bracket in the middle of the name', + () => { + const fileName = absoluteFrom('/main.ts'); + const {program, templateTypeChecker} = setup([{ + fileName, + templates: { + 'TestCmp': '
', + }, + source: 'export class TestCmp { var1: string = "text"; }' + }]); + const sf = getSourceFileOrError(program, fileName); + const component = getClass(sf, 'TestCmp'); + const diags = getExtendedTemplateDiagnosticsForComponent( + component, templateTypeChecker, program.getTypeChecker(), + [new InvalidBananaInBoxCheck()]); + expect(diags.length).toBe(0); + }); + + it('should produce invalid banana in a box warnings for *ngIf and ng-template', () => { + const fileName = absoluteFrom('/main.ts'); + const {program, templateTypeChecker} = setup([{ + fileName, + templates: { + 'TestCmp': `
+
+ Content to render when condition is false. +
`, + }, + source: `export class TestCmp { + var1: string = "text"; + }` + }]); + const sf = getSourceFileOrError(program, fileName); + const component = getClass(sf, 'TestCmp'); + const diags = getExtendedTemplateDiagnosticsForComponent( + component, templateTypeChecker, program.getTypeChecker(), + [new InvalidBananaInBoxCheck()]); + expect(diags.length).toBe(2); + expect(diags[0].category).toBe(ts.DiagnosticCategory.Warning); + expect(diags[0].code).toBe(ErrorCode.INVALID_BANANA_IN_BOX); + expect(getSourceCodeForDiagnostic(diags[0])).toBe('([foo])="var1"'); + expect(diags[1].category).toBe(ts.DiagnosticCategory.Warning); + expect(diags[1].code).toBe(ErrorCode.INVALID_BANANA_IN_BOX); + expect(getSourceCodeForDiagnostic(diags[1])).toBe('([bar])="var1"'); + }); + }); +}); diff --git a/packages/compiler-cli/src/ngtsc/typecheck/index.ts b/packages/compiler-cli/src/ngtsc/typecheck/index.ts index aaa0b33c99..1eb7540123 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/index.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/index.ts @@ -6,9 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -export {ReusedProgramStrategy} from './src/augmented_program'; export {FileTypeCheckingData, TemplateTypeCheckerImpl} from './src/checker'; export {TypeCheckContextImpl} from './src/context'; -export {TypeCheckProgramHost} from './src/host'; export {TypeCheckShimGenerator} from './src/shim'; export {typeCheckFilePath} from './src/type_check_file'; diff --git a/packages/compiler-cli/src/ngtsc/typecheck/src/augmented_program.ts b/packages/compiler-cli/src/ngtsc/typecheck/src/augmented_program.ts deleted file mode 100644 index 6176b36a12..0000000000 --- a/packages/compiler-cli/src/ngtsc/typecheck/src/augmented_program.ts +++ /dev/null @@ -1,88 +0,0 @@ -/** - * @license - * 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 - */ - -import * as ts from 'typescript'; - -import {absoluteFromSourceFile, AbsoluteFsPath} from '../../file_system'; -import {retagAllTsFiles, untagAllTsFiles} from '../../shims'; -import {TypeCheckingProgramStrategy, UpdateMode} from '../api'; - -import {TypeCheckProgramHost} from './host'; -import {TypeCheckShimGenerator} from './shim'; - -/** - * Implements a template type-checking program using `ts.createProgram` and TypeScript's program - * reuse functionality. - */ -export class ReusedProgramStrategy implements TypeCheckingProgramStrategy { - /** - * A map of source file paths to replacement `ts.SourceFile`s for those paths. - * - * Effectively, this tracks the delta between the user's program (represented by the - * `originalHost`) and the template type-checking program being managed. - */ - private sfMap = new Map(); - - private program: ts.Program = this.originalProgram; - - constructor( - private originalProgram: ts.Program, private originalHost: ts.CompilerHost, - private options: ts.CompilerOptions, private shimExtensionPrefixes: string[]) {} - - readonly supportsInlineOperations = true; - - getProgram(): ts.Program { - return this.program; - } - - updateFiles(contents: Map, updateMode: UpdateMode): void { - if (contents.size === 0) { - // No changes have been requested. Is it safe to skip updating entirely? - // If UpdateMode is Incremental, then yes. If UpdateMode is Complete, then it's safe to skip - // only if there are no active changes already (that would be cleared by the update). - - if (updateMode !== UpdateMode.Complete || this.sfMap.size === 0) { - // No changes would be made to the `ts.Program` anyway, so it's safe to do nothing here. - return; - } - } - - if (updateMode === UpdateMode.Complete) { - this.sfMap.clear(); - } - - for (const [filePath, text] of contents.entries()) { - this.sfMap.set(filePath, ts.createSourceFile(filePath, text, ts.ScriptTarget.Latest, true)); - } - - const host = new TypeCheckProgramHost( - this.sfMap, this.originalProgram, this.originalHost, this.shimExtensionPrefixes); - const oldProgram = this.program; - - // Retag the old program's `ts.SourceFile`s with shim tags, to allow TypeScript to reuse the - // most data. - retagAllTsFiles(oldProgram); - - this.program = ts.createProgram({ - host, - rootNames: this.program.getRootFileNames(), - options: this.options, - oldProgram, - }); - host.postProgramCreationCleanup(); - - // And untag them afterwards. We explicitly untag both programs here, because the oldProgram - // may still be used for emit and needs to not contain tags. - untagAllTsFiles(this.program); - untagAllTsFiles(oldProgram); - } - - shimPathForComponent(node: ts.ClassDeclaration): AbsoluteFsPath { - return TypeCheckShimGenerator.shimFor(absoluteFromSourceFile(node.getSourceFile())); - } -} diff --git a/packages/compiler-cli/src/ngtsc/typecheck/src/checker.ts b/packages/compiler-cli/src/ngtsc/typecheck/src/checker.ts index 92ba82b43f..2596222aa0 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/src/checker.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/src/checker.ts @@ -6,23 +6,27 @@ * found in the LICENSE file at https://angular.io/license */ -import {AST, CssSelector, DomElementSchemaRegistry, MethodCall, ParseError, parseTemplate, PropertyRead, SafeMethodCall, SafePropertyRead, TmplAstElement, TmplAstNode, TmplAstReference, TmplAstTemplate, TmplAstVariable} from '@angular/compiler'; +import {AST, CssSelector, DomElementSchemaRegistry, LiteralPrimitive, MethodCall, ParseError, ParseSourceSpan, parseTemplate, PropertyRead, SafeMethodCall, SafePropertyRead, TmplAstElement, TmplAstNode, TmplAstReference, TmplAstTemplate, TmplAstVariable} from '@angular/compiler'; +import {TextAttribute} from '@angular/compiler/src/render3/r3_ast'; import * as ts from 'typescript'; +import {ErrorCode} from '../../diagnostics'; import {absoluteFrom, absoluteFromSourceFile, AbsoluteFsPath, getSourceFileOrError} from '../../file_system'; import {Reference, ReferenceEmitter} from '../../imports'; import {IncrementalBuild} from '../../incremental/api'; import {PerfCheckpoint, PerfEvent, PerfPhase, PerfRecorder} from '../../perf'; +import {ProgramDriver, UpdateMode} from '../../program_driver'; import {ClassDeclaration, isNamedClassDeclaration, ReflectionHost} from '../../reflection'; import {ComponentScopeReader, TypeCheckScopeRegistry} from '../../scope'; import {isShim} from '../../shims'; -import {getSourceFileOrNull} from '../../util/src/typescript'; -import {DirectiveInScope, ElementSymbol, FullTemplateMapping, GlobalCompletion, OptimizeFor, PipeInScope, ProgramTypeCheckAdapter, ShimLocation, Symbol, TemplateId, TemplateSymbol, TemplateTypeChecker, TypeCheckableDirectiveMeta, TypeCheckingConfig, TypeCheckingProgramStrategy, UpdateMode} from '../api'; -import {TemplateDiagnostic} from '../diagnostics'; +import {getSourceFileOrNull, isSymbolWithValueDeclaration} from '../../util/src/typescript'; +import {DirectiveInScope, ElementSymbol, FullTemplateMapping, GlobalCompletion, OptimizeFor, PipeInScope, ProgramTypeCheckAdapter, ShimLocation, Symbol, TemplateId, TemplateSymbol, TemplateTypeChecker, TypeCheckableDirectiveMeta, TypeCheckingConfig} from '../api'; +import {makeTemplateDiagnostic, TemplateDiagnostic} from '../diagnostics'; import {CompletionEngine} from './completion'; import {InliningMode, ShimTypeCheckingData, TemplateData, TypeCheckContextImpl, TypeCheckingHost} from './context'; import {shouldReportDiagnostic, translateDiagnostic} from './diagnostics'; +import {TypeCheckShimGenerator} from './shim'; import {TemplateSourceManager} from './source'; import {findTypeCheckBlock, getTemplateMapping, TemplateSourceResolver} from './tcb_util'; import {SymbolBuilder} from './template_symbol_builder'; @@ -76,8 +80,7 @@ export class TemplateTypeCheckerImpl implements TemplateTypeChecker { private isComplete = false; constructor( - private originalProgram: ts.Program, - readonly typeCheckingStrategy: TypeCheckingProgramStrategy, + private originalProgram: ts.Program, readonly programDriver: ProgramDriver, private typeCheckAdapter: ProgramTypeCheckAdapter, private config: TypeCheckingConfig, private refEmitter: ReferenceEmitter, private reflector: ReflectionHost, private compilerHost: Pick, @@ -100,7 +103,7 @@ export class TemplateTypeCheckerImpl implements TemplateTypeChecker { const sf = component.getSourceFile(); const sfPath = absoluteFromSourceFile(sf); - const shimPath = this.typeCheckingStrategy.shimPathForComponent(component); + const shimPath = TypeCheckShimGenerator.shimFor(sfPath); const fileRecord = this.getFileData(sfPath); @@ -112,7 +115,7 @@ export class TemplateTypeCheckerImpl implements TemplateTypeChecker { const shimRecord = fileRecord.shimData.get(shimPath)!; const id = fileRecord.sourceManager.getTemplateId(component); - const program = this.typeCheckingStrategy.getProgram(); + const program = this.programDriver.getProgram(); const shimSf = getSourceFileOrNull(program, shimPath); if (shimSf === null || !fileRecord.shimData.has(shimPath)) { @@ -157,7 +160,7 @@ export class TemplateTypeCheckerImpl implements TemplateTypeChecker { } const {fileRecord} = records; - const shimSf = this.typeCheckingStrategy.getProgram().getSourceFile(absoluteFrom(shimPath)); + const shimSf = this.programDriver.getProgram().getSourceFile(absoluteFrom(shimPath)); if (shimSf === undefined) { return null; } @@ -187,7 +190,7 @@ export class TemplateTypeCheckerImpl implements TemplateTypeChecker { const sfPath = absoluteFromSourceFile(sf); const fileRecord = this.state.get(sfPath)!; - const typeCheckProgram = this.typeCheckingStrategy.getProgram(); + const typeCheckProgram = this.programDriver.getProgram(); const diagnostics: (ts.Diagnostic|null)[] = []; if (fileRecord.hasInlines) { @@ -217,7 +220,7 @@ export class TemplateTypeCheckerImpl implements TemplateTypeChecker { return this.perf.inPhase(PerfPhase.TtcDiagnostics, () => { const sf = component.getSourceFile(); const sfPath = absoluteFromSourceFile(sf); - const shimPath = this.typeCheckingStrategy.shimPathForComponent(component); + const shimPath = TypeCheckShimGenerator.shimFor(sfPath); const fileRecord = this.getFileData(sfPath); @@ -228,7 +231,7 @@ export class TemplateTypeCheckerImpl implements TemplateTypeChecker { const templateId = fileRecord.sourceManager.getTemplateId(component); const shimRecord = fileRecord.shimData.get(shimPath)!; - const typeCheckProgram = this.typeCheckingStrategy.getProgram(); + const typeCheckProgram = this.programDriver.getProgram(); const diagnostics: (TemplateDiagnostic|null)[] = []; if (shimRecord.hasInlines) { @@ -256,14 +259,15 @@ export class TemplateTypeCheckerImpl implements TemplateTypeChecker { return this.getLatestComponentState(component).tcb; } - getGlobalCompletions(context: TmplAstTemplate|null, component: ts.ClassDeclaration): - GlobalCompletion|null { + getGlobalCompletions( + context: TmplAstTemplate|null, component: ts.ClassDeclaration, + node: AST|TmplAstNode): GlobalCompletion|null { const engine = this.getOrCreateCompletionEngine(component); if (engine === null) { return null; } return this.perf.inPhase( - PerfPhase.TtcAutocompletion, () => engine.getGlobalCompletions(context)); + PerfPhase.TtcAutocompletion, () => engine.getGlobalCompletions(context, node)); } getExpressionCompletionLocation( @@ -277,6 +281,16 @@ export class TemplateTypeCheckerImpl implements TemplateTypeChecker { PerfPhase.TtcAutocompletion, () => engine.getExpressionCompletionLocation(ast)); } + getLiteralCompletionLocation( + node: LiteralPrimitive|TextAttribute, component: ts.ClassDeclaration): ShimLocation|null { + const engine = this.getOrCreateCompletionEngine(component); + if (engine === null) { + return null; + } + return this.perf.inPhase( + PerfPhase.TtcAutocompletion, () => engine.getLiteralCompletionLocation(node)); + } + invalidateClass(clazz: ts.ClassDeclaration): void { this.completionCache.delete(clazz); this.symbolBuilderCache.delete(clazz); @@ -285,7 +299,7 @@ export class TemplateTypeCheckerImpl implements TemplateTypeChecker { const sf = clazz.getSourceFile(); const sfPath = absoluteFromSourceFile(sf); - const shimPath = this.typeCheckingStrategy.shimPathForComponent(clazz); + const shimPath = TypeCheckShimGenerator.shimFor(sfPath); const fileData = this.getFileData(sfPath); const templateId = fileData.sourceManager.getTemplateId(clazz); @@ -295,6 +309,23 @@ export class TemplateTypeCheckerImpl implements TemplateTypeChecker { this.isComplete = false; } + makeTemplateDiagnostic( + clazz: ts.ClassDeclaration, sourceSpan: ParseSourceSpan, category: ts.DiagnosticCategory, + errorCode: T, message: string, relatedInformation?: { + text: string, + start: number, + end: number, + sourceFile: ts.SourceFile, + }[]): TemplateDiagnostic { + const sfPath = absoluteFromSourceFile(clazz.getSourceFile()); + const fileRecord = this.state.get(sfPath)!; + const templateId = fileRecord.sourceManager.getTemplateId(clazz); + const mapping = fileRecord.sourceManager.getSourceMapping(templateId); + + return makeTemplateDiagnostic( + templateId, mapping, sourceSpan, category, errorCode, message, relatedInformation); + } + private getOrCreateCompletionEngine(component: ts.ClassDeclaration): CompletionEngine|null { if (this.completionCache.has(component)) { return this.completionCache.get(component)!; @@ -374,8 +405,7 @@ export class TemplateTypeCheckerImpl implements TemplateTypeChecker { return; } - const host = - new SingleFileTypeCheckingHost(sfPath, fileData, this.typeCheckingStrategy, this); + const host = new SingleFileTypeCheckingHost(sfPath, fileData, this); const ctx = this.newContext(host); this.typeCheckAdapter.typeCheck(sf, ctx); @@ -389,19 +419,18 @@ export class TemplateTypeCheckerImpl implements TemplateTypeChecker { private ensureShimForComponent(component: ts.ClassDeclaration): void { const sf = component.getSourceFile(); const sfPath = absoluteFromSourceFile(sf); + const shimPath = TypeCheckShimGenerator.shimFor(sfPath); this.maybeAdoptPriorResultsForFile(sf); const fileData = this.getFileData(sfPath); - const shimPath = this.typeCheckingStrategy.shimPathForComponent(component); if (fileData.shimData.has(shimPath)) { // All data for this component is available. return; } - const host = - new SingleShimTypeCheckingHost(sfPath, fileData, this.typeCheckingStrategy, this, shimPath); + const host = new SingleShimTypeCheckingHost(sfPath, fileData, this, shimPath); const ctx = this.newContext(host); this.typeCheckAdapter.typeCheck(sf, ctx); @@ -409,11 +438,10 @@ export class TemplateTypeCheckerImpl implements TemplateTypeChecker { } private newContext(host: TypeCheckingHost): TypeCheckContextImpl { - const inlining = this.typeCheckingStrategy.supportsInlineOperations ? InliningMode.InlineOps : - InliningMode.Error; + const inlining = + this.programDriver.supportsInlineOperations ? InliningMode.InlineOps : InliningMode.Error; return new TypeCheckContextImpl( - this.config, this.compilerHost, this.typeCheckingStrategy, this.refEmitter, this.reflector, - host, inlining, this.perf); + this.config, this.compilerHost, this.refEmitter, this.reflector, host, inlining, this.perf); } /** @@ -446,7 +474,7 @@ export class TemplateTypeCheckerImpl implements TemplateTypeChecker { if (updates.size > 0) { this.perf.eventCount(PerfEvent.UpdateTypeCheckProgram); } - this.typeCheckingStrategy.updateFiles(updates, UpdateMode.Incremental); + this.programDriver.updateFiles(updates, UpdateMode.Incremental); this.priorBuild.recordSuccessfulTypeCheck(this.state); this.perf.memory(PerfCheckpoint.TtcUpdateProgram); }); @@ -485,7 +513,7 @@ export class TemplateTypeCheckerImpl implements TemplateTypeChecker { const builder = new SymbolBuilder( shimPath, tcb, data, this.componentScopeReader, - () => this.typeCheckingStrategy.getProgram().getTypeChecker()); + () => this.programDriver.getProgram().getTypeChecker()); this.symbolBuilderCache.set(component, builder); return builder; } @@ -571,14 +599,14 @@ export class TemplateTypeCheckerImpl implements TemplateTypeChecker { isPoisoned: scope.compilation.isPoisoned, }; - const typeChecker = this.typeCheckingStrategy.getProgram().getTypeChecker(); + const typeChecker = this.programDriver.getProgram().getTypeChecker(); for (const dir of scope.compilation.directives) { if (dir.selector === null) { // Skip this directive, it can't be added to a template anyway. continue; } const tsSymbol = typeChecker.getSymbolAtLocation(dir.ref.node.name); - if (tsSymbol === undefined) { + if (!isSymbolWithValueDeclaration(tsSymbol)) { continue; } @@ -664,8 +692,9 @@ class WholeProgramTypeCheckingHost implements TypeCheckingHost { } shouldCheckComponent(node: ts.ClassDeclaration): boolean { - const fileData = this.impl.getFileData(absoluteFromSourceFile(node.getSourceFile())); - const shimPath = this.impl.typeCheckingStrategy.shimPathForComponent(node); + const sfPath = absoluteFromSourceFile(node.getSourceFile()); + const shimPath = TypeCheckShimGenerator.shimFor(sfPath); + const fileData = this.impl.getFileData(sfPath); // The component needs to be checked unless the shim which would contain it already exists. return !fileData.shimData.has(shimPath); } @@ -691,7 +720,7 @@ class SingleFileTypeCheckingHost implements TypeCheckingHost { constructor( protected sfPath: AbsoluteFsPath, protected fileData: FileTypeCheckingData, - protected strategy: TypeCheckingProgramStrategy, protected impl: TemplateTypeCheckerImpl) {} + protected impl: TemplateTypeCheckerImpl) {} private assertPath(sfPath: AbsoluteFsPath): void { if (this.sfPath !== sfPath) { @@ -708,7 +737,7 @@ class SingleFileTypeCheckingHost implements TypeCheckingHost { if (this.sfPath !== absoluteFromSourceFile(node.getSourceFile())) { return false; } - const shimPath = this.strategy.shimPathForComponent(node); + const shimPath = TypeCheckShimGenerator.shimFor(this.sfPath); // Only need to generate a TCB for the class if no shim exists for it currently. return !this.fileData.shimData.has(shimPath); @@ -747,9 +776,9 @@ class SingleFileTypeCheckingHost implements TypeCheckingHost { */ class SingleShimTypeCheckingHost extends SingleFileTypeCheckingHost { constructor( - sfPath: AbsoluteFsPath, fileData: FileTypeCheckingData, strategy: TypeCheckingProgramStrategy, - impl: TemplateTypeCheckerImpl, private shimPath: AbsoluteFsPath) { - super(sfPath, fileData, strategy, impl); + sfPath: AbsoluteFsPath, fileData: FileTypeCheckingData, impl: TemplateTypeCheckerImpl, + private shimPath: AbsoluteFsPath) { + super(sfPath, fileData, impl); } shouldCheckNode(node: ts.ClassDeclaration): boolean { @@ -758,7 +787,7 @@ class SingleShimTypeCheckingHost extends SingleFileTypeCheckingHost { } // Only generate a TCB for the component if it maps to the requested shim file. - const shimPath = this.strategy.shimPathForComponent(node); + const shimPath = TypeCheckShimGenerator.shimFor(this.sfPath); if (shimPath !== this.shimPath) { return false; } diff --git a/packages/compiler-cli/src/ngtsc/typecheck/src/completion.ts b/packages/compiler-cli/src/ngtsc/typecheck/src/completion.ts index 6157a663d7..48e64cb304 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/src/completion.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/src/completion.ts @@ -7,7 +7,8 @@ */ import {TmplAstReference, TmplAstTemplate} from '@angular/compiler'; -import {MethodCall, PropertyRead, PropertyWrite, SafeMethodCall, SafePropertyRead} from '@angular/compiler/src/compiler'; +import {AST, EmptyExpr, ImplicitReceiver, LiteralPrimitive, MethodCall, PropertyRead, PropertyWrite, SafeMethodCall, SafePropertyRead, TmplAstNode} from '@angular/compiler/src/compiler'; +import {TextAttribute} from '@angular/compiler/src/render3/r3_ast'; import * as ts from 'typescript'; import {AbsoluteFsPath} from '../../file_system'; @@ -23,65 +24,91 @@ import {TemplateData} from './context'; * surrounding TS program have changed. */ export class CompletionEngine { - /** - * Cache of `GlobalCompletion`s for various levels of the template, including the root template - * (`null`). - */ - private globalCompletionCache = new Map(); - - private expressionCompletionCache = - new Map(); - - constructor(private tcb: ts.Node, private data: TemplateData, private shimPath: AbsoluteFsPath) {} + private componentContext: ShimLocation|null; /** - * Get global completions within the given template context - either a `TmplAstTemplate` embedded - * view, or `null` for the root template context. + * Cache of completions for various levels of the template, including the root template (`null`). + * Memoizes `getTemplateContextCompletions`. */ - getGlobalCompletions(context: TmplAstTemplate|null): GlobalCompletion|null { - if (this.globalCompletionCache.has(context)) { - return this.globalCompletionCache.get(context)!; - } + private templateContextCache = + new Map>(); + private expressionCompletionCache = new Map< + PropertyRead|SafePropertyRead|MethodCall|SafeMethodCall|LiteralPrimitive|TextAttribute, + ShimLocation>(); + + + constructor(private tcb: ts.Node, private data: TemplateData, private shimPath: AbsoluteFsPath) { // Find the component completion expression within the TCB. This looks like: `ctx. /* ... */;` const globalRead = findFirstMatchingNode(this.tcb, { filter: ts.isPropertyAccessExpression, withExpressionIdentifier: ExpressionIdentifier.COMPONENT_COMPLETION }); - if (globalRead === null) { - return null; - } - - const completion: GlobalCompletion = { - componentContext: { + if (globalRead !== null) { + this.componentContext = { shimPath: this.shimPath, // `globalRead.name` is an empty `ts.Identifier`, so its start position immediately follows // the `.` in `ctx.`. TS autocompletion APIs can then be used to access completion results // for the component context. positionInShimFile: globalRead.name.getStart(), - }, - templateContext: new Map(), - }; + }; + } else { + this.componentContext = null; + } + } - // The bound template already has details about the references and variables in scope in the - // `context` template - they just need to be converted to `Completion`s. - for (const node of this.data.boundTarget.getEntitiesInTemplateScope(context)) { - if (node instanceof TmplAstReference) { - completion.templateContext.set(node.name, { - kind: CompletionKind.Reference, - node, - }); - } else { - completion.templateContext.set(node.name, { - kind: CompletionKind.Variable, - node, - }); + /** + * Get global completions within the given template context and AST node. + * + * @param context the given template context - either a `TmplAstTemplate` embedded view, or `null` + * for the root + * template context. + * @param node the given AST node + */ + getGlobalCompletions(context: TmplAstTemplate|null, node: AST|TmplAstNode): GlobalCompletion + |null { + if (this.componentContext === null) { + return null; + } + + const templateContext = this.getTemplateContextCompletions(context); + if (templateContext === null) { + return null; + } + + let nodeContext: ShimLocation|null = null; + if (node instanceof EmptyExpr) { + const nodeLocation = findFirstMatchingNode(this.tcb, { + filter: ts.isIdentifier, + withSpan: node.sourceSpan, + }); + if (nodeLocation !== null) { + nodeContext = { + shimPath: this.shimPath, + positionInShimFile: nodeLocation.getStart(), + }; } } - this.globalCompletionCache.set(context, completion); - return completion; + if (node instanceof PropertyRead && node.receiver instanceof ImplicitReceiver) { + const nodeLocation = findFirstMatchingNode(this.tcb, { + filter: ts.isPropertyAccessExpression, + withSpan: node.sourceSpan, + }); + if (nodeLocation) { + nodeContext = { + shimPath: this.shimPath, + positionInShimFile: nodeLocation.getStart(), + }; + } + } + + return { + componentContext: this.componentContext, + templateContext, + nodeContext, + }; } getExpressionCompletionLocation(expr: PropertyRead|PropertyWrite|MethodCall| @@ -131,4 +158,76 @@ export class CompletionEngine { this.expressionCompletionCache.set(expr, res); return res; } + + getLiteralCompletionLocation(expr: LiteralPrimitive|TextAttribute): ShimLocation|null { + if (this.expressionCompletionCache.has(expr)) { + return this.expressionCompletionCache.get(expr)!; + } + + let tsExpr: ts.StringLiteral|ts.NumericLiteral|null = null; + + if (expr instanceof TextAttribute) { + const strNode = findFirstMatchingNode(this.tcb, { + filter: ts.isParenthesizedExpression, + withSpan: expr.sourceSpan, + }); + if (strNode !== null && ts.isStringLiteral(strNode.expression)) { + tsExpr = strNode.expression; + } + } else { + tsExpr = findFirstMatchingNode(this.tcb, { + filter: (n: ts.Node): n is ts.NumericLiteral | ts.StringLiteral => + ts.isStringLiteral(n) || ts.isNumericLiteral(n), + withSpan: expr.sourceSpan, + }); + } + + if (tsExpr === null) { + return null; + } + + let positionInShimFile = tsExpr.getEnd(); + if (ts.isStringLiteral(tsExpr)) { + // In the shimFile, if `tsExpr` is a string, the position should be in the quotes. + positionInShimFile -= 1; + } + const res: ShimLocation = { + shimPath: this.shimPath, + positionInShimFile, + }; + this.expressionCompletionCache.set(expr, res); + return res; + } + + /** + * Get global completions within the given template context - either a `TmplAstTemplate` embedded + * view, or `null` for the root context. + */ + private getTemplateContextCompletions(context: TmplAstTemplate|null): + Map|null { + if (this.templateContextCache.has(context)) { + return this.templateContextCache.get(context)!; + } + + const templateContext = new Map(); + + // The bound template already has details about the references and variables in scope in the + // `context` template - they just need to be converted to `Completion`s. + for (const node of this.data.boundTarget.getEntitiesInTemplateScope(context)) { + if (node instanceof TmplAstReference) { + templateContext.set(node.name, { + kind: CompletionKind.Reference, + node, + }); + } else { + templateContext.set(node.name, { + kind: CompletionKind.Variable, + node, + }); + } + } + + this.templateContextCache.set(context, templateContext); + return templateContext; + } } diff --git a/packages/compiler-cli/src/ngtsc/typecheck/src/context.ts b/packages/compiler-cli/src/ngtsc/typecheck/src/context.ts index b06bdcfce3..d1ac3e3eac 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/src/context.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/src/context.ts @@ -13,17 +13,19 @@ import * as ts from 'typescript'; import {absoluteFromSourceFile, AbsoluteFsPath} from '../../file_system'; import {NoopImportRewriter, Reference, ReferenceEmitter} from '../../imports'; import {PerfEvent, PerfRecorder} from '../../perf'; +import {FileUpdate} from '../../program_driver'; import {ClassDeclaration, ReflectionHost} from '../../reflection'; import {ImportManager} from '../../translator'; -import {ComponentToShimMappingStrategy, TemplateId, TemplateSourceMapping, TypeCheckableDirectiveMeta, TypeCheckBlockMetadata, TypeCheckContext, TypeCheckingConfig, TypeCtorMetadata} from '../api'; +import {TemplateId, TemplateSourceMapping, TypeCheckableDirectiveMeta, TypeCheckBlockMetadata, TypeCheckContext, TypeCheckingConfig, TypeCtorMetadata} from '../api'; import {makeTemplateDiagnostic, TemplateDiagnostic} from '../diagnostics'; import {DomSchemaChecker, RegistryDomSchemaChecker} from './dom'; import {Environment} from './environment'; import {OutOfBandDiagnosticRecorder, OutOfBandDiagnosticRecorderImpl} from './oob'; +import {TypeCheckShimGenerator} from './shim'; import {TemplateSourceManager} from './source'; -import {requiresInlineTypeCheckBlock} from './tcb_util'; -import {generateTypeCheckBlock} from './type_check_block'; +import {requiresInlineTypeCheckBlock, TcbInliningRequirement} from './tcb_util'; +import {generateTypeCheckBlock, TcbGenericContextBehavior} from './type_check_block'; import {TypeCheckFile} from './type_check_file'; import {generateInlineTypeCtor, requiresInlineTypeCtor} from './type_constructor'; @@ -178,7 +180,6 @@ export class TypeCheckContextImpl implements TypeCheckContext { constructor( private config: TypeCheckingConfig, private compilerHost: Pick, - private componentMappingStrategy: ComponentToShimMappingStrategy, private refEmitter: ReferenceEmitter, private reflector: ReflectionHost, private host: TypeCheckingHost, private inlining: InliningMode, private perf: PerfRecorder) { if (inlining === InliningMode.Error && config.useInlineTypeConstructors) { @@ -262,11 +263,12 @@ export class TypeCheckContextImpl implements TypeCheckContext { templateDiagnostics, }); - const tcbRequiresInline = requiresInlineTypeCheckBlock(ref.node, pipes); + const inliningRequirement = requiresInlineTypeCheckBlock(ref.node, pipes, this.reflector); // If inlining is not supported, but is required for either the TCB or one of its directive // dependencies, then exit here with an error. - if (this.inlining === InliningMode.Error && tcbRequiresInline) { + if (this.inlining === InliningMode.Error && + inliningRequirement === TcbInliningRequirement.MustInline) { // This template cannot be supported because the underlying strategy does not support inlining // and inlining would be required. @@ -285,13 +287,26 @@ export class TypeCheckContextImpl implements TypeCheckContext { schemas, }; this.perf.eventCount(PerfEvent.GenerateTcb); - if (tcbRequiresInline) { + if (inliningRequirement !== TcbInliningRequirement.None && + this.inlining === InliningMode.InlineOps) { // This class didn't meet the requirements for external type checking, so generate an inline // TCB for the class. this.addInlineTypeCheckBlock(fileData, shimData, ref, meta); + } else if ( + inliningRequirement === TcbInliningRequirement.ShouldInlineForGenericBounds && + this.inlining === InliningMode.Error) { + // It's suggested that this TCB should be generated inline due to the component's generic + // bounds, but inlining is not supported by the current environment. Use a non-inline type + // check block, but fall back to `any` generic parameters since the generic bounds can't be + // referenced in that context. This will infer a less useful type for the component, but allow + // for type-checking it in an environment where that would not be possible otherwise. + shimData.file.addTypeCheckBlock( + ref, meta, shimData.domSchemaChecker, shimData.oobRecorder, + TcbGenericContextBehavior.FallbackToAny); } else { - // The class can be type-checked externally as normal. - shimData.file.addTypeCheckBlock(ref, meta, shimData.domSchemaChecker, shimData.oobRecorder); + shimData.file.addTypeCheckBlock( + ref, meta, shimData.domSchemaChecker, shimData.oobRecorder, + TcbGenericContextBehavior.UseEmitter); } } @@ -362,13 +377,16 @@ export class TypeCheckContextImpl implements TypeCheckContext { return code; } - finalize(): Map { + finalize(): Map { // First, build the map of updates to source files. - const updates = new Map(); + const updates = new Map(); for (const originalSf of this.opMap.keys()) { const newText = this.transform(originalSf); if (newText !== null) { - updates.set(absoluteFromSourceFile(originalSf), newText); + updates.set(absoluteFromSourceFile(originalSf), { + newText, + originalFile: originalSf, + }); } } @@ -385,8 +403,13 @@ export class TypeCheckContextImpl implements TypeCheckContext { path: pendingShimData.file.fileName, templates: pendingShimData.templates, }); - updates.set( - pendingShimData.file.fileName, pendingShimData.file.render(false /* removeComments */)); + const sfText = pendingShimData.file.render(false /* removeComments */); + updates.set(pendingShimData.file.fileName, { + newText: sfText, + + // Shim files do not have an associated original file. + originalFile: null, + }); } } @@ -402,7 +425,7 @@ export class TypeCheckContextImpl implements TypeCheckContext { this.opMap.set(sf, []); } const ops = this.opMap.get(sf)!; - ops.push(new TcbOp( + ops.push(new InlineTcbOp( ref, tcbMeta, this.config, this.reflector, shimData.domSchemaChecker, shimData.oobRecorder)); fileData.hasInlines = true; @@ -410,7 +433,7 @@ export class TypeCheckContextImpl implements TypeCheckContext { private pendingShimForComponent(node: ts.ClassDeclaration): PendingShimData { const fileData = this.dataForFile(node.getSourceFile()); - const shimPath = this.componentMappingStrategy.shimPathForComponent(node); + const shimPath = TypeCheckShimGenerator.shimFor(absoluteFromSourceFile(node.getSourceFile())); if (!fileData.shimData.has(shimPath)) { fileData.shimData.set(shimPath, { domSchemaChecker: new RegistryDomSchemaChecker(fileData.sourceManager), @@ -481,9 +504,9 @@ interface Op { } /** - * A type check block operation which produces type check code for a particular component. + * A type check block operation which produces inline type check code for a particular component. */ -class TcbOp implements Op { +class InlineTcbOp implements Op { constructor( readonly ref: Reference>, readonly meta: TypeCheckBlockMetadata, readonly config: TypeCheckingConfig, @@ -501,8 +524,12 @@ class TcbOp implements Op { string { const env = new Environment(this.config, im, refEmitter, this.reflector, sf); const fnName = ts.createIdentifier(`_tcb_${this.ref.node.pos}`); + + // Inline TCBs should copy any generic type parameter nodes directly, as the TCB code is inlined + // into the class in a context where that will always be legal. const fn = generateTypeCheckBlock( - env, this.ref, fnName, this.meta, this.domSchemaChecker, this.oobRecorder); + env, this.ref, fnName, this.meta, this.domSchemaChecker, this.oobRecorder, + TcbGenericContextBehavior.CopyClassNodes); return printer.printNode(ts.EmitHint.Unspecified, fn, sf); } } diff --git a/packages/compiler-cli/src/ngtsc/typecheck/src/expression.ts b/packages/compiler-cli/src/ngtsc/typecheck/src/expression.ts index 1ecb5061b8..f92a01749a 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/src/expression.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/src/expression.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {AST, AstVisitor, ASTWithSource, Binary, BindingPipe, Chain, Conditional, EmptyExpr, FunctionCall, ImplicitReceiver, Interpolation, KeyedRead, KeyedWrite, LiteralArray, LiteralMap, LiteralPrimitive, MethodCall, NonNullAssert, PrefixNot, PropertyRead, PropertyWrite, Quote, SafeMethodCall, SafePropertyRead, ThisReceiver, Unary} from '@angular/compiler'; +import {AST, AstVisitor, ASTWithSource, Binary, BindingPipe, Chain, Conditional, EmptyExpr, FunctionCall, ImplicitReceiver, Interpolation, KeyedRead, KeyedWrite, LiteralArray, LiteralMap, LiteralPrimitive, MethodCall, NonNullAssert, PrefixNot, PropertyRead, PropertyWrite, Quote, SafeKeyedRead, SafeMethodCall, SafePropertyRead, ThisReceiver, Unary} from '@angular/compiler'; import * as ts from 'typescript'; import {TypeCheckingConfig} from '../api'; @@ -41,6 +41,7 @@ const BINARY_OPS = new Map([ ['&&', ts.SyntaxKind.AmpersandAmpersandToken], ['&', ts.SyntaxKind.AmpersandToken], ['|', ts.SyntaxKind.BarToken], + ['??', ts.SyntaxKind.QuestionQuestionToken], ]); /** @@ -68,7 +69,9 @@ class AstTranslator implements AstVisitor { // The `EmptyExpr` doesn't have a dedicated method on `AstVisitor`, so it's special cased here. if (ast instanceof EmptyExpr) { - return UNDEFINED; + const res = ts.factory.createIdentifier('undefined'); + addParseSpanInfo(res, ast.sourceSpan); + return res; } // First attempt to let any custom resolution logic provide a translation for the given node. @@ -153,7 +156,7 @@ class AstTranslator implements AstVisitor { } visitKeyedRead(ast: KeyedRead): ts.Expression { - const receiver = wrapForDiagnostics(this.translate(ast.obj)); + const receiver = wrapForDiagnostics(this.translate(ast.receiver)); const key = this.translate(ast.key); const node = ts.createElementAccess(receiver, key); addParseSpanInfo(node, ast.sourceSpan); @@ -161,7 +164,7 @@ class AstTranslator implements AstVisitor { } visitKeyedWrite(ast: KeyedWrite): ts.Expression { - const receiver = wrapForDiagnostics(this.translate(ast.obj)); + const receiver = wrapForDiagnostics(this.translate(ast.receiver)); const left = ts.createElementAccess(receiver, this.translate(ast.key)); // TODO(joost): annotate `left` with the span of the element access, which is not currently // available on `ast`. @@ -327,6 +330,30 @@ class AstTranslator implements AstVisitor { addParseSpanInfo(node, ast.sourceSpan); return node; } + + visitSafeKeyedRead(ast: SafeKeyedRead): ts.Expression { + const receiver = wrapForDiagnostics(this.translate(ast.receiver)); + const key = this.translate(ast.key); + let node: ts.Expression; + + // The form of safe property reads depends on whether strictness is in use. + if (this.config.strictSafeNavigationTypes) { + // "a?.[...]" becomes (null as any ? a![...] : undefined) + const expr = ts.createElementAccess(ts.createNonNullExpression(receiver), key); + addParseSpanInfo(expr, ast.sourceSpan); + node = ts.createParen(ts.createConditional(NULL_AS_ANY, expr, UNDEFINED)); + } else if (VeSafeLhsInferenceBugDetector.veWillInferAnyFor(ast)) { + // "a?.[...]" becomes (a as any)[...] + node = ts.createElementAccess(tsCastToAny(receiver), key); + } else { + // "a?.[...]" becomes (a!.[...] as any) + const expr = ts.createElementAccess(ts.createNonNullExpression(receiver), key); + addParseSpanInfo(expr, ast.sourceSpan); + node = tsCastToAny(expr); + } + addParseSpanInfo(node, ast.sourceSpan); + return node; + } } /** @@ -345,8 +372,9 @@ class AstTranslator implements AstVisitor { class VeSafeLhsInferenceBugDetector implements AstVisitor { private static SINGLETON = new VeSafeLhsInferenceBugDetector(); - static veWillInferAnyFor(ast: SafeMethodCall|SafePropertyRead) { - return ast.receiver.visit(VeSafeLhsInferenceBugDetector.SINGLETON); + static veWillInferAnyFor(ast: SafeMethodCall|SafePropertyRead|SafeKeyedRead) { + const visitor = VeSafeLhsInferenceBugDetector.SINGLETON; + return ast instanceof SafeKeyedRead ? ast.receiver.visit(visitor) : ast.receiver.visit(visitor); } visitUnary(ast: Unary): boolean { @@ -415,4 +443,7 @@ class VeSafeLhsInferenceBugDetector implements AstVisitor { visitSafePropertyRead(ast: SafePropertyRead): boolean { return false; } + visitSafeKeyedRead(ast: SafeKeyedRead): boolean { + return false; + } } diff --git a/packages/compiler-cli/src/ngtsc/typecheck/src/oob.ts b/packages/compiler-cli/src/ngtsc/typecheck/src/oob.ts index 446debb4ee..ec841fcd69 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/src/oob.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/src/oob.ts @@ -6,7 +6,8 @@ * found in the LICENSE file at https://angular.io/license */ -import {BindingPipe, PropertyWrite, TmplAstReference, TmplAstVariable} from '@angular/compiler'; +import {BindingPipe, PropertyWrite, TmplAstBoundEvent, TmplAstElement, TmplAstReference, TmplAstVariable} from '@angular/compiler'; +import {BoundAttribute} from '@angular/compiler/src/render3/r3_ast'; import * as ts from 'typescript'; import {ErrorCode, makeDiagnostic, makeRelatedInformation, ngErrorCode} from '../../diagnostics'; @@ -74,6 +75,13 @@ export interface OutOfBandDiagnosticRecorder { * type-checking configuration prohibits their usage. */ suboptimalTypeInference(templateId: TemplateId, variables: TmplAstVariable[]): void; + + /** + * Reports a split two way binding error message. + */ + splitTwoWayBinding( + templateId: TemplateId, input: BoundAttribute, output: TmplAstBoundEvent, + inputConsumer: ClassDeclaration, outputConsumer: ClassDeclaration|TmplAstElement): void; } export class OutOfBandDiagnosticRecorderImpl implements OutOfBandDiagnosticRecorder { @@ -133,10 +141,12 @@ export class OutOfBandDiagnosticRecorderImpl implements OutOfBandDiagnosticRecor } this._diagnostics.push(makeTemplateDiagnostic( templateId, mapping, sourceSpan, ts.DiagnosticCategory.Error, - ngErrorCode(ErrorCode.WRITE_TO_READ_ONLY_VARIABLE), errorMsg, { + ngErrorCode(ErrorCode.WRITE_TO_READ_ONLY_VARIABLE), errorMsg, [{ text: `The variable ${assignment.name} is declared here.`, - span: target.valueSpan || target.sourceSpan, - })); + start: target.valueSpan?.start.offset || target.sourceSpan.start.offset, + end: target.valueSpan?.end.offset || target.sourceSpan.end.offset, + sourceFile: mapping.node.getSourceFile(), + }])); } duplicateTemplateVar( @@ -152,10 +162,12 @@ export class OutOfBandDiagnosticRecorderImpl implements OutOfBandDiagnosticRecor // TODO(alxhub): allocate to a tighter span once one is available. this._diagnostics.push(makeTemplateDiagnostic( templateId, mapping, variable.sourceSpan, ts.DiagnosticCategory.Error, - ngErrorCode(ErrorCode.DUPLICATE_VARIABLE_DECLARATION), errorMsg, { + ngErrorCode(ErrorCode.DUPLICATE_VARIABLE_DECLARATION), errorMsg, [{ text: `The variable '${firstDecl.name}' was first declared here.`, - span: firstDecl.sourceSpan, - })); + start: firstDecl.sourceSpan.start.offset, + end: firstDecl.sourceSpan.end.offset, + sourceFile: mapping.node.getSourceFile(), + }])); } requiresInlineTcb(templateId: TemplateId, node: ClassDeclaration): void { @@ -211,6 +223,51 @@ export class OutOfBandDiagnosticRecorderImpl implements OutOfBandDiagnosticRecor templateId, mapping, diagnosticVar.keySpan, ts.DiagnosticCategory.Suggestion, ngErrorCode(ErrorCode.SUGGEST_SUBOPTIMAL_TYPE_INFERENCE), message)); } + + splitTwoWayBinding( + templateId: TemplateId, input: BoundAttribute, output: TmplAstBoundEvent, + inputConsumer: ClassDeclaration, outputConsumer: ClassDeclaration|TmplAstElement): void { + const mapping = this.resolver.getSourceMapping(templateId); + const errorMsg = `The property and event halves of the two-way binding '${ + input.name}' are not bound to the same target. + Find more at https://angular.io/guide/two-way-binding#how-two-way-binding-works`; + + const relatedMessages: {text: string; start: number; end: number; + sourceFile: ts.SourceFile;}[] = []; + + relatedMessages.push({ + text: `The property half of the binding is to the '${inputConsumer.name.text}' component.`, + start: inputConsumer.name.getStart(), + end: inputConsumer.name.getEnd(), + sourceFile: inputConsumer.name.getSourceFile(), + }); + + if (outputConsumer instanceof TmplAstElement) { + let message = `The event half of the binding is to a native event called '${ + input.name}' on the <${outputConsumer.name}> DOM element.`; + if (!mapping.node.getSourceFile().isDeclarationFile) { + message += `\n \n Are you missing an output declaration called '${output.name}'?`; + } + relatedMessages.push({ + text: message, + start: outputConsumer.sourceSpan.start.offset + 1, + end: outputConsumer.sourceSpan.start.offset + outputConsumer.name.length + 1, + sourceFile: mapping.node.getSourceFile(), + }); + } else { + relatedMessages.push({ + text: `The event half of the binding is to the '${outputConsumer.name.text}' component.`, + start: outputConsumer.name.getStart(), + end: outputConsumer.name.getEnd(), + sourceFile: outputConsumer.name.getSourceFile(), + }); + } + + + this._diagnostics.push(makeTemplateDiagnostic( + templateId, mapping, input.keySpan, ts.DiagnosticCategory.Error, + ngErrorCode(ErrorCode.SPLIT_TWO_WAY_BINDING), errorMsg, relatedMessages)); + } } function makeInlineDiagnostic( diff --git a/packages/compiler-cli/src/ngtsc/typecheck/src/tcb_util.ts b/packages/compiler-cli/src/ngtsc/typecheck/src/tcb_util.ts index 43b944d4e2..ace4cc8b2b 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/src/tcb_util.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/src/tcb_util.ts @@ -7,7 +7,7 @@ */ import {AbsoluteSourceSpan, ParseSourceSpan} from '@angular/compiler'; -import {ClassDeclaration} from '@angular/compiler-cli/src/ngtsc/reflection'; +import {ClassDeclaration, ReflectionHost} from '@angular/compiler-cli/src/ngtsc/reflection'; import * as ts from 'typescript'; import {Reference} from '../../imports'; @@ -16,6 +16,7 @@ import {FullTemplateMapping, SourceLocation, TemplateId, TemplateSourceMapping} import {hasIgnoreForDiagnosticsMarker, readSpanComment} from './comments'; import {checkIfClassIsExported, checkIfGenericTypesAreUnbound} from './ts_util'; +import {TypeParameterEmitter} from './type_parameter_emitter'; /** * Adapter interface which allows the template type-checking diagnostics code to interpret offsets @@ -38,25 +39,51 @@ export interface TemplateSourceResolver { toParseSourceSpan(id: TemplateId, span: AbsoluteSourceSpan): ParseSourceSpan|null; } +/** + * Indicates whether a particular component requires an inline type check block. + * + * This is not a boolean state as inlining might only be required to get the best possible + * type-checking, but the component could theoretically still be checked without it. + */ +export enum TcbInliningRequirement { + /** + * There is no way to type check this component without inlining. + */ + MustInline, + + /** + * Inlining should be used due to the component's generic bounds, but a non-inlining fallback + * method can be used if that's not possible. + */ + ShouldInlineForGenericBounds, + + /** + * There is no requirement for this component's TCB to be inlined. + */ + None, +} + export function requiresInlineTypeCheckBlock( node: ClassDeclaration, - usedPipes: Map>>): boolean { + usedPipes: Map>>, + reflector: ReflectionHost): TcbInliningRequirement { // In order to qualify for a declared TCB (not inline) two conditions must be met: // 1) the class must be exported - // 2) it must not have constrained generic types + // 2) it must not have contextual generic type bounds if (!checkIfClassIsExported(node)) { // Condition 1 is false, the class is not exported. - return true; - } else if (!checkIfGenericTypesAreUnbound(node)) { - // Condition 2 is false, the class has constrained generic types - return true; + return TcbInliningRequirement.MustInline; + } else if (!checkIfGenericTypeBoundsAreContextFree(node, reflector)) { + // Condition 2 is false, the class has constrained generic types. It should be checked with an + // inline TCB if possible, but can potentially use fallbacks to avoid inlining if not. + return TcbInliningRequirement.ShouldInlineForGenericBounds; } else if (Array.from(usedPipes.values()) .some(pipeRef => !checkIfClassIsExported(pipeRef.node))) { // If one of the pipes used by the component is not exported, a non-inline TCB will not be able // to import it, so this requires an inline TCB. - return true; + return TcbInliningRequirement.MustInline; } else { - return false; + return TcbInliningRequirement.None; } } @@ -147,3 +174,9 @@ function getTemplateId( return commentText; }) as TemplateId || null; } + +export function checkIfGenericTypeBoundsAreContextFree( + node: ClassDeclaration, reflector: ReflectionHost): boolean { + // Generic type parameters are considered context free if they can be emitted into any context. + return new TypeParameterEmitter(node.typeParameters, reflector).canEmit(); +} diff --git a/packages/compiler-cli/src/ngtsc/typecheck/src/template_semantics.ts b/packages/compiler-cli/src/ngtsc/typecheck/src/template_semantics.ts index d51a075bd0..5e8a7bbb6c 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/src/template_semantics.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/src/template_semantics.ts @@ -22,7 +22,7 @@ export class ExpressionSemanticVisitor extends RecursiveAstVisitor { super(); } - visitPropertyWrite(ast: PropertyWrite, context: any): void { + override visitPropertyWrite(ast: PropertyWrite, context: any): void { super.visitPropertyWrite(ast, context); if (!(ast.receiver instanceof ImplicitReceiver)) { diff --git a/packages/compiler-cli/src/ngtsc/typecheck/src/template_symbol_builder.ts b/packages/compiler-cli/src/ngtsc/typecheck/src/template_symbol_builder.ts index cd7bc32c27..87520a37ba 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/src/template_symbol_builder.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/src/template_symbol_builder.ts @@ -6,13 +6,13 @@ * found in the LICENSE file at https://angular.io/license */ -import {AST, ASTWithSource, BindingPipe, MethodCall, PropertyWrite, SafeMethodCall, SafePropertyRead, TmplAstBoundAttribute, TmplAstBoundEvent, TmplAstElement, TmplAstNode, TmplAstReference, TmplAstTemplate, TmplAstTextAttribute, TmplAstVariable} from '@angular/compiler'; +import {AST, ASTWithSource, BindingPipe, MethodCall, ParseSourceSpan, PropertyRead, PropertyWrite, SafeMethodCall, SafePropertyRead, TmplAstBoundAttribute, TmplAstBoundEvent, TmplAstElement, TmplAstNode, TmplAstReference, TmplAstTemplate, TmplAstTextAttribute, TmplAstVariable} from '@angular/compiler'; import * as ts from 'typescript'; import {AbsoluteFsPath} from '../../file_system'; import {ClassDeclaration} from '../../reflection'; import {ComponentScopeReader} from '../../scope'; -import {isAssignment} from '../../util/src/typescript'; +import {isAssignment, isSymbolWithValueDeclaration} from '../../util/src/typescript'; import {BindingSymbol, DirectiveSymbol, DomBindingSymbol, ElementSymbol, ExpressionSymbol, InputBindingSymbol, OutputBindingSymbol, PipeSymbol, ReferenceSymbol, ShimLocation, Symbol, SymbolKind, TemplateSymbol, TsNodeSymbolInfo, TypeCheckableDirectiveMeta, VariableSymbol} from '../api'; import {ExpressionIdentifier, findAllMatchingNodes, findFirstMatchingNode, hasExpressionIdentifier} from './comments'; @@ -119,8 +119,7 @@ export class SymbolBuilder { return nodes .map(node => { const symbol = this.getSymbolOfTsNode(node.parent); - if (symbol === null || symbol.tsSymbol === null || - symbol.tsSymbol.valueDeclaration === undefined || + if (symbol === null || !isSymbolWithValueDeclaration(symbol.tsSymbol) || !ts.isClassDeclaration(symbol.tsSymbol.valueDeclaration)) { return null; } @@ -151,7 +150,24 @@ export class SymbolBuilder { private getDirectiveMeta( host: TmplAstTemplate|TmplAstElement, directiveDeclaration: ts.Declaration): TypeCheckableDirectiveMeta|null { - const directives = this.templateData.boundTarget.getDirectivesOfNode(host); + let directives = this.templateData.boundTarget.getDirectivesOfNode(host); + + // `getDirectivesOfNode` will not return the directives intended for an element + // on a microsyntax template, for example `
`, + // the `dir` will be skipped, but it's needed in language service. + const firstChild = host.children[0]; + if (firstChild instanceof TmplAstElement) { + const isMicrosyntaxTemplate = host instanceof TmplAstTemplate && + sourceSpanEqual(firstChild.sourceSpan, host.sourceSpan); + if (isMicrosyntaxTemplate) { + const firstChildDirectives = this.templateData.boundTarget.getDirectivesOfNode(firstChild); + if (firstChildDirectives !== null && directives !== null) { + directives = directives.concat(firstChildDirectives); + } else { + directives = directives ?? firstChildDirectives; + } + } + } if (directives === null) { return null; } @@ -314,7 +330,8 @@ export class SymbolBuilder { // In either case, `_t1["index"]` or `_t1.index`, `node.expression` is _t1. // The retrieved symbol for _t1 will be the variable declaration. const tsSymbol = this.getTypeChecker().getSymbolAtLocation(node.expression); - if (tsSymbol === undefined || tsSymbol.declarations.length === 0 || selector === null) { + if (tsSymbol?.declarations === undefined || tsSymbol.declarations.length === 0 || + selector === null) { return null; } @@ -329,8 +346,7 @@ export class SymbolBuilder { } const symbol = this.getSymbolOfTsNode(declaration); - if (symbol === null || symbol.tsSymbol === null || - symbol.tsSymbol.valueDeclaration === undefined || + if (symbol === null || !isSymbolWithValueDeclaration(symbol.tsSymbol) || !ts.isClassDeclaration(symbol.tsSymbol.valueDeclaration)) { return null; } @@ -430,26 +446,24 @@ export class SymbolBuilder { } private getSymbolOfPipe(expression: BindingPipe): PipeSymbol|null { - const node = findFirstMatchingNode( - this.typeCheckBlock, {withSpan: expression.sourceSpan, filter: ts.isCallExpression}); - if (node === null || !ts.isPropertyAccessExpression(node.expression)) { + const methodAccess = findFirstMatchingNode( + this.typeCheckBlock, + {withSpan: expression.nameSpan, filter: ts.isPropertyAccessExpression}); + if (methodAccess === null) { return null; } - const methodAccess = node.expression; - // Find the node for the pipe variable from the transform property access. This will be one of - // two forms: `_pipe1.transform` or `(_pipe1 as any).transform`. - const pipeVariableNode = ts.isParenthesizedExpression(methodAccess.expression) && - ts.isAsExpression(methodAccess.expression.expression) ? - methodAccess.expression.expression.expression : - methodAccess.expression; + const pipeVariableNode = methodAccess.expression; const pipeDeclaration = this.getTypeChecker().getSymbolAtLocation(pipeVariableNode); if (pipeDeclaration === undefined || pipeDeclaration.valueDeclaration === undefined) { return null; } const pipeInstance = this.getSymbolOfTsNode(pipeDeclaration.valueDeclaration); - if (pipeInstance === null || pipeInstance.tsSymbol === null) { + // The instance should never be null, nor should the symbol lack a value declaration. This + // is because the node used to look for the `pipeInstance` symbol info is a value + // declaration of another symbol (i.e. the `pipeDeclaration` symbol). + if (pipeInstance === null || !isSymbolWithValueDeclaration(pipeInstance.tsSymbol)) { return null; } @@ -485,8 +499,20 @@ export class SymbolBuilder { expression.nameSpan : expression.sourceSpan; - let node = findFirstMatchingNode( - this.typeCheckBlock, {withSpan, filter: (n: ts.Node): n is ts.Node => true}); + let node: ts.Node|null = null; + + // Property reads in templates usually map to a `PropertyAccessExpression` + // (e.g. `ctx.foo`) so try looking for one first. + if (expression instanceof PropertyRead) { + node = findFirstMatchingNode( + this.typeCheckBlock, {withSpan, filter: ts.isPropertyAccessExpression}); + } + + // Otherwise fall back to searching for any AST node. + if (node === null) { + node = findFirstMatchingNode(this.typeCheckBlock, {withSpan, filter: anyNodeFilter}); + } + if (node === null) { return null; } @@ -563,3 +589,12 @@ export class SymbolBuilder { } } } + +/** Filter predicate function that matches any AST node. */ +function anyNodeFilter(n: ts.Node): n is ts.Node { + return true; +} + +function sourceSpanEqual(a: ParseSourceSpan, b: ParseSourceSpan) { + return a.start.offset === b.start.offset && a.end.offset === b.end.offset; +} diff --git a/packages/compiler-cli/src/ngtsc/typecheck/src/type_check_block.ts b/packages/compiler-cli/src/ngtsc/typecheck/src/type_check_block.ts index bf384afc45..566f772734 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/src/type_check_block.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/src/type_check_block.ts @@ -21,8 +21,37 @@ import {Environment} from './environment'; import {astToTypescript, NULL_AS_ANY} from './expression'; import {OutOfBandDiagnosticRecorder} from './oob'; import {ExpressionSemanticVisitor} from './template_semantics'; -import {checkIfGenericTypesAreUnbound, tsCallMethod, tsCastToAny, tsCreateElement, tsCreateTypeQueryForCoercedInput, tsCreateVariable, tsDeclareVariable} from './ts_util'; +import {tsCallMethod, tsCastToAny, tsCreateElement, tsCreateTypeQueryForCoercedInput, tsCreateVariable, tsDeclareVariable} from './ts_util'; import {requiresInlineTypeCtor} from './type_constructor'; +import {TypeParameterEmitter} from './type_parameter_emitter'; + +/** + * Controls how generics for the component context class will be handled during TCB generation. + */ +export enum TcbGenericContextBehavior { + /** + * References to generic parameter bounds will be emitted via the `TypeParameterEmitter`. + * + * The caller must verify that all parameter bounds are emittable in order to use this mode. + */ + UseEmitter, + + /** + * Generic parameter declarations will be copied directly from the `ts.ClassDeclaration` of the + * component class. + * + * The caller must only use the generated TCB code in a context where such copies will still be + * valid, such as an inline type check block. + */ + CopyClassNodes, + + /** + * Any generic parameters for the component context class will be set to `any`. + * + * Produces a less useful type, but is always safe to use. + */ + FallbackToAny, +} /** * Given a `ts.ClassDeclaration` for a component, and metadata regarding that component, compose a @@ -45,11 +74,14 @@ import {requiresInlineTypeCtor} from './type_constructor'; * and bindings. * @param oobRecorder used to record errors regarding template elements which could not be correctly * translated into types during TCB generation. + * @param genericContextBehavior controls how generic parameters (especially parameters with generic + * bounds) will be referenced from the generated TCB code. */ export function generateTypeCheckBlock( env: Environment, ref: Reference>, name: ts.Identifier, meta: TypeCheckBlockMetadata, domSchemaChecker: DomSchemaChecker, - oobRecorder: OutOfBandDiagnosticRecorder): ts.FunctionDeclaration { + oobRecorder: OutOfBandDiagnosticRecorder, + genericContextBehavior: TcbGenericContextBehavior): ts.FunctionDeclaration { const tcb = new Context( env, domSchemaChecker, oobRecorder, meta.id, meta.boundTarget, meta.pipes, meta.schemas); const scope = Scope.forNodes(tcb, null, tcb.boundTarget.target.template !, /* guard */ null); @@ -58,7 +90,34 @@ export function generateTypeCheckBlock( throw new Error( `Expected TypeReferenceNode when referencing the ctx param for ${ref.debugName}`); } - const paramList = [tcbCtxParam(ref.node, ctxRawType.typeName, env.config.useContextGenericType)]; + + let typeParameters: ts.TypeParameterDeclaration[]|undefined = undefined; + let typeArguments: ts.TypeNode[]|undefined = undefined; + + if (ref.node.typeParameters !== undefined) { + if (!env.config.useContextGenericType) { + genericContextBehavior = TcbGenericContextBehavior.FallbackToAny; + } + + switch (genericContextBehavior) { + case TcbGenericContextBehavior.UseEmitter: + // Guaranteed to emit type parameters since we checked that the class has them above. + typeParameters = new TypeParameterEmitter(ref.node.typeParameters, env.reflector) + .emit(typeRef => env.referenceType(typeRef))!; + typeArguments = typeParameters.map(param => ts.factory.createTypeReferenceNode(param.name)); + break; + case TcbGenericContextBehavior.CopyClassNodes: + typeParameters = [...ref.node.typeParameters]; + typeArguments = typeParameters.map(param => ts.factory.createTypeReferenceNode(param.name)); + break; + case TcbGenericContextBehavior.FallbackToAny: + typeArguments = ref.node.typeParameters.map( + () => ts.factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword)); + break; + } + } + + const paramList = [tcbCtxParam(ref.node, ctxRawType.typeName, typeArguments)]; const scopeStatements = scope.render(); const innerBody = ts.createBlock([ @@ -74,7 +133,7 @@ export function generateTypeCheckBlock( /* modifiers */ undefined, /* asteriskToken */ undefined, /* name */ name, - /* typeParameters */ env.config.useContextGenericType ? ref.node.typeParameters : undefined, + /* typeParameters */ env.config.useContextGenericType ? typeParameters : undefined, /* parameters */ paramList, /* type */ undefined, /* body */ body); @@ -133,14 +192,14 @@ class TcbElementOp extends TcbOp { super(); } - get optional() { + override get optional() { // The statement generated by this operation is only used for type-inference of the DOM // element's type and won't report diagnostics by itself, so the operation is marked as optional // to avoid generating statements for DOM elements that are never referenced. return true; } - execute(): ts.Identifier { + override execute(): ts.Identifier { const id = this.tcb.allocateId(); // Add the declaration of the element using document.createElement. const initializer = tsCreateElement(this.element.name); @@ -163,11 +222,11 @@ class TcbVariableOp extends TcbOp { super(); } - get optional() { + override get optional() { return false; } - execute(): ts.Identifier { + override execute(): ts.Identifier { // Look for a context variable for the template. const ctx = this.scope.resolve(this.template); @@ -204,9 +263,9 @@ class TcbTemplateContextOp extends TcbOp { } // The declaration of the context variable is only needed when the context is actually referenced. - readonly optional = true; + override readonly optional = true; - execute(): ts.Identifier { + override execute(): ts.Identifier { // Allocate a template ctx variable and declare it with an 'any' type. The type of this variable // may be narrowed as a result of template guard conditions. const ctx = this.tcb.allocateId(); @@ -228,11 +287,11 @@ class TcbTemplateBodyOp extends TcbOp { super(); } - get optional() { + override get optional() { return false; } - execute(): null { + override execute(): null { // An `if` will be constructed, within which the template's children will be type checked. The // `if` is used for two reasons: it creates a new syntactic scope, isolating variables declared // in the template's TCB from the outer context, and it allows any directives on the templates @@ -355,11 +414,11 @@ class TcbTextInterpolationOp extends TcbOp { super(); } - get optional() { + override get optional() { return false; } - execute(): null { + override execute(): null { const expr = tcbExpression(this.binding.value, this.tcb, this.scope); this.scope.addStatement(ts.createExpressionStatement(expr)); return null; @@ -377,14 +436,14 @@ abstract class TcbDirectiveTypeOpBase extends TcbOp { super(); } - get optional() { + override get optional() { // The statement generated by this operation is only used to declare the directive's type and // won't report diagnostics by itself, so the operation is marked as optional to avoid // generating declarations for directives that don't have any inputs/outputs. return true; } - execute(): ts.Identifier { + override execute(): ts.Identifier { const dirRef = this.dir.ref as Reference>; const rawType = this.tcb.env.referenceType(this.dir.ref); @@ -412,7 +471,7 @@ abstract class TcbDirectiveTypeOpBase extends TcbOp { /** * A `TcbOp` which constructs an instance of a non-generic directive _without_ setting any of its - * inputs. Inputs are later set in the `TcbDirectiveInputsOp`. Type checking was found to be + * inputs. Inputs are later set in the `TcbDirectiveInputsOp`. Type checking was found to be * faster when done in this way as opposed to `TcbDirectiveCtorOp` which is only necessary when the * directive is generic. * @@ -424,7 +483,7 @@ class TcbNonGenericDirectiveTypeOp extends TcbDirectiveTypeOpBase { * Creates a variable declaration for this op's directive of the argument type. Returns the id of * the newly created variable. */ - execute(): ts.Identifier { + override execute(): ts.Identifier { const dirRef = this.dir.ref as Reference>; if (this.dir.isGeneric) { throw new Error(`Assertion Error: expected ${dirRef.debugName} not to be generic.`); @@ -442,7 +501,7 @@ class TcbNonGenericDirectiveTypeOp extends TcbDirectiveTypeOpBase { * type parameters set to `any`. */ class TcbGenericDirectiveTypeWithAnyParamsOp extends TcbDirectiveTypeOpBase { - execute(): ts.Identifier { + override execute(): ts.Identifier { const dirRef = this.dir.ref as Reference>; if (dirRef.node.typeParameters === undefined) { throw new Error(`Assertion Error: expected typeParameters when creating a declaration for ${ @@ -484,9 +543,9 @@ class TcbReferenceOp extends TcbOp { // The statement generated by this operation is only used to for the Type Checker // so it can map a reference variable in the template directly to a node in the TCB. - readonly optional = true; + override readonly optional = true; - execute(): ts.Identifier { + override execute(): ts.Identifier { const id = this.tcb.allocateId(); let initializer = this.target instanceof TmplAstTemplate || this.target instanceof TmplAstElement ? @@ -532,9 +591,9 @@ class TcbInvalidReferenceOp extends TcbOp { } // The declaration of a missing reference is only needed when the reference is resolved. - readonly optional = true; + override readonly optional = true; - execute(): ts.Identifier { + override execute(): ts.Identifier { const id = this.tcb.allocateId(); this.scope.addStatement(tsCreateVariable(id, NULL_AS_ANY)); return id; @@ -560,13 +619,13 @@ class TcbDirectiveCtorOp extends TcbOp { super(); } - get optional() { + override get optional() { // The statement generated by this operation is only used to infer the directive's type and // won't report diagnostics by itself, so the operation is marked as optional. return true; } - execute(): ts.Identifier { + override execute(): ts.Identifier { const id = this.tcb.allocateId(); addExpressionIdentifier(id, ExpressionIdentifier.DIRECTIVE); addParseSpanInfo(id, this.node.startSourceSpan || this.node.sourceSpan); @@ -612,7 +671,7 @@ class TcbDirectiveCtorOp extends TcbOp { return id; } - circularFallback(): TcbOp { + override circularFallback(): TcbOp { return new TcbDirectiveCtorCircularFallbackOp(this.tcb, this.scope, this.node, this.dir); } } @@ -630,11 +689,11 @@ class TcbDirectiveInputsOp extends TcbOp { super(); } - get optional() { + override get optional() { return false; } - execute(): null { + override execute(): null { let dirId: ts.Expression|null = null; // TODO(joost): report duplicate properties @@ -756,11 +815,11 @@ class TcbDirectiveCtorCircularFallbackOp extends TcbOp { super(); } - get optional() { + override get optional() { return false; } - execute(): ts.Identifier { + override execute(): ts.Identifier { const id = this.tcb.allocateId(); const typeCtor = this.tcb.env.typeCtorFor(this.dir); const circularPlaceholder = ts.createCall( @@ -787,11 +846,11 @@ class TcbDomSchemaCheckerOp extends TcbOp { super(); } - get optional() { + override get optional() { return false; } - execute(): ts.Expression|null { + override execute(): ts.Expression|null { if (this.checkElement) { this.tcb.domSchemaChecker.checkElement(this.tcb.id, this.element, this.tcb.schemas); } @@ -847,11 +906,11 @@ class TcbUnclaimedInputsOp extends TcbOp { super(); } - get optional() { + override get optional() { return false; } - execute(): null { + override execute(): null { // `this.inputs` contains only those bindings not matched by any directive. These bindings go to // the element itself. let elId: ts.Expression|null = null; @@ -913,11 +972,11 @@ export class TcbDirectiveOutputsOp extends TcbOp { super(); } - get optional() { + override get optional() { return false; } - execute(): null { + override execute(): null { let dirId: ts.Expression|null = null; const outputs = this.dir.outputs; @@ -925,6 +984,11 @@ export class TcbDirectiveOutputsOp extends TcbOp { if (output.type !== ParsedEventType.Regular || !outputs.hasBindingPropertyName(output.name)) { continue; } + + if (this.tcb.env.config.checkTypeOfOutputEvents && output.name.endsWith('Change')) { + const inputName = output.name.slice(0, -6); + isSplitTwoWayBinding(inputName, output, this.node.inputs, this.tcb); + } // TODO(alxhub): consider supporting multiple fields with the same property name for outputs. const field = outputs.getByBindingPropertyName(output.name)![0].classPropertyName; @@ -976,11 +1040,11 @@ class TcbUnclaimedOutputsOp extends TcbOp { super(); } - get optional() { + override get optional() { return false; } - execute(): null { + override execute(): null { let elId: ts.Expression|null = null; // TODO(alxhub): this could be more efficient. @@ -990,6 +1054,14 @@ class TcbUnclaimedOutputsOp extends TcbOp { continue; } + if (this.tcb.env.config.checkTypeOfOutputEvents && output.name.endsWith('Change')) { + const inputName = output.name.slice(0, -6); + if (isSplitTwoWayBinding(inputName, output, this.element.inputs, this.tcb)) { + // Skip this event handler as the error was already handled. + continue; + } + } + if (output.type === ParsedEventType.Animation) { // Animation output bindings always have an `$event` parameter of type `AnimationEvent`. const eventType = this.tcb.env.config.checkTypeOfAnimationEvents ? @@ -1044,9 +1116,9 @@ class TcbComponentContextCompletionOp extends TcbOp { super(); } - readonly optional = false; + override readonly optional = false; - execute(): null { + override execute(): null { const ctx = ts.createIdentifier('ctx'); const ctxDot = ts.createPropertyAccess(ctx, ''); markIgnoreDiagnostics(ctxDot); @@ -1571,27 +1643,13 @@ interface TcbBoundInput { } /** - * Create the `ctx` parameter to the top-level TCB function. - * - * This is a parameter with a type equivalent to the component type, with all generic type - * parameters listed (without their generic bounds). + * Create the `ctx` parameter to the top-level TCB function, with the given generic type arguments. */ function tcbCtxParam( node: ClassDeclaration, name: ts.EntityName, - useGenericType: boolean): ts.ParameterDeclaration { - let typeArguments: ts.TypeNode[]|undefined = undefined; - // Check if the component is generic, and pass generic type parameters if so. - if (node.typeParameters !== undefined) { - if (useGenericType) { - typeArguments = - node.typeParameters.map(param => ts.createTypeReferenceNode(param.name, undefined)); - } else { - typeArguments = - node.typeParameters.map(() => ts.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword)); - } - } - const type = ts.createTypeReferenceNode(name, typeArguments); - return ts.createParameter( + typeArguments: ts.TypeNode[]|undefined): ts.ParameterDeclaration { + const type = ts.factory.createTypeReferenceNode(name, typeArguments); + return ts.factory.createParameterDeclaration( /* decorators */ undefined, /* modifiers */ undefined, /* dotDotDotToken */ undefined, @@ -1667,17 +1725,19 @@ class TcbExpressionTranslator { // Use an 'any' value to at least allow the rest of the expression to be checked. pipe = NULL_AS_ANY; - } else if (this.tcb.env.config.checkTypeOfPipes) { + } else { // Use a variable declared as the pipe's type. pipe = this.tcb.env.pipeInst(pipeRef); - } else { - // Use an 'any' value when not checking the type of the pipe. - pipe = ts.createAsExpression( - this.tcb.env.pipeInst(pipeRef), ts.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword)); } const args = ast.args.map(arg => this.translate(arg)); - const methodAccess = ts.createPropertyAccess(pipe, 'transform'); + let methodAccess: ts.Expression = + ts.factory.createPropertyAccessExpression(pipe, 'transform'); addParseSpanInfo(methodAccess, ast.nameSpan); + if (!this.tcb.env.config.checkTypeOfPipes) { + methodAccess = ts.factory.createAsExpression( + methodAccess, ts.factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword)); + } + const result = ts.createCall( /* expression */ methodAccess, /* typeArguments */ undefined, @@ -1932,8 +1992,33 @@ function tcbEventHandlerExpression(ast: AST, tcb: Context, scope: Scope): ts.Exp return translator.translate(ast); } +function isSplitTwoWayBinding( + inputName: string, output: TmplAstBoundEvent, inputs: TmplAstBoundAttribute[], tcb: Context) { + const input = inputs.find(input => input.name === inputName); + if (input === undefined || input.sourceSpan !== output.sourceSpan) { + return false; + } + // Input consumer should be a directive because it's claimed + const inputConsumer = tcb.boundTarget.getConsumerOfBinding(input) as TypeCheckableDirectiveMeta; + const outputConsumer = tcb.boundTarget.getConsumerOfBinding(output); + if (outputConsumer === null || inputConsumer.ref === undefined || + outputConsumer instanceof TmplAstTemplate) { + return false; + } + if (outputConsumer instanceof TmplAstElement) { + tcb.oobRecorder.splitTwoWayBinding( + tcb.id, input, output, inputConsumer.ref.node, outputConsumer); + return true; + } else if (outputConsumer.ref !== inputConsumer.ref) { + tcb.oobRecorder.splitTwoWayBinding( + tcb.id, input, output, inputConsumer.ref.node, outputConsumer.ref.node); + return true; + } + return false; +} + class TcbEventHandlerTranslator extends TcbExpressionTranslator { - protected resolve(ast: AST): ts.Expression|null { + protected override resolve(ast: AST): ts.Expression|null { // Recognize a property read on the implicit receiver corresponding with the event parameter // that is available in event bindings. Since this variable is a parameter of the handler // function that the converted expression becomes a child of, just create a reference to the diff --git a/packages/compiler-cli/src/ngtsc/typecheck/src/type_check_file.ts b/packages/compiler-cli/src/ngtsc/typecheck/src/type_check_file.ts index 56c2f85e71..6fffff4a05 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/src/type_check_file.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/src/type_check_file.ts @@ -16,7 +16,7 @@ import {TypeCheckBlockMetadata, TypeCheckingConfig} from '../api'; import {DomSchemaChecker} from './dom'; import {Environment} from './environment'; import {OutOfBandDiagnosticRecorder} from './oob'; -import {generateTypeCheckBlock} from './type_check_block'; +import {generateTypeCheckBlock, TcbGenericContextBehavior} from './type_check_block'; @@ -43,9 +43,11 @@ export class TypeCheckFile extends Environment { addTypeCheckBlock( ref: Reference>, meta: TypeCheckBlockMetadata, - domSchemaChecker: DomSchemaChecker, oobRecorder: OutOfBandDiagnosticRecorder): void { + domSchemaChecker: DomSchemaChecker, oobRecorder: OutOfBandDiagnosticRecorder, + genericContextBehavior: TcbGenericContextBehavior): void { const fnId = ts.createIdentifier(`_tcb${this.nextTcbId++}`); - const fn = generateTypeCheckBlock(this, ref, fnId, meta, domSchemaChecker, oobRecorder); + const fn = generateTypeCheckBlock( + this, ref, fnId, meta, domSchemaChecker, oobRecorder, genericContextBehavior); this.tcbStatements.push(fn); } @@ -75,7 +77,7 @@ export class TypeCheckFile extends Environment { return source; } - getPreludeStatements(): ts.Statement[] { + override getPreludeStatements(): ts.Statement[] { return []; } } diff --git a/packages/compiler-cli/src/ngtsc/typecheck/src/type_constructor.ts b/packages/compiler-cli/src/ngtsc/typecheck/src/type_constructor.ts index 8cb2114ddf..e6d3927407 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/src/type_constructor.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/src/type_constructor.ts @@ -10,9 +10,9 @@ import * as ts from 'typescript'; import {ClassDeclaration, ReflectionHost} from '../../reflection'; import {TypeCtorMetadata} from '../api'; +import {checkIfGenericTypeBoundsAreContextFree} from './tcb_util'; import {tsCreateTypeQueryForCoercedInput} from './ts_util'; -import {TypeParameterEmitter} from './type_parameter_emitter'; export function generateTypeCtorDeclarationFn( node: ClassDeclaration, meta: TypeCtorMetadata, nodeTypeRef: ts.EntityName, @@ -196,12 +196,6 @@ export function requiresInlineTypeCtor( return !checkIfGenericTypeBoundsAreContextFree(node, host); } -function checkIfGenericTypeBoundsAreContextFree( - node: ClassDeclaration, reflector: ReflectionHost): boolean { - // Generic type parameters are considered context free if they can be emitted into any context. - return new TypeParameterEmitter(node.typeParameters, reflector).canEmit(); -} - /** * Add a default `= any` to type parameters that don't have a default value already. * diff --git a/packages/compiler-cli/src/ngtsc/typecheck/src/type_emitter.ts b/packages/compiler-cli/src/ngtsc/typecheck/src/type_emitter.ts index 794cd2475d..b198be9f9f 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/src/type_emitter.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/src/type_emitter.ts @@ -10,7 +10,8 @@ import {Reference} from '../../imports'; /** * A resolved type reference can either be a `Reference`, the original `ts.TypeReferenceNode` itself - * or null to indicate the no reference could be resolved. + * or null. A value of null indicates that no reference could be resolved or that the reference can + * not be emitted. */ export type ResolvedTypeReference = Reference|ts.TypeReferenceNode|null; @@ -20,6 +21,15 @@ export type ResolvedTypeReference = Reference|ts.TypeReferenceNode|null; */ export type TypeReferenceResolver = (type: ts.TypeReferenceNode) => ResolvedTypeReference; +/** + * A marker to indicate that a type reference is ineligible for emitting. This needs to be truthy + * as it's returned from `ts.forEachChild`, which only returns truthy values. + */ +type INELIGIBLE = { + __brand: 'ineligible'; +}; +const INELIGIBLE: INELIGIBLE = {} as INELIGIBLE; + /** * Determines whether the provided type can be emitted, which means that it can be safely emitted * into a different location. @@ -32,13 +42,30 @@ export function canEmitType(type: ts.TypeNode, resolver: TypeReferenceResolver): return canEmitTypeWorker(type); function canEmitTypeWorker(type: ts.TypeNode): boolean { - return visitTypeNode(type, { - visitTypeReferenceNode: type => canEmitTypeReference(type), - visitArrayTypeNode: type => canEmitTypeWorker(type.elementType), - visitKeywordType: () => true, - visitLiteralType: () => true, - visitOtherType: () => false, - }); + return visitNode(type) !== INELIGIBLE; + } + + // To determine whether a type can be emitted, we have to recursively look through all type nodes. + // If an unsupported type node is found at any position within the type, then the `INELIGIBLE` + // constant is returned to stop the recursive walk as the type as a whole cannot be emitted in + // that case. Otherwise, the result of visiting all child nodes determines the result. If no + // ineligible type reference node is found then the walk returns `undefined`, indicating that + // no type node was visited that could not be emitted. + function visitNode(node: ts.Node): INELIGIBLE|undefined { + // `import('module')` type nodes are not supported, as it may require rewriting the module + // specifier which is currently not done. + if (ts.isImportTypeNode(node)) { + return INELIGIBLE; + } + + // Emitting a type reference node in a different context requires that an import for the type + // can be created. If a type reference node cannot be emitted, `INELIGIBLE` is returned to stop + // the walk. + if (ts.isTypeReferenceNode(node) && !canEmitTypeReference(node)) { + return INELIGIBLE; + } else { + return ts.forEachChild(node, visitNode); + } } function canEmitTypeReference(type: ts.TypeReferenceNode): boolean { @@ -49,10 +76,9 @@ export function canEmitType(type: ts.TypeNode, resolver: TypeReferenceResolver): return false; } - // If the type is a reference without a owning module, consider the type not to be eligible for - // emitting. - if (reference instanceof Reference && !reference.hasOwningModuleGuess) { - return false; + // If the type is a reference, consider the type to be eligible for emitting. + if (reference instanceof Reference) { + return true; } // The type can be emitted if either it does not have any type arguments, or all of them can be @@ -108,15 +134,31 @@ export class TypeEmitter { } emitType(type: ts.TypeNode): ts.TypeNode { - return visitTypeNode(type, { - visitTypeReferenceNode: type => this.emitTypeReference(type), - visitArrayTypeNode: type => ts.updateArrayTypeNode(type, this.emitType(type.elementType)), - visitKeywordType: type => type, - visitLiteralType: type => type, - visitOtherType: () => { - throw new Error('Unable to emit a complex type'); - }, - }); + const typeReferenceTransformer: ts.TransformerFactory = context => { + const visitNode = (node: ts.Node): ts.Node => { + if (ts.isImportTypeNode(node)) { + throw new Error('Unable to emit import type'); + } + + if (ts.isTypeReferenceNode(node)) { + return this.emitTypeReference(node); + } else if (ts.isLiteralExpression(node)) { + // TypeScript would typically take the emit text for a literal expression from the source + // file itself. As the type node is being emitted into a different file, however, + // TypeScript would extract the literal text from the wrong source file. To mitigate this + // issue the literal is cloned and explicitly marked as synthesized by setting its text + // range to a negative range, forcing TypeScript to determine the node's literal text from + // the synthesized node's text instead of the incorrect source file. + const clone = ts.getMutableClone(node); + ts.setTextRange(clone, {pos: -1, end: -1}); + return clone; + } else { + return ts.visitEachChild(node, visitNode, context); + } + }; + return node => ts.visitNode(node, visitNode); + }; + return ts.transform(type, [typeReferenceTransformer]).transformed[0]; } private emitTypeReference(type: ts.TypeReferenceNode): ts.TypeNode { @@ -135,10 +177,6 @@ export class TypeEmitter { // Emit the type name. let typeName = type.typeName; if (reference instanceof Reference) { - if (!reference.hasOwningModuleGuess) { - throw new Error('A type reference to emit must be imported from an absolute module'); - } - const emittedType = this.emitReference(reference); if (!ts.isTypeReferenceNode(emittedType)) { throw new Error(`Expected TypeReferenceNode for emitted reference, got ${ @@ -151,40 +189,3 @@ export class TypeEmitter { return ts.updateTypeReferenceNode(type, typeName, typeArguments); } } - -/** - * Visitor interface that allows for unified recognition of the different types of `ts.TypeNode`s, - * so that `visitTypeNode` is a centralized piece of recognition logic to be used in both - * `canEmitType` and `TypeEmitter`. - */ -interface TypeEmitterVisitor { - visitTypeReferenceNode(type: ts.TypeReferenceNode): R; - visitArrayTypeNode(type: ts.ArrayTypeNode): R; - visitKeywordType(type: ts.KeywordTypeNode): R; - visitLiteralType(type: ts.LiteralTypeNode): R; - visitOtherType(type: ts.TypeNode): R; -} - -function visitTypeNode(type: ts.TypeNode, visitor: TypeEmitterVisitor): R { - if (ts.isTypeReferenceNode(type)) { - return visitor.visitTypeReferenceNode(type); - } else if (ts.isArrayTypeNode(type)) { - return visitor.visitArrayTypeNode(type); - } else if (ts.isLiteralTypeNode(type)) { - return visitor.visitLiteralType(type); - } - - switch (type.kind) { - case ts.SyntaxKind.AnyKeyword: - case ts.SyntaxKind.UnknownKeyword: - case ts.SyntaxKind.NumberKeyword: - case ts.SyntaxKind.ObjectKeyword: - case ts.SyntaxKind.BooleanKeyword: - case ts.SyntaxKind.StringKeyword: - case ts.SyntaxKind.UndefinedKeyword: - case ts.SyntaxKind.NullKeyword: - return visitor.visitKeywordType(type as ts.KeywordTypeNode); - default: - return visitor.visitOtherType(type); - } -} diff --git a/packages/compiler-cli/src/ngtsc/typecheck/src/type_parameter_emitter.ts b/packages/compiler-cli/src/ngtsc/typecheck/src/type_parameter_emitter.ts index c973742cea..61a5f6d972 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/src/type_parameter_emitter.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/src/type_parameter_emitter.ts @@ -8,7 +8,7 @@ import * as ts from 'typescript'; import {OwningModule, Reference} from '../../imports'; -import {DeclarationNode, ReflectionHost} from '../../reflection'; +import {DeclarationNode, isNamedClassDeclaration, ReflectionHost} from '../../reflection'; import {canEmitType, ResolvedTypeReference, TypeEmitter} from './type_emitter'; @@ -32,14 +32,18 @@ export class TypeParameterEmitter { } return this.typeParameters.every(typeParam => { - if (typeParam.constraint === undefined) { - return true; - } - - return canEmitType(typeParam.constraint, type => this.resolveTypeReference(type)); + return this.canEmitType(typeParam.constraint) && this.canEmitType(typeParam.default); }); } + private canEmitType(type: ts.TypeNode|undefined): boolean { + if (type === undefined) { + return true; + } + + return canEmitType(type, typeReference => this.resolveTypeReference(typeReference)); + } + /** * Emits the type parameters using the provided emitter function for `Reference`s. */ @@ -53,12 +57,14 @@ export class TypeParameterEmitter { return this.typeParameters.map(typeParam => { const constraint = typeParam.constraint !== undefined ? emitter.emitType(typeParam.constraint) : undefined; + const defaultType = + typeParam.default !== undefined ? emitter.emitType(typeParam.default) : undefined; return ts.updateTypeParameterDeclaration( /* node */ typeParam, /* name */ typeParam.name, /* constraint */ constraint, - /* defaultType */ typeParam.default); + /* defaultType */ defaultType); }); } @@ -86,9 +92,19 @@ export class TypeParameterEmitter { }; } + // If no owning module is known, the reference needs to be exported to be able to emit an import + // statement for it. If the declaration is not exported, null is returned to prevent emit. + if (owningModule === null && !this.isStaticallyExported(declaration.node)) { + return null; + } + return new Reference(declaration.node, owningModule); } + private isStaticallyExported(decl: DeclarationNode): boolean { + return isNamedClassDeclaration(decl) && this.reflector.isStaticallyExported(decl); + } + private isLocalTypeParameter(decl: DeclarationNode): boolean { // Checking for local type parameters only occurs during resolution of type parameters, so it is // guaranteed that type parameters are present. diff --git a/packages/compiler-cli/src/ngtsc/typecheck/test/BUILD.bazel b/packages/compiler-cli/src/ngtsc/typecheck/test/BUILD.bazel index 853ecffa1a..7e3036f547 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/test/BUILD.bazel +++ b/packages/compiler-cli/src/ngtsc/typecheck/test/BUILD.bazel @@ -18,6 +18,7 @@ ts_library( "//packages/compiler-cli/src/ngtsc/incremental", "//packages/compiler-cli/src/ngtsc/metadata", "//packages/compiler-cli/src/ngtsc/perf", + "//packages/compiler-cli/src/ngtsc/program_driver", "//packages/compiler-cli/src/ngtsc/reflection", "//packages/compiler-cli/src/ngtsc/scope", "//packages/compiler-cli/src/ngtsc/shims", @@ -25,6 +26,7 @@ ts_library( "//packages/compiler-cli/src/ngtsc/typecheck", "//packages/compiler-cli/src/ngtsc/typecheck/api", "//packages/compiler-cli/src/ngtsc/typecheck/diagnostics", + "//packages/compiler-cli/src/ngtsc/typecheck/testing", "//packages/compiler-cli/src/ngtsc/util", "@npm//typescript", ], diff --git a/packages/compiler-cli/src/ngtsc/typecheck/test/diagnostics_spec.ts b/packages/compiler-cli/src/ngtsc/typecheck/test/diagnostics_spec.ts index cd7e820cb6..69906794b2 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/test/diagnostics_spec.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/test/diagnostics_spec.ts @@ -12,7 +12,7 @@ import {absoluteFrom, getSourceFileOrError} from '../../file_system'; import {runInEachFileSystem, TestFile} from '../../file_system/testing'; import {OptimizeFor, TypeCheckingConfig} from '../api'; -import {ngForDeclaration, ngForDts, setup, TestDeclaration} from './test_utils'; +import {ngForDeclaration, ngForDts, setup, TestDeclaration} from '../testing'; runInEachFileSystem(() => { describe('template diagnostics', () => { @@ -399,6 +399,48 @@ runInEachFileSystem(() => { expect(messages).toEqual([]); }); + + it('does not produce diagnostic for fallback value using nullish coalescing', () => { + const messages = diagnose(`
{{ greet(name ?? 'Frodo') }}
`, ` + export class TestComponent { + name: string | null; + + greet(name: string) { + return 'hello ' + name; + } + }`); + + expect(messages).toEqual([]); + }); + + it('does not produce diagnostic for safe keyed access', () => { + const messages = + diagnose(`
`, ` + export class TestComponent { + person: { + favoriteColors?: string[]; + }; + }`); + + expect(messages).toEqual([]); + }); + + it('infers a safe keyed read as undefined', () => { + const messages = diagnose(`
`, ` + export class TestComponent { + person: { + favoriteColors?: string[]; + }; + + log(color: string) { + console.log(color); + } + }`); + + expect(messages).toEqual([ + `TestComponent.html(1, 19): Argument of type 'string | undefined' is not assignable to parameter of type 'string'.` + ]); + }); }); it('computes line and column offsets', () => { @@ -420,6 +462,50 @@ class TestComponent { `TestComponent.html(4, 18): Property 'heihgt' does not exist on type 'TestComponent'. Did you mean 'height'?`, ]); }); + + it('works for shorthand property declarations', () => { + const messages = diagnose( + `
`, ` + class Dir { + input: {a: string, b: number}; + } + class TestComponent { + a: number; + }`, + [{ + type: 'directive', + name: 'Dir', + selector: '[dir]', + exportAs: ['dir'], + inputs: {input: 'input'}, + }]); + + expect(messages).toEqual( + [`TestComponent.html(1, 20): Type 'number' is not assignable to type 'string'.`]); + }); + + it('works for shorthand property declarations referring to template variables', () => { + const messages = diagnose( + ` + +
+ `, + ` + class Dir { + input: {span: string, b: number}; + } + class TestComponent {}`, + [{ + type: 'directive', + name: 'Dir', + selector: '[dir]', + exportAs: ['dir'], + inputs: {input: 'input'}, + }]); + + expect(messages).toEqual( + [`TestComponent.html(3, 30): Type 'HTMLElement' is not assignable to type 'string'.`]); + }); }); describe('method call spans', () => { diff --git a/packages/compiler-cli/src/ngtsc/typecheck/test/program_spec.ts b/packages/compiler-cli/src/ngtsc/typecheck/test/program_spec.ts index e1ae444dc2..263a9a3b31 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/test/program_spec.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/test/program_spec.ts @@ -10,12 +10,12 @@ import * as ts from 'typescript'; import {absoluteFrom, AbsoluteFsPath, getSourceFileOrError} from '../../file_system'; import {runInEachFileSystem} from '../../file_system/testing'; +import {FileUpdate, TsCreateProgramDriver, UpdateMode} from '../../program_driver'; import {sfExtensionData, ShimReferenceTagger} from '../../shims'; import {expectCompleteReuse, makeProgram} from '../../testing'; -import {OptimizeFor, UpdateMode} from '../api'; -import {ReusedProgramStrategy} from '../src/augmented_program'; +import {OptimizeFor} from '../api'; -import {setup} from './test_utils'; +import {setup} from '../testing'; runInEachFileSystem(() => { describe('template type-checking program', () => { @@ -37,30 +37,39 @@ runInEachFileSystem(() => { it('should have complete reuse if no structural changes are made to shims', () => { const {program, host, options, typecheckPath} = makeSingleFileProgramWithTypecheckShim(); - const programStrategy = new ReusedProgramStrategy(program, host, options, ['ngtypecheck']); + const programStrategy = new TsCreateProgramDriver(program, host, options, ['ngtypecheck']); // Update /main.ngtypecheck.ts without changing its shape. Verify that the old program was // reused completely. programStrategy.updateFiles( - new Map([[typecheckPath, 'export const VERSION = 2;']]), UpdateMode.Complete); + new Map([[typecheckPath, createUpdate('export const VERSION = 2;')]]), + UpdateMode.Complete); expectCompleteReuse(programStrategy.getProgram()); }); it('should have complete reuse if no structural changes are made to input files', () => { const {program, host, options, mainPath} = makeSingleFileProgramWithTypecheckShim(); - const programStrategy = new ReusedProgramStrategy(program, host, options, ['ngtypecheck']); + const programStrategy = new TsCreateProgramDriver(program, host, options, ['ngtypecheck']); // Update /main.ts without changing its shape. Verify that the old program was reused // completely. programStrategy.updateFiles( - new Map([[mainPath, 'export const STILL_NOT_A_COMPONENT = true;']]), UpdateMode.Complete); + new Map([[mainPath, createUpdate('export const STILL_NOT_A_COMPONENT = true;')]]), + UpdateMode.Complete); expectCompleteReuse(programStrategy.getProgram()); }); }); }); +function createUpdate(text: string): FileUpdate { + return { + newText: text, + originalFile: null, + }; +} + function makeSingleFileProgramWithTypecheckShim(): { program: ts.Program, host: ts.CompilerHost, diff --git a/packages/compiler-cli/src/ngtsc/typecheck/test/span_comments_spec.ts b/packages/compiler-cli/src/ngtsc/typecheck/test/span_comments_spec.ts index 231a1e1712..13d31be748 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/test/span_comments_spec.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/test/span_comments_spec.ts @@ -7,7 +7,7 @@ */ import {initMockFileSystem} from '../../file_system/testing'; -import {tcb, TestDeclaration} from './test_utils'; +import {tcb, TestDeclaration} from '../testing'; describe('type check blocks diagnostics', () => { beforeEach(() => initMockFileSystem('Native')); @@ -42,6 +42,15 @@ describe('type check blocks diagnostics', () => { '(ctx).m /*3,4*/({ "foo": ((ctx).a /*11,12*/) /*11,12*/, "bar": ((ctx).b /*19,20*/) /*19,20*/ } /*5,21*/) /*3,22*/'); }); + it('should annotate literal map expressions with shorthand declarations', () => { + // The additional method call is present to avoid that the object literal is emitted as + // statement, which would wrap it into parenthesis that clutter the expected output. + const TEMPLATE = '{{ m({a, b}) }}'; + expect(tcbWithSpans(TEMPLATE)) + .toContain( + '((ctx).m /*3,4*/({ "a": ((ctx).a /*6,7*/) /*6,7*/, "b": ((ctx).b /*9,10*/) /*9,10*/ } /*5,11*/) /*3,12*/)'); + }); + it('should annotate literal array expressions', () => { const TEMPLATE = '{{ [a, b] }}'; expect(tcbWithSpans(TEMPLATE)) @@ -129,6 +138,13 @@ describe('type check blocks diagnostics', () => { '(null as any ? (((ctx).a /*3,4*/) /*3,4*/)!.method /*6,12*/(((ctx).b /*13,14*/) /*13,14*/) : undefined) /*3,15*/'); }); + it('should annotate safe keyed reads', () => { + const TEMPLATE = `{{ a?.[0] }}`; + expect(tcbWithSpans(TEMPLATE)) + .toContain( + '(null as any ? (((ctx).a /*3,4*/) /*3,4*/)![0 /*7,8*/] /*3,9*/ : undefined) /*3,9*/'); + }); + it('should annotate $any casts', () => { const TEMPLATE = `{{ $any(a) }}`; expect(tcbWithSpans(TEMPLATE)).toContain('(((ctx).a /*8,9*/) /*8,9*/ as any) /*3,10*/'); diff --git a/packages/compiler-cli/src/ngtsc/typecheck/test/type_check_block_spec.ts b/packages/compiler-cli/src/ngtsc/typecheck/test/type_check_block_spec.ts index 9ccb53db84..e7e9be1df9 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/test/type_check_block_spec.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/test/type_check_block_spec.ts @@ -9,7 +9,7 @@ import {initMockFileSystem} from '../../file_system/testing'; import {TypeCheckingConfig} from '../api'; -import {ALL_ENABLED_CONFIG, tcb, TestDeclaration, TestDirective} from './test_utils'; +import {ALL_ENABLED_CONFIG, tcb, TestDeclaration, TestDirective} from '../testing'; describe('type check blocks', () => { @@ -50,6 +50,13 @@ describe('type check blocks', () => { .toContain('(((ctx).a) ? ((ctx).b) : ((((ctx).c) ? ((ctx).d) : (((ctx).e)))))'); }); + it('should handle nullish coalescing operator', () => { + expect(tcb('{{ a ?? b }}')).toContain('((((ctx).a)) ?? (((ctx).b)))'); + expect(tcb('{{ a ?? b ?? c }}')).toContain('(((((ctx).a)) ?? (((ctx).b))) ?? (((ctx).c)))'); + expect(tcb('{{ (a ?? b) + (c ?? e) }}')) + .toContain('(((((ctx).a)) ?? (((ctx).b))) + ((((ctx).c)) ?? (((ctx).e))))'); + }); + it('should handle quote expressions as any type', () => { const TEMPLATE = ``; expect(tcb(TEMPLATE)).toContain('null as any'); @@ -985,17 +992,18 @@ describe('type check blocks', () => { const DISABLED_CONFIG: TypeCheckingConfig = {...BASE_CONFIG, checkTypeOfPipes: false}; const block = tcb(TEMPLATE, PIPES, DISABLED_CONFIG); expect(block).toContain('var _pipe1: i0.TestPipe = null!;'); - expect(block).toContain('((_pipe1 as any).transform(((ctx).a), ((ctx).b), ((ctx).c)));'); + expect(block).toContain('((_pipe1.transform as any)(((ctx).a), ((ctx).b), ((ctx).c))'); }); }); describe('config.strictSafeNavigationTypes', () => { - const TEMPLATE = `{{a?.b}} {{a?.method()}}`; + const TEMPLATE = `{{a?.b}} {{a?.method()}} {{a?.[0]}}`; it('should use undefined for safe navigation operations when enabled', () => { const block = tcb(TEMPLATE, DIRECTIVES); expect(block).toContain('(null as any ? (((ctx).a))!.method() : undefined)'); expect(block).toContain('(null as any ? (((ctx).a))!.b : undefined)'); + expect(block).toContain('(null as any ? (((ctx).a))![0] : undefined)'); }); it('should use an \'any\' type for safe navigation operations when disabled', () => { const DISABLED_CONFIG: @@ -1003,15 +1011,17 @@ describe('type check blocks', () => { const block = tcb(TEMPLATE, DIRECTIVES, DISABLED_CONFIG); expect(block).toContain('((((ctx).a))!.method() as any)'); expect(block).toContain('((((ctx).a))!.b as any)'); + expect(block).toContain('(((((ctx).a))![0] as any)'); }); }); describe('config.strictSafeNavigationTypes (View Engine bug emulation)', () => { - const TEMPLATE = `{{a.method()?.b}} {{a()?.method()}}`; + const TEMPLATE = `{{a.method()?.b}} {{a()?.method()}} {{a.method()?.[0]}}`; it('should check the presence of a property/method on the receiver when enabled', () => { const block = tcb(TEMPLATE, DIRECTIVES); expect(block).toContain('(null as any ? ((((ctx).a)).method())!.b : undefined)'); expect(block).toContain('(null as any ? ((ctx).a())!.method() : undefined)'); + expect(block).toContain('(null as any ? ((((ctx).a)).method())![0] : undefined)'); }); it('should not check the presence of a property/method on the receiver when disabled', () => { const DISABLED_CONFIG: @@ -1019,6 +1029,7 @@ describe('type check blocks', () => { const block = tcb(TEMPLATE, DIRECTIVES, DISABLED_CONFIG); expect(block).toContain('(((((ctx).a)).method()) as any).b'); expect(block).toContain('(((ctx).a()) as any).method()'); + expect(block).toContain('(((((ctx).a)).method()) as any)[0]'); }); }); diff --git a/packages/compiler-cli/src/ngtsc/typecheck/test/type_checker__completion_spec.ts b/packages/compiler-cli/src/ngtsc/typecheck/test/type_checker__completion_spec.ts index 104b3ed279..cf0e523533 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/test/type_checker__completion_spec.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/test/type_checker__completion_spec.ts @@ -14,7 +14,7 @@ import {runInEachFileSystem} from '../../file_system/testing'; import {getTokenAtPosition} from '../../util/src/typescript'; import {CompletionKind, GlobalCompletion, TemplateTypeChecker, TypeCheckingConfig} from '../api'; -import {getClass, setup, TypeCheckingTarget} from './test_utils'; +import {getClass, setup, TypeCheckingTarget} from '../testing'; runInEachFileSystem(() => { describe('TemplateTypeChecker.getGlobalCompletions()', () => { @@ -141,7 +141,7 @@ function setupCompletions( context = tmpl; } - const completions = templateTypeChecker.getGlobalCompletions(context, SomeCmp)!; + const completions = templateTypeChecker.getGlobalCompletions(context, SomeCmp, null!)!; expect(completions).toBeDefined(); return { completions, diff --git a/packages/compiler-cli/src/ngtsc/typecheck/test/type_checker__get_symbol_of_template_node_spec.ts b/packages/compiler-cli/src/ngtsc/typecheck/test/type_checker__get_symbol_of_template_node_spec.ts index f08ad4b72e..86760f818e 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/test/type_checker__get_symbol_of_template_node_spec.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/test/type_checker__get_symbol_of_template_node_spec.ts @@ -15,7 +15,7 @@ import {runInEachFileSystem} from '../../file_system/testing'; import {ClassDeclaration} from '../../reflection'; import {DirectiveSymbol, DomBindingSymbol, ElementSymbol, ExpressionSymbol, InputBindingSymbol, OutputBindingSymbol, PipeSymbol, ReferenceSymbol, Symbol, SymbolKind, TemplateSymbol, TemplateTypeChecker, TypeCheckingConfig, VariableSymbol} from '../api'; -import {getClass, ngForDeclaration, ngForTypeCheckTarget, setup as baseTestSetup, TypeCheckingTarget} from './test_utils'; +import {getClass, ngForDeclaration, ngForTypeCheckTarget, setup as baseTestSetup, TypeCheckingTarget} from '../testing'; runInEachFileSystem(() => { describe('TemplateTypeChecker.getSymbolOfNode', () => { @@ -74,8 +74,8 @@ runInEachFileSystem(() => { const {attributes} = getAstElements(templateTypeChecker, cmp)[0]; const symbol = templateTypeChecker.getSymbolOfNode(attributes[0], cmp)!; assertInputBindingSymbol(symbol); - expect( - (symbol.bindings[0].tsSymbol!.declarations[0] as ts.PropertyDeclaration).name.getText()) + expect((symbol.bindings[0].tsSymbol!.declarations![0] as ts.PropertyDeclaration) + .name.getText()) .toEqual('name'); // Ensure we can go back to the original location using the shim location @@ -91,8 +91,8 @@ runInEachFileSystem(() => { const {attributes} = getAstElements(templateTypeChecker, cmp)[0]; const symbol = templateTypeChecker.getSymbolOfNode(attributes[0], cmp)!; assertInputBindingSymbol(symbol); - expect( - (symbol.bindings[0].tsSymbol!.declarations[0] as ts.PropertyDeclaration).name.getText()) + expect((symbol.bindings[0].tsSymbol!.declarations![0] as ts.PropertyDeclaration) + .name.getText()) .toEqual('name'); }); }); @@ -223,8 +223,9 @@ runInEachFileSystem(() => { beforeEach(() => { const fileName = absoluteFrom('/main.ts'); + const dirFile = absoluteFrom('/dir.ts'); const templateString = ` -
+
{{user.name}} {{user.streetNumber}}
`; @@ -239,9 +240,23 @@ runInEachFileSystem(() => { } export class Cmp { users: User[]; } `, - declarations: [ngForDeclaration()], + declarations: [ + ngForDeclaration(), + { + name: 'TestDir', + selector: '[dir]', + file: dirFile, + type: 'directive', + inputs: {name: 'name'} + }, + ], }, ngForTypeCheckTarget(), + { + fileName: dirFile, + source: `export class TestDir {name:string}`, + templates: {}, + }, ]); templateTypeChecker = testValues.templateTypeChecker; program = testValues.program; @@ -250,6 +265,13 @@ runInEachFileSystem(() => { templateNode = getAstTemplates(templateTypeChecker, cmp)[0]; }); + it('should retrieve a symbol for a directive on a microsyntax template', () => { + const symbol = templateTypeChecker.getSymbolOfNode(templateNode, cmp); + const testDir = symbol?.directives.find(dir => dir.selector === '[dir]'); + expect(testDir).toBeDefined(); + expect(program.getTypeChecker().symbolToString(testDir!.tsSymbol)).toEqual('TestDir'); + }); + it('should retrieve a symbol for an expression inside structural binding', () => { const ngForOfBinding = templateNode.templateAttrs.find(a => a.name === 'ngForOf')! as TmplAstBoundAttribute; @@ -303,7 +325,7 @@ runInEachFileSystem(() => { function expectUserSymbol(userSymbol: Symbol) { assertVariableSymbol(userSymbol); expect(userSymbol.tsSymbol!.escapedName).toContain('$implicit'); - expect(userSymbol.tsSymbol!.declarations[0].parent!.getText()) + expect(userSymbol.tsSymbol!.declarations![0].parent!.getText()) .toContain('NgForOfContext'); expect(program.getTypeChecker().typeToString(userSymbol.tsType!)).toEqual('User'); expect((userSymbol).declaration).toEqual(templateNode.variables[0]); @@ -312,7 +334,7 @@ runInEachFileSystem(() => { function expectIndexSymbol(indexSymbol: Symbol) { assertVariableSymbol(indexSymbol); expect(indexSymbol.tsSymbol!.escapedName).toContain('index'); - expect(indexSymbol.tsSymbol!.declarations[0].parent!.getText()) + expect(indexSymbol.tsSymbol!.declarations![0].parent!.getText()) .toContain('NgForOfContext'); expect(program.getTypeChecker().typeToString(indexSymbol.tsType!)).toEqual('number'); expect((indexSymbol).declaration).toEqual(templateNode.variables[1]); @@ -370,7 +392,7 @@ runInEachFileSystem(() => { const symbol = templateTypeChecker.getSymbolOfNode(inputNode, cmp)!; assertExpressionSymbol(symbol); expect(program.getTypeChecker().symbolToString(symbol.tsSymbol!)).toEqual('street'); - expect((symbol.tsSymbol!.declarations[0] as ts.PropertyDeclaration).parent.name!.getText()) + expect((symbol.tsSymbol!.declarations![0] as ts.PropertyDeclaration).parent.name!.getText()) .toEqual('Address'); expect(program.getTypeChecker().typeToString(symbol.tsType)).toEqual('string'); @@ -394,6 +416,7 @@ runInEachFileSystem(() => {
+
`; const testValues = setup( [ @@ -405,9 +428,14 @@ runInEachFileSystem(() => { street: string; } + interface Car { + engine: string; + } + interface Person { address: Address; speak(): string; + cars?: Car[]; } export class Cmp {person?: Person; noPersonError = 'no person'} `, @@ -427,7 +455,7 @@ runInEachFileSystem(() => { assertExpressionSymbol(propReadSymbol); expect(program.getTypeChecker().symbolToString(propReadSymbol.tsSymbol!)) .toEqual('street'); - expect((propReadSymbol.tsSymbol!.declarations[0] as ts.PropertyDeclaration) + expect((propReadSymbol.tsSymbol!.declarations![0] as ts.PropertyDeclaration) .parent.name!.getText()) .toEqual('Address'); expect(program.getTypeChecker().typeToString(propReadSymbol.tsType)) @@ -441,13 +469,26 @@ runInEachFileSystem(() => { assertExpressionSymbol(methodCallSymbol); expect(program.getTypeChecker().symbolToString(methodCallSymbol.tsSymbol!)) .toEqual('speak'); - expect((methodCallSymbol.tsSymbol!.declarations[0] as ts.PropertyDeclaration) + expect((methodCallSymbol.tsSymbol!.declarations![0] as ts.PropertyDeclaration) .parent.name!.getText()) .toEqual('Person'); expect(program.getTypeChecker().typeToString(methodCallSymbol.tsType)) .toEqual('string | undefined'); }); + it('safe keyed reads', () => { + const nodes = getAstElements(templateTypeChecker, cmp); + const safeKeyedRead = nodes[3].inputs[0].value as ASTWithSource; + const keyedReadSymbol = templateTypeChecker.getSymbolOfNode(safeKeyedRead, cmp)!; + assertExpressionSymbol(keyedReadSymbol); + expect(program.getTypeChecker().symbolToString(keyedReadSymbol.tsSymbol!)) + .toEqual('engine'); + expect((keyedReadSymbol.tsSymbol!.declarations![0] as ts.PropertyDeclaration) + .parent.name!.getText()) + .toEqual('Car'); + expect(program.getTypeChecker().typeToString(keyedReadSymbol.tsType)).toEqual('string'); + }); + it('ternary expressions', () => { const nodes = getAstElements(templateTypeChecker, cmp); @@ -649,12 +690,16 @@ runInEachFileSystem(() => { const fileName = absoluteFrom('/main.ts'); const templateString = ` {{ [1, 2, 3] }} - {{ { hello: "world" } }}`; + {{ { hello: "world" } }} + {{ { foo } }}`; const testValues = setup([ { fileName, templates: {'Cmp': templateString}, - source: `export class Cmp {}`, + source: ` + type Foo {name: string;} + export class Cmp {foo: Foo;} + `, }, ]); templateTypeChecker = testValues.templateTypeChecker; @@ -682,6 +727,15 @@ runInEachFileSystem(() => { expect(program.getTypeChecker().typeToString(symbol.tsType)) .toEqual('{ hello: string; }'); }); + + it('literal map shorthand property', () => { + const shorthandProp = + (interpolation.expressions[2] as LiteralMap).values[0] as PropertyRead; + const symbol = templateTypeChecker.getSymbolOfNode(shorthandProp, cmp)!; + assertExpressionSymbol(symbol); + expect(program.getTypeChecker().symbolToString(symbol.tsSymbol!)).toEqual('foo'); + expect(program.getTypeChecker().typeToString(symbol.tsType)).toEqual('Foo'); + }); }); describe('pipes', () => { @@ -722,29 +776,19 @@ runInEachFileSystem(() => { BindingPipe; } - it('should get symbol for pipe', () => { - setupPipesTest(); - const pipeSymbol = templateTypeChecker.getSymbolOfNode(binding, cmp)!; - assertPipeSymbol(pipeSymbol); - expect(program.getTypeChecker().symbolToString(pipeSymbol.tsSymbol!)) - .toEqual('transform'); - expect(program.getTypeChecker().symbolToString(pipeSymbol.classSymbol.tsSymbol)) - .toEqual('TestPipe'); - expect(program.getTypeChecker().typeToString(pipeSymbol.tsType!)) - .toEqual('(value: string, repeat: number, commaSeparate: boolean) => string[]'); - }); - - it('should get symbol for pipe, checkTypeOfPipes: false', () => { - setupPipesTest(false); - const pipeSymbol = templateTypeChecker.getSymbolOfNode(binding, cmp)! as PipeSymbol; - assertPipeSymbol(pipeSymbol); - expect(pipeSymbol.tsSymbol).toBeNull(); - expect(program.getTypeChecker().typeToString(pipeSymbol.tsType!)).toEqual('any'); - expect(program.getTypeChecker().symbolToString(pipeSymbol.classSymbol.tsSymbol)) - .toEqual('TestPipe'); - expect(program.getTypeChecker().typeToString(pipeSymbol.classSymbol.tsType)) - .toEqual('TestPipe'); - }); + for (const checkTypeOfPipes of [true, false]) { + it(`should get symbol for pipe, checkTypeOfPipes: ${checkTypeOfPipes}`, () => { + setupPipesTest(checkTypeOfPipes); + const pipeSymbol = templateTypeChecker.getSymbolOfNode(binding, cmp)!; + assertPipeSymbol(pipeSymbol); + expect(program.getTypeChecker().symbolToString(pipeSymbol.tsSymbol!)) + .toEqual('transform'); + expect(program.getTypeChecker().symbolToString(pipeSymbol.classSymbol.tsSymbol)) + .toEqual('TestPipe'); + expect(program.getTypeChecker().typeToString(pipeSymbol.tsType!)) + .toEqual('(value: string, repeat: number, commaSeparate: boolean) => string[]'); + }); + } it('should get symbols for pipe expression and args', () => { setupPipesTest(false); @@ -866,7 +910,7 @@ runInEachFileSystem(() => { const inputAbinding = (nodes[0] as TmplAstElement).inputs[0]; const aSymbol = templateTypeChecker.getSymbolOfNode(inputAbinding, cmp)!; assertInputBindingSymbol(aSymbol); - expect((aSymbol.bindings[0].tsSymbol!.declarations[0] as ts.PropertyDeclaration) + expect((aSymbol.bindings[0].tsSymbol!.declarations![0] as ts.PropertyDeclaration) .name.getText()) .toEqual('inputA'); }); @@ -902,14 +946,14 @@ runInEachFileSystem(() => { const inputAbinding = (nodes[0] as TmplAstElement).inputs[0]; const aSymbol = templateTypeChecker.getSymbolOfNode(inputAbinding, cmp)!; assertInputBindingSymbol(aSymbol); - expect((aSymbol.bindings[0].tsSymbol!.declarations[0] as ts.PropertyDeclaration) + expect((aSymbol.bindings[0].tsSymbol!.declarations![0] as ts.PropertyDeclaration) .name.getText()) .toEqual('inputA'); const inputBbinding = (nodes[0] as TmplAstElement).inputs[1]; const bSymbol = templateTypeChecker.getSymbolOfNode(inputBbinding, cmp)!; assertInputBindingSymbol(bSymbol); - expect((bSymbol.bindings[0].tsSymbol!.declarations[0] as ts.PropertyDeclaration) + expect((bSymbol.bindings[0].tsSymbol!.declarations![0] as ts.PropertyDeclaration) .name.getText()) .toEqual('inputB'); }); @@ -963,8 +1007,8 @@ runInEachFileSystem(() => { TmplAstBoundAttribute; const symbol = templateTypeChecker.getSymbolOfNode(ngForOfBinding, cmp)!; assertInputBindingSymbol(symbol); - expect( - (symbol.bindings[0].tsSymbol!.declarations[0] as ts.PropertyDeclaration).name.getText()) + expect((symbol.bindings[0].tsSymbol!.declarations![0] as ts.PropertyDeclaration) + .name.getText()) .toEqual('ngForOf'); }); @@ -1060,10 +1104,10 @@ runInEachFileSystem(() => { const inputAbinding = (nodes[0] as TmplAstElement).inputs[0]; const symbol = templateTypeChecker.getSymbolOfNode(inputAbinding, cmp)!; assertInputBindingSymbol(symbol); - expect( - (symbol.bindings[0].tsSymbol!.declarations[0] as ts.PropertyDeclaration).name.getText()) + expect((symbol.bindings[0].tsSymbol!.declarations![0] as ts.PropertyDeclaration) + .name.getText()) .toEqual('inputA'); - expect((symbol.bindings[0].tsSymbol!.declarations[0] as ts.PropertyDeclaration) + expect((symbol.bindings[0].tsSymbol!.declarations![0] as ts.PropertyDeclaration) .parent.name?.text) .toEqual('TestDir'); }); @@ -1101,10 +1145,10 @@ runInEachFileSystem(() => { const inputAbinding = (nodes[0] as TmplAstElement).inputs[0]; const symbol = templateTypeChecker.getSymbolOfNode(inputAbinding, cmp)!; assertInputBindingSymbol(symbol); - expect( - (symbol.bindings[0].tsSymbol!.declarations[0] as ts.PropertyDeclaration).name.getText()) + expect((symbol.bindings[0].tsSymbol!.declarations![0] as ts.PropertyDeclaration) + .name.getText()) .toEqual('otherInputA'); - expect((symbol.bindings[0].tsSymbol!.declarations[0] as ts.PropertyDeclaration) + expect((symbol.bindings[0].tsSymbol!.declarations![0] as ts.PropertyDeclaration) .parent.name?.text) .toEqual('TestDir'); }); @@ -1152,10 +1196,11 @@ runInEachFileSystem(() => { const symbol = templateTypeChecker.getSymbolOfNode(inputAbinding, cmp)!; assertInputBindingSymbol(symbol); expect(new Set(symbol.bindings.map( - b => (b.tsSymbol!.declarations[0] as ts.PropertyDeclaration).name.getText()))) + b => (b.tsSymbol!.declarations![0] as ts.PropertyDeclaration).name.getText()))) .toEqual(new Set(['inputA', 'otherDirInputA'])); - expect(new Set(symbol.bindings.map( - b => (b.tsSymbol!.declarations[0] as ts.PropertyDeclaration).parent.name?.text))) + expect( + new Set(symbol.bindings.map( + b => (b.tsSymbol!.declarations![0] as ts.PropertyDeclaration).parent.name?.text))) .toEqual(new Set(['TestDir', 'OtherDir'])); }); }); @@ -1196,14 +1241,14 @@ runInEachFileSystem(() => { const outputABinding = (nodes[0] as TmplAstElement).outputs[0]; const aSymbol = templateTypeChecker.getSymbolOfNode(outputABinding, cmp)!; assertOutputBindingSymbol(aSymbol); - expect((aSymbol.bindings[0].tsSymbol!.declarations[0] as ts.PropertyDeclaration) + expect((aSymbol.bindings[0].tsSymbol!.declarations![0] as ts.PropertyDeclaration) .name.getText()) .toEqual('outputA'); const outputBBinding = (nodes[0] as TmplAstElement).outputs[1]; const bSymbol = templateTypeChecker.getSymbolOfNode(outputBBinding, cmp)!; assertOutputBindingSymbol(bSymbol); - expect((bSymbol.bindings[0].tsSymbol!.declarations[0] as ts.PropertyDeclaration) + expect((bSymbol.bindings[0].tsSymbol!.declarations![0] as ts.PropertyDeclaration) .name.getText()) .toEqual('outputB'); }); @@ -1249,10 +1294,10 @@ runInEachFileSystem(() => { const outputABinding = (nodes[0] as TmplAstElement).outputs[0]; const symbol = templateTypeChecker.getSymbolOfNode(outputABinding, cmp)!; assertOutputBindingSymbol(symbol); - expect( - (symbol.bindings[0].tsSymbol!.declarations[0] as ts.PropertyDeclaration).name.getText()) + expect((symbol.bindings[0].tsSymbol!.declarations![0] as ts.PropertyDeclaration) + .name.getText()) .toEqual('outputA'); - expect((symbol.bindings[0].tsSymbol!.declarations[0] as ts.PropertyDeclaration) + expect((symbol.bindings[0].tsSymbol!.declarations![0] as ts.PropertyDeclaration) .parent.name?.text) .toEqual('TestDir'); }); @@ -1314,10 +1359,10 @@ runInEachFileSystem(() => { const outputABinding = (nodes[0] as TmplAstElement).outputs[0]; const symbol = templateTypeChecker.getSymbolOfNode(outputABinding, cmp)!; assertOutputBindingSymbol(symbol); - expect( - (symbol.bindings[0].tsSymbol!.declarations[0] as ts.PropertyDeclaration).name.getText()) + expect((symbol.bindings[0].tsSymbol!.declarations![0] as ts.PropertyDeclaration) + .name.getText()) .toEqual('outputA'); - expect((symbol.bindings[0].tsSymbol!.declarations[0] as ts.PropertyDeclaration) + expect((symbol.bindings[0].tsSymbol!.declarations![0] as ts.PropertyDeclaration) .parent.name?.text) .toEqual('TestDir'); }); @@ -1363,10 +1408,10 @@ runInEachFileSystem(() => { const outputABinding = (nodes[0] as TmplAstElement).outputs[0]; const symbol = templateTypeChecker.getSymbolOfNode(outputABinding, cmp)!; assertOutputBindingSymbol(symbol); - expect( - (symbol.bindings[0].tsSymbol!.declarations[0] as ts.PropertyDeclaration).name.getText()) + expect((symbol.bindings[0].tsSymbol!.declarations![0] as ts.PropertyDeclaration) + .name.getText()) .toEqual('ngModelChange'); - expect((symbol.bindings[0].tsSymbol!.declarations[0] as ts.PropertyDeclaration) + expect((symbol.bindings[0].tsSymbol!.declarations![0] as ts.PropertyDeclaration) .parent.name?.text) .toEqual('TestDir'); }); diff --git a/packages/compiler-cli/src/ngtsc/typecheck/test/type_checker_spec.ts b/packages/compiler-cli/src/ngtsc/typecheck/test/type_checker_spec.ts index 3774e4f9ee..d181d7e954 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/test/type_checker_spec.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/test/type_checker_spec.ts @@ -11,7 +11,7 @@ import {absoluteFrom, absoluteFromSourceFile, getSourceFileOrError} from '../../ import {runInEachFileSystem} from '../../file_system/testing'; import {OptimizeFor} from '../api'; -import {getClass, setup, TestDeclaration} from './test_utils'; +import {getClass, setup, TestDeclaration} from '../testing'; runInEachFileSystem(() => { describe('TemplateTypeChecker', () => { diff --git a/packages/compiler-cli/src/ngtsc/typecheck/test/type_constructor_spec.ts b/packages/compiler-cli/src/ngtsc/typecheck/test/type_constructor_spec.ts index 6cd0410e34..1239d23eef 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/test/type_constructor_spec.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/test/type_constructor_spec.ts @@ -11,16 +11,15 @@ import {absoluteFrom, AbsoluteFsPath, getFileSystem, getSourceFileOrError, Logic import {runInEachFileSystem, TestFile} from '../../file_system/testing'; import {AbsoluteModuleStrategy, LocalIdentifierStrategy, LogicalProjectStrategy, ModuleResolver, Reference, ReferenceEmitter} from '../../imports'; import {NOOP_PERF_RECORDER} from '../../perf'; +import {TsCreateProgramDriver, UpdateMode} from '../../program_driver'; import {isNamedClassDeclaration, TypeScriptReflectionHost} from '../../reflection'; import {getDeclaration, makeProgram} from '../../testing'; import {getRootDirs} from '../../util/src/typescript'; -import {ComponentToShimMappingStrategy, UpdateMode} from '../api'; -import {ReusedProgramStrategy} from '../src/augmented_program'; import {InliningMode, PendingFileTypeCheckingData, TypeCheckContextImpl, TypeCheckingHost} from '../src/context'; import {TemplateSourceManager} from '../src/source'; import {TypeCheckFile} from '../src/type_check_file'; -import {ALL_ENABLED_CONFIG} from './test_utils'; +import {ALL_ENABLED_CONFIG} from '../testing'; runInEachFileSystem(() => { describe('ngtsc typechecking', () => { @@ -74,8 +73,8 @@ TestClass.ngTypeCtor({value: 'test'}); new LogicalProjectStrategy(reflectionHost, logicalFs), ]); const ctx = new TypeCheckContextImpl( - ALL_ENABLED_CONFIG, host, new TestMappingStrategy(), emitter, reflectionHost, - new TestTypeCheckingHost(), InliningMode.InlineOps, NOOP_PERF_RECORDER); + ALL_ENABLED_CONFIG, host, emitter, reflectionHost, new TestTypeCheckingHost(), + InliningMode.InlineOps, NOOP_PERF_RECORDER); const TestClass = getDeclaration(program, _('/main.ts'), 'TestClass', isNamedClassDeclaration); const pendingFile = makePendingFile(); @@ -113,8 +112,8 @@ TestClass.ngTypeCtor({value: 'test'}); ]); const pendingFile = makePendingFile(); const ctx = new TypeCheckContextImpl( - ALL_ENABLED_CONFIG, host, new TestMappingStrategy(), emitter, reflectionHost, - new TestTypeCheckingHost(), InliningMode.InlineOps, NOOP_PERF_RECORDER); + ALL_ENABLED_CONFIG, host, emitter, reflectionHost, new TestTypeCheckingHost(), + InliningMode.InlineOps, NOOP_PERF_RECORDER); const TestClass = getDeclaration(program, _('/main.ts'), 'TestClass', isNamedClassDeclaration); ctx.addInlineTypeCtor( @@ -128,7 +127,7 @@ TestClass.ngTypeCtor({value: 'test'}); }, coercedInputFields: new Set(), }); - const programStrategy = new ReusedProgramStrategy(program, host, options, []); + const programStrategy = new TsCreateProgramDriver(program, host, options, []); programStrategy.updateFiles(ctx.finalize(), UpdateMode.Complete); const TestClassWithCtor = getDeclaration( programStrategy.getProgram(), _('/main.ts'), 'TestClass', isNamedClassDeclaration); @@ -158,8 +157,8 @@ TestClass.ngTypeCtor({value: 'test'}); ]); const pendingFile = makePendingFile(); const ctx = new TypeCheckContextImpl( - ALL_ENABLED_CONFIG, host, new TestMappingStrategy(), emitter, reflectionHost, - new TestTypeCheckingHost(), InliningMode.InlineOps, NOOP_PERF_RECORDER); + ALL_ENABLED_CONFIG, host, emitter, reflectionHost, new TestTypeCheckingHost(), + InliningMode.InlineOps, NOOP_PERF_RECORDER); const TestClass = getDeclaration(program, _('/main.ts'), 'TestClass', isNamedClassDeclaration); ctx.addInlineTypeCtor( @@ -173,7 +172,7 @@ TestClass.ngTypeCtor({value: 'test'}); }, coercedInputFields: new Set(['bar']), }); - const programStrategy = new ReusedProgramStrategy(program, host, options, []); + const programStrategy = new TsCreateProgramDriver(program, host, options, []); programStrategy.updateFiles(ctx.finalize(), UpdateMode.Complete); const TestClassWithCtor = getDeclaration( programStrategy.getProgram(), _('/main.ts'), 'TestClass', isNamedClassDeclaration); @@ -216,9 +215,3 @@ class TestTypeCheckingHost implements TypeCheckingHost { recordComplete(): void {} } - -class TestMappingStrategy implements ComponentToShimMappingStrategy { - shimPathForComponent(): AbsoluteFsPath { - return absoluteFrom('/typecheck.ts'); - } -} diff --git a/packages/compiler-cli/src/ngtsc/typecheck/test/type_parameter_emitter_spec.ts b/packages/compiler-cli/src/ngtsc/typecheck/test/type_parameter_emitter_spec.ts index 9098e8e9d8..cec382c25e 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/test/type_parameter_emitter_spec.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/test/type_parameter_emitter_spec.ts @@ -13,7 +13,7 @@ import {isNamedClassDeclaration, TypeScriptReflectionHost} from '../../reflectio import {getDeclaration, makeProgram} from '../../testing'; import {TypeParameterEmitter} from '../src/type_parameter_emitter'; -import {angularCoreDts} from './test_utils'; +import {angularCoreDts} from '../testing'; runInEachFileSystem(() => { @@ -33,16 +33,21 @@ runInEachFileSystem(() => { } function emit(emitter: TypeParameterEmitter) { + const canEmit = emitter.canEmit(); const emitted = emitter.emit(ref => { const typeName = ts.createQualifiedName(ts.createIdentifier('test'), ref.debugName!); return ts.createTypeReferenceNode(typeName, /* typeArguments */ undefined); }); if (emitted === undefined) { - return ''; + return canEmit ? '' : null; } - const printer = ts.createPrinter(); + if (!canEmit) { + fail('canEmit must be true when emitting succeeds'); + } + + const printer = ts.createPrinter({newLine: ts.NewLineKind.LineFeed}); const sf = ts.createSourceFile('test.ts', '', ts.ScriptTarget.Latest); const generics = emitted.map(param => printer.printNode(ts.EmitHint.Unspecified, param, sf)).join(', '); @@ -71,6 +76,36 @@ runInEachFileSystem(() => { .toEqual(''); expect(emit(createEmitter(`export class TestClass {}`))) .toEqual(''); + expect(emit(createEmitter(`export class TestClass {}`))) + .toEqual(''); + expect(emit(createEmitter(`export class TestClass {}`))) + .toEqual(''); + expect(emit(createEmitter(`export class TestClass {}`))) + .toEqual(''); + expect(emit(createEmitter(`export class TestClass {}`))) + .toEqual(''); + }); + + it('can emit literal types', () => { + expect(emit(createEmitter(`export class TestClass {}`))) + .toEqual(``); + expect(emit(createEmitter(`export class TestClass {}`))) + .toEqual(``); + expect(emit(createEmitter(`export class TestClass {}`))) + .toEqual(``); + expect(emit(createEmitter(`export class TestClass {}`))) + .toEqual(``); + expect(emit(createEmitter(`export class TestClass {}`))) + .toEqual(``); + expect(emit(createEmitter(`export class TestClass {}`))) + .toEqual(``); + }); + + it('cannot emit import types', () => { + const emitter = createEmitter(`export class TestClass {}`); + + expect(emitter.canEmit()).toBe(false); + expect(() => emit(emitter)).toThrowError('Unable to emit import type'); }); it('can emit references into external modules', () => { @@ -103,26 +138,34 @@ runInEachFileSystem(() => { expect(emit(emitter)).toEqual('>'); }); - it('cannot emit references to local declarations', () => { + it('can emit references to local, exported declarations', () => { const emitter = createEmitter(` - export class Local {}; + class Local {}; + export {Local}; + export class TestClass {}`); + + expect(emitter.canEmit()).toBe(true); + expect(emit(emitter)).toEqual(''); + }); + + it('cannot emit references to non-exported local declarations', () => { + const emitter = createEmitter(` + class Local {}; export class TestClass {}`); expect(emitter.canEmit()).toBe(false); - expect(() => emit(emitter)) - .toThrowError('A type reference to emit must be imported from an absolute module'); + expect(() => emit(emitter)).toThrowError('Unable to emit an unresolved reference'); }); it('cannot emit references to local declarations as nested type arguments', () => { const emitter = createEmitter(` import {NgIterable} from '@angular/core'; - export class Local {}; + class Local {}; export class TestClass> {}`); expect(emitter.canEmit()).toBe(false); - expect(() => emit(emitter)) - .toThrowError('A type reference to emit must be imported from an absolute module'); + expect(() => emit(emitter)).toThrowError('Unable to emit an unresolved reference'); }); it('can emit references into external modules within array types', () => { @@ -137,15 +180,14 @@ runInEachFileSystem(() => { it('cannot emit references to local declarations within array types', () => { const emitter = createEmitter(` - export class Local {}; + class Local {}; export class TestClass {}`); expect(emitter.canEmit()).toBe(false); - expect(() => emit(emitter)) - .toThrowError('A type reference to emit must be imported from an absolute module'); + expect(() => emit(emitter)).toThrowError('Unable to emit an unresolved reference'); }); - it('cannot emit references into relative files', () => { + it('can emit references into relative files', () => { const additionalFiles: TestFile[] = [{ name: absoluteFrom('/internal.ts'), contents: `export class Internal {}`, @@ -157,9 +199,8 @@ runInEachFileSystem(() => { export class TestClass {}`, additionalFiles); - expect(emitter.canEmit()).toBe(false); - expect(() => emit(emitter)) - .toThrowError('A type reference to emit must be imported from an absolute module'); + expect(emitter.canEmit()).toBe(true); + expect(emit(emitter)).toEqual(''); }); it('can emit references to interfaces', () => { @@ -209,5 +250,31 @@ runInEachFileSystem(() => { expect(emitter.canEmit()).toBe(true); expect(emit(emitter)).toEqual(''); }); + + it('transforms generic type parameter defaults', () => { + const additionalFiles: TestFile[] = [{ + name: absoluteFrom('/node_modules/types/index.d.ts'), + contents: `export declare type MyType = string;`, + }]; + const emitter = createEmitter( + ` + import {MyType} from 'types'; + + export class TestClass {}`, + additionalFiles); + + expect(emitter.canEmit()).toBe(true); + expect(emit(emitter)).toEqual(''); + }); + + it('cannot emit when a type parameter default cannot be emitted', () => { + const emitter = createEmitter(` + interface Local {} + + export class TestClass {}`); + + expect(emitter.canEmit()).toBe(false); + expect(() => emit(emitter)).toThrowError('Unable to emit an unresolved reference'); + }); }); }); diff --git a/packages/compiler-cli/src/ngtsc/typecheck/testing/BUILD.bazel b/packages/compiler-cli/src/ngtsc/typecheck/testing/BUILD.bazel new file mode 100644 index 0000000000..4e0633bfbd --- /dev/null +++ b/packages/compiler-cli/src/ngtsc/typecheck/testing/BUILD.bazel @@ -0,0 +1,28 @@ +load("//tools:defaults.bzl", "ts_library") + +ts_library( + name = "testing", + testonly = True, + srcs = glob([ + "**/*.ts", + ]), + visibility = ["//packages/compiler-cli/src/ngtsc:__subpackages__"], + deps = [ + "//packages/compiler", + "//packages/compiler-cli/src/ngtsc/file_system", + "//packages/compiler-cli/src/ngtsc/file_system/testing", + "//packages/compiler-cli/src/ngtsc/imports", + "//packages/compiler-cli/src/ngtsc/incremental", + "//packages/compiler-cli/src/ngtsc/metadata", + "//packages/compiler-cli/src/ngtsc/perf", + "//packages/compiler-cli/src/ngtsc/program_driver", + "//packages/compiler-cli/src/ngtsc/reflection", + "//packages/compiler-cli/src/ngtsc/scope", + "//packages/compiler-cli/src/ngtsc/testing", + "//packages/compiler-cli/src/ngtsc/typecheck", + "//packages/compiler-cli/src/ngtsc/typecheck/api", + "//packages/compiler-cli/src/ngtsc/typecheck/diagnostics", + "//packages/compiler-cli/src/ngtsc/util", + "@npm//typescript", + ], +) diff --git a/packages/compiler-cli/src/ngtsc/typecheck/test/test_utils.ts b/packages/compiler-cli/src/ngtsc/typecheck/testing/index.ts similarity index 85% rename from packages/compiler-cli/src/ngtsc/typecheck/test/test_utils.ts rename to packages/compiler-cli/src/ngtsc/typecheck/testing/index.ts index 71dc6a073e..5a556c914b 100644 --- a/packages/compiler-cli/src/ngtsc/typecheck/test/test_utils.ts +++ b/packages/compiler-cli/src/ngtsc/typecheck/testing/index.ts @@ -13,79 +13,80 @@ import {absoluteFrom, AbsoluteFsPath, getSourceFileOrError, LogicalFileSystem} f import {TestFile} from '../../file_system/testing'; import {AbsoluteModuleStrategy, LocalIdentifierStrategy, LogicalProjectStrategy, ModuleResolver, Reexport, Reference, ReferenceEmitter, RelativePathStrategy} from '../../imports'; import {NOOP_INCREMENTAL_BUILD} from '../../incremental'; -import {ClassPropertyMapping, CompoundMetadataReader} from '../../metadata'; +import {ClassPropertyMapping, CompoundMetadataReader, MetaType} from '../../metadata'; import {NOOP_PERF_RECORDER} from '../../perf'; +import {TsCreateProgramDriver} from '../../program_driver'; import {ClassDeclaration, isNamedClassDeclaration, TypeScriptReflectionHost} from '../../reflection'; import {ComponentScopeReader, LocalModuleScope, ScopeData, TypeCheckScopeRegistry} from '../../scope'; import {makeProgram} from '../../testing'; import {getRootDirs} from '../../util/src/typescript'; import {ProgramTypeCheckAdapter, TemplateTypeChecker, TypeCheckContext} from '../api'; -import {TemplateId, TemplateSourceMapping, TypeCheckableDirectiveMeta, TypeCheckBlockMetadata, TypeCheckingConfig, UpdateMode} from '../api/api'; +import {TemplateId, TemplateSourceMapping, TypeCheckableDirectiveMeta, TypeCheckBlockMetadata, TypeCheckingConfig} from '../api/api'; import {TemplateDiagnostic} from '../diagnostics'; -import {ReusedProgramStrategy} from '../src/augmented_program'; import {TemplateTypeCheckerImpl} from '../src/checker'; import {DomSchemaChecker} from '../src/dom'; import {Environment} from '../src/environment'; import {OutOfBandDiagnosticRecorder} from '../src/oob'; import {TypeCheckShimGenerator} from '../src/shim'; -import {generateTypeCheckBlock} from '../src/type_check_block'; +import {generateTypeCheckBlock, TcbGenericContextBehavior} from '../src/type_check_block'; import {TypeCheckFile} from '../src/type_check_file'; export function typescriptLibDts(): TestFile { return { name: absoluteFrom('/lib.d.ts'), contents: ` - type Partial = { [P in keyof T]?: T[P]; }; - type Pick = { [P in K]: T[P]; }; - type NonNullable = T extends null | undefined ? never : T; - - // The following native type declarations are required for proper type inference - declare interface Function { - call(...args: any[]): any; - } - declare interface Array { - length: number; - } - declare interface String { - length: number; - } - - declare interface Event { - preventDefault(): void; - } - declare interface MouseEvent extends Event { - readonly x: number; - readonly y: number; - } - - declare interface HTMLElementEventMap { - "click": MouseEvent; - } - declare interface HTMLElement { - addEventListener(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any): void; - addEventListener(type: string, listener: (evt: Event): void;): void; - } - declare interface HTMLDivElement extends HTMLElement {} - declare interface HTMLImageElement extends HTMLElement { - src: string; - alt: string; - width: number; - height: number; - } - declare interface HTMLQuoteElement extends HTMLElement { - cite: string; - } - declare interface HTMLElementTagNameMap { - "blockquote": HTMLQuoteElement; - "div": HTMLDivElement; - "img": HTMLImageElement; - } - declare interface Document { - createElement(tagName: K): HTMLElementTagNameMap[K]; - createElement(tagName: string): HTMLElement; - } - declare const document: Document; - ` + type Partial = { [P in keyof T]?: T[P]; }; + type Pick = { [P in K]: T[P]; }; + type NonNullable = T extends null | undefined ? never : T; + + // The following native type declarations are required for proper type inference + declare interface Function { + call(...args: any[]): any; + } + declare interface Array { + [index: number]: T; + length: number; + } + declare interface String { + length: number; + } + + declare interface Event { + preventDefault(): void; + } + declare interface MouseEvent extends Event { + readonly x: number; + readonly y: number; + } + + declare interface HTMLElementEventMap { + "click": MouseEvent; + } + declare interface HTMLElement { + addEventListener(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any): void; + addEventListener(type: string, listener: (evt: Event): void;): void; + } + declare interface HTMLDivElement extends HTMLElement {} + declare interface HTMLImageElement extends HTMLElement { + src: string; + alt: string; + width: number; + height: number; + } + declare interface HTMLQuoteElement extends HTMLElement { + cite: string; + } + declare interface HTMLElementTagNameMap { + "blockquote": HTMLQuoteElement; + "div": HTMLDivElement; + "img": HTMLImageElement; + } + declare interface Document { + createElement(tagName: K): HTMLElementTagNameMap[K]; + createElement(tagName: string): HTMLElement; + } + declare const document: Document; + ` }; } @@ -93,18 +94,18 @@ export function angularCoreDts(): TestFile { return { name: absoluteFrom('/node_modules/@angular/core/index.d.ts'), contents: ` - export declare class TemplateRef { - abstract readonly elementRef: unknown; - abstract createEmbeddedView(context: C): unknown; - } - - export declare class EventEmitter { - subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): unknown; - subscribe(observerOrNext?: any, error?: any, complete?: any): unknown; - } - - export declare type NgIterable = Array | Iterable; - ` + export declare class TemplateRef { + abstract readonly elementRef: unknown; + abstract createEmbeddedView(context: C): unknown; + } + + export declare class EventEmitter { + subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): unknown; + subscribe(observerOrNext?: any, error?: any, complete?: any): unknown; + } + + export declare type NgIterable = Array | Iterable; + ` }; } @@ -112,10 +113,10 @@ export function angularAnimationsDts(): TestFile { return { name: absoluteFrom('/node_modules/@angular/animations/index.d.ts'), contents: ` - export declare class AnimationEvent { - element: any; - } - ` + export declare class AnimationEvent { + element: any; + } + ` }; } @@ -135,25 +136,25 @@ export function ngForDts(): TestFile { return { name: absoluteFrom('/ngfor.d.ts'), contents: ` - export declare class NgForOf { - ngForOf: T[]; - ngForTrackBy: TrackByFunction; - static ngTemplateContextGuard(dir: NgForOf, ctx: any): ctx is NgForOfContext; - } - - export interface TrackByFunction { - (index: number, item: T): any; - } - - export declare class NgForOfContext { - $implicit: T; - index: number; - count: number; - readonly odd: boolean; - readonly even: boolean; - readonly first: boolean; - readonly last: boolean; - }`, + export declare class NgForOf { + ngForOf: T[]; + ngForTrackBy: TrackByFunction; + static ngTemplateContextGuard(dir: NgForOf, ctx: any): ctx is NgForOfContext; + } + + export interface TrackByFunction { + (index: number, item: T): any; + } + + export declare class NgForOfContext { + $implicit: T; + index: number; + count: number; + readonly odd: boolean; + readonly even: boolean; + readonly first: boolean; + readonly last: boolean; + }`, }; } @@ -290,13 +291,9 @@ export function tcb( const env = new TypeCheckFile(fileName, fullConfig, refEmmiter, reflectionHost, host); - const ref = new Reference(clazz); - - const tcb = generateTypeCheckBlock( - env, ref, ts.createIdentifier('Test_TCB'), meta, new NoopSchemaChecker(), - new NoopOobRecorder()); - - env.addTypeCheckBlock(ref, meta, new NoopSchemaChecker(), new NoopOobRecorder()); + env.addTypeCheckBlock( + new Reference(clazz), meta, new NoopSchemaChecker(), new NoopOobRecorder(), + TcbGenericContextBehavior.UseEmitter); const rendered = env.render(!options.emitSpans /* removeComments */); return rendered.replace(/\s+/g, ' '); @@ -347,7 +344,7 @@ export function setup(targets: TypeCheckingTarget[], overrides: { } = {}): { templateTypeChecker: TemplateTypeChecker, program: ts.Program, - programStrategy: ReusedProgramStrategy, + programStrategy: TsCreateProgramDriver, } { const files = [ typescriptLibDts(), @@ -462,7 +459,7 @@ export function setup(targets: TypeCheckingTarget[], overrides: { } }); - const programStrategy = new ReusedProgramStrategy(program, host, options, ['ngtypecheck']); + const programStrategy = new TsCreateProgramDriver(program, host, options, ['ngtypecheck']); if (overrides.inlining !== undefined) { (programStrategy as any).supportsInlineOperations = overrides.inlining; } @@ -599,6 +596,7 @@ function makeScope(program: ts.Program, sf: ts.SourceFile, decls: TestDeclaratio if (decl.type === 'directive') { scope.directives.push({ + type: MetaType.Directive, ref: new Reference(declClass), baseClass: null, name: decl.name, @@ -622,8 +620,10 @@ function makeScope(program: ts.Program, sf: ts.SourceFile, decls: TestDeclaratio }); } else if (decl.type === 'pipe') { scope.pipes.push({ + type: MetaType.Pipe, ref: new Reference(declClass), name: decl.pipeName, + nameExpr: null, }); } } @@ -694,4 +694,5 @@ export class NoopOobRecorder implements OutOfBandDiagnosticRecorder { requiresInlineTcb(): void {} requiresInlineTypeConstructors(): void {} suboptimalTypeInference(): void {} + splitTwoWayBinding(): void {} } diff --git a/packages/compiler-cli/src/ngtsc/util/src/ts_source_map_bug_29300.ts b/packages/compiler-cli/src/ngtsc/util/src/ts_source_map_bug_29300.ts deleted file mode 100644 index 64c3a8417c..0000000000 --- a/packages/compiler-cli/src/ngtsc/util/src/ts_source_map_bug_29300.ts +++ /dev/null @@ -1,90 +0,0 @@ -/** - * @license - * 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 - */ -import * as ts from 'typescript'; - -let _tsSourceMapBug29300Fixed: boolean|undefined; - -/** - * Test the current version of TypeScript to see if it has fixed the external SourceMap - * file bug: https://github.com/Microsoft/TypeScript/issues/29300. - * - * The bug is fixed in TS 3.3+ but this check avoid us having to rely upon the version number, - * and allows us to gracefully fail if the TS version still has the bug. - * - * We check for the bug by compiling a very small program `a;` and transforming it to `b;`, - * where we map the new `b` identifier to an external source file, which has different lines to - * the original source file. If the bug is fixed then the output SourceMap should contain - * mappings that correspond ot the correct line/col pairs for this transformed node. - * - * @returns true if the bug is fixed. - */ -export function tsSourceMapBug29300Fixed() { - if (_tsSourceMapBug29300Fixed === undefined) { - let writtenFiles: {[filename: string]: string} = {}; - const sourceFile = - ts.createSourceFile('test.ts', 'a;', ts.ScriptTarget.ES2015, true, ts.ScriptKind.TS); - const host = { - getSourceFile(): ts.SourceFile | - undefined { - return sourceFile; - }, - fileExists(): boolean { - return true; - }, - readFile(): string | - undefined { - return ''; - }, - writeFile(fileName: string, data: string) { - writtenFiles[fileName] = data; - }, - getDefaultLibFileName(): string { - return ''; - }, - getCurrentDirectory(): string { - return ''; - }, - getDirectories(): string[] { - return []; - }, - getCanonicalFileName(): string { - return ''; - }, - useCaseSensitiveFileNames(): boolean { - return true; - }, - getNewLine(): string { - return '\n'; - }, - }; - - const transform = (context: ts.TransformationContext) => { - return (node: ts.SourceFile) => ts.visitNode(node, visitor); - function visitor(node: ts.Node): ts.Node { - if (ts.isIdentifier(node) && node.text === 'a') { - const newNode = ts.createIdentifier('b'); - ts.setSourceMapRange(newNode, { - pos: 16, - end: 16, - source: ts.createSourceMapSource('test.html', 'abc\ndef\nghi\njkl\nmno\npqr') - }); - return newNode; - } - return ts.visitEachChild(node, visitor, context); - } - }; - - const program = ts.createProgram(['test.ts'], {sourceMap: true}, host); - program.emit(sourceFile, undefined, undefined, undefined, {after: [transform]}); - // The first two mappings in the source map should look like: - // [0,1,4,0] col 0 => source file 1, row 4, column 0) - // [1,0,0,0] col 1 => source file 1, row 4, column 0) - _tsSourceMapBug29300Fixed = /ACIA,CAAA/.test(writtenFiles['test.js.map']); - } - return _tsSourceMapBug29300Fixed; -} diff --git a/packages/compiler-cli/src/ngtsc/util/src/typescript.ts b/packages/compiler-cli/src/ngtsc/util/src/typescript.ts index 63af2e8206..10d7bd36f3 100644 --- a/packages/compiler-cli/src/ngtsc/util/src/typescript.ts +++ b/packages/compiler-cli/src/ngtsc/util/src/typescript.ts @@ -10,9 +10,26 @@ const TS = /\.tsx?$/i; const D_TS = /\.d\.ts$/i; import * as ts from 'typescript'; -import {AbsoluteFsPath, absoluteFrom} from '../../file_system'; +import {AbsoluteFsPath, getFileSystem} from '../../file_system'; import {DeclarationNode} from '../../reflection'; +/** + * Type describing a symbol that is guaranteed to have a value declaration. + */ +export type SymbolWithValueDeclaration = ts.Symbol&{ + valueDeclaration: ts.Declaration; + declarations: ts.Declaration[]; +}; + +export function isSymbolWithValueDeclaration(symbol: ts.Symbol|null| + undefined): symbol is SymbolWithValueDeclaration { + // If there is a value declaration set, then the `declarations` property is never undefined. We + // still check for the property to exist as this matches with the type that `symbol` is narrowed + // to. + return symbol != null && symbol.valueDeclaration !== undefined && + symbol.declarations !== undefined; +} + export function isDtsPath(filePath: string): boolean { return D_TS.test(filePath); } @@ -83,6 +100,11 @@ export function isTypeDeclaration(node: ts.Node): node is ts.EnumDeclaration| ts.isInterfaceDeclaration(node); } +export function isNamedDeclaration(node: ts.Node): node is ts.Declaration&{name: ts.Identifier} { + const namedNode = node as {name?: ts.Identifier}; + return namedNode.name !== undefined && ts.isIdentifier(namedNode.name); +} + export function isExported(node: DeclarationNode): boolean { let topLevel: ts.Node = node; if (ts.isVariableDeclaration(node) && ts.isVariableDeclarationList(node.parent)) { @@ -96,19 +118,21 @@ export function getRootDirs( host: Pick, options: ts.CompilerOptions): AbsoluteFsPath[] { const rootDirs: string[] = []; + const cwd = host.getCurrentDirectory(); + const fs = getFileSystem(); if (options.rootDirs !== undefined) { rootDirs.push(...options.rootDirs); } else if (options.rootDir !== undefined) { rootDirs.push(options.rootDir); } else { - rootDirs.push(host.getCurrentDirectory()); + rootDirs.push(cwd); } // In Windows the above might not always return posix separated paths // See: // https://github.com/Microsoft/TypeScript/blob/3f7357d37f66c842d70d835bc925ec2a873ecfec/src/compiler/sys.ts#L650 // Also compiler options might be set via an API which doesn't normalize paths - return rootDirs.map(rootDir => absoluteFrom(host.getCanonicalFileName(rootDir))); + return rootDirs.map(rootDir => fs.resolve(cwd, host.getCanonicalFileName(rootDir))); } export function nodeDebugInfo(node: ts.Node): string { @@ -159,3 +183,23 @@ export type SubsetOfKeys = K; export type RequiredDelegations = { [M in keyof Required]: T[M]; }; + +/** + * Source files may become redirects to other source files when their package name and version are + * identical. TypeScript creates a proxy source file for such source files which has an internal + * `redirectInfo` property that refers to the original source file. + */ +interface RedirectedSourceFile extends ts.SourceFile { + redirectInfo?: {unredirected: ts.SourceFile;}; +} + +/** + * Obtains the non-redirected source file for `sf`. + */ +export function toUnredirectedSourceFile(sf: ts.SourceFile): ts.SourceFile { + const redirectInfo = (sf as RedirectedSourceFile).redirectInfo; + if (redirectInfo === undefined) { + return sf; + } + return redirectInfo.unredirected; +} diff --git a/packages/compiler-cli/src/ngtsc/util/src/visitor.ts b/packages/compiler-cli/src/ngtsc/util/src/visitor.ts index 9ce64e6ec9..dac65adeed 100644 --- a/packages/compiler-cli/src/ngtsc/util/src/visitor.ts +++ b/packages/compiler-cli/src/ngtsc/util/src/visitor.ts @@ -45,10 +45,8 @@ export abstract class Visitor { * Visit a class declaration, returning at least the transformed declaration and optionally other * nodes to insert before the declaration. */ - visitClassDeclaration(node: ts.ClassDeclaration): - VisitListEntryResult { - return {node}; - } + abstract visitClassDeclaration(node: ts.ClassDeclaration): + VisitListEntryResult; private _visitListEntryNode( node: T, visitor: (node: T) => VisitListEntryResult): T { diff --git a/packages/compiler-cli/src/ngtsc/util/test/typescript_spec.ts b/packages/compiler-cli/src/ngtsc/util/test/typescript_spec.ts new file mode 100644 index 0000000000..31aa679625 --- /dev/null +++ b/packages/compiler-cli/src/ngtsc/util/test/typescript_spec.ts @@ -0,0 +1,30 @@ +/** + * @license + * 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 + */ + +import {FileSystem, getFileSystem} from '../../file_system'; +import {runInEachFileSystem} from '../../file_system/testing'; +import {getRootDirs} from '../src/typescript'; + +runInEachFileSystem(() => { + let fs: FileSystem; + + beforeEach(() => { + fs = getFileSystem(); + }); + + describe('typescript', () => { + it('should allow relative root directories', () => { + const mockCompilerHost = { + getCanonicalFileName: (val: string) => val, + getCurrentDirectory: () => '/fs-root/projects' + }; + const result = getRootDirs(mockCompilerHost, {rootDir: './test-project-root'}); + expect(result).toEqual([fs.resolve('/fs-root/projects/test-project-root')]); + }); + }); +}); diff --git a/packages/compiler-cli/src/ngtsc/util/test/visitor_spec.ts b/packages/compiler-cli/src/ngtsc/util/test/visitor_spec.ts index b26e93e77d..4a48cd328d 100644 --- a/packages/compiler-cli/src/ngtsc/util/test/visitor_spec.ts +++ b/packages/compiler-cli/src/ngtsc/util/test/visitor_spec.ts @@ -13,7 +13,7 @@ import {makeProgram} from '../../testing'; import {visit, VisitListEntryResult, Visitor} from '../src/visitor'; class TestAstVisitor extends Visitor { - visitClassDeclaration(node: ts.ClassDeclaration): + override visitClassDeclaration(node: ts.ClassDeclaration): VisitListEntryResult { const name = node.name!.text; const statics = node.members.filter( diff --git a/packages/compiler-cli/src/ngtsc/xi18n/BUILD.bazel b/packages/compiler-cli/src/ngtsc/xi18n/BUILD.bazel new file mode 100644 index 0000000000..4097839c15 --- /dev/null +++ b/packages/compiler-cli/src/ngtsc/xi18n/BUILD.bazel @@ -0,0 +1,15 @@ +load("//tools:defaults.bzl", "ts_library") + +package(default_visibility = ["//visibility:public"]) + +ts_library( + name = "xi18n", + srcs = glob([ + "*.ts", + "src/**/*.ts", + ]), + deps = [ + "//packages/compiler", + "@npm//typescript", + ], +) diff --git a/packages/compiler-cli/src/ngtsc/modulewithproviders/index.ts b/packages/compiler-cli/src/ngtsc/xi18n/index.ts similarity index 86% rename from packages/compiler-cli/src/ngtsc/modulewithproviders/index.ts rename to packages/compiler-cli/src/ngtsc/xi18n/index.ts index 135e00c3b9..aebb55aca9 100644 --- a/packages/compiler-cli/src/ngtsc/modulewithproviders/index.ts +++ b/packages/compiler-cli/src/ngtsc/xi18n/index.ts @@ -6,4 +6,4 @@ * found in the LICENSE file at https://angular.io/license */ -export * from './src/scanner'; +export * from './src/context'; diff --git a/packages/compiler-cli/src/ngtsc/xi18n/src/context.ts b/packages/compiler-cli/src/ngtsc/xi18n/src/context.ts new file mode 100644 index 0000000000..7a3f0a90af --- /dev/null +++ b/packages/compiler-cli/src/ngtsc/xi18n/src/context.ts @@ -0,0 +1,27 @@ +/** + * @license + * 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 + */ + +import {InterpolationConfig} from '@angular/compiler'; + +/** + * Captures template information intended for extraction of i18n messages from a template. + * + * This interface is compatible with the View Engine compiler's `MessageBundle` class, which is used + * to implement xi18n for VE. Due to the dependency graph of ngtsc, an interface is needed as it + * can't depend directly on `MessageBundle`. + */ +export interface Xi18nContext { + /** + * Capture i18n messages from the template. + * + * In `MessageBundle` itself, this returns any `ParseError`s from the template. In this interface, + * the return type is declared as `void` for simplicity, since any parse errors would be reported + * as diagnostics anyway. + */ + updateFromTemplate(html: string, url: string, interpolationConfig: InterpolationConfig): void; +} diff --git a/packages/compiler-cli/src/perform_compile.ts b/packages/compiler-cli/src/perform_compile.ts index 5220547af9..f84f0e8ab9 100644 --- a/packages/compiler-cli/src/perform_compile.ts +++ b/packages/compiler-cli/src/perform_compile.ts @@ -229,13 +229,25 @@ function createParseConfigHost(host: ConfigurationHost, fs = getFileSystem()): t function getExtendedConfigPath( configFile: string, extendsValue: string, host: ConfigurationHost, fs: FileSystem): AbsoluteFsPath|null { - let extendedConfigPath: AbsoluteFsPath|null = null; + const result = getExtendedConfigPathWorker(configFile, extendsValue, host, fs); + if (result !== null) { + return result; + } + // Try to resolve the paths with a json extension append a json extension to the file in case if + // it is missing and the resolution failed. This is to replicate TypeScript behaviour, see: + // https://github.com/microsoft/TypeScript/blob/294a5a7d784a5a95a8048ee990400979a6bc3a1c/src/compiler/commandLineParser.ts#L2806 + return getExtendedConfigPathWorker(configFile, `${extendsValue}.json`, host, fs); +} + +function getExtendedConfigPathWorker( + configFile: string, extendsValue: string, host: ConfigurationHost, + fs: FileSystem): AbsoluteFsPath|null { if (extendsValue.startsWith('.') || fs.isRooted(extendsValue)) { - extendedConfigPath = host.resolve(host.dirname(configFile), extendsValue); - extendedConfigPath = host.extname(extendedConfigPath) ? - extendedConfigPath : - absoluteFrom(`${extendedConfigPath}.json`); + const extendedConfigPath = host.resolve(host.dirname(configFile), extendsValue); + if (host.exists(extendedConfigPath)) { + return extendedConfigPath; + } } else { const parseConfigHost = createParseConfigHost(host, fs); @@ -248,16 +260,13 @@ function getExtendedConfigPath( {moduleResolution: ts.ModuleResolutionKind.NodeJs, resolveJsonModule: true}, parseConfigHost); if (resolvedModule) { - extendedConfigPath = absoluteFrom(resolvedModule.resolvedFileName); + return absoluteFrom(resolvedModule.resolvedFileName); } } - if (extendedConfigPath !== null && host.exists(extendedConfigPath)) { - return extendedConfigPath; - } - return null; } + export interface PerformCompilationResult { diagnostics: Diagnostics; program?: api.Program; diff --git a/packages/compiler-cli/src/transformers/api.ts b/packages/compiler-cli/src/transformers/api.ts index bb10b826c7..e9d39f4810 100644 --- a/packages/compiler-cli/src/transformers/api.ts +++ b/packages/compiler-cli/src/transformers/api.ts @@ -91,13 +91,6 @@ export interface CompilerOptions extends NgCompilerOptions, ts.CompilerOptions { // position. disableExpressionLowering?: boolean; - // Locale of the application - i18nOutLocale?: string; - // Export format (xlf, xlf2 or xmb) - i18nOutFormat?: string; - // Path to the extracted message file - i18nOutFile?: string; - // Import format if different from `i18nFormat` i18nInFormat?: string; // Path to the translation file diff --git a/packages/compiler-cli/src/transformers/i18n.ts b/packages/compiler-cli/src/transformers/i18n.ts new file mode 100644 index 0000000000..f2db15a0e8 --- /dev/null +++ b/packages/compiler-cli/src/transformers/i18n.ts @@ -0,0 +1,74 @@ +/** + * @license + * 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 + */ + +import {MessageBundle, Serializer, Xliff, Xliff2, Xmb} from '@angular/compiler'; +import * as path from 'path'; +import * as ts from 'typescript'; + +import {CompilerOptions} from './api'; + +export function i18nGetExtension(formatName: string): string { + const format = formatName.toLowerCase(); + + switch (format) { + case 'xmb': + return 'xmb'; + case 'xlf': + case 'xlif': + case 'xliff': + case 'xlf2': + case 'xliff2': + return 'xlf'; + } + + throw new Error(`Unsupported format "${formatName}"`); +} + +export function i18nExtract( + formatName: string|null, outFile: string|null, host: ts.CompilerHost, options: CompilerOptions, + bundle: MessageBundle, + pathResolve: (...segments: string[]) => string = path.resolve): string[] { + formatName = formatName || 'xlf'; + // Checks the format and returns the extension + const ext = i18nGetExtension(formatName); + const content = i18nSerialize(bundle, formatName, options); + const dstFile = outFile || `messages.${ext}`; + const dstPath = pathResolve(options.outDir || options.basePath!, dstFile); + host.writeFile(dstPath, content, false, undefined, []); + return [dstPath]; +} + +export function i18nSerialize( + bundle: MessageBundle, formatName: string, options: CompilerOptions): string { + const format = formatName.toLowerCase(); + let serializer: Serializer; + + switch (format) { + case 'xmb': + serializer = new Xmb(); + break; + case 'xliff2': + case 'xlf2': + serializer = new Xliff2(); + break; + case 'xlf': + case 'xliff': + default: + serializer = new Xliff(); + } + + return bundle.write(serializer, getPathNormalizer(options.basePath)); +} + +function getPathNormalizer(basePath?: string) { + // normalize source paths by removing the base path and always using "/" as a separator + return (sourcePath: string) => { + sourcePath = basePath ? path.relative(basePath, sourcePath) : sourcePath; + return sourcePath.split(path.sep).join('/'); + }; +} diff --git a/packages/compiler-cli/src/transformers/node_emitter.ts b/packages/compiler-cli/src/transformers/node_emitter.ts index 2a1cc6fd78..6f08aa37b7 100644 --- a/packages/compiler-cli/src/transformers/node_emitter.ts +++ b/packages/compiler-cli/src/transformers/node_emitter.ts @@ -672,6 +672,9 @@ export class NodeEmitterVisitor implements StatementVisitor, ExpressionVisitor { case BinaryOperator.Or: binaryOperator = ts.SyntaxKind.BarBarToken; break; + case BinaryOperator.NullishCoalesce: + binaryOperator = ts.SyntaxKind.QuestionQuestionToken; + break; case BinaryOperator.Plus: binaryOperator = ts.SyntaxKind.PlusToken; break; diff --git a/packages/compiler-cli/src/transformers/program.ts b/packages/compiler-cli/src/transformers/program.ts index ca50688a50..9e32a2a905 100644 --- a/packages/compiler-cli/src/transformers/program.ts +++ b/packages/compiler-cli/src/transformers/program.ts @@ -7,7 +7,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {AotCompiler, AotCompilerOptions, core, createAotCompiler, FormattedMessageChain, GeneratedFile, getParseErrors, isFormattedError, isSyntaxError, MessageBundle, NgAnalyzedFileWithInjectables, NgAnalyzedModules, ParseSourceSpan, PartialModule, Serializer, Xliff, Xliff2, Xmb} from '@angular/compiler'; +import {AotCompiler, AotCompilerOptions, core, createAotCompiler, FormattedMessageChain, GeneratedFile, getMissingNgModuleMetadataErrorData, getParseErrors, isFormattedError, isSyntaxError, MessageBundle, NgAnalyzedFileWithInjectables, NgAnalyzedModules, ParseSourceSpan, PartialModule} from '@angular/compiler'; import * as fs from 'fs'; import * as path from 'path'; import * as ts from 'typescript'; @@ -22,6 +22,7 @@ import {verifySupportedTypeScriptVersion} from '../typescript_support'; import {CompilerHost, CompilerOptions, CustomTransformers, DEFAULT_ERROR_CODE, Diagnostic, DiagnosticMessageChain, EmitFlags, LazyRoute, LibrarySummary, Program, SOURCE, TsEmitCallback, TsMergeEmitResultsCallback} from './api'; import {CodeGenerator, getOriginalReferences, TsCompilerAotCompilerTypeCheckHostAdapter} from './compiler_host'; import {getDownlevelDecoratorsTransform} from './downlevel_decorators_transform'; +import {i18nExtract} from './i18n'; import {getInlineResourcesTransformFactory, InlineResourcesMetadataTransformer} from './inline_resources'; import {getExpressionLoweringTransformFactory, LowerMetadataTransform} from './lower_expressions'; import {MetadataCache, MetadataTransformer} from './metadata_cache'; @@ -690,7 +691,7 @@ class AngularCompilerProgram implements Program { private _addStructuralDiagnostics(error: Error) { const diagnostics = this._structuralDiagnostics || (this._structuralDiagnostics = []); if (isSyntaxError(error)) { - diagnostics.push(...syntaxErrorToDiagnostics(error)); + diagnostics.push(...syntaxErrorToDiagnostics(error, this.tsProgram)); } else { diagnostics.push({ messageText: error.toString(), @@ -938,66 +939,6 @@ export function createSrcToOutPathMapper( } } -export function i18nExtract( - formatName: string|null, outFile: string|null, host: ts.CompilerHost, options: CompilerOptions, - bundle: MessageBundle): string[] { - formatName = formatName || 'xlf'; - // Checks the format and returns the extension - const ext = i18nGetExtension(formatName); - const content = i18nSerialize(bundle, formatName, options); - const dstFile = outFile || `messages.${ext}`; - const dstPath = path.resolve(options.outDir || options.basePath!, dstFile); - host.writeFile(dstPath, content, false, undefined, []); - return [dstPath]; -} - -export function i18nSerialize( - bundle: MessageBundle, formatName: string, options: CompilerOptions): string { - const format = formatName.toLowerCase(); - let serializer: Serializer; - - switch (format) { - case 'xmb': - serializer = new Xmb(); - break; - case 'xliff2': - case 'xlf2': - serializer = new Xliff2(); - break; - case 'xlf': - case 'xliff': - default: - serializer = new Xliff(); - } - - return bundle.write(serializer, getPathNormalizer(options.basePath)); -} - -function getPathNormalizer(basePath?: string) { - // normalize source paths by removing the base path and always using "/" as a separator - return (sourcePath: string) => { - sourcePath = basePath ? path.relative(basePath, sourcePath) : sourcePath; - return sourcePath.split(path.sep).join('/'); - }; -} - -export function i18nGetExtension(formatName: string): string { - const format = formatName.toLowerCase(); - - switch (format) { - case 'xmb': - return 'xmb'; - case 'xlf': - case 'xlif': - case 'xliff': - case 'xlf2': - case 'xliff2': - return 'xlf'; - } - - throw new Error(`Unsupported format "${formatName}"`); -} - function mergeEmitResults(emitResults: ts.EmitResult[]): ts.EmitResult { const diagnostics: ts.Diagnostic[] = []; let emitSkipped = false; @@ -1036,7 +977,7 @@ function diagnosticChainFromFormattedDiagnosticChain(chain: FormattedMessageChai }; } -function syntaxErrorToDiagnostics(error: Error): Diagnostic[] { +function syntaxErrorToDiagnostics(error: Error, program: ts.Program): Diagnostic[] { const parserErrors = getParseErrors(error); if (parserErrors && parserErrors.length) { return parserErrors.map(e => ({ @@ -1058,6 +999,33 @@ function syntaxErrorToDiagnostics(error: Error): Diagnostic[] { position: error.position }]; } + + const ngModuleErrorData = getMissingNgModuleMetadataErrorData(error); + if (ngModuleErrorData !== null) { + // This error represents the import or export of an `NgModule` that didn't have valid metadata. + // This _might_ happen because the NgModule in question is an Ivy-compiled library, and we want + // to show a more useful error if that's the case. + const ngModuleClass = + getDtsClass(program, ngModuleErrorData.fileName, ngModuleErrorData.className); + if (ngModuleClass !== null && isIvyNgModule(ngModuleClass)) { + return [{ + messageText: `The NgModule '${ngModuleErrorData.className}' in '${ + ngModuleErrorData + .fileName}' is imported by this compilation, but appears to be part of a library compiled for Angular Ivy. This may occur because: + + 1) the library was processed with 'ngcc'. Removing and reinstalling node_modules may fix this problem. + + 2) the library was published for Angular Ivy and v12+ applications only. Check its peer dependencies carefully and ensure that you're using a compatible version of Angular. + +See https://angular.io/errors/NG6999 for more information. +`, + category: ts.DiagnosticCategory.Error, + code: DEFAULT_ERROR_CODE, + source: SOURCE, + }]; + } + } + // Produce a Diagnostic anyway since we know for sure `error` is a SyntaxError return [{ messageText: error.message, @@ -1066,3 +1034,38 @@ function syntaxErrorToDiagnostics(error: Error): Diagnostic[] { source: SOURCE, }]; } + +function getDtsClass(program: ts.Program, fileName: string, className: string): ts.ClassDeclaration| + null { + const sf = program.getSourceFile(fileName); + if (sf === undefined || !sf.isDeclarationFile) { + return null; + } + for (const stmt of sf.statements) { + if (!ts.isClassDeclaration(stmt)) { + continue; + } + if (stmt.name === undefined || stmt.name.text !== className) { + continue; + } + + return stmt; + } + + // No classes found that matched the given name. + return null; +} + +function isIvyNgModule(clazz: ts.ClassDeclaration): boolean { + for (const member of clazz.members) { + if (!ts.isPropertyDeclaration(member)) { + continue; + } + if (ts.isIdentifier(member.name) && member.name.text === 'ɵmod') { + return true; + } + } + + // No Ivy 'ɵmod' property found. + return false; +} diff --git a/packages/compiler-cli/src/typescript_support.ts b/packages/compiler-cli/src/typescript_support.ts index ec058be8d7..334c4bd85e 100644 --- a/packages/compiler-cli/src/typescript_support.ts +++ b/packages/compiler-cli/src/typescript_support.ts @@ -25,7 +25,7 @@ const MIN_TS_VERSION = '4.2.3'; * Note: this check is disabled in g3, search for * `angularCompilerOptions.disableTypeScriptVersionCheck` config param value in g3. */ -const MAX_TS_VERSION = '4.3.0'; +const MAX_TS_VERSION = '4.4.0'; /** * The currently used version of TypeScript, which can be adjusted for testing purposes using diff --git a/packages/compiler-cli/src/version.ts b/packages/compiler-cli/src/version.ts index de85698e6b..07082d976c 100644 --- a/packages/compiler-cli/src/version.ts +++ b/packages/compiler-cli/src/version.ts @@ -9,7 +9,7 @@ /** * @module * @description - * Entry point for all public APIs of the common package. + * Entry point for all public APIs of the compiler-cli package. */ import {Version} from '@angular/compiler'; diff --git a/packages/compiler-cli/test/compliance/linked/linked_compile_spec.ts b/packages/compiler-cli/test/compliance/linked/linked_compile_spec.ts index 503d3fc8ba..d1e7475e80 100644 --- a/packages/compiler-cli/test/compliance/linked/linked_compile_spec.ts +++ b/packages/compiler-cli/test/compliance/linked/linked_compile_spec.ts @@ -32,8 +32,6 @@ function linkPartials(fileSystem: FileSystem, test: ComplianceTest): CompileResu const linkerPlugin = createEs2015LinkerPlugin({ fileSystem, logger, - // By default we don't render legacy message ids in compliance tests. - enableI18nLegacyMessageIdFormat: false, sourceMapping: test.compilerOptions?.sourceMap === true, ...test.angularCompilerOptions }); diff --git a/packages/compiler-cli/test/compliance/partial/partial_compliance_goldens.bzl b/packages/compiler-cli/test/compliance/partial/partial_compliance_goldens.bzl index 78ba8b0d71..bdbce87d4d 100644 --- a/packages/compiler-cli/test/compliance/partial/partial_compliance_goldens.bzl +++ b/packages/compiler-cli/test/compliance/partial/partial_compliance_goldens.bzl @@ -48,20 +48,14 @@ def partial_compliance_golden(filePath): testonly = True, stdout = "%s/this_file_should_not_be_committed" % path, link_workspace_root = True, - tags = [ - # TODO(josephperrott): Begin running these tests on windows after updating to rules_nodejs 3.0 - "no-windows", - ], visibility = [":__pkg__"], - data = data, + data = [], ) generated_file_test( visibility = ["//visibility:public"], tags = [ "ivy-only", - # TODO(josephperrott): Begin running these tests on windows after updating to rules_nodejs 3.0 - "no-windows", ], name = "%s.golden" % path, src = "//packages/compiler-cli/test/compliance/test_cases:%s/GOLDEN_PARTIAL.js" % path, diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/GOLDEN_PARTIAL.js new file mode 100644 index 0000000000..26e7aabb54 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/GOLDEN_PARTIAL.js @@ -0,0 +1,305 @@ +/**************************************************************************************************** + * PARTIAL FILE: custom.js + ****************************************************************************************************/ +export function CustomClassDecorator() { + return (clazz) => clazz; +} +export function CustomPropDecorator() { + return () => { }; +} +export function CustomParamDecorator() { + return () => { }; +} + +/**************************************************************************************************** + * PARTIAL FILE: custom.d.ts + ****************************************************************************************************/ +export declare function CustomClassDecorator(): ClassDecorator; +export declare function CustomPropDecorator(): PropertyDecorator; +export declare function CustomParamDecorator(): ParameterDecorator; + +/**************************************************************************************************** + * PARTIAL FILE: class_decorators.js + ****************************************************************************************************/ +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +import { Injectable } from '@angular/core'; +import { CustomClassDecorator } from './custom'; +import * as i0 from "@angular/core"; +export class BasicInjectable { +} +BasicInjectable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BasicInjectable, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); +BasicInjectable.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BasicInjectable }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BasicInjectable, decorators: [{ + type: Injectable + }] }); +export class RootInjectable { +} +RootInjectable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: RootInjectable, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); +RootInjectable.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: RootInjectable, providedIn: 'root' }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: RootInjectable, decorators: [{ + type: Injectable, + args: [{ providedIn: 'root' }] + }] }); +let CustomInjectable = class CustomInjectable { +}; +CustomInjectable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: CustomInjectable, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); +CustomInjectable.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: CustomInjectable }); +CustomInjectable = __decorate([ + CustomClassDecorator() +], CustomInjectable); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: CustomInjectable, decorators: [{ + type: Injectable + }] }); + +/**************************************************************************************************** + * PARTIAL FILE: class_decorators.d.ts + ****************************************************************************************************/ +import * as i0 from "@angular/core"; +export declare class BasicInjectable { + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵprov: i0.ɵɵInjectableDeclaration; +} +export declare class RootInjectable { + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵprov: i0.ɵɵInjectableDeclaration; +} + +/**************************************************************************************************** + * PARTIAL FILE: custom.js + ****************************************************************************************************/ +export function CustomClassDecorator() { + return (clazz) => clazz; +} +export function CustomPropDecorator() { + return () => { }; +} +export function CustomParamDecorator() { + return () => { }; +} + +/**************************************************************************************************** + * PARTIAL FILE: custom.d.ts + ****************************************************************************************************/ +export declare function CustomClassDecorator(): ClassDecorator; +export declare function CustomPropDecorator(): PropertyDecorator; +export declare function CustomParamDecorator(): ParameterDecorator; + +/**************************************************************************************************** + * PARTIAL FILE: property_decorators.js + ****************************************************************************************************/ +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +import { Directive, Input, Output } from '@angular/core'; +import { CustomPropDecorator } from './custom'; +import * as i0 from "@angular/core"; +export class MyDir { +} +MyDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +MyDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyDir, inputs: { foo: "foo", bar: ["baz", "bar"], mixed: "mixed" }, outputs: { mixed: "mixed" }, ngImport: i0 }); +__decorate([ + CustomPropDecorator(), + __metadata("design:type", String) +], MyDir.prototype, "custom", void 0); +__decorate([ + CustomPropDecorator(), + __metadata("design:type", String) +], MyDir.prototype, "mixed", void 0); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDir, decorators: [{ + type: Directive + }], propDecorators: { foo: [{ + type: Input + }], bar: [{ + type: Input, + args: ['baz'] + }], custom: [], mixed: [{ + type: Input + }, { + type: Output + }] } }); + +/**************************************************************************************************** + * PARTIAL FILE: property_decorators.d.ts + ****************************************************************************************************/ +import * as i0 from "@angular/core"; +export declare class MyDir { + foo: string; + bar: string; + custom: string; + mixed: string; + none: string; + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵdir: i0.ɵɵDirectiveDeclaration; +} + +/**************************************************************************************************** + * PARTIAL FILE: custom.js + ****************************************************************************************************/ +export function CustomClassDecorator() { + return (clazz) => clazz; +} +export function CustomPropDecorator() { + return () => { }; +} +export function CustomParamDecorator() { + return () => { }; +} + +/**************************************************************************************************** + * PARTIAL FILE: custom.d.ts + ****************************************************************************************************/ +export declare function CustomClassDecorator(): ClassDecorator; +export declare function CustomPropDecorator(): PropertyDecorator; +export declare function CustomParamDecorator(): ParameterDecorator; + +/**************************************************************************************************** + * PARTIAL FILE: parameter_decorators.js + ****************************************************************************************************/ +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param = (this && this.__param) || function (paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +}; +import { Inject, Injectable, InjectionToken, SkipSelf } from '@angular/core'; +import { CustomParamDecorator } from './custom'; +import * as i0 from "@angular/core"; +export const TOKEN = new InjectionToken('TOKEN'); +class Service { +} +let ParameterizedInjectable = class ParameterizedInjectable { + constructor(service, token, custom, mixed) { } +}; +ParameterizedInjectable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ParameterizedInjectable, deps: [{ token: Service }, { token: TOKEN }, { token: Service }, { token: TOKEN, skipSelf: true }], target: i0.ɵɵFactoryTarget.Injectable }); +ParameterizedInjectable.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ParameterizedInjectable }); +ParameterizedInjectable = __decorate([ + __param(2, CustomParamDecorator()), + __param(3, CustomParamDecorator()), + __metadata("design:paramtypes", [Service, String, Service, String]) +], ParameterizedInjectable); +export { ParameterizedInjectable }; +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ParameterizedInjectable, decorators: [{ + type: Injectable + }], ctorParameters: function () { return [{ type: Service }, { type: undefined, decorators: [{ + type: Inject, + args: [TOKEN] + }] }, { type: Service, decorators: [] }, { type: undefined, decorators: [{ + type: Inject, + args: [TOKEN] + }, { + type: SkipSelf + }] }]; } }); +export class NoCtor { +} +NoCtor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: NoCtor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); +NoCtor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: NoCtor }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: NoCtor, decorators: [{ + type: Injectable + }] }); +export class EmptyCtor { + constructor() { } +} +EmptyCtor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: EmptyCtor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); +EmptyCtor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: EmptyCtor }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: EmptyCtor, decorators: [{ + type: Injectable + }], ctorParameters: function () { return []; } }); +export class NoDecorators { + constructor(service) { } +} +NoDecorators.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: NoDecorators, deps: [{ token: Service }], target: i0.ɵɵFactoryTarget.Injectable }); +NoDecorators.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: NoDecorators }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: NoDecorators, decorators: [{ + type: Injectable + }], ctorParameters: function () { return [{ type: Service }]; } }); +let CustomInjectable = class CustomInjectable { + constructor(service) { } +}; +CustomInjectable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: CustomInjectable, deps: [{ token: Service }], target: i0.ɵɵFactoryTarget.Injectable }); +CustomInjectable.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: CustomInjectable }); +CustomInjectable = __decorate([ + __param(0, CustomParamDecorator()), + __metadata("design:paramtypes", [Service]) +], CustomInjectable); +export { CustomInjectable }; +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: CustomInjectable, decorators: [{ + type: Injectable + }], ctorParameters: function () { return [{ type: Service, decorators: [] }]; } }); +export class DerivedInjectable extends ParameterizedInjectable { +} +DerivedInjectable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: DerivedInjectable, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); +DerivedInjectable.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: DerivedInjectable }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: DerivedInjectable, decorators: [{ + type: Injectable + }] }); +export class DerivedInjectableWithCtor extends ParameterizedInjectable { + constructor() { + super(null, '', null, ''); + } +} +DerivedInjectableWithCtor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: DerivedInjectableWithCtor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); +DerivedInjectableWithCtor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: DerivedInjectableWithCtor }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: DerivedInjectableWithCtor, decorators: [{ + type: Injectable + }], ctorParameters: function () { return []; } }); + +/**************************************************************************************************** + * PARTIAL FILE: parameter_decorators.d.ts + ****************************************************************************************************/ +import { InjectionToken } from '@angular/core'; +import * as i0 from "@angular/core"; +export declare const TOKEN: InjectionToken; +declare class Service { +} +export declare class ParameterizedInjectable { + constructor(service: Service, token: string, custom: Service, mixed: string); + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵprov: i0.ɵɵInjectableDeclaration; +} +export declare class NoCtor { + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵprov: i0.ɵɵInjectableDeclaration; +} +export declare class EmptyCtor { + constructor(); + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵprov: i0.ɵɵInjectableDeclaration; +} +export declare class NoDecorators { + constructor(service: Service); + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵprov: i0.ɵɵInjectableDeclaration; +} +export declare class CustomInjectable { + constructor(service: Service); + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵprov: i0.ɵɵInjectableDeclaration; +} +export declare class DerivedInjectable extends ParameterizedInjectable { + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵprov: i0.ɵɵInjectableDeclaration; +} +export declare class DerivedInjectableWithCtor extends ParameterizedInjectable { + constructor(); + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵprov: i0.ɵɵInjectableDeclaration; +} +export {}; + diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/TEST_CASES.json b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/TEST_CASES.json new file mode 100644 index 0000000000..7d1344cddf --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/TEST_CASES.json @@ -0,0 +1,70 @@ +{ + "$schema": "../../test_case_schema.json", + "cases": [ + { + "description": "should capture Angular class decorators", + "inputFiles": [ + "class_decorators.ts" + ], + "expectations": [ + { + "failureMessage": "Invalid class metadata", + "files": [ + "class_decorators.js" + ] + } + ] + }, + { + "description": "should capture Angular property decorators", + "inputFiles": [ + "property_decorators.ts" + ], + "expectations": [ + { + "failureMessage": "Invalid class metadata", + "files": [ + "property_decorators.js" + ] + } + ] + }, + { + "description": "should capture constructor parameters", + "inputFiles": [ + "parameter_decorators.ts" + ], + "expectations": [ + { + "failureMessage": "Invalid class metadata", + "files": [ + { + "expected": "parameter_decorators_custom.js", + "generated": "parameter_decorators.js" + }, + { + "expected": "parameter_decorators_decorators.js", + "generated": "parameter_decorators.js" + }, + { + "expected": "parameter_decorators_empty.js", + "generated": "parameter_decorators.js" + }, + { + "expected": "parameter_decorators_no_ctor.js", + "generated": "parameter_decorators.js" + }, + { + "expected": "parameter_decorators_no_decorators.js", + "generated": "parameter_decorators.js" + }, + { + "expected": "parameter_decorators_derived.js", + "generated": "parameter_decorators.js" + } + ] + } + ] + } + ] +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/class_decorators.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/class_decorators.js new file mode 100644 index 0000000000..5421d83335 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/class_decorators.js @@ -0,0 +1,31 @@ +BasicInjectable.ɵfac = …; +BasicInjectable.ɵprov = …; +(function () { + (typeof ngDevMode === "undefined" || ngDevMode) && $i0$.ɵsetClassMetadata(BasicInjectable, [{ + type: Injectable + }], null, null); +})(); + +… + +RootInjectable.ɵfac = …; +RootInjectable.ɵprov = …; +(function () { + (typeof ngDevMode === "undefined" || ngDevMode) && $i0$.ɵsetClassMetadata(RootInjectable, [{ + type: Injectable, + args: [{providedIn: 'root'}] + }], null, null); +})(); + +… + +CustomInjectable.ɵfac = …; +CustomInjectable.ɵprov = …; +CustomInjectable = __decorate([ + CustomClassDecorator() +], CustomInjectable); +(function () { + (typeof ngDevMode === "undefined" || ngDevMode) && $i0$.ɵsetClassMetadata(CustomInjectable, [{ + type: Injectable + }], null, null); +})(); diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/class_decorators.ts b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/class_decorators.ts new file mode 100644 index 0000000000..2ca4bbf1a2 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/class_decorators.ts @@ -0,0 +1,15 @@ +import {Injectable} from '@angular/core'; +import {CustomClassDecorator} from './custom'; + +@Injectable() +export class BasicInjectable { +} + +@Injectable({providedIn: 'root'}) +export class RootInjectable { +} + +@Injectable() +@CustomClassDecorator() +class CustomInjectable { +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/custom.ts b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/custom.ts new file mode 100644 index 0000000000..27648a48b9 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/custom.ts @@ -0,0 +1,11 @@ +export function CustomClassDecorator(): ClassDecorator { + return (clazz) => clazz; +} + +export function CustomPropDecorator(): PropertyDecorator { + return () => {}; +} + +export function CustomParamDecorator(): ParameterDecorator { + return () => {}; +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/parameter_decorators.ts b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/parameter_decorators.ts new file mode 100644 index 0000000000..302c4b6561 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/parameter_decorators.ts @@ -0,0 +1,42 @@ +import {Inject, Injectable, InjectionToken, SkipSelf} from '@angular/core'; +import {CustomParamDecorator} from './custom'; + +export const TOKEN = new InjectionToken('TOKEN'); +class Service {} + +@Injectable() +export class ParameterizedInjectable { + constructor( + service: Service, @Inject(TOKEN) token: string, @CustomParamDecorator() custom: Service, + @Inject(TOKEN) @SkipSelf() @CustomParamDecorator() mixed: string) {} +} + +@Injectable() +export class NoCtor { +} + +@Injectable() +export class EmptyCtor { + constructor() {} +} + +@Injectable() +export class NoDecorators { + constructor(service: Service) {} +} + +@Injectable() +export class CustomInjectable { + constructor(@CustomParamDecorator() service: Service) {} +} + +@Injectable() +export class DerivedInjectable extends ParameterizedInjectable { +} + +@Injectable() +export class DerivedInjectableWithCtor extends ParameterizedInjectable { + constructor() { + super(null!, '', null!, ''); + } +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/parameter_decorators_custom.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/parameter_decorators_custom.js new file mode 100644 index 0000000000..cb2e8520ae --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/parameter_decorators_custom.js @@ -0,0 +1,12 @@ +CustomInjectable.ɵfac = …; +CustomInjectable.ɵprov = …; +(function () { + (typeof ngDevMode === "undefined" || ngDevMode) && $i0$.ɵsetClassMetadata(CustomInjectable, [{ + type: Injectable + }], function () { + return [{ + type: Service, + decorators: [] + }]; + }, null); +})(); diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/parameter_decorators_decorators.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/parameter_decorators_decorators.js new file mode 100644 index 0000000000..5f93fce03b --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/parameter_decorators_decorators.js @@ -0,0 +1,27 @@ +ParameterizedInjectable.ɵfac = …; +ParameterizedInjectable.ɵprov = …; +ParameterizedInjectable = __decorate([ + __param(2, CustomParamDecorator()), + __param(3, CustomParamDecorator()), + __metadata("design:paramtypes", [Service, String, Service, String]) +], ParameterizedInjectable); +export {ParameterizedInjectable}; +(function () { + (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ParameterizedInjectable, [{ + type: Injectable + }], function () { + return [{type: Service}, { + type: undefined, decorators: [{ + type: Inject, + args: [TOKEN] + }] + }, {type: Service, decorators: []}, { + type: undefined, decorators: [{ + type: Inject, + args: [TOKEN] + }, { + type: SkipSelf + }] + }]; + }, null); +})(); diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/parameter_decorators_derived.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/parameter_decorators_derived.js new file mode 100644 index 0000000000..2492cd7010 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/parameter_decorators_derived.js @@ -0,0 +1,17 @@ +DerivedInjectable.ɵfac = …; +DerivedInjectable.ɵprov = …; +(function () { + (typeof ngDevMode === "undefined" || ngDevMode) && $i0$.ɵsetClassMetadata(DerivedInjectable, [{ + type: Injectable + }], null, null); +})(); + +… + +DerivedInjectableWithCtor.ɵfac = …; +DerivedInjectableWithCtor.ɵprov = …; +(function () { + (typeof ngDevMode === "undefined" || ngDevMode) && $i0$.ɵsetClassMetadata(DerivedInjectableWithCtor, [{ + type: Injectable + }], function () { return []; }, null); +})(); diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/parameter_decorators_empty.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/parameter_decorators_empty.js new file mode 100644 index 0000000000..19acb0123e --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/parameter_decorators_empty.js @@ -0,0 +1,7 @@ +EmptyCtor.ɵfac = …; +EmptyCtor.ɵprov = …; +(function () { + (typeof ngDevMode === "undefined" || ngDevMode) && $i0$.ɵsetClassMetadata(EmptyCtor, [{ + type: Injectable + }], function() { return []; }, null); +})(); diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/parameter_decorators_no_ctor.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/parameter_decorators_no_ctor.js new file mode 100644 index 0000000000..67b096337c --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/parameter_decorators_no_ctor.js @@ -0,0 +1,7 @@ +NoCtor.ɵfac = …; +NoCtor.ɵprov = …; +(function () { + (typeof ngDevMode === "undefined" || ngDevMode) && $i0$.ɵsetClassMetadata(NoCtor, [{ + type: Injectable + }], null, null); +})(); diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/parameter_decorators_no_decorators.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/parameter_decorators_no_decorators.js new file mode 100644 index 0000000000..8a74ee1815 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/parameter_decorators_no_decorators.js @@ -0,0 +1,11 @@ +NoDecorators.ɵfac = …; +NoDecorators.ɵprov = …; +(function () { + (typeof ngDevMode === "undefined" || ngDevMode) && $i0$.ɵsetClassMetadata(NoDecorators, [{ + type: Injectable + }], function () { + return [{ + type: Service + }]; + }, null); +})(); diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/property_decorators.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/property_decorators.js new file mode 100644 index 0000000000..bf8e98f147 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/property_decorators.js @@ -0,0 +1,26 @@ +MyDir.ɵfac = …; +MyDir.ɵdir = …; +__decorate([ + CustomPropDecorator(), + __metadata("design:type", String) +], MyDir.prototype, "custom", void 0); +__decorate([ + CustomPropDecorator(), + __metadata("design:type", String) +], MyDir.prototype, "mixed", void 0); +(function () { + (typeof ngDevMode === "undefined" || ngDevMode) && $i0$.ɵsetClassMetadata(MyDir, [{ + type: Directive + }], null, { + foo: [{ + type: Input + }], bar: [{ + type: Input, + args: ['baz'] + }], custom: [], mixed: [{ + type: Input + }, { + type: Output + }] + }); +})(); diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/property_decorators.ts b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/property_decorators.ts new file mode 100644 index 0000000000..b18c532a6e --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/class_metadata/property_decorators.ts @@ -0,0 +1,15 @@ +import {Directive, Input, Output} from '@angular/core'; +import {CustomPropDecorator} from './custom'; + +@Directive() +export class MyDir { + @Input() foo!: string; + + @Input('baz') bar!: string; + + @CustomPropDecorator() custom!: string; + + @Input() @Output() @CustomPropDecorator() mixed!: string; + + none!: string; +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/GOLDEN_PARTIAL.js index 58337f825c..7c28109ba7 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/GOLDEN_PARTIAL.js @@ -5,36 +5,36 @@ import { Component, Directive, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class HostBindingComp { } -HostBindingComp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostBindingComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -HostBindingComp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: HostBindingComp, selector: "host-binding-comp", ngImport: i0, template: ` +HostBindingComp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostBindingComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +HostBindingComp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: HostBindingComp, selector: "host-binding-comp", ngImport: i0, template: ` `, isInline: true, directives: [{ type: i0.forwardRef(function () { return MyForwardDirective; }), selector: "my-forward-directive" }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HostBindingComp, [{ - type: Component, - args: [{ - selector: 'host-binding-comp', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostBindingComp, decorators: [{ + type: Component, + args: [{ + selector: 'host-binding-comp', + template: ` ` - }] - }], null, null); })(); + }] + }] }); class MyForwardDirective { } -MyForwardDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyForwardDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -MyForwardDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: MyForwardDirective, selector: "my-forward-directive", ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyForwardDirective, [{ - type: Directive, - args: [{ selector: 'my-forward-directive' }] - }], null, null); })(); +MyForwardDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyForwardDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +MyForwardDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyForwardDirective, selector: "my-forward-directive", ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyForwardDirective, decorators: [{ + type: Directive, + args: [{ selector: 'my-forward-directive' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [HostBindingComp, MyForwardDirective] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [HostBindingComp, MyForwardDirective] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [HostBindingComp, MyForwardDirective] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [HostBindingComp, MyForwardDirective] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: forward_referenced_directive.d.ts @@ -57,36 +57,37 @@ import { Component, NgModule, Pipe } from '@angular/core'; import * as i0 from "@angular/core"; export class HostBindingComp { } -HostBindingComp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostBindingComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -HostBindingComp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: HostBindingComp, selector: "host-binding-comp", ngImport: i0, template: ` +HostBindingComp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostBindingComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +HostBindingComp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: HostBindingComp, selector: "host-binding-comp", ngImport: i0, template: `
...
`, isInline: true, pipes: { "my_forward_pipe": i0.forwardRef(function () { return MyForwardPipe; }) } }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HostBindingComp, [{ - type: Component, - args: [{ - selector: 'host-binding-comp', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostBindingComp, decorators: [{ + type: Component, + args: [{ + selector: 'host-binding-comp', + template: `
...
` - }] - }], null, null); })(); + }] + }] }); class MyForwardPipe { + transform() { } } -MyForwardPipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyForwardPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -MyForwardPipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyForwardPipe, name: "my_forward_pipe" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyForwardPipe, [{ - type: Pipe, - args: [{ name: 'my_forward_pipe' }] - }], null, null); })(); +MyForwardPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyForwardPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +MyForwardPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyForwardPipe, name: "my_forward_pipe" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyForwardPipe, decorators: [{ + type: Pipe, + args: [{ name: 'my_forward_pipe' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [HostBindingComp, MyForwardPipe] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [HostBindingComp, MyForwardPipe] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [HostBindingComp, MyForwardPipe] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [HostBindingComp, MyForwardPipe] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: forward_referenced_pipe.d.ts @@ -109,21 +110,21 @@ import { Directive, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class SomeDirective { } -SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[some-directive]", exportAs: ["someDir", "otherDir"], ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SomeDirective, [{ - type: Directive, - args: [{ selector: '[some-directive]', exportAs: 'someDir, otherDir' }] - }], null, null); })(); +SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[some-directive]", exportAs: ["someDir", "otherDir"], ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, decorators: [{ + type: Directive, + args: [{ selector: '[some-directive]', exportAs: 'someDir, otherDir' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SomeDirective] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [SomeDirective] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SomeDirective] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [SomeDirective] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: export_as.d.ts @@ -146,11 +147,11 @@ import { Directive } from '@angular/core'; import * as i0 from "@angular/core"; export class AbstractDirective { } -AbstractDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AbstractDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -AbstractDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: AbstractDirective, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AbstractDirective, [{ - type: Directive - }], null, null); })(); +AbstractDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AbstractDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +AbstractDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: AbstractDirective, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AbstractDirective, decorators: [{ + type: Directive + }] }); /**************************************************************************************************** * PARTIAL FILE: no_selector.d.ts @@ -168,33 +169,33 @@ import { Component, Input, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class SomeComp { } -SomeComp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -SomeComp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: SomeComp, selector: "some-comp", inputs: { prop: "prop", otherProp: "otherProp" }, ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SomeComp, [{ - type: Component, - args: [{ selector: 'some-comp', template: '' }] - }], null, { prop: [{ - type: Input - }], otherProp: [{ - type: Input - }] }); })(); +SomeComp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +SomeComp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SomeComp, selector: "some-comp", inputs: { prop: "prop", otherProp: "otherProp" }, ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeComp, decorators: [{ + type: Component, + args: [{ selector: 'some-comp', template: '' }] + }], propDecorators: { prop: [{ + type: Input + }], otherProp: [{ + type: Input + }] } }); export class MyApp { } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "ng-component", ngImport: i0, template: '', isInline: true, components: [{ type: SomeComp, selector: "some-comp", inputs: ["prop", "otherProp"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ template: '' }] - }], null, null); })(); +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "ng-component", ngImport: i0, template: '', isInline: true, components: [{ type: SomeComp, selector: "some-comp", inputs: ["prop", "otherProp"] }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ template: '' }] + }] }); export class MyMod { } -MyMod.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyMod.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, declarations: [SomeComp, MyApp] }); -MyMod.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyMod, [{ - type: NgModule, - args: [{ declarations: [SomeComp, MyApp] }] - }], null, null); })(); +MyMod.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyMod.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, declarations: [SomeComp, MyApp] }); +MyMod.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, decorators: [{ + type: NgModule, + args: [{ declarations: [SomeComp, MyApp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: constant_object_literals.d.ts @@ -223,33 +224,33 @@ import { Component, Input, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class SomeComp { } -SomeComp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -SomeComp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: SomeComp, selector: "some-comp", inputs: { prop: "prop", otherProp: "otherProp" }, ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SomeComp, [{ - type: Component, - args: [{ selector: 'some-comp', template: '' }] - }], null, { prop: [{ - type: Input - }], otherProp: [{ - type: Input - }] }); })(); +SomeComp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +SomeComp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SomeComp, selector: "some-comp", inputs: { prop: "prop", otherProp: "otherProp" }, ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeComp, decorators: [{ + type: Component, + args: [{ selector: 'some-comp', template: '' }] + }], propDecorators: { prop: [{ + type: Input + }], otherProp: [{ + type: Input + }] } }); export class MyApp { } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "ng-component", ngImport: i0, template: '', isInline: true, components: [{ type: SomeComp, selector: "some-comp", inputs: ["prop", "otherProp"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ template: '' }] - }], null, null); })(); +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "ng-component", ngImport: i0, template: '', isInline: true, components: [{ type: SomeComp, selector: "some-comp", inputs: ["prop", "otherProp"] }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ template: '' }] + }] }); export class MyMod { } -MyMod.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyMod.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, declarations: [MyApp, SomeComp] }); -MyMod.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyMod, [{ - type: NgModule, - args: [{ declarations: [MyApp, SomeComp] }] - }], null, null); })(); +MyMod.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyMod.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, declarations: [MyApp, SomeComp] }); +MyMod.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, decorators: [{ + type: NgModule, + args: [{ declarations: [MyApp, SomeComp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: constant_array_literals.d.ts @@ -278,29 +279,29 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyApp { } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "ng-component", ngImport: i0, template: ` +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "ng-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyApp] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyApp] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyApp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: object_literals_null_vs_empty.d.ts @@ -323,29 +324,29 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyApp { } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "ng-component", ngImport: i0, template: ` +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "ng-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyApp] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyApp] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyApp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: array_literals_null_vs_empty.d.ts @@ -371,29 +372,29 @@ export class MyApp { return 'foo!'; } } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "ng-component", ngImport: i0, template: ` +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "ng-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyApp] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyApp] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyApp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: object_literals_null_vs_function.d.ts @@ -430,21 +431,21 @@ var Comp = /** @class */ (function () { } Comp_1 = Comp; var Comp_1; - Comp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Comp, deps: [], target: i0.ɵɵFactoryTarget.Component }); - Comp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: Comp, selector: "ng-component", providers: [{ provide: token, useExisting: Comp_1 }], ngImport: i0, template: '', isInline: true }); + Comp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Comp, deps: [], target: i0.ɵɵFactoryTarget.Component }); + Comp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: Comp, selector: "ng-component", providers: [{ provide: token, useExisting: Comp_1 }], ngImport: i0, template: '', isInline: true }); Comp = Comp_1 = __decorate([ Custom() ], Comp); return Comp; }()); export { Comp }; -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Comp, [{ - type: Component, - args: [{ - template: '', - providers: [{ provide: token, useExisting: Comp }], - }] - }], null, null); })(); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Comp, decorators: [{ + type: Component, + args: [{ + template: '', + providers: [{ provide: token, useExisting: Comp }], + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: custom_decorator_es5.d.ts @@ -463,21 +464,21 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-app", ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-app', template: '' }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-app", ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-app', template: '' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: ng_template_empty_binding.d.ts @@ -493,3 +494,129 @@ export declare class MyModule { static ɵinj: i0.ɵɵInjectorDeclaration; } +/**************************************************************************************************** + * PARTIAL FILE: non_literal_template.js + ****************************************************************************************************/ +import { Component } from '@angular/core'; +import * as i0 from "@angular/core"; +const myTemplate = `
Hello
`; +export class TestCmp { +} +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: "
Hello
", isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ selector: 'test-cmp', template: myTemplate }] + }] }); + +/**************************************************************************************************** + * PARTIAL FILE: non_literal_template.d.ts + ****************************************************************************************************/ +import * as i0 from "@angular/core"; +export declare class TestCmp { + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵcmp: i0.ɵɵComponentDeclaration; +} + +/**************************************************************************************************** + * PARTIAL FILE: non_literal_template_with_substitution.js + ****************************************************************************************************/ +import { Component } from '@angular/core'; +import * as i0 from "@angular/core"; +const greeting = 'Hello!'; +const myTemplate = `
${greeting}
`; +export class TestCmp { +} +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: "
Hello!
", isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ selector: 'test-cmp', template: myTemplate }] + }] }); + +/**************************************************************************************************** + * PARTIAL FILE: non_literal_template_with_substitution.d.ts + ****************************************************************************************************/ +import * as i0 from "@angular/core"; +export declare class TestCmp { + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵcmp: i0.ɵɵComponentDeclaration; +} + +/**************************************************************************************************** + * PARTIAL FILE: non_literal_template_with_concatenation.js + ****************************************************************************************************/ +import { Component } from '@angular/core'; +import * as i0 from "@angular/core"; +const greeting = 'Hello!'; +const myTemplate = '
' + greeting + '
'; +export class TestCmp { +} +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: "
Hello!
", isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ selector: 'test-cmp', template: myTemplate }] + }] }); + +/**************************************************************************************************** + * PARTIAL FILE: non_literal_template_with_concatenation.d.ts + ****************************************************************************************************/ +import * as i0 from "@angular/core"; +export declare class TestCmp { + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵcmp: i0.ɵɵComponentDeclaration; +} + +/**************************************************************************************************** + * PARTIAL FILE: library_exports.js + ****************************************************************************************************/ +// This test verifies that a directive from an external library is emitted using its declared name, +// even in the presence of alias exports that could have been chosen. +// See https://github.com/angular/angular/issues/41277. +import { Component, NgModule } from '@angular/core'; +import { LibModule } from 'external_library'; +import * as i0 from "@angular/core"; +import * as i1 from "external_library"; +export class TestComponent { +} +TestComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestComponent, selector: "ng-component", ngImport: i0, template: ` + + `, isInline: true, directives: [{ type: i1.LibDirective, selector: "lib-dir" }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestComponent, decorators: [{ + type: Component, + args: [{ + template: ` + + `, + }] + }] }); +export class TestModule { +} +TestModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +TestModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestModule, declarations: [TestComponent], imports: [LibModule] }); +TestModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestModule, imports: [[LibModule]] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestModule, decorators: [{ + type: NgModule, + args: [{ + declarations: [TestComponent], + imports: [LibModule], + }] + }] }); + +/**************************************************************************************************** + * PARTIAL FILE: library_exports.d.ts + ****************************************************************************************************/ +import * as i0 from "@angular/core"; +import * as i1 from "external_library"; +export declare class TestComponent { + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵcmp: i0.ɵɵComponentDeclaration; +} +export declare class TestModule { + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵinj: i0.ɵɵInjectorDeclaration; +} + diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/TEST_CASES.json b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/TEST_CASES.json index e21aaad044..168e866fce 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/TEST_CASES.json +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/TEST_CASES.json @@ -160,6 +160,45 @@ ] } ] + }, + { + "description": "should support inline non-literal templates", + "inputFiles": [ + "non_literal_template.ts" + ] + }, + { + "description": "should support inline non-literal templates using substitution", + "inputFiles": [ + "non_literal_template_with_substitution.ts" + ] + }, + { + "description": "should support inline non-literal templates using string concatenation", + "inputFiles": [ + "non_literal_template_with_concatenation.ts" + ] + }, + { + "description": "should not use reexport names inside declarations when a direct export is available", + "inputFiles": [ + "external_library.d.ts", + "library_exports.ts" + ], + "expectations": [ + { + "failureMessage": "Invalid list of directives", + "files": [ + "library_exports.js" + ] + } + ], + "compilerOptions": { + "baseUrl": ".", + "paths": { + "external_library": ["./external_library"] + } + } } ] } diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/content_projection/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/content_projection/GOLDEN_PARTIAL.js index c91a408c85..579f4011ee 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/content_projection/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/content_projection/GOLDEN_PARTIAL.js @@ -5,44 +5,44 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class SimpleComponent { } -SimpleComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SimpleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -SimpleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: SimpleComponent, selector: "simple", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SimpleComponent, [{ - type: Component, - args: [{ selector: 'simple', template: '
' }] - }], null, null); })(); +SimpleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SimpleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +SimpleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SimpleComponent, selector: "simple", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SimpleComponent, decorators: [{ + type: Component, + args: [{ selector: 'simple', template: '
' }] + }] }); export class ComplexComponent { } -ComplexComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ComplexComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -ComplexComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: ComplexComponent, selector: "complex", ngImport: i0, template: ` +ComplexComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ComplexComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +ComplexComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: ComplexComponent, selector: "complex", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ComplexComponent, [{ - type: Component, - args: [{ - selector: 'complex', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ComplexComponent, decorators: [{ + type: Component, + args: [{ + selector: 'complex', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyApp { } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: 'content ', isInline: true, components: [{ type: SimpleComponent, selector: "simple" }, { type: ComplexComponent, selector: "complex" }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ selector: 'my-app', template: 'content ' }] - }], null, null); })(); +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: 'content ', isInline: true, components: [{ type: SimpleComponent, selector: "simple" }, { type: ComplexComponent, selector: "complex" }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ selector: 'my-app', template: 'content ' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SimpleComponent, ComplexComponent, MyApp] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [SimpleComponent, ComplexComponent, MyApp] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SimpleComponent, ComplexComponent, MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [SimpleComponent, ComplexComponent, MyApp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: root_template.d.ts @@ -73,31 +73,31 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; class Cmp { } -Cmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Cmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -Cmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: Cmp, selector: "ng-component", ngImport: i0, template: ` +Cmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Cmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +Cmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: Cmp, selector: "ng-component", ngImport: i0, template: ` `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Cmp, [{ - type: Component, - args: [{ - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Cmp, decorators: [{ + type: Component, + args: [{ + template: ` `, - }] - }], null, null); })(); + }] + }] }); class Module { } -Module.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Module, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -Module.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Module, declarations: [Cmp] }); -Module.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Module }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Module, [{ - type: NgModule, - args: [{ declarations: [Cmp] }] - }], null, null); })(); +Module.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Module, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +Module.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Module, declarations: [Cmp] }); +Module.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Module }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Module, decorators: [{ + type: NgModule, + args: [{ declarations: [Cmp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: multiple_wildcards.d.ts @@ -111,8 +111,8 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; class Cmp { } -Cmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Cmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -Cmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: Cmp, selector: "ng-component", ngImport: i0, template: ` +Cmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Cmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +Cmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: Cmp, selector: "ng-component", ngImport: i0, template: `
@@ -123,10 +123,10 @@ Cmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: Cmp, '*' selector: `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Cmp, [{ - type: Component, - args: [{ - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Cmp, decorators: [{ + type: Component, + args: [{ + template: `
@@ -137,17 +137,17 @@ Cmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: Cmp, '*' selector: `, - }] - }], null, null); })(); + }] + }] }); class Module { } -Module.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Module, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -Module.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Module, declarations: [Cmp] }); -Module.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Module }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Module, [{ - type: NgModule, - args: [{ declarations: [Cmp] }] - }], null, null); })(); +Module.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Module, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +Module.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Module, declarations: [Cmp] }); +Module.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Module }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Module, decorators: [{ + type: NgModule, + args: [{ declarations: [Cmp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: nested_template.d.ts @@ -161,8 +161,8 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; class Cmp { } -Cmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Cmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -Cmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: Cmp, selector: "ng-component", ngImport: i0, template: ` +Cmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Cmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +Cmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: Cmp, selector: "ng-component", ngImport: i0, template: ` @@ -175,10 +175,10 @@ Cmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: Cmp, `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Cmp, [{ - type: Component, - args: [{ - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Cmp, decorators: [{ + type: Component, + args: [{ + template: ` @@ -191,17 +191,17 @@ Cmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: Cmp, `, - }] - }], null, null); })(); + }] + }] }); class Module { } -Module.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Module, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -Module.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Module, declarations: [Cmp] }); -Module.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Module }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Module, [{ - type: NgModule, - args: [{ declarations: [Cmp] }] - }], null, null); })(); +Module.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Module, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +Module.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Module, declarations: [Cmp] }); +Module.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Module }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Module, decorators: [{ + type: NgModule, + args: [{ declarations: [Cmp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: root_and_nested.d.ts @@ -215,29 +215,29 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class SimpleComponent { } -SimpleComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SimpleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -SimpleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: SimpleComponent, selector: "simple", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SimpleComponent, [{ - type: Component, - args: [{ selector: 'simple', template: '
' }] - }], null, null); })(); +SimpleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SimpleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +SimpleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SimpleComponent, selector: "simple", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SimpleComponent, decorators: [{ + type: Component, + args: [{ selector: 'simple', template: '
' }] + }] }); export class MyApp { } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: '

', isInline: true, components: [{ type: SimpleComponent, selector: "simple" }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ selector: 'my-app', template: '

' }] - }], null, null); })(); +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: '

', isInline: true, components: [{ type: SimpleComponent, selector: "simple" }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ selector: 'my-app', template: '

' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyApp, SimpleComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyApp, SimpleComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyApp, SimpleComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyApp, SimpleComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: ng_project_as_selector.d.ts @@ -264,29 +264,29 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class SimpleComponent { } -SimpleComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SimpleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -SimpleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: SimpleComponent, selector: "simple", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SimpleComponent, [{ - type: Component, - args: [{ selector: 'simple', template: '
' }] - }], null, null); })(); +SimpleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SimpleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +SimpleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SimpleComponent, selector: "simple", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SimpleComponent, decorators: [{ + type: Component, + args: [{ selector: 'simple', template: '
' }] + }] }); export class MyApp { } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: '

', isInline: true, components: [{ type: SimpleComponent, selector: "simple" }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ selector: 'my-app', template: '

' }] - }], null, null); })(); +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: '

', isInline: true, components: [{ type: SimpleComponent, selector: "simple" }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ selector: 'my-app', template: '

' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SimpleComponent, MyApp] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [SimpleComponent, MyApp] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SimpleComponent, MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [SimpleComponent, MyApp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: ng_project_as_compound_selector.d.ts @@ -316,12 +316,12 @@ export class MyApp { this.show = true; } } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ selector: 'my-app', template: '
' }] - }], null, null); })(); +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ selector: 'my-app', template: '
' }] + }] }); /**************************************************************************************************** * PARTIAL FILE: ng_project_as_attribute.d.ts @@ -340,12 +340,12 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class SimpleComponent { } -SimpleComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SimpleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -SimpleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: SimpleComponent, selector: "simple", ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SimpleComponent, [{ - type: Component, - args: [{ selector: 'simple', template: '' }] - }], null, null); })(); +SimpleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SimpleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +SimpleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SimpleComponent, selector: "simple", ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SimpleComponent, decorators: [{ + type: Component, + args: [{ selector: 'simple', template: '' }] + }] }); /**************************************************************************************************** * PARTIAL FILE: ng_content_with_structural_dir.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/external_library.d.ts b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/external_library.d.ts new file mode 100644 index 0000000000..dc662e9081 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/external_library.d.ts @@ -0,0 +1,16 @@ +import * as ɵngcc0 from '@angular/core'; + +declare class LibDirective { + static ɵfac: ɵngcc0.ɵɵFactoryDeclaration; + static ɵdir: ɵngcc0.ɵɵDirectiveDeclaration; +} + +export declare class LibModule { + static ɵfac: ɵngcc0.ɵɵFactoryDeclaration; + static ɵmod: ɵngcc0.ɵɵNgModuleDeclaration; + static ɵinj: ɵngcc0.ɵɵInjectorDeclaration; +} + +export {LibDirective as ɵangular_packages_forms_forms_a} +export {LibDirective} +export {LibDirective as ɵangular_packages_forms_forms_b} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/forward_referenced_pipe.ts b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/forward_referenced_pipe.ts index aa1a1a8b76..c127944498 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/forward_referenced_pipe.ts +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/forward_referenced_pipe.ts @@ -11,6 +11,7 @@ export class HostBindingComp { @Pipe({name: 'my_forward_pipe'}) class MyForwardPipe { + transform() {} } @NgModule({declarations: [HostBindingComp, MyForwardPipe]}) diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/library_exports.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/library_exports.js new file mode 100644 index 0000000000..91fa9baf35 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/library_exports.js @@ -0,0 +1,3 @@ +// NOTE: The declared name must have been used to refer to `LibDirective`, as the aliased exports +// NOTE: are not stable and therefore not suitable for partial compilation outputs. +directives: [$i0$.LibDirective] diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/library_exports.ts b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/library_exports.ts new file mode 100644 index 0000000000..4f643ab12a --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/library_exports.ts @@ -0,0 +1,20 @@ +// This test verifies that a directive from an external library is emitted using its declared name, +// even in the presence of alias exports that could have been chosen. +// See https://github.com/angular/angular/issues/41277. +import {Component, NgModule} from '@angular/core'; +import {LibModule} from 'external_library'; + +@Component({ + template: ` + + `, +}) +export class TestComponent { +} + +@NgModule({ + declarations: [TestComponent], + imports: [LibModule], +}) +export class TestModule { +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/lifecycle_hooks/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/lifecycle_hooks/GOLDEN_PARTIAL.js index f57ec5ffbb..aa7c4dac22 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/lifecycle_hooks/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/lifecycle_hooks/GOLDEN_PARTIAL.js @@ -5,21 +5,21 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: 'Hello {{user.value}}!', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: 'Hello {{user.value}}!' }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: 'Hello {{user.value}}!', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: 'Hello {{user.value}}!' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: local_reference.d.ts @@ -43,16 +43,16 @@ import * as i0 from "@angular/core"; export class IfDirective { constructor(template) { } } -IfDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: IfDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); -IfDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: IfDirective, selector: "[if]", ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IfDirective, [{ - type: Directive, - args: [{ selector: '[if]' }] - }], function () { return [{ type: i0.TemplateRef }]; }, null); })(); +IfDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: IfDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); +IfDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: IfDirective, selector: "[if]", ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: IfDirective, decorators: [{ + type: Directive, + args: [{ selector: '[if]' }] + }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } }); export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
{{foo}}
@@ -62,11 +62,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, isInline: true, directives: [{ type: IfDirective, selector: "[if]" }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
{{foo}}
@@ -76,17 +76,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [IfDirective, MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [IfDirective, MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [IfDirective, MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [IfDirective, MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: local_reference_nested.d.ts @@ -115,36 +115,36 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
{{ foo }} - {{ item }}
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
{{ foo }} - {{ item }}
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: local_reference_and_context_variables.d.ts @@ -192,45 +192,45 @@ export class LifecycleComp { events.push(this.nameMin); } } -LifecycleComp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: LifecycleComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -LifecycleComp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: LifecycleComp, selector: "lifecycle-comp", inputs: { nameMin: ["name", "nameMin"] }, usesOnChanges: true, ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LifecycleComp, [{ - type: Component, - args: [{ selector: 'lifecycle-comp', template: '' }] - }], null, { nameMin: [{ - type: Input, - args: ['name'] - }] }); })(); +LifecycleComp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: LifecycleComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +LifecycleComp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: LifecycleComp, selector: "lifecycle-comp", inputs: { nameMin: ["name", "nameMin"] }, usesOnChanges: true, ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: LifecycleComp, decorators: [{ + type: Component, + args: [{ selector: 'lifecycle-comp', template: '' }] + }], propDecorators: { nameMin: [{ + type: Input, + args: ['name'] + }] } }); export class SimpleLayout { constructor() { this.name1 = '1'; this.name2 = '2'; } } -SimpleLayout.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SimpleLayout, deps: [], target: i0.ɵɵFactoryTarget.Component }); -SimpleLayout.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: SimpleLayout, selector: "simple-layout", ngImport: i0, template: ` +SimpleLayout.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SimpleLayout, deps: [], target: i0.ɵɵFactoryTarget.Component }); +SimpleLayout.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SimpleLayout, selector: "simple-layout", ngImport: i0, template: ` `, isInline: true, components: [{ type: LifecycleComp, selector: "lifecycle-comp", inputs: ["name"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SimpleLayout, [{ - type: Component, - args: [{ - selector: 'simple-layout', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SimpleLayout, decorators: [{ + type: Component, + args: [{ + selector: 'simple-layout', + template: ` ` - }] - }], null, null); })(); + }] + }] }); export class LifecycleModule { } -LifecycleModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: LifecycleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -LifecycleModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: LifecycleModule, declarations: [LifecycleComp, SimpleLayout] }); -LifecycleModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: LifecycleModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LifecycleModule, [{ - type: NgModule, - args: [{ declarations: [LifecycleComp, SimpleLayout] }] - }], null, null); })(); +LifecycleModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: LifecycleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +LifecycleModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: LifecycleModule, declarations: [LifecycleComp, SimpleLayout] }); +LifecycleModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: LifecycleModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: LifecycleModule, decorators: [{ + type: NgModule, + args: [{ declarations: [LifecycleComp, SimpleLayout] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: lifecycle_hooks.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/non_literal_template.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/non_literal_template.js new file mode 100644 index 0000000000..57cc135d9f --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/non_literal_template.js @@ -0,0 +1,7 @@ +function TestCmp_div_0_Template(rf, ctx) { + if (rf & 1) { + i0.ɵɵelementStart(0, "div"); + i0.ɵɵtext(1, "Hello"); + i0.ɵɵelementEnd(); + } +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/non_literal_template.ts b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/non_literal_template.ts new file mode 100644 index 0000000000..57334f6368 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/non_literal_template.ts @@ -0,0 +1,7 @@ +import {Component} from '@angular/core'; + +const myTemplate = `
Hello
`; + +@Component({selector: 'test-cmp', template: myTemplate}) +export class TestCmp { +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/non_literal_template_with_concatenation.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/non_literal_template_with_concatenation.js new file mode 100644 index 0000000000..196bbb7f13 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/non_literal_template_with_concatenation.js @@ -0,0 +1,7 @@ +function TestCmp_div_0_Template(rf, ctx) { + if (rf & 1) { + i0.ɵɵelementStart(0, "div"); + i0.ɵɵtext(1, "Hello!"); + i0.ɵɵelementEnd(); + } +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/non_literal_template_with_concatenation.ts b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/non_literal_template_with_concatenation.ts new file mode 100644 index 0000000000..8ab665d5cf --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/non_literal_template_with_concatenation.ts @@ -0,0 +1,8 @@ +import {Component} from '@angular/core'; + +const greeting = 'Hello!'; +const myTemplate = '
' + greeting + '
'; + +@Component({selector: 'test-cmp', template: myTemplate}) +export class TestCmp { +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/non_literal_template_with_substitution.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/non_literal_template_with_substitution.js new file mode 100644 index 0000000000..196bbb7f13 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/non_literal_template_with_substitution.js @@ -0,0 +1,7 @@ +function TestCmp_div_0_Template(rf, ctx) { + if (rf & 1) { + i0.ɵɵelementStart(0, "div"); + i0.ɵɵtext(1, "Hello!"); + i0.ɵɵelementEnd(); + } +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/non_literal_template_with_substitution.ts b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/non_literal_template_with_substitution.ts new file mode 100644 index 0000000000..39095dc13c --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/non_literal_template_with_substitution.ts @@ -0,0 +1,8 @@ +import {Component} from '@angular/core'; + +const greeting = 'Hello!'; +const myTemplate = `
${greeting}
`; + +@Component({selector: 'test-cmp', template: myTemplate}) +export class TestCmp { +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/pipes/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/pipes/GOLDEN_PARTIAL.js index 46909d4709..d24cf99b0e 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/pipes/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/pipes/GOLDEN_PARTIAL.js @@ -9,50 +9,50 @@ export class MyPipe { } ngOnDestroy() { } } -MyPipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -MyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPipe, name: "myPipe", pure: false }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyPipe, [{ - type: Pipe, - args: [{ name: 'myPipe', pure: false }] - }], null, null); })(); +MyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +MyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPipe, name: "myPipe", pure: false }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPipe, decorators: [{ + type: Pipe, + args: [{ name: 'myPipe', pure: false }] + }] }); export class MyPurePipe { transform(value, ...args) { return value; } } -MyPurePipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPurePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -MyPurePipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPurePipe, name: "myPurePipe" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyPurePipe, [{ - type: Pipe, - args: [{ - name: 'myPurePipe', - pure: true, - }] - }], null, null); })(); +MyPurePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPurePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +MyPurePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPurePipe, name: "myPurePipe" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPurePipe, decorators: [{ + type: Pipe, + args: [{ + name: 'myPurePipe', + pure: true, + }] + }] }); export class MyApp { constructor() { this.name = 'World'; this.size = 0; } } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: '{{name | myPipe:size | myPurePipe:size }}

{{ name | myPipe:1:2:3:4:5 }} {{ name ? 1 : 2 | myPipe }}

', isInline: true, pipes: { "myPurePipe": MyPurePipe, "myPipe": MyPipe } }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ - selector: 'my-app', - template: '{{name | myPipe:size | myPurePipe:size }}

{{ name | myPipe:1:2:3:4:5 }} {{ name ? 1 : 2 | myPipe }}

' - }] - }], null, null); })(); +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: '{{name | myPipe:size | myPurePipe:size }}

{{ name | myPipe:1:2:3:4:5 }} {{ name ? 1 : 2 | myPipe }}

', isInline: true, pipes: { "myPurePipe": MyPurePipe, "myPipe": MyPipe } }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + template: '{{name | myPipe:size | myPurePipe:size }}

{{ name | myPipe:1:2:3:4:5 }} {{ name ? 1 : 2 | myPipe }}

' + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyPipe, MyPurePipe, MyApp] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyPipe, MyPurePipe, MyApp] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyPipe, MyPurePipe, MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyPipe, MyPurePipe, MyApp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: pipes.d.ts @@ -93,35 +93,35 @@ export class MyPipe { } ngOnDestroy() { } } -MyPipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -MyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPipe, name: "myPipe", pure: false }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyPipe, [{ - type: Pipe, - args: [{ name: 'myPipe', pure: false }] - }], null, null); })(); +MyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +MyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPipe, name: "myPipe", pure: false }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPipe, decorators: [{ + type: Pipe, + args: [{ name: 'myPipe', pure: false }] + }] }); export class MyApp { constructor() { this.name = ''; } } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: '0:{{name | myPipe}}1:{{name | myPipe:1}}2:{{name | myPipe:1:2}}3:{{name | myPipe:1:2:3}}4:{{name | myPipe:1:2:3:4}}', isInline: true, pipes: { "myPipe": MyPipe } }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ - selector: 'my-app', - template: '0:{{name | myPipe}}1:{{name | myPipe:1}}2:{{name | myPipe:1:2}}3:{{name | myPipe:1:2:3}}4:{{name | myPipe:1:2:3:4}}' - }] - }], null, null); })(); +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: '0:{{name | myPipe}}1:{{name | myPipe:1}}2:{{name | myPipe:1:2}}3:{{name | myPipe:1:2:3}}4:{{name | myPipe:1:2:3:4}}', isInline: true, pipes: { "myPipe": MyPipe } }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + template: '0:{{name | myPipe}}1:{{name | myPipe:1}}2:{{name | myPipe:1:2}}3:{{name | myPipe:1:2:3}}4:{{name | myPipe:1:2:3:4}}' + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyPipe, MyApp] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyPipe, MyApp] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyPipe, MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyPipe, MyApp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: pipe_invocation.d.ts @@ -156,46 +156,46 @@ export class MyPipe { return value; } } -MyPipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe }); -MyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPipe, name: "myPipe" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyPipe, [{ - type: Pipe, - args: [{ name: 'myPipe' }] - }], function () { return [{ type: i0.ChangeDetectorRef }]; }, null); })(); +MyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe }); +MyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPipe, name: "myPipe" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPipe, decorators: [{ + type: Pipe, + args: [{ name: 'myPipe' }] + }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; } }); export class MyOtherPipe { constructor(changeDetectorRef) { } transform(value, ...args) { return value; } } -MyOtherPipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyOtherPipe, deps: [{ token: i0.ChangeDetectorRef, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); -MyOtherPipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyOtherPipe, name: "myOtherPipe" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyOtherPipe, [{ - type: Pipe, - args: [{ name: 'myOtherPipe' }] - }], function () { return [{ type: i0.ChangeDetectorRef, decorators: [{ - type: Optional - }] }]; }, null); })(); +MyOtherPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyOtherPipe, deps: [{ token: i0.ChangeDetectorRef, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); +MyOtherPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyOtherPipe, name: "myOtherPipe" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyOtherPipe, decorators: [{ + type: Pipe, + args: [{ name: 'myOtherPipe' }] + }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef, decorators: [{ + type: Optional + }] }]; } }); export class MyApp { constructor() { this.name = 'World'; } } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: '{{name | myPipe }}

{{ name | myOtherPipe }}

', isInline: true, pipes: { "myPipe": MyPipe, "myOtherPipe": MyOtherPipe } }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ selector: 'my-app', template: '{{name | myPipe }}

{{ name | myOtherPipe }}

' }] - }], null, null); })(); +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: '{{name | myPipe }}

{{ name | myOtherPipe }}

', isInline: true, pipes: { "myPipe": MyPipe, "myOtherPipe": MyOtherPipe } }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ selector: 'my-app', template: '{{name | myPipe }}

{{ name | myOtherPipe }}

' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyPipe, MyOtherPipe, MyApp] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyPipe, MyOtherPipe, MyApp] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyPipe, MyOtherPipe, MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyPipe, MyOtherPipe, MyApp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: pipe_di_change_detector_ref.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/queries/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/queries/GOLDEN_PARTIAL.js index 12bd9fb607..7343f20be7 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/queries/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/queries/GOLDEN_PARTIAL.js @@ -5,14 +5,14 @@ import { Directive } from '@angular/core'; import * as i0 from "@angular/core"; export class SomeDirective { } -SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[someDir]", ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SomeDirective, [{ - type: Directive, - args: [{ - selector: '[someDir]', - }] - }], null, null); })(); +SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[someDir]", ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, decorators: [{ + type: Directive, + args: [{ + selector: '[someDir]', + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: some.directive.d.ts @@ -31,34 +31,34 @@ import { SomeDirective } from './some.directive'; import * as i0 from "@angular/core"; export class ViewQueryComponent { } -ViewQueryComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ViewQueryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -ViewQueryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: ViewQueryComponent, selector: "view-query-component", viewQueries: [{ propertyName: "someDir", first: true, predicate: SomeDirective, descendants: true }, { propertyName: "someDirs", predicate: SomeDirective, descendants: true }], ngImport: i0, template: ` +ViewQueryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ViewQueryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +ViewQueryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: ViewQueryComponent, selector: "view-query-component", viewQueries: [{ propertyName: "someDir", first: true, predicate: SomeDirective, descendants: true }, { propertyName: "someDirs", predicate: SomeDirective, descendants: true }], ngImport: i0, template: `
`, isInline: true, directives: [{ type: i0.forwardRef(function () { return SomeDirective; }), selector: "[someDir]" }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ViewQueryComponent, [{ - type: Component, - args: [{ - selector: 'view-query-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ViewQueryComponent, decorators: [{ + type: Component, + args: [{ + selector: 'view-query-component', + template: `
` - }] - }], null, { someDir: [{ - type: ViewChild, - args: [SomeDirective] - }], someDirs: [{ - type: ViewChildren, - args: [SomeDirective] - }] }); })(); + }] + }], propDecorators: { someDir: [{ + type: ViewChild, + args: [SomeDirective] + }], someDirs: [{ + type: ViewChildren, + args: [SomeDirective] + }] } }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SomeDirective, ViewQueryComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [SomeDirective, ViewQueryComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SomeDirective, ViewQueryComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [SomeDirective, ViewQueryComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: view_query_for_directive.d.ts @@ -86,36 +86,36 @@ import { Component, NgModule, ViewChild, ViewChildren } from '@angular/core'; import * as i0 from "@angular/core"; export class ViewQueryComponent { } -ViewQueryComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ViewQueryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -ViewQueryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: ViewQueryComponent, selector: "view-query-component", viewQueries: [{ propertyName: "myRef", first: true, predicate: ["myRef"], descendants: true }, { propertyName: "myRefs", predicate: ["myRef1, myRef2, myRef3"], descendants: true }], ngImport: i0, template: ` +ViewQueryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ViewQueryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +ViewQueryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: ViewQueryComponent, selector: "view-query-component", viewQueries: [{ propertyName: "myRef", first: true, predicate: ["myRef"], descendants: true }, { propertyName: "myRefs", predicate: ["myRef1, myRef2, myRef3"], descendants: true }], ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ViewQueryComponent, [{ - type: Component, - args: [{ - selector: 'view-query-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ViewQueryComponent, decorators: [{ + type: Component, + args: [{ + selector: 'view-query-component', + template: `
` - }] - }], null, { myRef: [{ - type: ViewChild, - args: ['myRef'] - }], myRefs: [{ - type: ViewChildren, - args: ['myRef1, myRef2, myRef3'] - }] }); })(); + }] + }], propDecorators: { myRef: [{ + type: ViewChild, + args: ['myRef'] + }], myRefs: [{ + type: ViewChildren, + args: ['myRef1, myRef2, myRef3'] + }] } }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [ViewQueryComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [ViewQueryComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [ViewQueryComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [ViewQueryComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: view_query_for_local_ref.d.ts @@ -141,14 +141,14 @@ import { Directive } from '@angular/core'; import * as i0 from "@angular/core"; export class SomeDirective { } -SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[someDir]", ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SomeDirective, [{ - type: Directive, - args: [{ - selector: '[someDir]', - }] - }], null, null); })(); +SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[someDir]", ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, decorators: [{ + type: Directive, + args: [{ + selector: '[someDir]', + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: some.directive.d.ts @@ -167,34 +167,34 @@ import { SomeDirective } from './some.directive'; import * as i0 from "@angular/core"; export class ViewQueryComponent { } -ViewQueryComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ViewQueryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -ViewQueryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: ViewQueryComponent, selector: "view-query-component", viewQueries: [{ propertyName: "someDir", first: true, predicate: SomeDirective, descendants: true, static: true }, { propertyName: "foo", first: true, predicate: ["foo"], descendants: true }], ngImport: i0, template: ` +ViewQueryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ViewQueryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +ViewQueryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: ViewQueryComponent, selector: "view-query-component", viewQueries: [{ propertyName: "someDir", first: true, predicate: SomeDirective, descendants: true, static: true }, { propertyName: "foo", first: true, predicate: ["foo"], descendants: true }], ngImport: i0, template: `
`, isInline: true, directives: [{ type: i0.forwardRef(function () { return SomeDirective; }), selector: "[someDir]" }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ViewQueryComponent, [{ - type: Component, - args: [{ - selector: 'view-query-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ViewQueryComponent, decorators: [{ + type: Component, + args: [{ + selector: 'view-query-component', + template: `
` - }] - }], null, { someDir: [{ - type: ViewChild, - args: [SomeDirective, { static: true }] - }], foo: [{ - type: ViewChild, - args: ['foo'] - }] }); })(); + }] + }], propDecorators: { someDir: [{ + type: ViewChild, + args: [SomeDirective, { static: true }] + }], foo: [{ + type: ViewChild, + args: ['foo'] + }] } }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SomeDirective, ViewQueryComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [SomeDirective, ViewQueryComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SomeDirective, ViewQueryComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [SomeDirective, ViewQueryComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: static_view_query.d.ts @@ -222,14 +222,14 @@ import { Directive } from '@angular/core'; import * as i0 from "@angular/core"; export class SomeDirective { } -SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[someDir]", ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SomeDirective, [{ - type: Directive, - args: [{ - selector: '[someDir]', - }] - }], null, null); })(); +SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[someDir]", ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, decorators: [{ + type: Directive, + args: [{ + selector: '[someDir]', + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: some.directive.d.ts @@ -248,44 +248,44 @@ import { SomeDirective } from './some.directive'; import * as i0 from "@angular/core"; export class ViewQueryComponent { } -ViewQueryComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ViewQueryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -ViewQueryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: ViewQueryComponent, selector: "view-query-component", viewQueries: [{ propertyName: "myRef", first: true, predicate: ["myRef"], descendants: true, read: TemplateRef }, { propertyName: "someDir", first: true, predicate: SomeDirective, descendants: true, read: ElementRef }, { propertyName: "myRefs", predicate: ["myRef1, myRef2, myRef3"], descendants: true, read: ElementRef }, { propertyName: "someDirs", predicate: SomeDirective, descendants: true, read: TemplateRef }], ngImport: i0, template: ` +ViewQueryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ViewQueryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +ViewQueryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: ViewQueryComponent, selector: "view-query-component", viewQueries: [{ propertyName: "myRef", first: true, predicate: ["myRef"], descendants: true, read: TemplateRef }, { propertyName: "someDir", first: true, predicate: SomeDirective, descendants: true, read: ElementRef }, { propertyName: "myRefs", predicate: ["myRef1, myRef2, myRef3"], descendants: true, read: ElementRef }, { propertyName: "someDirs", predicate: SomeDirective, descendants: true, read: TemplateRef }], ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ViewQueryComponent, [{ - type: Component, - args: [{ - selector: 'view-query-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ViewQueryComponent, decorators: [{ + type: Component, + args: [{ + selector: 'view-query-component', + template: `
` - }] - }], null, { myRef: [{ - type: ViewChild, - args: ['myRef', { read: TemplateRef }] - }], myRefs: [{ - type: ViewChildren, - args: ['myRef1, myRef2, myRef3', { read: ElementRef }] - }], someDir: [{ - type: ViewChild, - args: [SomeDirective, { read: ElementRef }] - }], someDirs: [{ - type: ViewChildren, - args: [SomeDirective, { read: TemplateRef }] - }] }); })(); + }] + }], propDecorators: { myRef: [{ + type: ViewChild, + args: ['myRef', { read: TemplateRef }] + }], myRefs: [{ + type: ViewChildren, + args: ['myRef1, myRef2, myRef3', { read: ElementRef }] + }], someDir: [{ + type: ViewChild, + args: [SomeDirective, { read: ElementRef }] + }], someDirs: [{ + type: ViewChildren, + args: [SomeDirective, { read: TemplateRef }] + }] } }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [ViewQueryComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [ViewQueryComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [ViewQueryComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [ViewQueryComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: view_query_read_token.d.ts @@ -313,14 +313,14 @@ import { Directive } from '@angular/core'; import * as i0 from "@angular/core"; export class SomeDirective { } -SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[someDir]", ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SomeDirective, [{ - type: Directive, - args: [{ - selector: '[someDir]', - }] - }], null, null); })(); +SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[someDir]", ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, decorators: [{ + type: Directive, + args: [{ + selector: '[someDir]', + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: some.directive.d.ts @@ -339,53 +339,53 @@ import { SomeDirective } from './some.directive'; import * as i0 from "@angular/core"; export class ContentQueryComponent { } -ContentQueryComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ContentQueryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -ContentQueryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: ContentQueryComponent, selector: "content-query-component", queries: [{ propertyName: "someDir", first: true, predicate: SomeDirective, descendants: true }, { propertyName: "someDirList", predicate: SomeDirective }], ngImport: i0, template: ` +ContentQueryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ContentQueryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +ContentQueryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: ContentQueryComponent, selector: "content-query-component", queries: [{ propertyName: "someDir", first: true, predicate: SomeDirective, descendants: true }, { propertyName: "someDirList", predicate: SomeDirective }], ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ContentQueryComponent, [{ - type: Component, - args: [{ - selector: 'content-query-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ContentQueryComponent, decorators: [{ + type: Component, + args: [{ + selector: 'content-query-component', + template: `
` - }] - }], null, { someDir: [{ - type: ContentChild, - args: [SomeDirective] - }], someDirList: [{ - type: ContentChildren, - args: [SomeDirective] - }] }); })(); + }] + }], propDecorators: { someDir: [{ + type: ContentChild, + args: [SomeDirective] + }], someDirList: [{ + type: ContentChildren, + args: [SomeDirective] + }] } }); export class MyApp { } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: ` +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: `
`, isInline: true, components: [{ type: i0.forwardRef(function () { return ContentQueryComponent; }), selector: "content-query-component" }], directives: [{ type: i0.forwardRef(function () { return SomeDirective; }), selector: "[someDir]" }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ - selector: 'my-app', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SomeDirective, ContentQueryComponent, MyApp] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [SomeDirective, ContentQueryComponent, MyApp] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SomeDirective, ContentQueryComponent, MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [SomeDirective, ContentQueryComponent, MyApp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: content_query_for_directive.d.ts @@ -417,36 +417,36 @@ import { Component, ContentChild, ContentChildren, NgModule } from '@angular/cor import * as i0 from "@angular/core"; export class ContentQueryComponent { } -ContentQueryComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ContentQueryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -ContentQueryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: ContentQueryComponent, selector: "content-query-component", queries: [{ propertyName: "myRef", first: true, predicate: ["myRef"], descendants: true }, { propertyName: "myRefs", predicate: ["myRef1, myRef2, myRef3"] }], ngImport: i0, template: ` +ContentQueryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ContentQueryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +ContentQueryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: ContentQueryComponent, selector: "content-query-component", queries: [{ propertyName: "myRef", first: true, predicate: ["myRef"], descendants: true }, { propertyName: "myRefs", predicate: ["myRef1, myRef2, myRef3"] }], ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ContentQueryComponent, [{ - type: Component, - args: [{ - selector: 'content-query-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ContentQueryComponent, decorators: [{ + type: Component, + args: [{ + selector: 'content-query-component', + template: `
` - }] - }], null, { myRef: [{ - type: ContentChild, - args: ['myRef'] - }], myRefs: [{ - type: ContentChildren, - args: ['myRef1, myRef2, myRef3'] - }] }); })(); + }] + }], propDecorators: { myRef: [{ + type: ContentChild, + args: ['myRef'] + }], myRefs: [{ + type: ContentChildren, + args: ['myRef1, myRef2, myRef3'] + }] } }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [ContentQueryComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [ContentQueryComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [ContentQueryComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [ContentQueryComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: content_query_for_local_ref.d.ts @@ -472,14 +472,14 @@ import { Directive } from '@angular/core'; import * as i0 from "@angular/core"; export class SomeDirective { } -SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[someDir]", ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SomeDirective, [{ - type: Directive, - args: [{ - selector: '[someDir]', - }] - }], null, null); })(); +SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[someDir]", ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, decorators: [{ + type: Directive, + args: [{ + selector: '[someDir]', + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: some.directive.d.ts @@ -498,53 +498,53 @@ import { SomeDirective } from './some.directive'; import * as i0 from "@angular/core"; export class ContentQueryComponent { } -ContentQueryComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ContentQueryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -ContentQueryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: ContentQueryComponent, selector: "content-query-component", queries: [{ propertyName: "someDir", first: true, predicate: SomeDirective, descendants: true, static: true }, { propertyName: "foo", first: true, predicate: ["foo"], descendants: true }], ngImport: i0, template: ` +ContentQueryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ContentQueryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +ContentQueryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: ContentQueryComponent, selector: "content-query-component", queries: [{ propertyName: "someDir", first: true, predicate: SomeDirective, descendants: true, static: true }, { propertyName: "foo", first: true, predicate: ["foo"], descendants: true }], ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ContentQueryComponent, [{ - type: Component, - args: [{ - selector: 'content-query-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ContentQueryComponent, decorators: [{ + type: Component, + args: [{ + selector: 'content-query-component', + template: `
` - }] - }], null, { someDir: [{ - type: ContentChild, - args: [SomeDirective, { static: true }] - }], foo: [{ - type: ContentChild, - args: ['foo'] - }] }); })(); + }] + }], propDecorators: { someDir: [{ + type: ContentChild, + args: [SomeDirective, { static: true }] + }], foo: [{ + type: ContentChild, + args: ['foo'] + }] } }); export class MyApp { } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: ` +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: `
`, isInline: true, components: [{ type: i0.forwardRef(function () { return ContentQueryComponent; }), selector: "content-query-component" }], directives: [{ type: i0.forwardRef(function () { return SomeDirective; }), selector: "[someDir]" }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ - selector: 'my-app', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SomeDirective, ContentQueryComponent, MyApp] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [SomeDirective, ContentQueryComponent, MyApp] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SomeDirective, ContentQueryComponent, MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [SomeDirective, ContentQueryComponent, MyApp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: static_content_query.d.ts @@ -576,14 +576,14 @@ import { Directive } from '@angular/core'; import * as i0 from "@angular/core"; export class SomeDirective { } -SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[someDir]", ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SomeDirective, [{ - type: Directive, - args: [{ - selector: '[someDir]', - }] - }], null, null); })(); +SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[someDir]", ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, decorators: [{ + type: Directive, + args: [{ + selector: '[someDir]', + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: some.directive.d.ts @@ -602,44 +602,44 @@ import { SomeDirective } from './some.directive'; import * as i0 from "@angular/core"; export class ContentQueryComponent { } -ContentQueryComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ContentQueryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -ContentQueryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: ContentQueryComponent, selector: "content-query-component", queries: [{ propertyName: "myRef", first: true, predicate: ["myRef"], descendants: true, read: TemplateRef }, { propertyName: "someDir", first: true, predicate: SomeDirective, descendants: true, read: ElementRef }, { propertyName: "myRefs", predicate: ["myRef1, myRef2, myRef3"], read: ElementRef }, { propertyName: "someDirs", predicate: SomeDirective, read: TemplateRef }], ngImport: i0, template: ` +ContentQueryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ContentQueryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +ContentQueryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: ContentQueryComponent, selector: "content-query-component", queries: [{ propertyName: "myRef", first: true, predicate: ["myRef"], descendants: true, read: TemplateRef }, { propertyName: "someDir", first: true, predicate: SomeDirective, descendants: true, read: ElementRef }, { propertyName: "myRefs", predicate: ["myRef1, myRef2, myRef3"], read: ElementRef }, { propertyName: "someDirs", predicate: SomeDirective, read: TemplateRef }], ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ContentQueryComponent, [{ - type: Component, - args: [{ - selector: 'content-query-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ContentQueryComponent, decorators: [{ + type: Component, + args: [{ + selector: 'content-query-component', + template: `
` - }] - }], null, { myRef: [{ - type: ContentChild, - args: ['myRef', { read: TemplateRef }] - }], myRefs: [{ - type: ContentChildren, - args: ['myRef1, myRef2, myRef3', { read: ElementRef }] - }], someDir: [{ - type: ContentChild, - args: [SomeDirective, { read: ElementRef }] - }], someDirs: [{ - type: ContentChildren, - args: [SomeDirective, { read: TemplateRef }] - }] }); })(); + }] + }], propDecorators: { myRef: [{ + type: ContentChild, + args: ['myRef', { read: TemplateRef }] + }], myRefs: [{ + type: ContentChildren, + args: ['myRef1, myRef2, myRef3', { read: ElementRef }] + }], someDir: [{ + type: ContentChild, + args: [SomeDirective, { read: ElementRef }] + }], someDirs: [{ + type: ContentChildren, + args: [SomeDirective, { read: TemplateRef }] + }] } }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [ContentQueryComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [ContentQueryComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [ContentQueryComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [ContentQueryComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: content_query_read_token.d.ts @@ -667,14 +667,14 @@ import { Directive } from '@angular/core'; import * as i0 from "@angular/core"; export class SomeDirective { } -SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[someDir]", ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SomeDirective, [{ - type: Directive, - args: [{ - selector: '[someDir]', - }] - }], null, null); })(); +SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[someDir]", ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, decorators: [{ + type: Directive, + args: [{ + selector: '[someDir]', + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: some.directive.d.ts @@ -693,42 +693,42 @@ import { SomeDirective } from './some.directive'; import * as i0 from "@angular/core"; export class ContentQueryComponent { } -ContentQueryComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ContentQueryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -ContentQueryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: ContentQueryComponent, selector: "content-query-component", queries: [{ propertyName: "myRefs", predicate: ["myRef"] }, { propertyName: "oldMyRefs", predicate: ["myRef"], emitDistinctChangesOnly: false }], viewQueries: [{ propertyName: "someDirs", predicate: SomeDirective, descendants: true }, { propertyName: "oldSomeDirs", predicate: SomeDirective, emitDistinctChangesOnly: false, descendants: true }], ngImport: i0, template: ` +ContentQueryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ContentQueryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +ContentQueryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: ContentQueryComponent, selector: "content-query-component", queries: [{ propertyName: "myRefs", predicate: ["myRef"] }, { propertyName: "oldMyRefs", predicate: ["myRef"], emitDistinctChangesOnly: false }], viewQueries: [{ propertyName: "someDirs", predicate: SomeDirective, descendants: true }, { propertyName: "oldSomeDirs", predicate: SomeDirective, emitDistinctChangesOnly: false, descendants: true }], ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ContentQueryComponent, [{ - type: Component, - args: [{ - selector: 'content-query-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ContentQueryComponent, decorators: [{ + type: Component, + args: [{ + selector: 'content-query-component', + template: `
` - }] - }], null, { myRefs: [{ - type: ContentChildren, - args: ['myRef', { emitDistinctChangesOnly: true }] - }], oldMyRefs: [{ - type: ContentChildren, - args: ['myRef', { emitDistinctChangesOnly: false }] - }], someDirs: [{ - type: ViewChildren, - args: [SomeDirective, { emitDistinctChangesOnly: true }] - }], oldSomeDirs: [{ - type: ViewChildren, - args: [SomeDirective, { emitDistinctChangesOnly: false }] - }] }); })(); + }] + }], propDecorators: { myRefs: [{ + type: ContentChildren, + args: ['myRef', { emitDistinctChangesOnly: true }] + }], oldMyRefs: [{ + type: ContentChildren, + args: ['myRef', { emitDistinctChangesOnly: false }] + }], someDirs: [{ + type: ViewChildren, + args: [SomeDirective, { emitDistinctChangesOnly: true }] + }], oldSomeDirs: [{ + type: ViewChildren, + args: [SomeDirective, { emitDistinctChangesOnly: false }] + }] } }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [ContentQueryComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [ContentQueryComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [ContentQueryComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [ContentQueryComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: query_with_emit_distinct_changes_only.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/template_variables/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/template_variables/GOLDEN_PARTIAL.js index c9dd4dd27a..617f8ca677 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/template_variables/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/template_variables/GOLDEN_PARTIAL.js @@ -10,14 +10,14 @@ export class ForOfDirective { } ngOnChanges(simpleChanges) { } } -ForOfDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ForOfDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); -ForOfDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: ForOfDirective, selector: "[forOf]", inputs: { forOf: "forOf" }, usesOnChanges: true, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ForOfDirective, [{ - type: Directive, - args: [{ selector: '[forOf]' }] - }], function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, { forOf: [{ - type: Input - }] }); })(); +ForOfDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ForOfDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); +ForOfDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: ForOfDirective, selector: "[forOf]", inputs: { forOf: "forOf" }, usesOnChanges: true, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ForOfDirective, decorators: [{ + type: Directive, + args: [{ selector: '[forOf]' }] + }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { forOf: [{ + type: Input + }] } }); /**************************************************************************************************** * PARTIAL FILE: for_of.d.ts @@ -52,24 +52,24 @@ export class MyComponent { this.items = [{ data: 42 }, { data: 42 }]; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ``, isInline: true, directives: [{ type: i0.forwardRef(function () { return ForOfDirective; }), selector: "[forOf]", inputs: ["forOf"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: `` - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ``, isInline: true, directives: [{ type: i0.forwardRef(function () { return ForOfDirective; }), selector: "[forOf]", inputs: ["forOf"] }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `` + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, ForOfDirective] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent, ForOfDirective] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, ForOfDirective] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent, ForOfDirective] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: svg_embedded_view.d.ts @@ -101,14 +101,14 @@ export class ForOfDirective { } ngOnChanges(simpleChanges) { } } -ForOfDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ForOfDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); -ForOfDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: ForOfDirective, selector: "[forOf]", inputs: { forOf: "forOf" }, usesOnChanges: true, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ForOfDirective, [{ - type: Directive, - args: [{ selector: '[forOf]' }] - }], function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, { forOf: [{ - type: Input - }] }); })(); +ForOfDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ForOfDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); +ForOfDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: ForOfDirective, selector: "[forOf]", inputs: { forOf: "forOf" }, usesOnChanges: true, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ForOfDirective, decorators: [{ + type: Directive, + args: [{ selector: '[forOf]' }] + }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { forOf: [{ + type: Input + }] } }); /**************************************************************************************************** * PARTIAL FILE: for_of.d.ts @@ -143,24 +143,24 @@ export class MyComponent { this.items = [{ name: 'one' }, { name: 'two' }]; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
  • {{item.name}}
`, isInline: true, directives: [{ type: i0.forwardRef(function () { return ForOfDirective; }), selector: "[forOf]", inputs: ["forOf"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: `
  • {{item.name}}
` - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
  • {{item.name}}
`, isInline: true, directives: [{ type: i0.forwardRef(function () { return ForOfDirective; }), selector: "[forOf]", inputs: ["forOf"] }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
  • {{item.name}}
` + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, ForOfDirective] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent, ForOfDirective] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, ForOfDirective] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent, ForOfDirective] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: let_variable_and_reference.d.ts @@ -192,14 +192,14 @@ export class ForOfDirective { } ngOnChanges(simpleChanges) { } } -ForOfDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ForOfDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); -ForOfDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: ForOfDirective, selector: "[forOf]", inputs: { forOf: "forOf" }, usesOnChanges: true, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ForOfDirective, [{ - type: Directive, - args: [{ selector: '[forOf]' }] - }], function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, { forOf: [{ - type: Input - }] }); })(); +ForOfDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ForOfDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); +ForOfDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: ForOfDirective, selector: "[forOf]", inputs: { forOf: "forOf" }, usesOnChanges: true, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ForOfDirective, decorators: [{ + type: Directive, + args: [{ selector: '[forOf]' }] + }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { forOf: [{ + type: Input + }] } }); /**************************************************************************************************** * PARTIAL FILE: for_of.d.ts @@ -237,8 +237,8 @@ export class MyComponent { ]; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
  • {{item.name}}
    @@ -249,11 +249,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, isInline: true, directives: [{ type: i0.forwardRef(function () { return ForOfDirective; }), selector: "[forOf]", inputs: ["forOf"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
  • {{item.name}}
    @@ -264,17 +264,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, ForOfDirective] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent, ForOfDirective] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, ForOfDirective] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent, ForOfDirective] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: parent_template_variable.d.ts @@ -309,14 +309,14 @@ export class ForOfDirective { } ngOnChanges(simpleChanges) { } } -ForOfDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ForOfDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); -ForOfDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: ForOfDirective, selector: "[forOf]", inputs: { forOf: "forOf" }, usesOnChanges: true, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ForOfDirective, [{ - type: Directive, - args: [{ selector: '[forOf]' }] - }], function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, { forOf: [{ - type: Input - }] }); })(); +ForOfDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ForOfDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); +ForOfDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: ForOfDirective, selector: "[forOf]", inputs: { forOf: "forOf" }, usesOnChanges: true, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ForOfDirective, decorators: [{ + type: Directive, + args: [{ selector: '[forOf]' }] + }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { forOf: [{ + type: Input + }] } }); /**************************************************************************************************** * PARTIAL FILE: for_of.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/value_composition/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/value_composition/GOLDEN_PARTIAL.js index 38db1b6e6d..82763e7fc1 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/value_composition/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/value_composition/GOLDEN_PARTIAL.js @@ -5,37 +5,37 @@ import { Component, Directive, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class ChildComponent { } -ChildComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ChildComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -ChildComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: ChildComponent, selector: "child", ngImport: i0, template: 'child-view', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ChildComponent, [{ - type: Component, - args: [{ selector: 'child', template: 'child-view' }] - }], null, null); })(); +ChildComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ChildComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +ChildComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: ChildComponent, selector: "child", ngImport: i0, template: 'child-view', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ChildComponent, decorators: [{ + type: Component, + args: [{ selector: 'child', template: 'child-view' }] + }] }); export class SomeDirective { } -SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[some-directive]", ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SomeDirective, [{ - type: Directive, - args: [{ selector: '[some-directive]' }] - }], null, null); })(); +SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[some-directive]", ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, decorators: [{ + type: Directive, + args: [{ selector: '[some-directive]' }] + }] }); export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '!', isInline: true, components: [{ type: ChildComponent, selector: "child" }], directives: [{ type: SomeDirective, selector: "[some-directive]" }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: '!' }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '!', isInline: true, components: [{ type: ChildComponent, selector: "child" }], directives: [{ type: SomeDirective, selector: "[some-directive]" }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: '!' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [ChildComponent, SomeDirective, MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [ChildComponent, SomeDirective, MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [ChildComponent, SomeDirective, MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [ChildComponent, SomeDirective, MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: directives.d.ts @@ -66,29 +66,29 @@ import { Directive, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class SomeDirective { } -SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "div.foo[some-directive]:not([title]):not(.baz)", ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SomeDirective, [{ - type: Directive, - args: [{ selector: 'div.foo[some-directive]:not([title]):not(.baz)' }] - }], null, null); })(); +SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "div.foo[some-directive]:not([title]):not(.baz)", ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, decorators: [{ + type: Directive, + args: [{ selector: 'div.foo[some-directive]:not([title]):not(.baz)' }] + }] }); export class OtherDirective { } -OtherDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: OtherDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -OtherDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: OtherDirective, selector: ":not(span[title]):not(.baz)", ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OtherDirective, [{ - type: Directive, - args: [{ selector: ':not(span[title]):not(.baz)' }] - }], null, null); })(); +OtherDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: OtherDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +OtherDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: OtherDirective, selector: ":not(span[title]):not(.baz)", ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: OtherDirective, decorators: [{ + type: Directive, + args: [{ selector: ':not(span[title]):not(.baz)' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SomeDirective, OtherDirective] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [SomeDirective, OtherDirective] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SomeDirective, OtherDirective] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [SomeDirective, OtherDirective] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: complex_selectors.d.ts @@ -115,21 +115,21 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class SomeComponent { } -SomeComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -SomeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: SomeComponent, selector: "#my-app", ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SomeComponent, [{ - type: Component, - args: [{ selector: '#my-app', template: '' }] - }], null, null); })(); +SomeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +SomeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SomeComponent, selector: "#my-app", ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeComponent, decorators: [{ + type: Component, + args: [{ selector: '#my-app', template: '' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SomeComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [SomeComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SomeComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [SomeComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: id_selector.d.ts @@ -152,29 +152,29 @@ import { Component, Directive, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class RouterOutlet { } -RouterOutlet.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: RouterOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -RouterOutlet.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: RouterOutlet, selector: "router-outlet", ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RouterOutlet, [{ - type: Directive, - args: [{ selector: 'router-outlet' }] - }], null, null); })(); +RouterOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: RouterOutlet, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +RouterOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: RouterOutlet, selector: "router-outlet", ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: RouterOutlet, decorators: [{ + type: Directive, + args: [{ selector: 'router-outlet' }] + }] }); export class EmptyOutletComponent { } -EmptyOutletComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: EmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -EmptyOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: EmptyOutletComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true, directives: [{ type: RouterOutlet, selector: "router-outlet" }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EmptyOutletComponent, [{ - type: Component, - args: [{ template: '' }] - }], null, null); })(); +EmptyOutletComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: EmptyOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +EmptyOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: EmptyOutletComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true, directives: [{ type: RouterOutlet, selector: "router-outlet" }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: EmptyOutletComponent, decorators: [{ + type: Component, + args: [{ template: '' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [EmptyOutletComponent, RouterOutlet] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [EmptyOutletComponent, RouterOutlet] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [EmptyOutletComponent, RouterOutlet] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [EmptyOutletComponent, RouterOutlet] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: no_selector.d.ts @@ -206,21 +206,21 @@ export class MyComponent { this.cdr = cdr; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: '' }] - }], function () { return [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; }, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: '' }] + }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; } }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: view_tokens_di.d.ts @@ -249,32 +249,32 @@ import * as i0 from "@angular/core"; export class IfDirective { constructor(template) { } } -IfDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: IfDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); -IfDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: IfDirective, selector: "[if]", ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IfDirective, [{ - type: Directive, - args: [{ selector: '[if]' }] - }], function () { return [{ type: i0.TemplateRef }]; }, null); })(); +IfDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: IfDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); +IfDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: IfDirective, selector: "[if]", ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: IfDirective, decorators: [{ + type: Directive, + args: [{ selector: '[if]' }] + }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } }); export class MyComponent { constructor() { this.salutation = 'Hello'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
  • {{salutation}} {{foo}}
', isInline: true, directives: [{ type: IfDirective, selector: "[if]" }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: '
  • {{salutation}} {{foo}}
' }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
  • {{salutation}} {{foo}}
', isInline: true, directives: [{ type: IfDirective, selector: "[if]" }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: '
  • {{salutation}} {{foo}}
' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [IfDirective, MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [IfDirective, MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [IfDirective, MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [IfDirective, MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: structural_directives.d.ts @@ -304,50 +304,50 @@ import { Component, Input, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComp { } -MyComp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComp, selector: "my-comp", inputs: { names: "names" }, ngImport: i0, template: ` +MyComp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComp, selector: "my-comp", inputs: { names: "names" }, ngImport: i0, template: `

{{ names[0] }}

{{ names[1] }}

`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComp, [{ - type: Component, - args: [{ - selector: 'my-comp', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComp, decorators: [{ + type: Component, + args: [{ + selector: 'my-comp', + template: `

{{ names[0] }}

{{ names[1] }}

` - }] - }], null, { names: [{ - type: Input - }] }); })(); + }] + }], propDecorators: { names: [{ + type: Input + }] } }); export class MyApp { constructor() { this.customName = 'Bess'; } } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: ` +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: ` `, isInline: true, components: [{ type: MyComp, selector: "my-comp", inputs: ["names"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ - selector: 'my-app', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + template: ` ` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComp, MyApp] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComp, MyApp] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComp, MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComp, MyApp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: array_literals.d.ts @@ -376,8 +376,8 @@ import { Component, Input, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComp { } -MyComp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComp, selector: "my-comp", inputs: { names: "names" }, ngImport: i0, template: ` +MyComp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComp, selector: "my-comp", inputs: { names: "names" }, ngImport: i0, template: ` {{ names[0] }} {{ names[1] }} {{ names[3] }} @@ -390,11 +390,11 @@ MyComp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: M {{ names[10] }} {{ names[11] }} `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComp, [{ - type: Component, - args: [{ - selector: 'my-comp', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComp, decorators: [{ + type: Component, + args: [{ + selector: 'my-comp', + template: ` {{ names[0] }} {{ names[1] }} {{ names[3] }} @@ -407,10 +407,10 @@ MyComp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: M {{ names[10] }} {{ names[11] }} ` - }] - }], null, { names: [{ - type: Input - }] }); })(); + }] + }], propDecorators: { names: [{ + type: Input + }] } }); export class MyApp { constructor() { this.n0 = 'a'; @@ -424,30 +424,30 @@ export class MyApp { this.n8 = 'i'; } } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: ` +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: ` `, isInline: true, components: [{ type: MyComp, selector: "my-comp", inputs: ["names"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ - selector: 'my-app', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + template: ` ` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComp, MyApp] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComp, MyApp] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComp, MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComp, MyApp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: array_literals_many.d.ts @@ -484,50 +484,50 @@ import { Component, Input, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class ObjectComp { } -ObjectComp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ObjectComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -ObjectComp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: ObjectComp, selector: "object-comp", inputs: { config: "config" }, ngImport: i0, template: ` +ObjectComp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ObjectComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +ObjectComp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: ObjectComp, selector: "object-comp", inputs: { config: "config" }, ngImport: i0, template: `

{{ config['duration'] }}

{{ config.animation }}

`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ObjectComp, [{ - type: Component, - args: [{ - selector: 'object-comp', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ObjectComp, decorators: [{ + type: Component, + args: [{ + selector: 'object-comp', + template: `

{{ config['duration'] }}

{{ config.animation }}

` - }] - }], null, { config: [{ - type: Input - }] }); })(); + }] + }], propDecorators: { config: [{ + type: Input + }] } }); export class MyApp { constructor() { this.name = 'slide'; } } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: ` +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: ` `, isInline: true, components: [{ type: ObjectComp, selector: "object-comp", inputs: ["config"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ - selector: 'my-app', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + template: ` ` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [ObjectComp, MyApp] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [ObjectComp, MyApp] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [ObjectComp, MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [ObjectComp, MyApp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: object_literals.d.ts @@ -558,55 +558,55 @@ import { Component, Input, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class NestedComp { } -NestedComp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: NestedComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -NestedComp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: NestedComp, selector: "nested-comp", inputs: { config: "config" }, ngImport: i0, template: ` +NestedComp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: NestedComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +NestedComp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: NestedComp, selector: "nested-comp", inputs: { config: "config" }, ngImport: i0, template: `

{{ config.animation }}

{{config.actions[0].opacity }}

{{config.actions[1].duration }}

`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NestedComp, [{ - type: Component, - args: [{ - selector: 'nested-comp', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: NestedComp, decorators: [{ + type: Component, + args: [{ + selector: 'nested-comp', + template: `

{{ config.animation }}

{{config.actions[0].opacity }}

{{config.actions[1].duration }}

` - }] - }], null, { config: [{ - type: Input - }] }); })(); + }] + }], propDecorators: { config: [{ + type: Input + }] } }); export class MyApp { constructor() { this.name = 'slide'; this.duration = 100; } } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: ` +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: ` `, isInline: true, components: [{ type: NestedComp, selector: "nested-comp", inputs: ["config"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ - selector: 'my-app', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + template: ` ` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [NestedComp, MyApp] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [NestedComp, MyApp] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [NestedComp, MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [NestedComp, MyApp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: literal_nested_expression.d.ts @@ -631,3 +631,53 @@ export declare class MyModule { static ɵinj: i0.ɵɵInjectorDeclaration; } +/**************************************************************************************************** + * PARTIAL FILE: number_separator.js + ****************************************************************************************************/ +import { Component, NgModule } from '@angular/core'; +import * as i0 from "@angular/core"; +export class MyApp { + constructor() { + this.multiplier = 5; + } +} +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: ` +
Total: \${{ 1_000_000 * multiplier }}
+ Remaining: \${{ 123_456.78_9 / 2 }} + `, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + template: ` +
Total: \${{ 1_000_000 * multiplier }}
+ Remaining: \${{ 123_456.78_9 / 2 }} + ` + }] + }] }); +export class MyModule { +} +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyApp] }] + }] }); + +/**************************************************************************************************** + * PARTIAL FILE: number_separator.d.ts + ****************************************************************************************************/ +import * as i0 from "@angular/core"; +export declare class MyApp { + multiplier: number; + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵcmp: i0.ɵɵComponentDeclaration; +} +export declare class MyModule { + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵinj: i0.ɵɵInjectorDeclaration; +} + diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/value_composition/TEST_CASES.json b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/value_composition/TEST_CASES.json index e4de00987e..e12c8c9116 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/value_composition/TEST_CASES.json +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/value_composition/TEST_CASES.json @@ -272,6 +272,20 @@ ] } ] + }, + { + "description": "should support number literals with separators", + "inputFiles": [ + "number_separator.ts" + ], + "expectations": [ + { + "failureMessage": "Invalid number literal", + "files": [ + "number_separator.js" + ] + } + ] } ] } diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/value_composition/number_separator.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/value_composition/number_separator.js new file mode 100644 index 0000000000..4ca574216f --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/value_composition/number_separator.js @@ -0,0 +1,9 @@ +template: function MyApp_Template(rf, ctx) { + // ... + if (rf & 2) { + $r3$.ɵɵadvance(1); + $r3$.ɵɵtextInterpolate1("Total: $", 1000000 * ctx.multiplier, ""); + $r3$.ɵɵadvance(2); + $r3$.ɵɵtextInterpolate1("Remaining: $", 123456.789 / 2, ""); + } +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/value_composition/number_separator.ts b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/value_composition/number_separator.ts new file mode 100644 index 0000000000..26b7ba7c75 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/components_and_directives/value_composition/number_separator.ts @@ -0,0 +1,16 @@ +import {Component, NgModule} from '@angular/core'; + +@Component({ + selector: 'my-app', + template: ` +
Total: \${{ 1_000_000 * multiplier }}
+ Remaining: \${{ 123_456.78_9 / 2 }} + ` +}) +export class MyApp { + multiplier = 5; +} + +@NgModule({declarations: [MyApp]}) +export class MyModule { +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/elements/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/elements/GOLDEN_PARTIAL.js index 4b01fe1d0e..cbf1c08743 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/elements/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/elements/GOLDEN_PARTIAL.js @@ -5,24 +5,24 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '

test

', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: '

test

' - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '

test

', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: '

test

' + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: svg.d.ts @@ -38,6 +38,62 @@ export declare class MyModule { static ɵinj: i0.ɵɵInjectorDeclaration; } +/**************************************************************************************************** + * PARTIAL FILE: svg_embedded_view.js + ****************************************************************************************************/ +import { Component, NgModule } from '@angular/core'; +import * as i0 from "@angular/core"; +export class MyComponent { + constructor() { + this.condition = true; + } +} +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` + + + Hello + + + `, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` + + + Hello + + + ` + }] + }] }); +export class MyModule { +} +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); + +/**************************************************************************************************** + * PARTIAL FILE: svg_embedded_view.d.ts + ****************************************************************************************************/ +import * as i0 from "@angular/core"; +export declare class MyComponent { + condition: boolean; + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵcmp: i0.ɵɵComponentDeclaration; +} +export declare class MyModule { + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵinj: i0.ɵɵInjectorDeclaration; +} + /**************************************************************************************************** * PARTIAL FILE: mathml.js ****************************************************************************************************/ @@ -45,40 +101,40 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MathCmp { } -MathCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MathCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MathCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MathCmp, selector: "math", ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MathCmp, [{ - type: Component, - args: [{ selector: 'math', template: '' }] - }], null, null); })(); +MathCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MathCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MathCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MathCmp, selector: "math", ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MathCmp, decorators: [{ + type: Component, + args: [{ selector: 'math', template: '' }] + }] }); export class InfinityCmp { } -InfinityCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: InfinityCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -InfinityCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: InfinityCmp, selector: "infinity", ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfinityCmp, [{ - type: Component, - args: [{ selector: 'infinity', template: '' }] - }], null, null); })(); +InfinityCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: InfinityCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +InfinityCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: InfinityCmp, selector: "infinity", ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: InfinityCmp, decorators: [{ + type: Component, + args: [{ selector: 'infinity', template: '' }] + }] }); export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '

test

', isInline: true, components: [{ type: MathCmp, selector: "math" }, { type: InfinityCmp, selector: "infinity" }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: '

test

' - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '

test

', isInline: true, components: [{ type: MathCmp, selector: "math" }, { type: InfinityCmp, selector: "infinity" }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: '

test

' + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, MathCmp, InfinityCmp] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent, MathCmp, InfinityCmp] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, MathCmp, InfinityCmp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent, MathCmp, InfinityCmp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: mathml.d.ts @@ -109,24 +165,24 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
Hello World!
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: '
Hello World!
' - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
Hello World!
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: '
Hello World!
' + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: dom.d.ts @@ -149,24 +205,24 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
Hello World!
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: '
Hello World!
' - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
Hello World!
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: '
Hello World!
' + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: namespace.d.ts @@ -189,24 +245,24 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: 'in a container', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: 'in a container' - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: 'in a container', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: 'in a container' + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: ng-container.d.ts @@ -229,21 +285,21 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: '' }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: '' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: empty_ng-container.d.ts @@ -269,21 +325,21 @@ export class MyComponent { this.id = 'one'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: '
' }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: '
' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: properties.d.ts @@ -307,29 +363,29 @@ import { Component, Directive, Input, NgModule, Pipe } from '@angular/core'; import * as i0 from "@angular/core"; export class DivDir { } -DivDir.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: DivDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -DivDir.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: DivDir, selector: "div", inputs: { ternary: "ternary", pipe: "pipe", and: "and", or: "or" }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DivDir, [{ - type: Directive, - args: [{ selector: 'div' }] - }], null, { ternary: [{ - type: Input - }], pipe: [{ - type: Input - }], and: [{ - type: Input - }], or: [{ - type: Input - }] }); })(); +DivDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: DivDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +DivDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: DivDir, selector: "div", inputs: { ternary: "ternary", pipe: "pipe", and: "and", or: "or" }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: DivDir, decorators: [{ + type: Directive, + args: [{ selector: 'div' }] + }], propDecorators: { ternary: [{ + type: Input + }], pipe: [{ + type: Input + }], and: [{ + type: Input + }], or: [{ + type: Input + }] } }); export class PipePipe { transform(v, a, a2) { } } -PipePipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: PipePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -PipePipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: PipePipe, name: "pipe" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PipePipe, [{ - type: Pipe, - args: [{ name: 'pipe' }] - }], null, null); })(); +PipePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: PipePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +PipePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: PipePipe, name: "pipe" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: PipePipe, decorators: [{ + type: Pipe, + args: [{ name: 'pipe' }] + }] }); export class MyComponent { constructor() { this.id = 'one'; @@ -340,34 +396,34 @@ export class MyComponent { this.c = ''; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true, directives: [{ type: DivDir, selector: "div", inputs: ["ternary", "pipe", "and", "or"] }], pipes: { "pipe": PipePipe } }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, DivDir, PipePipe] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent, DivDir, PipePipe] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, DivDir, PipePipe] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent, DivDir, PipePipe] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: property_pure_functions.d.ts @@ -412,48 +468,48 @@ export class MyComponent { return 'expanded'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", inputs: { expandedHeight: "expandedHeight", collapsedHeight: "collapsedHeight", expandedWidth: "expandedWidth", collapsedWidth: "collapsedWidth" }, host: { properties: { "@expansionHeight": "{\n value: getExpandedState(),\n params: {\n collapsedHeight: collapsedHeight,\n expandedHeight: expandedHeight\n }\n }", "@expansionWidth": "{\n value: getExpandedState(),\n params: {\n collapsedWidth: collapsedWidth,\n expandedWidth: expandedWidth\n }\n }" } }, ngImport: i0, template: '...', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: '...', - host: { - '[@expansionHeight]': `{ +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", inputs: { expandedHeight: "expandedHeight", collapsedHeight: "collapsedHeight", expandedWidth: "expandedWidth", collapsedWidth: "collapsedWidth" }, host: { properties: { "@expansionHeight": "{\n value: getExpandedState(),\n params: {\n collapsedHeight: collapsedHeight,\n expandedHeight: expandedHeight\n }\n }", "@expansionWidth": "{\n value: getExpandedState(),\n params: {\n collapsedWidth: collapsedWidth,\n expandedWidth: expandedWidth\n }\n }" } }, ngImport: i0, template: '...', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: '...', + host: { + '[@expansionHeight]': `{ value: getExpandedState(), params: { collapsedHeight: collapsedHeight, expandedHeight: expandedHeight } }`, - '[@expansionWidth]': `{ + '[@expansionWidth]': `{ value: getExpandedState(), params: { collapsedWidth: collapsedWidth, expandedWidth: expandedWidth } }` - } - }] - }], null, { expandedHeight: [{ - type: Input - }], collapsedHeight: [{ - type: Input - }], expandedWidth: [{ - type: Input - }], collapsedWidth: [{ - type: Input - }] }); })(); + } + }] + }], propDecorators: { expandedHeight: [{ + type: Input + }], collapsedHeight: [{ + type: Input + }], expandedWidth: [{ + type: Input + }], collapsedWidth: [{ + type: Input + }] } }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: host_binding_pure_functions.d.ts @@ -485,24 +541,24 @@ export class MyComponent { this.color = 'red'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: '
' - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: '
' + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: class_style_bindings.d.ts @@ -527,30 +583,30 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: deduplicate_attributes.d.ts @@ -573,8 +629,8 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` @@ -586,11 +642,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` @@ -602,17 +658,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty ` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: security_sensitive_constant_attributes.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/elements/TEST_CASES.json b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/elements/TEST_CASES.json index e8fdcfccbd..8c57978716 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/elements/TEST_CASES.json +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/elements/TEST_CASES.json @@ -27,6 +27,23 @@ } ] }, + { + "description": "should handle SVG with an embedded ng-template", + "inputFiles": [ + "svg_embedded_view.ts" + ], + "expectations": [ + { + "files": [ + { + "expected": "svg_embedded_view_template.js", + "generated": "svg_embedded_view.js" + } + ], + "failureMessage": "Incorrect template." + } + ] + }, { "description": "should handle MathML", "inputFiles": [ diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/property_bindings/special_property_remapping.ts b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/elements/svg_embedded_view.ts similarity index 61% rename from packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/property_bindings/special_property_remapping.ts rename to packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/elements/svg_embedded_view.ts index 898b37313c..535fd1cc29 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/property_bindings/special_property_remapping.ts +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/elements/svg_embedded_view.ts @@ -3,10 +3,15 @@ import {Component, NgModule} from '@angular/core'; @Component({ selector: 'my-component', template: ` - ` + + + Hello + + + ` }) export class MyComponent { - forValue = 'some-input'; + condition = true; } @NgModule({declarations: [MyComponent]}) diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/elements/svg_embedded_view_template.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/elements/svg_embedded_view_template.js new file mode 100644 index 0000000000..faa4c684a1 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/elements/svg_embedded_view_template.js @@ -0,0 +1,24 @@ +function MyComponent__svg_ng_template_1_Template(rf, ctx) { + if (rf & 1) { + i0.ɵɵnamespaceSVG(); + i0.ɵɵelementStart(0, "text"); + i0.ɵɵtext(1, "Hello"); + i0.ɵɵelementEnd(); + } +} +… + +// NOTE: AttributeMarker.Bindings = 3 +consts: [[3, "ngIf"]], +template: function MyComponent_Template(rf, ctx) { + if (rf & 1) { + i0.ɵɵnamespaceSVG(); + i0.ɵɵelementStart(0, "svg"); + i0.ɵɵtemplate(1, MyComponent__svg_ng_template_1_Template, 2, 0, "ng-template", 0); + i0.ɵɵelementEnd(); + } + if (rf & 2) { + i0.ɵɵadvance(1); + i0.ɵɵproperty("ngIf", ctx.condition); + } +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/ng_modules/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/ng_modules/GOLDEN_PARTIAL.js index c3038d1b96..0d1748c487 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/ng_modules/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_compiler_compliance/ng_modules/GOLDEN_PARTIAL.js @@ -5,13 +5,13 @@ import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; import * as i0 from "@angular/core"; export class BasicModule { } -BasicModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BasicModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -BasicModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BasicModule, id: 'BasicModuleId' }); -BasicModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BasicModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BasicModule, [{ - type: NgModule, - args: [{ id: 'BasicModuleId', schemas: [NO_ERRORS_SCHEMA] }] - }], null, null); })(); +BasicModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BasicModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +BasicModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BasicModule, id: 'BasicModuleId' }); +BasicModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BasicModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BasicModule, decorators: [{ + type: NgModule, + args: [{ id: 'BasicModuleId', schemas: [NO_ERRORS_SCHEMA] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: basic.d.ts @@ -33,38 +33,38 @@ export class FooComponent { this.name = 'World'; } } -FooComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -FooComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: FooComponent, selector: "foo", ngImport: i0, template: '
Hello, {{name}}!
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FooComponent, [{ - type: Component, - args: [{ selector: 'foo', template: '
Hello, {{name}}!
' }] - }], null, null); })(); +FooComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +FooComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: FooComponent, selector: "foo", ngImport: i0, template: '
Hello, {{name}}!
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooComponent, decorators: [{ + type: Component, + args: [{ selector: 'foo', template: '
Hello, {{name}}!
' }] + }] }); export class BarDirective { } -BarDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -BarDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: BarDirective, selector: "[bar]", ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BarDirective, [{ - type: Directive, - args: [{ selector: '[bar]' }] - }], null, null); })(); +BarDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +BarDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: BarDirective, selector: "[bar]", ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BarDirective, decorators: [{ + type: Directive, + args: [{ selector: '[bar]' }] + }] }); export class QuxPipe { transform() { } } -QuxPipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: QuxPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -QuxPipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: QuxPipe, name: "qux" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(QuxPipe, [{ - type: Pipe, - args: [{ name: 'qux' }] - }], null, null); })(); +QuxPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: QuxPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +QuxPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: QuxPipe, name: "qux" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: QuxPipe, decorators: [{ + type: Pipe, + args: [{ name: 'qux' }] + }] }); export class FooModule { } -FooModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -FooModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooModule, bootstrap: [FooComponent], declarations: [FooComponent, BarDirective, QuxPipe] }); -FooModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FooModule, [{ - type: NgModule, - args: [{ declarations: [FooComponent, BarDirective, QuxPipe], bootstrap: [FooComponent] }] - }], null, null); })(); +FooModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +FooModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooModule, bootstrap: [FooComponent], declarations: [FooComponent, BarDirective, QuxPipe] }); +FooModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooModule, decorators: [{ + type: NgModule, + args: [{ declarations: [FooComponent, BarDirective, QuxPipe], bootstrap: [FooComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: declarations.d.ts @@ -101,38 +101,38 @@ export class FooComponent { this.name = 'World'; } } -FooComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -FooComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: FooComponent, selector: "foo", ngImport: i0, template: '
Hello, {{name}}!
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FooComponent, [{ - type: Component, - args: [{ selector: 'foo', template: '
Hello, {{name}}!
' }] - }], null, null); })(); +FooComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +FooComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: FooComponent, selector: "foo", ngImport: i0, template: '
Hello, {{name}}!
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooComponent, decorators: [{ + type: Component, + args: [{ selector: 'foo', template: '
Hello, {{name}}!
' }] + }] }); export class BarDirective { } -BarDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -BarDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: BarDirective, selector: "[bar]", ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BarDirective, [{ - type: Directive, - args: [{ selector: '[bar]' }] - }], null, null); })(); +BarDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +BarDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: BarDirective, selector: "[bar]", ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BarDirective, decorators: [{ + type: Directive, + args: [{ selector: '[bar]' }] + }] }); export class QuxPipe { transform() { } } -QuxPipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: QuxPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -QuxPipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: QuxPipe, name: "qux" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(QuxPipe, [{ - type: Pipe, - args: [{ name: 'qux' }] - }], null, null); })(); +QuxPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: QuxPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +QuxPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: QuxPipe, name: "qux" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: QuxPipe, decorators: [{ + type: Pipe, + args: [{ name: 'qux' }] + }] }); export class FooModule { } -FooModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -FooModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooModule, bootstrap: [FooComponent], declarations: [FooComponent, BarDirective, QuxPipe] }); -FooModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FooModule, [{ - type: NgModule, - args: [{ declarations: [FooComponent, BarDirective, QuxPipe], bootstrap: [FooComponent] }] - }], null, null); })(); +FooModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +FooModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooModule, bootstrap: [FooComponent], declarations: [FooComponent, BarDirective, QuxPipe] }); +FooModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooModule, decorators: [{ + type: NgModule, + args: [{ declarations: [FooComponent, BarDirective, QuxPipe], bootstrap: [FooComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: declarations_jit_mode.d.ts @@ -166,51 +166,51 @@ import { Injectable, InjectionToken, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class Thing { } -Thing.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Thing, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); -Thing.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: Thing, factory: Thing.ɵfac }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Thing, [{ - type: Injectable - }], null, null); })(); +Thing.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Thing, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); +Thing.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Thing }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Thing, decorators: [{ + type: Injectable + }] }); export class BaseService { constructor(thing) { this.thing = thing; } ; } -BaseService.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BaseService, deps: [{ token: Thing }], target: i0.ɵɵFactoryTarget.Injectable }); -BaseService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: BaseService, factory: BaseService.ɵfac }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BaseService, [{ - type: Injectable - }], function () { return [{ type: Thing }]; }, null); })(); +BaseService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BaseService, deps: [{ token: Thing }], target: i0.ɵɵFactoryTarget.Injectable }); +BaseService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BaseService }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BaseService, decorators: [{ + type: Injectable + }], ctorParameters: function () { return [{ type: Thing }]; } }); export class ChildService extends BaseService { } -ChildService.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ChildService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); -ChildService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ChildService, factory: ChildService.ɵfac }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ChildService, [{ - type: Injectable - }], null, null); })(); +ChildService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ChildService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); +ChildService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ChildService }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ChildService, decorators: [{ + type: Injectable + }] }); const MY_TOKEN = new InjectionToken('MY_TOKEN'); export class FooModule { } -FooModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -FooModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooModule }); -FooModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooModule, providers: [ +FooModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +FooModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooModule }); +FooModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooModule, providers: [ Thing, BaseService, ChildService, { provide: MY_TOKEN, useFactory: (child) => ({ child }), deps: [ChildService] }, ] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FooModule, [{ - type: NgModule, - args: [{ - providers: [ - Thing, - BaseService, - ChildService, - { provide: MY_TOKEN, useFactory: (child) => ({ child }), deps: [ChildService] }, - ] - }] - }], null, null); })(); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooModule, decorators: [{ + type: NgModule, + args: [{ + providers: [ + Thing, + BaseService, + ChildService, + { provide: MY_TOKEN, useFactory: (child) => ({ child }), deps: [ChildService] }, + ] + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: providers.d.ts @@ -218,17 +218,17 @@ FooModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImp import * as i0 from "@angular/core"; export declare class Thing { static ɵfac: i0.ɵɵFactoryDeclaration; - static ɵprov: i0.ɵɵInjectableDef; + static ɵprov: i0.ɵɵInjectableDeclaration; } export declare class BaseService { protected thing: Thing; constructor(thing: Thing); static ɵfac: i0.ɵɵFactoryDeclaration; - static ɵprov: i0.ɵɵInjectableDef; + static ɵprov: i0.ɵɵInjectableDeclaration; } export declare class ChildService extends BaseService { static ɵfac: i0.ɵɵFactoryDeclaration; - static ɵprov: i0.ɵɵInjectableDef; + static ɵprov: i0.ɵɵInjectableDeclaration; } export declare class FooModule { static ɵfac: i0.ɵɵFactoryDeclaration; @@ -243,63 +243,63 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class A1Component { } -A1Component.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: A1Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); -A1Component.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: A1Component, selector: "a1", ngImport: i0, template: 'A1', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(A1Component, [{ - type: Component, - args: [{ selector: 'a1', template: 'A1' }] - }], null, null); })(); +A1Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: A1Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); +A1Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: A1Component, selector: "a1", ngImport: i0, template: 'A1', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: A1Component, decorators: [{ + type: Component, + args: [{ selector: 'a1', template: 'A1' }] + }] }); export class A2Component { } -A2Component.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: A2Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); -A2Component.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: A2Component, selector: "a2", ngImport: i0, template: 'A2', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(A2Component, [{ - type: Component, - args: [{ selector: 'a2', template: 'A2' }] - }], null, null); })(); +A2Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: A2Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); +A2Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: A2Component, selector: "a2", ngImport: i0, template: 'A2', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: A2Component, decorators: [{ + type: Component, + args: [{ selector: 'a2', template: 'A2' }] + }] }); export class AModule { } -AModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -AModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule, declarations: [A1Component, A2Component], exports: [A1Component, A2Component] }); -AModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AModule, [{ - type: NgModule, - args: [{ declarations: [A1Component, A2Component], exports: [A1Component, A2Component] }] - }], null, null); })(); +AModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +AModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule, declarations: [A1Component, A2Component], exports: [A1Component, A2Component] }); +AModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule, decorators: [{ + type: NgModule, + args: [{ declarations: [A1Component, A2Component], exports: [A1Component, A2Component] }] + }] }); export class B1Component { } -B1Component.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: B1Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); -B1Component.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: B1Component, selector: "b1", ngImport: i0, template: 'B1', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(B1Component, [{ - type: Component, - args: [{ selector: 'b1', template: 'B1' }] - }], null, null); })(); +B1Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: B1Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); +B1Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: B1Component, selector: "b1", ngImport: i0, template: 'B1', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: B1Component, decorators: [{ + type: Component, + args: [{ selector: 'b1', template: 'B1' }] + }] }); export class B2Component { } -B2Component.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: B2Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); -B2Component.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: B2Component, selector: "b2", ngImport: i0, template: 'B2', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(B2Component, [{ - type: Component, - args: [{ selector: 'b2', template: 'B2' }] - }], null, null); })(); +B2Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: B2Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); +B2Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: B2Component, selector: "b2", ngImport: i0, template: 'B2', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: B2Component, decorators: [{ + type: Component, + args: [{ selector: 'b2', template: 'B2' }] + }] }); export class BModule { } -BModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -BModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BModule, declarations: [B1Component, B2Component], exports: [AModule] }); -BModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BModule, imports: [AModule] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BModule, [{ - type: NgModule, - args: [{ declarations: [B1Component, B2Component], exports: [AModule] }] - }], null, null); })(); +BModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +BModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BModule, declarations: [B1Component, B2Component], exports: [AModule] }); +BModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BModule, imports: [AModule] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BModule, decorators: [{ + type: NgModule, + args: [{ declarations: [B1Component, B2Component], exports: [AModule] }] + }] }); export class AppModule { } -AppModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -AppModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, imports: [BModule] }); -AppModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, imports: [[BModule]] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppModule, [{ - type: NgModule, - args: [{ imports: [BModule] }] - }], null, null); })(); +AppModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +AppModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, imports: [BModule] }); +AppModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, imports: [[BModule]] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, decorators: [{ + type: NgModule, + args: [{ imports: [BModule] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: imports_exports.d.ts @@ -344,63 +344,63 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class A1Component { } -A1Component.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: A1Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); -A1Component.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: A1Component, selector: "a1", ngImport: i0, template: 'A1', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(A1Component, [{ - type: Component, - args: [{ selector: 'a1', template: 'A1' }] - }], null, null); })(); +A1Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: A1Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); +A1Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: A1Component, selector: "a1", ngImport: i0, template: 'A1', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: A1Component, decorators: [{ + type: Component, + args: [{ selector: 'a1', template: 'A1' }] + }] }); export class A2Component { } -A2Component.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: A2Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); -A2Component.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: A2Component, selector: "a2", ngImport: i0, template: 'A2', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(A2Component, [{ - type: Component, - args: [{ selector: 'a2', template: 'A2' }] - }], null, null); })(); +A2Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: A2Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); +A2Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: A2Component, selector: "a2", ngImport: i0, template: 'A2', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: A2Component, decorators: [{ + type: Component, + args: [{ selector: 'a2', template: 'A2' }] + }] }); export class AModule { } -AModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -AModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule, declarations: [A1Component, A2Component], exports: [A1Component, A2Component] }); -AModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AModule, [{ - type: NgModule, - args: [{ declarations: [A1Component, A2Component], exports: [A1Component, A2Component] }] - }], null, null); })(); +AModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +AModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule, declarations: [A1Component, A2Component], exports: [A1Component, A2Component] }); +AModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule, decorators: [{ + type: NgModule, + args: [{ declarations: [A1Component, A2Component], exports: [A1Component, A2Component] }] + }] }); export class B1Component { } -B1Component.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: B1Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); -B1Component.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: B1Component, selector: "b1", ngImport: i0, template: 'B1', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(B1Component, [{ - type: Component, - args: [{ selector: 'b1', template: 'B1' }] - }], null, null); })(); +B1Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: B1Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); +B1Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: B1Component, selector: "b1", ngImport: i0, template: 'B1', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: B1Component, decorators: [{ + type: Component, + args: [{ selector: 'b1', template: 'B1' }] + }] }); export class B2Component { } -B2Component.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: B2Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); -B2Component.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: B2Component, selector: "b2", ngImport: i0, template: 'B2', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(B2Component, [{ - type: Component, - args: [{ selector: 'b2', template: 'B2' }] - }], null, null); })(); +B2Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: B2Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); +B2Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: B2Component, selector: "b2", ngImport: i0, template: 'B2', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: B2Component, decorators: [{ + type: Component, + args: [{ selector: 'b2', template: 'B2' }] + }] }); export class BModule { } -BModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -BModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BModule, declarations: [B1Component, B2Component], exports: [AModule] }); -BModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BModule, imports: [AModule] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BModule, [{ - type: NgModule, - args: [{ declarations: [B1Component, B2Component], exports: [AModule] }] - }], null, null); })(); +BModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +BModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BModule, declarations: [B1Component, B2Component], exports: [AModule] }); +BModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BModule, imports: [AModule] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BModule, decorators: [{ + type: NgModule, + args: [{ declarations: [B1Component, B2Component], exports: [AModule] }] + }] }); export class AppModule { } -AppModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -AppModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, imports: [BModule] }); -AppModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, imports: [[BModule]] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppModule, [{ - type: NgModule, - args: [{ imports: [BModule] }] - }], null, null); })(); +AppModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +AppModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, imports: [BModule] }); +AppModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, imports: [[BModule]] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, decorators: [{ + type: NgModule, + args: [{ imports: [BModule] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: imports_exports_jit_mode.d.ts @@ -468,32 +468,32 @@ import { Injectable, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class Service { } -Service.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Service, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); -Service.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: Service, factory: Service.ɵfac }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Service, [{ - type: Injectable - }], null, null); })(); +Service.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Service, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); +Service.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Service }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Service, decorators: [{ + type: Injectable + }] }); export class BaseModule { constructor(service) { this.service = service; } } -BaseModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BaseModule, deps: [{ token: Service }], target: i0.ɵɵFactoryTarget.NgModule }); -BaseModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BaseModule }); -BaseModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BaseModule, providers: [Service] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BaseModule, [{ - type: NgModule, - args: [{ providers: [Service] }] - }], function () { return [{ type: Service }]; }, null); })(); +BaseModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BaseModule, deps: [{ token: Service }], target: i0.ɵɵFactoryTarget.NgModule }); +BaseModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BaseModule }); +BaseModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BaseModule, providers: [Service] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BaseModule, decorators: [{ + type: NgModule, + args: [{ providers: [Service] }] + }], ctorParameters: function () { return [{ type: Service }]; } }); export class BasicModule extends BaseModule { } -BasicModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BasicModule, deps: null, target: i0.ɵɵFactoryTarget.NgModule }); -BasicModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BasicModule }); -BasicModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BasicModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BasicModule, [{ - type: NgModule, - args: [{}] - }], null, null); })(); +BasicModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BasicModule, deps: null, target: i0.ɵɵFactoryTarget.NgModule }); +BasicModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BasicModule }); +BasicModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BasicModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BasicModule, decorators: [{ + type: NgModule, + args: [{}] + }] }); /**************************************************************************************************** * PARTIAL FILE: inheritance.d.ts @@ -501,7 +501,7 @@ BasicModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngI import * as i0 from "@angular/core"; export declare class Service { static ɵfac: i0.ɵɵFactoryDeclaration; - static ɵprov: i0.ɵɵInjectableDef; + static ɵprov: i0.ɵɵInjectableDeclaration; } export declare class BaseModule { private service; @@ -526,21 +526,21 @@ export function provideModule() { } export class TestModule { } -TestModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -TestModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestModule, imports: function () { return [ForwardModule]; } }); -TestModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestModule, imports: [[provideModule()]] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestModule, [{ - type: NgModule, - args: [{ imports: [provideModule()] }] - }], null, null); })(); +TestModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +TestModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestModule, imports: function () { return [ForwardModule]; } }); +TestModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestModule, imports: [[provideModule()]] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestModule, decorators: [{ + type: NgModule, + args: [{ imports: [provideModule()] }] + }] }); export class ForwardModule { } -ForwardModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ForwardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -ForwardModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ForwardModule }); -ForwardModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ForwardModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ForwardModule, [{ - type: NgModule - }], null, null); })(); +ForwardModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ForwardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +ForwardModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ForwardModule }); +ForwardModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ForwardModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ForwardModule, decorators: [{ + type: NgModule + }] }); /**************************************************************************************************** * PARTIAL FILE: forward_refs.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/GOLDEN_PARTIAL.js index a887d6301e..5a7f4fcb5d 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/GOLDEN_PARTIAL.js @@ -8,39 +8,39 @@ export class MyApp { this.list = []; } } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: '', isInline: true, components: [{ type: i0.forwardRef(function () { return TodoComponent; }), selector: "todo", inputs: ["data"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ selector: 'my-app', template: '' }] - }], null, null); })(); +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: '', isInline: true, components: [{ type: i0.forwardRef(function () { return TodoComponent; }), selector: "todo", inputs: ["data"] }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ selector: 'my-app', template: '' }] + }] }); export class TodoComponent { constructor() { this.data = []; } } -TodoComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TodoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TodoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TodoComponent, selector: "todo", inputs: { data: "data" }, ngImport: i0, template: '
  • {{data}}
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TodoComponent, [{ - type: Component, - args: [{ - selector: 'todo', - template: '
  • {{data}}
' - }] - }], null, { data: [{ - type: Input - }] }); })(); +TodoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TodoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TodoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TodoComponent, selector: "todo", inputs: { data: "data" }, ngImport: i0, template: '
  • {{data}}
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TodoComponent, decorators: [{ + type: Component, + args: [{ + selector: 'todo', + template: '
  • {{data}}
' + }] + }], propDecorators: { data: [{ + type: Input + }] } }); export class TodoModule { } -TodoModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TodoModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -TodoModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TodoModule, declarations: [TodoComponent, MyApp] }); -TodoModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TodoModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TodoModule, [{ - type: NgModule, - args: [{ - declarations: [TodoComponent, MyApp], - }] - }], null, null); })(); +TodoModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TodoModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +TodoModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TodoModule, declarations: [TodoComponent, MyApp] }); +TodoModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TodoModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TodoModule, decorators: [{ + type: NgModule, + args: [{ + declarations: [TodoComponent, MyApp], + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: todo_example.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/animations/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/animations/GOLDEN_PARTIAL.js index 1af13a8ee8..40995a8da6 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/animations/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/animations/GOLDEN_PARTIAL.js @@ -5,21 +5,21 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyApp { } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ selector: 'my-app', template: '
' }] - }], null, null); })(); +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ selector: 'my-app', template: '
' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyApp] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyApp] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyApp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: static_animation_attribute.d.ts @@ -44,24 +44,24 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyApp { } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ - selector: 'my-app', - template: '
' - }] - }], null, null); })(); +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + template: '
' + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyApp] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyApp] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyApp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: duplicate_animation_listeners.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/any/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/any/GOLDEN_PARTIAL.js index d141832d1b..6cea3fcdcc 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/any/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/any/GOLDEN_PARTIAL.js @@ -5,12 +5,12 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; class Comp { } -Comp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Comp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -Comp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: Comp, selector: "ng-component", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Comp, [{ - type: Component, - args: [{ template: '
' }] - }], null, null); })(); +Comp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Comp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +Comp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: Comp, selector: "ng-component", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Comp, decorators: [{ + type: Component, + args: [{ template: '
' }] + }] }); /**************************************************************************************************** * PARTIAL FILE: basic_any_cast.d.ts @@ -27,12 +27,12 @@ class Comp { return value; } } -Comp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Comp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -Comp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: Comp, selector: "ng-component", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Comp, [{ - type: Component, - args: [{ template: '
' }] - }], null, null); })(); +Comp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Comp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +Comp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: Comp, selector: "ng-component", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Comp, decorators: [{ + type: Component, + args: [{ template: '
' }] + }] }); /**************************************************************************************************** * PARTIAL FILE: this_any_access.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/hello_world/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/hello_world/GOLDEN_PARTIAL.js index d61f981f48..981a497966 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/hello_world/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/hello_world/GOLDEN_PARTIAL.js @@ -12,26 +12,26 @@ class GreeterEN { } export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", providers: [GreeterEN, { provide: Greeter, useClass: GreeterEN }], ngImport: i0, template: '
', isInline: true, viewProviders: [GreeterEN] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: '
', - providers: [GreeterEN, { provide: Greeter, useClass: GreeterEN }], - viewProviders: [GreeterEN] - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", providers: [GreeterEN, { provide: Greeter, useClass: GreeterEN }], ngImport: i0, template: '
', isInline: true, viewProviders: [GreeterEN] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: '
', + providers: [GreeterEN, { provide: Greeter, useClass: GreeterEN }], + viewProviders: [GreeterEN] + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: test.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/interpolations/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/interpolations/GOLDEN_PARTIAL.js index 5cb9b35824..c5dba0d78a 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/interpolations/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/interpolations/GOLDEN_PARTIAL.js @@ -8,24 +8,24 @@ export class MyApp { this.list = []; } } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: ' {{list[0]}} {{list[1]}} {{list[2]}} {{list[3]}} {{list[4]}} {{list[5]}} {{list[6]}} {{list[7]}} {{list[8]}} ', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ - selector: 'my-app', - template: ' {{list[0]}} {{list[1]}} {{list[2]}} {{list[3]}} {{list[4]}} {{list[5]}} {{list[6]}} {{list[7]}} {{list[8]}} ' - }] - }], null, null); })(); +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: ' {{list[0]}} {{list[1]}} {{list[2]}} {{list[3]}} {{list[4]}} {{list[5]}} {{list[6]}} {{list[7]}} {{list[8]}} ', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + template: ' {{list[0]}} {{list[1]}} {{list[2]}} {{list[3]}} {{list[4]}} {{list[5]}} {{list[6]}} {{list[7]}} {{list[8]}} ' + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyApp] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyApp] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyApp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: test.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/GOLDEN_PARTIAL.js new file mode 100644 index 0000000000..9cbffc6539 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/GOLDEN_PARTIAL.js @@ -0,0 +1,164 @@ +/**************************************************************************************************** + * PARTIAL FILE: nullish_coalescing_interpolation.js + ****************************************************************************************************/ +import { Component, NgModule } from '@angular/core'; +import * as i0 from "@angular/core"; +export class MyApp { + constructor() { + this.firstName = null; + this.lastName = null; + this.lastNameFallback = 'Baggins'; + } +} +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: ` +
Hello, {{ firstName ?? 'Frodo' }}!
+ Your last name is {{ lastName ?? lastNameFallback ?? 'unknown' }} + `, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + template: ` +
Hello, {{ firstName ?? 'Frodo' }}!
+ Your last name is {{ lastName ?? lastNameFallback ?? 'unknown' }} + ` + }] + }] }); +export class MyModule { +} +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyApp] }] + }] }); + +/**************************************************************************************************** + * PARTIAL FILE: nullish_coalescing_interpolation.d.ts + ****************************************************************************************************/ +import * as i0 from "@angular/core"; +export declare class MyApp { + firstName: string | null; + lastName: string | null; + lastNameFallback: string; + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵcmp: i0.ɵɵComponentDeclaration; +} +export declare class MyModule { + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵinj: i0.ɵɵInjectorDeclaration; +} + +/**************************************************************************************************** + * PARTIAL FILE: nullish_coalescing_property.js + ****************************************************************************************************/ +import { Component, NgModule } from '@angular/core'; +import * as i0 from "@angular/core"; +export class MyApp { + constructor() { + this.firstName = null; + this.lastName = null; + this.lastNameFallback = 'Baggins'; + } +} +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: ` +
+ + `, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + template: ` +
+ + ` + }] + }] }); +export class MyModule { +} +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyApp] }] + }] }); + +/**************************************************************************************************** + * PARTIAL FILE: nullish_coalescing_property.d.ts + ****************************************************************************************************/ +import * as i0 from "@angular/core"; +export declare class MyApp { + firstName: string | null; + lastName: string | null; + lastNameFallback: string; + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵcmp: i0.ɵɵComponentDeclaration; +} +export declare class MyModule { + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵinj: i0.ɵɵInjectorDeclaration; +} + +/**************************************************************************************************** + * PARTIAL FILE: nullish_coalescing_host.js + ****************************************************************************************************/ +import { Component, NgModule } from '@angular/core'; +import * as i0 from "@angular/core"; +export class MyApp { + constructor() { + this.firstName = null; + this.lastName = null; + this.lastNameFallback = 'Baggins'; + } + logLastName(name) { + console.log(name); + } +} +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", host: { listeners: { "click": "logLastName(lastName ?? lastNameFallback ?? 'unknown')" }, properties: { "attr.first-name": "'Hello, ' + (firstName ?? 'Frodo') + '!'" } }, ngImport: i0, template: ``, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + host: { + '[attr.first-name]': `'Hello, ' + (firstName ?? 'Frodo') + '!'`, + '(click)': `logLastName(lastName ?? lastNameFallback ?? 'unknown')` + }, + template: `` + }] + }] }); +export class MyModule { +} +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyApp] }] + }] }); + +/**************************************************************************************************** + * PARTIAL FILE: nullish_coalescing_host.d.ts + ****************************************************************************************************/ +import * as i0 from "@angular/core"; +export declare class MyApp { + firstName: string | null; + lastName: string | null; + lastNameFallback: string; + logLastName(name: string): void; + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵcmp: i0.ɵɵComponentDeclaration; +} +export declare class MyModule { + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵinj: i0.ɵɵInjectorDeclaration; +} + diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/TEST_CASES.json b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/TEST_CASES.json new file mode 100644 index 0000000000..94a9e45c03 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/TEST_CASES.json @@ -0,0 +1,56 @@ +{ + "$schema": "../../test_case_schema.json", + "cases": [ + { + "description": "should handle nullish coalescing inside interpolations", + "inputFiles": [ + "nullish_coalescing_interpolation.ts" + ], + "expectations": [ + { + "files": [ + { + "expected": "nullish_coalescing_interpolation_template.js", + "generated": "nullish_coalescing_interpolation.js" + } + ], + "failureMessage": "Incorrect template" + } + ] + }, + { + "description": "should handle nullish coalescing inside property bindings", + "inputFiles": [ + "nullish_coalescing_property.ts" + ], + "expectations": [ + { + "files": [ + { + "expected": "nullish_coalescing_property_template.js", + "generated": "nullish_coalescing_property.js" + } + ], + "failureMessage": "Incorrect template" + } + ] + }, + { + "description": "should handle nullish coalescing inside host bindings", + "inputFiles": [ + "nullish_coalescing_host.ts" + ], + "expectations": [ + { + "files": [ + { + "expected": "nullish_coalescing_host_bindings.js", + "generated": "nullish_coalescing_host.js" + } + ], + "failureMessage": "Incorrect host bindings" + } + ] + } + ] +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/nullish_coalescing_host.ts b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/nullish_coalescing_host.ts new file mode 100644 index 0000000000..c7401612bc --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/nullish_coalescing_host.ts @@ -0,0 +1,23 @@ +import {Component, NgModule} from '@angular/core'; + +@Component({ + selector: 'my-app', + host: { + '[attr.first-name]': `'Hello, ' + (firstName ?? 'Frodo') + '!'`, + '(click)': `logLastName(lastName ?? lastNameFallback ?? 'unknown')` + }, + template: `` +}) +export class MyApp { + firstName: string|null = null; + lastName: string|null = null; + lastNameFallback = 'Baggins'; + + logLastName(name: string) { + console.log(name); + } +} + +@NgModule({declarations: [MyApp]}) +export class MyModule { +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/nullish_coalescing_host_bindings.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/nullish_coalescing_host_bindings.js new file mode 100644 index 0000000000..0205b73b78 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/nullish_coalescing_host_bindings.js @@ -0,0 +1,12 @@ +hostBindings: function MyApp_HostBindings(rf, ctx) { + if (rf & 1) { + i0.ɵɵlistener("click", function MyApp_click_HostBindingHandler() { + let $tmp$; + return ctx.logLastName(($tmp$ = ($tmp$ = ctx.lastName) !== null && $tmp$ !== undefined ? $tmp$ : ctx.lastNameFallback) !== null && $tmp$ !== undefined ? $tmp$ : "unknown"); + }); + } + if (rf & 2) { + let $tmp$; + i0.ɵɵattribute("first-name", "Hello, " + (($tmp$ = ctx.firstName) !== null && $tmp$ !== undefined ? $tmp$ : "Frodo") + "!"); + } +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/nullish_coalescing_interpolation.ts b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/nullish_coalescing_interpolation.ts new file mode 100644 index 0000000000..1e0903b78a --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/nullish_coalescing_interpolation.ts @@ -0,0 +1,18 @@ +import {Component, NgModule} from '@angular/core'; + +@Component({ + selector: 'my-app', + template: ` +
Hello, {{ firstName ?? 'Frodo' }}!
+ Your last name is {{ lastName ?? lastNameFallback ?? 'unknown' }} + ` +}) +export class MyApp { + firstName: string|null = null; + lastName: string|null = null; + lastNameFallback = 'Baggins'; +} + +@NgModule({declarations: [MyApp]}) +export class MyModule { +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/nullish_coalescing_interpolation_template.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/nullish_coalescing_interpolation_template.js new file mode 100644 index 0000000000..f49392a339 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/nullish_coalescing_interpolation_template.js @@ -0,0 +1,18 @@ +template: function MyApp_Template(rf, ctx) { + if (rf & 1) { + i0.ɵɵelementStart(0, "div"); + i0.ɵɵtext(1); + i0.ɵɵelementEnd(); + i0.ɵɵelementStart(2, "span"); + i0.ɵɵtext(3); + i0.ɵɵelementEnd(); + } + if (rf & 2) { + let $tmp_0_0$; + let $tmp_1_0$; + i0.ɵɵadvance(1); + i0.ɵɵtextInterpolate1("Hello, ", ($tmp_0_0$ = ctx.firstName) !== null && $tmp_0_0$ !== undefined ? $tmp_0_0$ : "Frodo", "!"); + i0.ɵɵadvance(2); + i0.ɵɵtextInterpolate1("Your last name is ", ($tmp_1_0$ = ($tmp_1_0$ = ctx.lastName) !== null && $tmp_1_0$ !== undefined ? $tmp_1_0$ : ctx.lastNameFallback) !== null && $tmp_1_0$ !== undefined ? $tmp_1_0$ : "unknown", ""); + } +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/nullish_coalescing_property.ts b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/nullish_coalescing_property.ts new file mode 100644 index 0000000000..76ed5869c2 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/nullish_coalescing_property.ts @@ -0,0 +1,18 @@ +import {Component, NgModule} from '@angular/core'; + +@Component({ + selector: 'my-app', + template: ` +
+ + ` +}) +export class MyApp { + firstName: string|null = null; + lastName: string|null = null; + lastNameFallback = 'Baggins'; +} + +@NgModule({declarations: [MyApp]}) +export class MyModule { +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/nullish_coalescing_property_template.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/nullish_coalescing_property_template.js new file mode 100644 index 0000000000..fbd91fb061 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/nullish_coalescing/nullish_coalescing_property_template.js @@ -0,0 +1,13 @@ +template: function MyApp_Template(rf, ctx) { + if (rf & 1) { + i0.ɵɵelement(0, "div", 0); + i0.ɵɵelement(1, "span", 0); + } + if (rf & 2) { + let $tmp_0_0$; + let $tmp_1_0$; + i0.ɵɵproperty("title", "Hello, " + (($tmp_0_0$ = ctx.firstName) !== null && $tmp_0_0$ !== undefined ? $tmp_0_0$ : "Frodo") + "!"); + i0.ɵɵadvance(1); + i0.ɵɵproperty("title", ($tmp_1_0$ = ($tmp_1_0$ = "Your last name is " + ctx.lastName) !== null && $tmp_1_0$ !== undefined ? $tmp_1_0$ : ctx.lastNameFallback) !== null && $tmp_1_0$ !== undefined ? $tmp_1_0$ : "unknown"); + } +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/safe_access/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/safe_access/GOLDEN_PARTIAL.js new file mode 100644 index 0000000000..53a62c187e --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/safe_access/GOLDEN_PARTIAL.js @@ -0,0 +1,65 @@ +/**************************************************************************************************** + * PARTIAL FILE: safe_keyed_read.js + ****************************************************************************************************/ +import { Component, NgModule } from '@angular/core'; +import * as i0 from "@angular/core"; +export class MyApp { + constructor() { + this.unknownNames = null; + this.knownNames = [['Frodo', 'Bilbo']]; + this.species = null; + this.keys = null; + this.speciesMap = { key: 'unknown' }; + } +} +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "ng-component", ngImport: i0, template: ` + + Hello, {{ knownNames?.[0]?.[1] }}! + You are a Balrog: {{ species?.[0]?.[1]?.[2]?.[3]?.[4]?.[5] || 'unknown' }} + You are an Elf: {{ speciesMap?.[keys?.[0] ?? 'key'] }} + You are an Orc: {{ speciesMap?.['key'] }} + +`, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ + template: ` + + Hello, {{ knownNames?.[0]?.[1] }}! + You are a Balrog: {{ species?.[0]?.[1]?.[2]?.[3]?.[4]?.[5] || 'unknown' }} + You are an Elf: {{ speciesMap?.[keys?.[0] ?? 'key'] }} + You are an Orc: {{ speciesMap?.['key'] }} + +` + }] + }] }); +export class MyModule { +} +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyApp] }] + }] }); + +/**************************************************************************************************** + * PARTIAL FILE: safe_keyed_read.d.ts + ****************************************************************************************************/ +import * as i0 from "@angular/core"; +export declare class MyApp { + unknownNames: string[] | null; + knownNames: string[][]; + species: null; + keys: null; + speciesMap: Record; + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵcmp: i0.ɵɵComponentDeclaration; +} +export declare class MyModule { + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵinj: i0.ɵɵInjectorDeclaration; +} + diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/safe_access/TEST_CASES.json b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/safe_access/TEST_CASES.json new file mode 100644 index 0000000000..d81f51d15d --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/safe_access/TEST_CASES.json @@ -0,0 +1,22 @@ +{ + "$schema": "../../test_case_schema.json", + "cases": [ + { + "description": "should handle safe keyed reads inside templates", + "inputFiles": [ + "safe_keyed_read.ts" + ], + "expectations": [ + { + "files": [ + { + "expected": "safe_keyed_read_template.js", + "generated": "safe_keyed_read.js" + } + ], + "failureMessage": "Incorrect template" + } + ] + } + ] +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/safe_access/safe_keyed_read.ts b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/safe_access/safe_keyed_read.ts new file mode 100644 index 0000000000..12bfd43564 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/safe_access/safe_keyed_read.ts @@ -0,0 +1,23 @@ +import {Component, NgModule} from '@angular/core'; + +@Component({ + template: ` + + Hello, {{ knownNames?.[0]?.[1] }}! + You are a Balrog: {{ species?.[0]?.[1]?.[2]?.[3]?.[4]?.[5] || 'unknown' }} + You are an Elf: {{ speciesMap?.[keys?.[0] ?? 'key'] }} + You are an Orc: {{ speciesMap?.['key'] }} + +` +}) +export class MyApp { + unknownNames: string[]|null = null; + knownNames: string[][] = [['Frodo', 'Bilbo']]; + species = null; + keys = null; + speciesMap: Record = {key: 'unknown'}; +} + +@NgModule({declarations: [MyApp]}) +export class MyModule { +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/safe_access/safe_keyed_read_template.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/safe_access/safe_keyed_read_template.js new file mode 100644 index 0000000000..b22f78118f --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler/safe_access/safe_keyed_read_template.js @@ -0,0 +1,13 @@ +template: function MyApp_Template(rf, ctx) { + if (rf & 1) { + i0.ɵɵelementStart(0, "span", 0); + i0.ɵɵtext(1); + i0.ɵɵelementEnd(); + } + if (rf & 2) { + let $tmp_0_0$; + i0.ɵɵproperty("title", "Your last name is " + ((ctx.unknownNames == null ? null : ctx.unknownNames[0]) || "unknown")); + i0.ɵɵadvance(1); + i0.ɵɵtextInterpolate4(" Hello, ", ctx.knownNames == null ? null : ctx.knownNames[0] == null ? null : ctx.knownNames[0][1], "! You are a Balrog: ", (ctx.species == null ? null : ctx.species[0] == null ? null : ctx.species[0][1] == null ? null : ctx.species[0][1][2] == null ? null : ctx.species[0][1][2][3] == null ? null : ctx.species[0][1][2][3][4] == null ? null : ctx.species[0][1][2][3][4][5]) || "unknown", " You are an Elf: ", ctx.speciesMap == null ? null : ctx.speciesMap[($tmp_0_0$ = ctx.keys == null ? null : ctx.keys[0]) !== null && $tmp_0_0$ !== undefined ? $tmp_0_0$ : "key"], " You are an Orc: ", ctx.speciesMap == null ? null : ctx.speciesMap["key"], " "); + } +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/attribute_bindings/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/attribute_bindings/GOLDEN_PARTIAL.js index 8973630743..997ae4dcdf 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/attribute_bindings/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/attribute_bindings/GOLDEN_PARTIAL.js @@ -9,18 +9,18 @@ export class MyComponent { this.buttonId = 'special-button'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + template: ` ` - }] - }], null, null); })(); + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: chain_multiple_bindings.d.ts @@ -44,18 +44,18 @@ export class MyComponent { this.buttonId = 'special-button'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + template: ` ` - }] - }], null, null); })(); + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: chain_multiple_single_interpolation.d.ts @@ -75,20 +75,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + template: ` ` - }] - }], null, null); })(); + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: chain_multiple_bindings_mixed.d.ts @@ -106,24 +106,24 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + template: ` ` - }] - }], null, null); })(); + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: chain_bindings_with_interpolations.d.ts @@ -141,43 +141,43 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class CustomEl { } -CustomEl.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: CustomEl, deps: [], target: i0.ɵɵFactoryTarget.Component }); -CustomEl.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: CustomEl, selector: "custom-element", ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CustomEl, [{ - type: Component, - args: [{ selector: 'custom-element', template: '' }] - }], null, null); })(); +CustomEl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: CustomEl, deps: [], target: i0.ɵɵFactoryTarget.Component }); +CustomEl.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: CustomEl, selector: "custom-element", ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: CustomEl, decorators: [{ + type: Component, + args: [{ selector: 'custom-element', template: '' }] + }] }); export class MyComponent { constructor() { this.myTitle = 'hello'; this.buttonId = 'special-button'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` `, isInline: true, components: [{ type: CustomEl, selector: "custom-element" }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + template: ` ` - }] - }], null, null); })(); + }] + }] }); export class MyMod { } -MyMod.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyMod.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, declarations: [MyComponent, CustomEl] }); -MyMod.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyMod, [{ - type: NgModule, - args: [{ declarations: [MyComponent, CustomEl] }] - }], null, null); })(); +MyMod.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyMod.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, declarations: [MyComponent, CustomEl] }); +MyMod.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent, CustomEl] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: chain_multiple_bindings_for_multiple_elements.d.ts @@ -210,20 +210,20 @@ export class MyComponent { this.buttonId = 'special-button'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + template: ` ` - }] - }], null, null); })(); + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: chain_multiple_bindings_with_child_elements.d.ts @@ -244,8 +244,8 @@ import * as i0 from "@angular/core"; export class MyComponent { doThings() { } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-app", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-app', - template: `` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: exclude_bindings_from_consts.d.ts @@ -305,8 +305,8 @@ export class MyComponent { this.name = 'John Doe'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-app", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-app", ngImport: i0, template: `
@@ -318,11 +318,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-app', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + template: `
@@ -334,17 +334,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: interpolated_attributes.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/host_bindings/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/host_bindings/GOLDEN_PARTIAL.js index d0cbc897c1..e05670af75 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/host_bindings/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/host_bindings/GOLDEN_PARTIAL.js @@ -8,24 +8,24 @@ export class HostBindingDir { this.dirId = 'some id'; } } -HostBindingDir.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostBindingDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -HostBindingDir.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: HostBindingDir, selector: "[hostBindingDir]", host: { properties: { "id": "this.dirId" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HostBindingDir, [{ - type: Directive, - args: [{ selector: '[hostBindingDir]' }] - }], null, { dirId: [{ - type: HostBinding, - args: ['id'] - }] }); })(); +HostBindingDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostBindingDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +HostBindingDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: HostBindingDir, selector: "[hostBindingDir]", host: { properties: { "id": "this.dirId" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostBindingDir, decorators: [{ + type: Directive, + args: [{ selector: '[hostBindingDir]' }] + }], propDecorators: { dirId: [{ + type: HostBinding, + args: ['id'] + }] } }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [HostBindingDir] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [HostBindingDir] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [HostBindingDir] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [HostBindingDir] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: host_bindings.d.ts @@ -49,21 +49,21 @@ import { Directive, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class HostBindingDir { } -HostBindingDir.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostBindingDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -HostBindingDir.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: HostBindingDir, selector: "[hostBindingDir]", host: { properties: { "id": "getData()?.id" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HostBindingDir, [{ - type: Directive, - args: [{ selector: '[hostBindingDir]', host: { '[id]': 'getData()?.id' } }] - }], null, null); })(); +HostBindingDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostBindingDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +HostBindingDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: HostBindingDir, selector: "[hostBindingDir]", host: { properties: { "id": "getData()?.id" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostBindingDir, decorators: [{ + type: Directive, + args: [{ selector: '[hostBindingDir]', host: { '[id]': 'getData()?.id' } }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [HostBindingDir] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [HostBindingDir] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [HostBindingDir] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [HostBindingDir] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: host_bindings_with_temporaries.d.ts @@ -92,21 +92,21 @@ export class HostBindingComp { this.id = 'some id'; } } -HostBindingComp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostBindingComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -HostBindingComp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: HostBindingComp, selector: "host-binding-comp", host: { properties: { "id": "[\"red\", id]" } }, ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HostBindingComp, [{ - type: Component, - args: [{ selector: 'host-binding-comp', host: { '[id]': '["red", id]' }, template: '' }] - }], null, null); })(); +HostBindingComp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostBindingComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +HostBindingComp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: HostBindingComp, selector: "host-binding-comp", host: { properties: { "id": "[\"red\", id]" } }, ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostBindingComp, decorators: [{ + type: Component, + args: [{ selector: 'host-binding-comp', host: { '[id]': '["red", id]' }, template: '' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [HostBindingComp] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [HostBindingComp] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [HostBindingComp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [HostBindingComp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: host_bindings_with_pure_functions.d.ts @@ -133,21 +133,21 @@ export class HostAttributeDir { this.required = true; } } -HostAttributeDir.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostAttributeDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -HostAttributeDir.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: HostAttributeDir, selector: "[hostAttributeDir]", host: { properties: { "attr.required": "required" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HostAttributeDir, [{ - type: Directive, - args: [{ selector: '[hostAttributeDir]', host: { '[attr.required]': 'required' } }] - }], null, null); })(); +HostAttributeDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostAttributeDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +HostAttributeDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: HostAttributeDir, selector: "[hostAttributeDir]", host: { properties: { "attr.required": "required" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostAttributeDir, decorators: [{ + type: Directive, + args: [{ selector: '[hostAttributeDir]', host: { '[attr.required]': 'required' } }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [HostAttributeDir] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [HostAttributeDir] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [HostAttributeDir] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [HostAttributeDir] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: host_attribute_bindings.d.ts @@ -171,21 +171,21 @@ import { Directive, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class HostAttributeDir { } -HostAttributeDir.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostAttributeDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -HostAttributeDir.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: HostAttributeDir, selector: "[hostAttributeDir]", host: { attributes: { "aria-label": "label" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HostAttributeDir, [{ - type: Directive, - args: [{ selector: '[hostAttributeDir]', host: { 'aria-label': 'label' } }] - }], null, null); })(); +HostAttributeDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostAttributeDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +HostAttributeDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: HostAttributeDir, selector: "[hostAttributeDir]", host: { attributes: { "aria-label": "label" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostAttributeDir, decorators: [{ + type: Directive, + args: [{ selector: '[hostAttributeDir]', host: { 'aria-label': 'label' } }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [HostAttributeDir] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [HostAttributeDir] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [HostAttributeDir] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [HostAttributeDir] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: host_attributes.d.ts @@ -208,42 +208,42 @@ import { Component, Directive, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class HostAttributeComp { } -HostAttributeComp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostAttributeComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -HostAttributeComp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: HostAttributeComp, selector: "my-host-attribute-component", host: { attributes: { "title": "hello there from component" }, styleAttribute: "opacity:1" }, ngImport: i0, template: '...', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HostAttributeComp, [{ - type: Component, - args: [{ - selector: 'my-host-attribute-component', - template: '...', - host: { 'title': 'hello there from component', 'style': 'opacity:1' } - }] - }], null, null); })(); +HostAttributeComp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostAttributeComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +HostAttributeComp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: HostAttributeComp, selector: "my-host-attribute-component", host: { attributes: { "title": "hello there from component" }, styleAttribute: "opacity:1" }, ngImport: i0, template: '...', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostAttributeComp, decorators: [{ + type: Component, + args: [{ + selector: 'my-host-attribute-component', + template: '...', + host: { 'title': 'hello there from component', 'style': 'opacity:1' } + }] + }] }); export class HostAttributeDir { } -HostAttributeDir.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostAttributeDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -HostAttributeDir.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: HostAttributeDir, selector: "[hostAttributeDir]", host: { attributes: { "title": "hello there from directive" }, properties: { "style.opacity": "true", "class.three": "true" }, styleAttribute: "width: 200px; height: 500px", classAttribute: "one two" }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HostAttributeDir, [{ - type: Directive, - args: [{ - selector: '[hostAttributeDir]', - host: { - 'style': 'width: 200px; height: 500px', - '[style.opacity]': 'true', - 'class': 'one two', - '[class.three]': 'true', - 'title': 'hello there from directive', - } - }] - }], null, null); })(); +HostAttributeDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostAttributeDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +HostAttributeDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: HostAttributeDir, selector: "[hostAttributeDir]", host: { attributes: { "title": "hello there from directive" }, properties: { "style.opacity": "true", "class.three": "true" }, styleAttribute: "width: 200px; height: 500px", classAttribute: "one two" }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostAttributeDir, decorators: [{ + type: Directive, + args: [{ + selector: '[hostAttributeDir]', + host: { + 'style': 'width: 200px; height: 500px', + '[style.opacity]': 'true', + 'class': 'one two', + '[class.three]': 'true', + 'title': 'hello there from directive', + } + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [HostAttributeComp, HostAttributeDir] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [HostAttributeComp, HostAttributeDir] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [HostAttributeComp, HostAttributeDir] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [HostAttributeComp, HostAttributeDir] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: host_attributes_with_classes_and_styles.d.ts @@ -274,12 +274,12 @@ export class MyDirective { this.myId = 'special-directive'; } } -MyDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -MyDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: MyDirective, selector: "[my-dir]", host: { properties: { "title": "myTitle", "tabindex": "1", "id": "myId" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyDirective, [{ - type: Directive, - args: [{ selector: '[my-dir]', host: { '[title]': 'myTitle', '[tabindex]': '1', '[id]': 'myId' } }] - }], null, null); })(); +MyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +MyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyDirective, selector: "[my-dir]", host: { properties: { "title": "myTitle", "tabindex": "1", "id": "myId" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, decorators: [{ + type: Directive, + args: [{ selector: '[my-dir]', host: { '[title]': 'myTitle', '[tabindex]': '1', '[id]': 'myId' } }] + }] }); /**************************************************************************************************** * PARTIAL FILE: chain_multiple_property_bindings.d.ts @@ -303,18 +303,18 @@ export class MyDirective { this.myId = 'special-directive'; } } -MyDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -MyDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: MyDirective, selector: "[my-dir]", host: { properties: { "tabindex": "1", "title": "this.myTitle", "id": "this.myId" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyDirective, [{ - type: Directive, - args: [{ selector: '[my-dir]', host: { '[tabindex]': '1' } }] - }], null, { myTitle: [{ - type: HostBinding, - args: ['title'] - }], myId: [{ - type: HostBinding, - args: ['id'] - }] }); })(); +MyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +MyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyDirective, selector: "[my-dir]", host: { properties: { "tabindex": "1", "title": "this.myTitle", "id": "this.myId" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, decorators: [{ + type: Directive, + args: [{ selector: '[my-dir]', host: { '[tabindex]': '1' } }] + }], propDecorators: { myTitle: [{ + type: HostBinding, + args: ['title'] + }], myId: [{ + type: HostBinding, + args: ['id'] + }] } }); /**************************************************************************************************** * PARTIAL FILE: chain_property_bindings_all.d.ts @@ -334,15 +334,15 @@ import { Directive } from '@angular/core'; import * as i0 from "@angular/core"; export class MyDirective { } -MyDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -MyDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: MyDirective, selector: "[my-dir]", host: { properties: { "title": "\"my title\"", "attr.tabindex": "1", "id": "\"my-id\"" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyDirective, [{ - type: Directive, - args: [{ - selector: '[my-dir]', - host: { '[title]': '"my title"', '[attr.tabindex]': '1', '[id]': '"my-id"' } - }] - }], null, null); })(); +MyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +MyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyDirective, selector: "[my-dir]", host: { properties: { "title": "\"my title\"", "attr.tabindex": "1", "id": "\"my-id\"" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, decorators: [{ + type: Directive, + args: [{ + selector: '[my-dir]', + host: { '[title]': '"my title"', '[attr.tabindex]': '1', '[id]': '"my-id"' } + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: chain_property_bindings_mixed.d.ts @@ -364,15 +364,15 @@ export class MyDirective { this.isSmall = true; } } -MyDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -MyDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: MyDirective, selector: "[my-dir]", host: { properties: { "@expand": "expandedState", "@fadeOut": "true", "@shrink": "isSmall" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyDirective, [{ - type: Directive, - args: [{ - selector: '[my-dir]', - host: { '[@expand]': 'expandedState', '[@fadeOut]': 'true', '[@shrink]': 'isSmall' } - }] - }], null, null); })(); +MyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +MyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyDirective, selector: "[my-dir]", host: { properties: { "@expand": "expandedState", "@fadeOut": "true", "@shrink": "isSmall" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, decorators: [{ + type: Directive, + args: [{ + selector: '[my-dir]', + host: { '[@expand]': 'expandedState', '[@fadeOut]': 'true', '[@shrink]': 'isSmall' } + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: chain_synthetic_properties.d.ts @@ -396,15 +396,15 @@ export class MyDirective { this.myId = 'special-directive'; } } -MyDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -MyDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: MyDirective, selector: "[my-dir]", host: { properties: { "attr.title": "myTitle", "attr.tabindex": "1", "attr.id": "myId" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyDirective, [{ - type: Directive, - args: [{ - selector: '[my-dir]', - host: { '[attr.title]': 'myTitle', '[attr.tabindex]': '1', '[attr.id]': 'myId' } - }] - }], null, null); })(); +MyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +MyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyDirective, selector: "[my-dir]", host: { properties: { "attr.title": "myTitle", "attr.tabindex": "1", "attr.id": "myId" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, decorators: [{ + type: Directive, + args: [{ + selector: '[my-dir]', + host: { '[attr.title]': 'myTitle', '[attr.tabindex]': '1', '[attr.id]': 'myId' } + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: chain_multiple_attribute_bindings.d.ts @@ -428,18 +428,18 @@ export class MyDirective { this.myId = 'special-directive'; } } -MyDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -MyDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: MyDirective, selector: "[my-dir]", host: { properties: { "attr.tabindex": "1", "attr.title": "this.myTitle", "attr.id": "this.myId" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyDirective, [{ - type: Directive, - args: [{ selector: '[my-dir]', host: { '[attr.tabindex]': '1' } }] - }], null, { myTitle: [{ - type: HostBinding, - args: ['attr.title'] - }], myId: [{ - type: HostBinding, - args: ['attr.id'] - }] }); })(); +MyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +MyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyDirective, selector: "[my-dir]", host: { properties: { "attr.tabindex": "1", "attr.title": "this.myTitle", "attr.id": "this.myId" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, decorators: [{ + type: Directive, + args: [{ selector: '[my-dir]', host: { '[attr.tabindex]': '1' } }] + }], propDecorators: { myTitle: [{ + type: HostBinding, + args: ['attr.title'] + }], myId: [{ + type: HostBinding, + args: ['attr.id'] + }] } }); /**************************************************************************************************** * PARTIAL FILE: chain_attribute_bindings_all.d.ts @@ -459,15 +459,15 @@ import { Directive } from '@angular/core'; import * as i0 from "@angular/core"; export class MyDirective { } -MyDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -MyDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: MyDirective, selector: "[my-dir]", host: { properties: { "attr.title": "\"my title\"", "tabindex": "1", "attr.id": "\"my-id\"" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyDirective, [{ - type: Directive, - args: [{ - selector: '[my-dir]', - host: { '[attr.title]': '"my title"', '[tabindex]': '1', '[attr.id]': '"my-id"' } - }] - }], null, null); })(); +MyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +MyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyDirective, selector: "[my-dir]", host: { properties: { "attr.title": "\"my title\"", "tabindex": "1", "attr.id": "\"my-id\"" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, decorators: [{ + type: Directive, + args: [{ + selector: '[my-dir]', + host: { '[attr.title]': '"my title"', '[tabindex]': '1', '[attr.id]': '"my-id"' } + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: chain_attribute_bindings_mixed.d.ts @@ -489,21 +489,21 @@ export class MyDirective { click() { } } -MyDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -MyDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: MyDirective, selector: "[my-dir]", host: { listeners: { "mousedown": "mousedown()", "mouseup": "mouseup()", "click": "click()" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyDirective, [{ - type: Directive, - args: [{ - selector: '[my-dir]', - host: { - '(mousedown)': 'mousedown()', - '(mouseup)': 'mouseup()', - } - }] - }], null, { click: [{ - type: HostListener, - args: ['click'] - }] }); })(); +MyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +MyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyDirective, selector: "[my-dir]", host: { listeners: { "mousedown": "mousedown()", "mouseup": "mouseup()", "click": "click()" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, decorators: [{ + type: Directive, + args: [{ + selector: '[my-dir]', + host: { + '(mousedown)': 'mousedown()', + '(mouseup)': 'mouseup()', + } + }] + }], propDecorators: { click: [{ + type: HostListener, + args: ['click'] + }] } }); /**************************************************************************************************** * PARTIAL FILE: chain_multiple_listeners.d.ts @@ -526,21 +526,21 @@ export class MyComponent { start() { } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-comp", host: { listeners: { "@animation.done": "done()", "@animation.start": "start()" } }, ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-comp', - template: '', - host: { - '(@animation.done)': 'done()', - } - }] - }], null, { start: [{ - type: HostListener, - args: ['@animation.start'] - }] }); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-comp", host: { listeners: { "@animation.done": "done()", "@animation.start": "start()" } }, ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-comp', + template: '', + host: { + '(@animation.done)': 'done()', + } + }] + }], propDecorators: { start: [{ + type: HostListener, + args: ['@animation.start'] + }] } }); /**************************************************************************************************** * PARTIAL FILE: chain_synthetic_listeners.d.ts @@ -563,26 +563,26 @@ export class MyComponent { click() { } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-comp", host: { listeners: { "mousedown": "mousedown()", "@animation.done": "done()", "mouseup": "mouseup()", "@animation.start": "start()", "click": "click()" } }, ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-comp', - template: '', - host: { - '(mousedown)': 'mousedown()', - '(@animation.done)': 'done()', - '(mouseup)': 'mouseup()', - } - }] - }], null, { start: [{ - type: HostListener, - args: ['@animation.start'] - }], click: [{ - type: HostListener, - args: ['click'] - }] }); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-comp", host: { listeners: { "mousedown": "mousedown()", "@animation.done": "done()", "mouseup": "mouseup()", "@animation.start": "start()", "click": "click()" } }, ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-comp', + template: '', + host: { + '(mousedown)': 'mousedown()', + '(@animation.done)': 'done()', + '(mouseup)': 'mouseup()', + } + }] + }], propDecorators: { start: [{ + type: HostListener, + args: ['@animation.start'] + }], click: [{ + type: HostListener, + args: ['click'] + }] } }); /**************************************************************************************************** * PARTIAL FILE: chain_synthetic_listeners_mixed.d.ts @@ -602,36 +602,36 @@ import { Directive, HostBinding, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class HostBindingDir { } -HostBindingDir.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostBindingDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -HostBindingDir.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: HostBindingDir, selector: "[hostBindingDir]", host: { properties: { "class.a": "true", "class.b": "false", "class.c": "this.true", "class.d": "this.false", "class.e": "this.other" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HostBindingDir, [{ - type: Directive, - args: [{ - selector: '[hostBindingDir]', - host: { - '[class.a]': 'true', - '[class.b]': 'false', - } - }] - }], null, { true: [{ - type: HostBinding, - args: ['class.c'] - }], false: [{ - type: HostBinding, - args: ['class.d'] - }], other: [{ - type: HostBinding, - args: ['class.e'] - }] }); })(); +HostBindingDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostBindingDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +HostBindingDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: HostBindingDir, selector: "[hostBindingDir]", host: { properties: { "class.a": "true", "class.b": "false", "class.c": "this.true", "class.d": "this.false", "class.e": "this.other" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostBindingDir, decorators: [{ + type: Directive, + args: [{ + selector: '[hostBindingDir]', + host: { + '[class.a]': 'true', + '[class.b]': 'false', + } + }] + }], propDecorators: { true: [{ + type: HostBinding, + args: ['class.c'] + }], false: [{ + type: HostBinding, + args: ['class.d'] + }], other: [{ + type: HostBinding, + args: ['class.e'] + }] } }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [HostBindingDir] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [HostBindingDir] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [HostBindingDir] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [HostBindingDir] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: host_bindings_primitive_names.d.ts @@ -657,30 +657,30 @@ import { Directive, HostBinding, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class HostBindingDir { } -HostBindingDir.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostBindingDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -HostBindingDir.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: HostBindingDir, selector: "[hostBindingDir]", host: { properties: { "class.a": "this['is-a']", "class.b": "this['is-\"b\"']", "class.c": "this['\"is-c\"']" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HostBindingDir, [{ - type: Directive, - args: [{ selector: '[hostBindingDir]' }] - }], null, { 'is-a': [{ - type: HostBinding, - args: ['class.a'] - }], 'is-"b"': [{ - type: HostBinding, - args: ['class.b'] - }], '"is-c"': [{ - type: HostBinding, - args: ['class.c'] - }] }); })(); +HostBindingDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostBindingDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +HostBindingDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: HostBindingDir, selector: "[hostBindingDir]", host: { properties: { "class.a": "this['is-a']", "class.b": "this['is-\"b\"']", "class.c": "this['\"is-c\"']" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HostBindingDir, decorators: [{ + type: Directive, + args: [{ selector: '[hostBindingDir]' }] + }], propDecorators: { 'is-a': [{ + type: HostBinding, + args: ['class.a'] + }], 'is-"b"': [{ + type: HostBinding, + args: ['class.b'] + }], '"is-c"': [{ + type: HostBinding, + args: ['class.c'] + }] } }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [HostBindingDir] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [HostBindingDir] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [HostBindingDir] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [HostBindingDir] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: host_bindings_quoted_names.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/host_bindings/host_bindings_with_temporaries.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/host_bindings/host_bindings_with_temporaries.js index ea3d5a209d..0ae9700180 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/host_bindings/host_bindings_with_temporaries.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/host_bindings/host_bindings_with_temporaries.js @@ -5,7 +5,7 @@ HostBindingDir.ɵdir = /*@__PURE__*/ $r3$.ɵɵdefineDirective({ hostVars: 1, hostBindings: function HostBindingDir_HostBindings(rf, ctx) { if (rf & 2) { - let $tmp0$ = null; + let $tmp0$; $r3$.ɵɵhostProperty("id", ($tmp0$ = ctx.getData()) == null ? null : $tmp0$.id); } } diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/non_bindable_behavior/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/non_bindable_behavior/GOLDEN_PARTIAL.js index afca7dc52f..dd802d6f3e 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/non_bindable_behavior/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/non_bindable_behavior/GOLDEN_PARTIAL.js @@ -8,34 +8,34 @@ export class MyComponent { this.name = 'John Doe'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-app", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-app", ngImport: i0, template: ` Hello {{ name }}! {{ myRef.id }} `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-app', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + template: ` Hello {{ name }}! {{ myRef.id }} ` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: local_ref_on_host.d.ts @@ -62,32 +62,32 @@ export class MyComponent { this.name = 'John Doe'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-app", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-app", ngImport: i0, template: `
{{ myInput.value }}
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-app', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + template: `
{{ myInput.value }}
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: local_ref_on_nested.d.ts @@ -114,32 +114,32 @@ export class MyComponent { this.name = 'John Doe'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-app", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-app", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-app', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: property_bindings_and_listeners.d.ts @@ -166,28 +166,28 @@ export class MyComponent { this.name = 'John Doe'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-app", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-app", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-app', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: no_child_elements.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/property_bindings/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/property_bindings/GOLDEN_PARTIAL.js index f6b666d9dd..7017bb1fce 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/property_bindings/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/property_bindings/GOLDEN_PARTIAL.js @@ -8,21 +8,21 @@ export class MyComponent { this.title = 'Hello World'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-app", ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-app', template: '' }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-app", ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-app', template: '' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: bind.d.ts @@ -49,26 +49,26 @@ export class MyComponent { this.name = 'World'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` ` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: interpolation.d.ts @@ -95,8 +95,8 @@ export class MyComponent { this.name = 'John Doe'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-app", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-app", ngImport: i0, template: `
@@ -108,11 +108,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-app', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + template: `
@@ -124,17 +124,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: interpolated_properties.d.ts @@ -170,26 +170,26 @@ export class MyComponent { this.forValue = 'some-input'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` ` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: special_property_remapping.d.ts @@ -214,12 +214,12 @@ import * as i0 from "@angular/core"; export class AsyncPipe { transform(v) { } } -AsyncPipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AsyncPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -AsyncPipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AsyncPipe, name: "async" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AsyncPipe, [{ - type: Pipe, - args: [{ name: 'async' }] - }], null, null); })(); +AsyncPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AsyncPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +AsyncPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AsyncPipe, name: "async" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AsyncPipe, decorators: [{ + type: Pipe, + args: [{ name: 'async' }] + }] }); // https://github.com/angular/angular/issues/37194 // Verifies that temporary expressions used for expressions with potential side-effects in // the LHS of a safe navigation access are emitted within the binding expression itself, to @@ -231,23 +231,23 @@ export class MyComponent { this.myTitle = 'hello'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true, pipes: { "async": AsyncPipe } }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: '' - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true, pipes: { "async": AsyncPipe } }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + template: '' + }] + }] }); export class MyMod { } -MyMod.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyMod.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, declarations: [MyComponent, AsyncPipe] }); -MyMod.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyMod, [{ - type: NgModule, - args: [{ declarations: [MyComponent, AsyncPipe] }] - }], null, null); })(); +MyMod.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyMod.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, declarations: [MyComponent, AsyncPipe] }); +MyMod.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent, AsyncPipe] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: temporary_variables.d.ts @@ -283,12 +283,12 @@ export class MyComponent { this.buttonId = 'special-button'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ template: '' }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ template: '' }] + }] }); /**************************************************************************************************** * PARTIAL FILE: chain_multiple_bindings.d.ts @@ -308,32 +308,32 @@ import { Component, Directive, Input, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class ButtonDir { } -ButtonDir.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ButtonDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -ButtonDir.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: ButtonDir, selector: "button", inputs: { al: ["aria-label", "al"] }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ButtonDir, [{ - type: Directive, - args: [{ selector: 'button' }] - }], null, { al: [{ - type: Input, - args: ['aria-label'] - }] }); })(); +ButtonDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ButtonDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +ButtonDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: ButtonDir, selector: "button", inputs: { al: ["aria-label", "al"] }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ButtonDir, decorators: [{ + type: Directive, + args: [{ selector: 'button' }] + }], propDecorators: { al: [{ + type: Input, + args: ['aria-label'] + }] } }); export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true, directives: [{ type: ButtonDir, selector: "button", inputs: ["aria-label"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ template: '' }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true, directives: [{ type: ButtonDir, selector: "button", inputs: ["aria-label"] }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ template: '' }] + }] }); export class MyMod { } -MyMod.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyMod.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, declarations: [ButtonDir, MyComponent] }); -MyMod.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyMod, [{ - type: NgModule, - args: [{ declarations: [ButtonDir, MyComponent] }] - }], null, null); })(); +MyMod.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyMod.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, declarations: [ButtonDir, MyComponent] }); +MyMod.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, decorators: [{ + type: NgModule, + args: [{ declarations: [ButtonDir, MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: chain_multiple_bindings_mixed.d.ts @@ -361,34 +361,34 @@ import { Component, Directive, Input, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class ButtonDir { } -ButtonDir.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ButtonDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -ButtonDir.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: ButtonDir, selector: "button", inputs: { al: ["aria-label", "al"] }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ButtonDir, [{ - type: Directive, - args: [{ selector: 'button' }] - }], null, { al: [{ - type: Input, - args: ['aria-label'] - }] }); })(); +ButtonDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ButtonDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +ButtonDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: ButtonDir, selector: "button", inputs: { al: ["aria-label", "al"] }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ButtonDir, decorators: [{ + type: Directive, + args: [{ selector: 'button' }] + }], propDecorators: { al: [{ + type: Input, + args: ['aria-label'] + }] } }); export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true, directives: [{ type: ButtonDir, selector: "button", inputs: ["aria-label"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: '' - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true, directives: [{ type: ButtonDir, selector: "button", inputs: ["aria-label"] }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + template: '' + }] + }] }); export class MyMod { } -MyMod.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyMod.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, declarations: [ButtonDir, MyComponent] }); -MyMod.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyMod, [{ - type: NgModule, - args: [{ declarations: [ButtonDir, MyComponent] }] - }], null, null); })(); +MyMod.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyMod.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, declarations: [ButtonDir, MyComponent] }); +MyMod.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, decorators: [{ + type: NgModule, + args: [{ declarations: [ButtonDir, MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: chain_bindings_with_interpolations.d.ts @@ -420,26 +420,26 @@ export class MyComponent { this.myTitle = ''; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + template: ` ` - }] - }], null, null); })(); + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: chain_synthetic_bindings.d.ts @@ -463,12 +463,12 @@ export class MyComponent { this.buttonId = 'custom-id'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ template: '' }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ template: '' }] + }] }); /**************************************************************************************************** * PARTIAL FILE: chain_ngtemplate_bindings.d.ts @@ -488,57 +488,57 @@ import { Component, Directive, Input, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class SpanDir { } -SpanDir.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SpanDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -SpanDir.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: SpanDir, selector: "span", inputs: { someProp: "someProp" }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SpanDir, [{ - type: Directive, - args: [{ selector: 'span' }] - }], null, { someProp: [{ - type: Input - }] }); })(); +SpanDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SpanDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +SpanDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SpanDir, selector: "span", inputs: { someProp: "someProp" }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SpanDir, decorators: [{ + type: Directive, + args: [{ selector: 'span' }] + }], propDecorators: { someProp: [{ + type: Input + }] } }); export class CustomEl { } -CustomEl.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: CustomEl, deps: [], target: i0.ɵɵFactoryTarget.Component }); -CustomEl.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: CustomEl, selector: "custom-element", inputs: { prop: "prop", otherProp: "otherProp" }, ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CustomEl, [{ - type: Component, - args: [{ selector: 'custom-element', template: '' }] - }], null, { prop: [{ - type: Input - }], otherProp: [{ - type: Input - }] }); })(); +CustomEl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: CustomEl, deps: [], target: i0.ɵɵFactoryTarget.Component }); +CustomEl.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: CustomEl, selector: "custom-element", inputs: { prop: "prop", otherProp: "otherProp" }, ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: CustomEl, decorators: [{ + type: Component, + args: [{ selector: 'custom-element', template: '' }] + }], propDecorators: { prop: [{ + type: Input + }], otherProp: [{ + type: Input + }] } }); export class MyComponent { constructor() { this.myTitle = 'hello'; this.buttonId = 'special-button'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` `, isInline: true, components: [{ type: CustomEl, selector: "custom-element", inputs: ["prop", "otherProp"] }], directives: [{ type: SpanDir, selector: "span", inputs: ["someProp"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + template: ` ` - }] - }], null, null); })(); + }] + }] }); export class MyMod { } -MyMod.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyMod.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, declarations: [MyComponent, CustomEl, SpanDir] }); -MyMod.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyMod, [{ - type: NgModule, - args: [{ declarations: [MyComponent, CustomEl, SpanDir] }] - }], null, null); })(); +MyMod.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyMod.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, declarations: [MyComponent, CustomEl, SpanDir] }); +MyMod.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent, CustomEl, SpanDir] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: chain_multiple_bindings_for_multiple_elements.d.ts @@ -574,43 +574,43 @@ import { Component, Directive, Input, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class SpanDir { } -SpanDir.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SpanDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -SpanDir.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: SpanDir, selector: "span", inputs: { someProp: "someProp" }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SpanDir, [{ - type: Directive, - args: [{ selector: 'span' }] - }], null, { someProp: [{ - type: Input - }] }); })(); +SpanDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SpanDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +SpanDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SpanDir, selector: "span", inputs: { someProp: "someProp" }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SpanDir, decorators: [{ + type: Directive, + args: [{ selector: 'span' }] + }], propDecorators: { someProp: [{ + type: Input + }] } }); export class MyComponent { constructor() { this.myTitle = 'hello'; this.buttonId = 'special-button'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` `, isInline: true, directives: [{ type: SpanDir, selector: "span", inputs: ["someProp"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + template: ` ` - }] - }], null, null); })(); + }] + }] }); export class MyMod { } -MyMod.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyMod.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, declarations: [MyComponent, SpanDir] }); -MyMod.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyMod, [{ - type: NgModule, - args: [{ declarations: [MyComponent, SpanDir] }] - }], null, null); })(); +MyMod.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyMod.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, declarations: [MyComponent, SpanDir] }); +MyMod.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent, SpanDir] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: chain_multiple_bindings_with_child_elements.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/property_bindings/temporary_variables.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/property_bindings/temporary_variables.js index eccf250d9e..b7dc723c1c 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/property_bindings/temporary_variables.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/property_bindings/temporary_variables.js @@ -1,7 +1,7 @@ template: function MyComponent_Template(rf, ctx) { … if (rf & 2) { - let $tmp0$ = null; - $r3$.ɵɵproperty("title", ctx.myTitle)("id", (tmp_1_0 = i0.ɵɵpipeBind1(1, 3, ctx.auth().identity())) == null ? null : tmp_1_0.id)("tabindex", 1); + let $tmp0$; + $r3$.ɵɵproperty("title", ctx.myTitle)("id", ($tmp0$ = i0.ɵɵpipeBind1(1, 3, ctx.auth().identity())) == null ? null : $tmp0$.id)("tabindex", 1); } } diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/text_bindings/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/text_bindings/GOLDEN_PARTIAL.js index b695c3bf39..d4657e022b 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/text_bindings/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/text_bindings/GOLDEN_PARTIAL.js @@ -8,26 +8,26 @@ export class MyComponent { this.name = 'World'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Hello {{ name }}
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
Hello {{ name }}
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: interpolation.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_di/di/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_di/di/GOLDEN_PARTIAL.js index 3fff571e69..5b81a8c9f3 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_di/di/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_di/di/GOLDEN_PARTIAL.js @@ -5,50 +5,50 @@ import { Attribute, Component, Host, Injectable, NgModule, Optional, Self, SkipS import * as i0 from "@angular/core"; export class MyService { } -MyService.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); -MyService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MyService, factory: MyService.ɵfac }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyService, [{ - type: Injectable - }], null, null); })(); +MyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); +MyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, decorators: [{ + type: Injectable + }] }); function dynamicAttrName() { return 'the-attr'; } export class MyComponent { constructor(name, other, s1, s2, s4, s3, s5, s6) { } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [{ token: 'name', attribute: true }, { token: dynamicAttrName(), attribute: true }, { token: MyService }, { token: MyService, host: true }, { token: MyService, self: true }, { token: MyService, skipSelf: true }, { token: MyService, optional: true }, { token: MyService, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ``, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: `` }] - }], function () { return [{ type: undefined, decorators: [{ - type: Attribute, - args: ['name'] - }] }, { type: undefined, decorators: [{ - type: Attribute, - args: [dynamicAttrName()] - }] }, { type: MyService }, { type: MyService, decorators: [{ - type: Host - }] }, { type: MyService, decorators: [{ - type: Self - }] }, { type: MyService, decorators: [{ - type: SkipSelf - }] }, { type: MyService, decorators: [{ - type: Optional - }] }, { type: MyService, decorators: [{ - type: Self - }, { - type: Optional - }] }]; }, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [{ token: 'name', attribute: true }, { token: dynamicAttrName(), attribute: true }, { token: MyService }, { token: MyService, host: true }, { token: MyService, self: true }, { token: MyService, skipSelf: true }, { token: MyService, optional: true }, { token: MyService, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ``, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: `` }] + }], ctorParameters: function () { return [{ type: undefined, decorators: [{ + type: Attribute, + args: ['name'] + }] }, { type: undefined, decorators: [{ + type: Attribute, + args: [dynamicAttrName()] + }] }, { type: MyService }, { type: MyService, decorators: [{ + type: Host + }] }, { type: MyService, decorators: [{ + type: Self + }] }, { type: MyService, decorators: [{ + type: SkipSelf + }] }, { type: MyService, decorators: [{ + type: Optional + }] }, { type: MyService, decorators: [{ + type: Self + }, { + type: Optional + }] }]; } }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, providers: [MyService] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent], providers: [MyService] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, providers: [MyService] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent], providers: [MyService] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: component_factory.d.ts @@ -56,7 +56,7 @@ MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImpo import * as i0 from "@angular/core"; export declare class MyService { static ɵfac: i0.ɵɵFactoryDeclaration; - static ɵprov: i0.ɵɵInjectableDef; + static ɵprov: i0.ɵɵInjectableDeclaration; } export declare class MyComponent { constructor(name: string, other: string, s1: MyService, s2: MyService, s4: MyService, s3: MyService, s5: MyService, s6: MyService); @@ -79,11 +79,11 @@ class MyDependency { export class MyService { constructor(dep) { } } -MyService.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, deps: [{ token: MyDependency }], target: i0.ɵɵFactoryTarget.Injectable }); -MyService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MyService, factory: MyService.ɵfac }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyService, [{ - type: Injectable - }], function () { return [{ type: MyDependency }]; }, null); })(); +MyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, deps: [{ token: MyDependency }], target: i0.ɵɵFactoryTarget.Injectable }); +MyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, decorators: [{ + type: Injectable + }], ctorParameters: function () { return [{ type: MyDependency }]; } }); /**************************************************************************************************** * PARTIAL FILE: injectable_factory.d.ts @@ -94,7 +94,7 @@ declare class MyDependency { export declare class MyService { constructor(dep: MyDependency); static ɵfac: i0.ɵɵFactoryDeclaration; - static ɵprov: i0.ɵɵInjectableDef; + static ɵprov: i0.ɵɵInjectableDeclaration; } export {}; @@ -110,13 +110,13 @@ class MyOptionalDependency { export class MyService { constructor(dep, optionalDep) { } } -MyService.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, deps: [{ token: MyDependency }, { token: MyOptionalDependency, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); -MyService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MyService, factory: MyService.ɵfac }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyService, [{ - type: Injectable - }], function () { return [{ type: MyDependency }, { type: MyOptionalDependency, decorators: [{ - type: Optional - }] }]; }, null); })(); +MyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, deps: [{ token: MyDependency }, { token: MyOptionalDependency, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); +MyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, decorators: [{ + type: Injectable + }], ctorParameters: function () { return [{ type: MyDependency }, { type: MyOptionalDependency, decorators: [{ + type: Optional + }] }]; } }); /**************************************************************************************************** * PARTIAL FILE: ctor_overload.d.ts @@ -127,7 +127,7 @@ declare class MyDependency { export declare class MyService { constructor(dep: MyDependency); static ɵfac: i0.ɵɵFactoryDeclaration; - static ɵprov: i0.ɵɵInjectableDef; + static ɵprov: i0.ɵɵInjectableDeclaration; } export {}; @@ -143,12 +143,12 @@ function alternateFactory() { } export class MyService { } -MyService.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); -MyService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MyService, factory: function () { return alternateFactory(); }, providedIn: 'root' }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyService, [{ - type: Injectable, - args: [{ providedIn: 'root', useFactory: alternateFactory }] - }], null, null); })(); +MyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); +MyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, providedIn: 'root', useFactory: alternateFactory }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, decorators: [{ + type: Injectable, + args: [{ providedIn: 'root', useFactory: alternateFactory }] + }] }); /**************************************************************************************************** * PARTIAL FILE: usefactory_without_deps.d.ts @@ -156,7 +156,7 @@ MyService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MyService, fac import * as i0 from "@angular/core"; export declare class MyService { static ɵfac: i0.ɵɵFactoryDeclaration; - static ɵprov: i0.ɵɵInjectableDef; + static ɵprov: i0.ɵɵInjectableDeclaration; } /**************************************************************************************************** @@ -170,17 +170,12 @@ class MyAlternateService { } export class MyService { } -MyService.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); -MyService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MyService, factory: function MyService_Factory(t) { let r = null; if (t) { - r = new t(); - } - else { - r = (() => new MyAlternateService())(i0.ɵɵinject(SomeDep)); - } return r; }, providedIn: 'root' }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyService, [{ - type: Injectable, - args: [{ providedIn: 'root', useFactory: () => new MyAlternateService(), deps: [SomeDep] }] - }], null, null); })(); +MyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); +MyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, providedIn: 'root', useFactory: () => new MyAlternateService(), deps: [{ token: SomeDep }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, decorators: [{ + type: Injectable, + args: [{ providedIn: 'root', useFactory: () => new MyAlternateService(), deps: [SomeDep] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: usefactory_with_deps.d.ts @@ -188,7 +183,7 @@ MyService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MyService, fac import * as i0 from "@angular/core"; export declare class MyService { static ɵfac: i0.ɵɵFactoryDeclaration; - static ɵprov: i0.ɵɵInjectableDef; + static ɵprov: i0.ɵɵInjectableDeclaration; } /**************************************************************************************************** @@ -198,19 +193,19 @@ import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; class MyAlternateService { } -MyAlternateService.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyAlternateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); -MyAlternateService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MyAlternateService, factory: MyAlternateService.ɵfac }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyAlternateService, [{ - type: Injectable - }], null, null); })(); +MyAlternateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyAlternateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); +MyAlternateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyAlternateService }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyAlternateService, decorators: [{ + type: Injectable + }] }); export class MyService { } -MyService.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); -MyService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MyService, factory: function (t) { return MyAlternateService.ɵfac(t); }, providedIn: 'root' }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyService, [{ - type: Injectable, - args: [{ providedIn: 'root', useClass: MyAlternateService }] - }], null, null); })(); +MyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); +MyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, providedIn: 'root', useClass: MyAlternateService }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, decorators: [{ + type: Injectable, + args: [{ providedIn: 'root', useClass: MyAlternateService }] + }] }); /**************************************************************************************************** * PARTIAL FILE: useclass_without_deps.d.ts @@ -218,7 +213,7 @@ MyService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MyService, fac import * as i0 from "@angular/core"; export declare class MyService { static ɵfac: i0.ɵɵFactoryDeclaration; - static ɵprov: i0.ɵɵInjectableDef; + static ɵprov: i0.ɵɵInjectableDeclaration; } /**************************************************************************************************** @@ -230,24 +225,19 @@ class SomeDep { } class MyAlternateService { } -MyAlternateService.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyAlternateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); -MyAlternateService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MyAlternateService, factory: MyAlternateService.ɵfac }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyAlternateService, [{ - type: Injectable - }], null, null); })(); +MyAlternateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyAlternateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); +MyAlternateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyAlternateService }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyAlternateService, decorators: [{ + type: Injectable + }] }); export class MyService { } -MyService.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); -MyService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MyService, factory: function MyService_Factory(t) { let r = null; if (t) { - r = new t(); - } - else { - r = new MyAlternateService(i0.ɵɵinject(SomeDep)); - } return r; }, providedIn: 'root' }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyService, [{ - type: Injectable, - args: [{ providedIn: 'root', useClass: MyAlternateService, deps: [SomeDep] }] - }], null, null); })(); +MyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); +MyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, providedIn: 'root', useClass: MyAlternateService, deps: [{ token: SomeDep }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyService, decorators: [{ + type: Injectable, + args: [{ providedIn: 'root', useClass: MyAlternateService, deps: [SomeDep] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: useclass_with_deps.d.ts @@ -255,7 +245,7 @@ MyService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MyService, fac import * as i0 from "@angular/core"; export declare class MyService { static ɵfac: i0.ɵɵFactoryDeclaration; - static ɵprov: i0.ɵɵInjectableDef; + static ɵprov: i0.ɵɵInjectableDeclaration; } /**************************************************************************************************** @@ -265,25 +255,74 @@ import { forwardRef, Injectable } from '@angular/core'; import * as i0 from "@angular/core"; class SomeProvider { } -SomeProvider.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); -SomeProvider.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: SomeProvider, factory: function (t) { return SomeProviderImpl.ɵfac(t); }, providedIn: 'root' }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SomeProvider, [{ - type: Injectable, - args: [{ providedIn: 'root', useClass: forwardRef(() => SomeProviderImpl) }] - }], null, null); })(); +SomeProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); +SomeProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeProvider, providedIn: 'root', useClass: i0.forwardRef(function () { return SomeProviderImpl; }) }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeProvider, decorators: [{ + type: Injectable, + args: [{ providedIn: 'root', useClass: forwardRef(() => SomeProviderImpl) }] + }] }); class SomeProviderImpl extends SomeProvider { } -SomeProviderImpl.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeProviderImpl, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); -SomeProviderImpl.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: SomeProviderImpl, factory: SomeProviderImpl.ɵfac }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SomeProviderImpl, [{ - type: Injectable - }], null, null); })(); +SomeProviderImpl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeProviderImpl, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); +SomeProviderImpl.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeProviderImpl }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeProviderImpl, decorators: [{ + type: Injectable + }] }); /**************************************************************************************************** * PARTIAL FILE: useclass_forwardref.d.ts ****************************************************************************************************/ export {}; +/**************************************************************************************************** + * PARTIAL FILE: providedin_forwardref.js + ****************************************************************************************************/ +import { forwardRef, Injectable, NgModule } from '@angular/core'; +import * as i0 from "@angular/core"; +export class Dep { +} +Dep.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Dep, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); +Dep.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Dep }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Dep, decorators: [{ + type: Injectable + }] }); +export class Service { + constructor(dep) { } +} +Service.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Service, deps: [{ token: Dep }], target: i0.ɵɵFactoryTarget.Injectable }); +Service.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Service, providedIn: i0.forwardRef(function () { return Mod; }) }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Service, decorators: [{ + type: Injectable, + args: [{ providedIn: forwardRef(() => Mod) }] + }], ctorParameters: function () { return [{ type: Dep }]; } }); +export class Mod { +} +Mod.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Mod, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +Mod.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Mod }); +Mod.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Mod }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Mod, decorators: [{ + type: NgModule + }] }); + +/**************************************************************************************************** + * PARTIAL FILE: providedin_forwardref.d.ts + ****************************************************************************************************/ +import * as i0 from "@angular/core"; +export declare class Dep { + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵprov: i0.ɵɵInjectableDeclaration; +} +export declare class Service { + constructor(dep: Dep); + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵprov: i0.ɵɵInjectableDeclaration; +} +export declare class Mod { + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵinj: i0.ɵɵInjectorDeclaration; +} + /**************************************************************************************************** * PARTIAL FILE: pipe_and_injectable.js ****************************************************************************************************/ @@ -291,58 +330,58 @@ import { Component, Injectable, NgModule, Pipe } from '@angular/core'; import * as i0 from "@angular/core"; class Service { } -Service.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Service, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); -Service.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: Service, factory: Service.ɵfac }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Service, [{ - type: Injectable - }], null, null); })(); +Service.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Service, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); +Service.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Service }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Service, decorators: [{ + type: Injectable + }] }); export class MyPipe { constructor(service) { } transform(value, ...args) { return value; } } -MyPipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPipe, deps: [{ token: Service }], target: i0.ɵɵFactoryTarget.Pipe }); -MyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPipe, name: "myPipe" }); -MyPipe.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MyPipe, factory: MyPipe.ɵfac }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyPipe, [{ - type: Injectable - }, { - type: Pipe, - args: [{ name: 'myPipe' }] - }], function () { return [{ type: Service }]; }, null); })(); +MyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPipe, deps: [{ token: Service }], target: i0.ɵɵFactoryTarget.Pipe }); +MyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPipe, name: "myPipe" }); +MyPipe.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPipe }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyPipe, decorators: [{ + type: Injectable + }, { + type: Pipe, + args: [{ name: 'myPipe' }] + }], ctorParameters: function () { return [{ type: Service }]; } }); export class MyOtherPipe { constructor(service) { } transform(value, ...args) { return value; } } -MyOtherPipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyOtherPipe, deps: [{ token: Service }], target: i0.ɵɵFactoryTarget.Pipe }); -MyOtherPipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyOtherPipe, name: "myOtherPipe" }); -MyOtherPipe.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MyOtherPipe, factory: MyOtherPipe.ɵfac }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyOtherPipe, [{ - type: Pipe, - args: [{ name: 'myOtherPipe' }] - }, { - type: Injectable - }], function () { return [{ type: Service }]; }, null); })(); +MyOtherPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyOtherPipe, deps: [{ token: Service }], target: i0.ɵɵFactoryTarget.Pipe }); +MyOtherPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyOtherPipe, name: "myOtherPipe" }); +MyOtherPipe.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyOtherPipe }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyOtherPipe, decorators: [{ + type: Pipe, + args: [{ name: 'myOtherPipe' }] + }, { + type: Injectable + }], ctorParameters: function () { return [{ type: Service }]; } }); export class MyApp { } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: '{{0 | myPipe | myOtherPipe}}', isInline: true, pipes: { "myOtherPipe": MyOtherPipe, "myPipe": MyPipe } }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ selector: 'my-app', template: '{{0 | myPipe | myOtherPipe}}' }] - }], null, null); })(); +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: '{{0 | myPipe | myOtherPipe}}', isInline: true, pipes: { "myOtherPipe": MyOtherPipe, "myPipe": MyPipe } }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ selector: 'my-app', template: '{{0 | myPipe | myOtherPipe}}' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyPipe, MyOtherPipe, MyApp] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, providers: [Service] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyPipe, MyOtherPipe, MyApp], providers: [Service] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyPipe, MyOtherPipe, MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, providers: [Service] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyPipe, MyOtherPipe, MyApp], providers: [Service] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: pipe_and_injectable.d.ts @@ -351,21 +390,21 @@ import { PipeTransform } from '@angular/core'; import * as i0 from "@angular/core"; declare class Service { static ɵfac: i0.ɵɵFactoryDeclaration; - static ɵprov: i0.ɵɵInjectableDef; + static ɵprov: i0.ɵɵInjectableDeclaration; } export declare class MyPipe implements PipeTransform { constructor(service: Service); transform(value: any, ...args: any[]): any; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵpipe: i0.ɵɵPipeDeclaration; - static ɵprov: i0.ɵɵInjectableDef; + static ɵprov: i0.ɵɵInjectableDeclaration; } export declare class MyOtherPipe implements PipeTransform { constructor(service: Service); transform(value: any, ...args: any[]): any; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵpipe: i0.ɵɵPipeDeclaration; - static ɵprov: i0.ɵɵInjectableDef; + static ɵprov: i0.ɵɵInjectableDeclaration; } export declare class MyApp { static ɵfac: i0.ɵɵFactoryDeclaration; diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_di/di/TEST_CASES.json b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_di/di/TEST_CASES.json index 7968fc1008..33a537c242 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_di/di/TEST_CASES.json +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_di/di/TEST_CASES.json @@ -137,6 +137,20 @@ } ] }, + { + "description": "should support forward refs in a providedIn clause", + "inputFiles": [ + "providedin_forwardref.ts" + ], + "expectations": [ + { + "failureMessage": "Incorrect factory definition", + "files": [ + "providedin_forwardref.js" + ] + } + ] + }, { "description": "should have the pipe factory take precedence over the injectable factory, if a class has multiple decorators", "inputFiles": [ diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_di/di/providedin_forwardref.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_di/di/providedin_forwardref.js new file mode 100644 index 0000000000..7af903b521 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_di/di/providedin_forwardref.js @@ -0,0 +1,8 @@ +Service.ɵfac = function Service_Factory(t) { return new (t || Service)($i0$.ɵɵinject(Dep)); }; +Service.ɵprov = /*@__PURE__*/ $i0$.ɵɵdefineInjectable({ token: Service, factory: Service.ɵfac, providedIn: $i0$.forwardRef(function () { return Mod; }) }); +(function () { (typeof ngDevMode === "undefined" || ngDevMode) && $i0$.ɵsetClassMetadata(Service, [{ + type: Injectable, + args: [{ providedIn: forwardRef(() => Mod) }] +}], function () { return [{ type: Dep }]; }, null); })(); +export class Mod { +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_di/di/providedin_forwardref.ts b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_di/di/providedin_forwardref.ts new file mode 100644 index 0000000000..03669fca44 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_di/di/providedin_forwardref.ts @@ -0,0 +1,12 @@ +import {forwardRef, Injectable, NgModule} from '@angular/core'; + +@Injectable() +export class Dep { +} +@Injectable({providedIn: forwardRef(() => Mod)}) +export class Service { + constructor(dep: Dep) {} +} +@NgModule() +export class Mod { +} \ No newline at end of file diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_directives/matching/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_directives/matching/GOLDEN_PARTIAL.js index 15c16211de..bc531e12c1 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_directives/matching/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_directives/matching/GOLDEN_PARTIAL.js @@ -5,29 +5,29 @@ import { Component, Directive, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class I18nDirective { } -I18nDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: I18nDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -I18nDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: I18nDirective, selector: "[i18n]", ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(I18nDirective, [{ - type: Directive, - args: [{ selector: '[i18n]' }] - }], null, null); })(); +I18nDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: I18nDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +I18nDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: I18nDirective, selector: "[i18n]", ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: I18nDirective, decorators: [{ + type: Directive, + args: [{ selector: '[i18n]' }] + }] }); export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: '
' }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: '
' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [I18nDirective, MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [I18nDirective, MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [I18nDirective, MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [I18nDirective, MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: i18n_attribute_directive.d.ts @@ -54,45 +54,45 @@ import { Component, Directive, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class I18nDirective { } -I18nDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: I18nDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -I18nDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: I18nDirective, selector: "[i18n]", ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(I18nDirective, [{ - type: Directive, - args: [{ selector: '[i18n]' }] - }], null, null); })(); +I18nDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: I18nDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +I18nDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: I18nDirective, selector: "[i18n]", ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: I18nDirective, decorators: [{ + type: Directive, + args: [{ selector: '[i18n]' }] + }] }); export class I18nFooDirective { } -I18nFooDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: I18nFooDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -I18nFooDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: I18nFooDirective, selector: "[i18n-foo]", ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(I18nFooDirective, [{ - type: Directive, - args: [{ selector: '[i18n-foo]' }] - }], null, null); })(); +I18nFooDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: I18nFooDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +I18nFooDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: I18nFooDirective, selector: "[i18n-foo]", ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: I18nFooDirective, decorators: [{ + type: Directive, + args: [{ selector: '[i18n-foo]' }] + }] }); export class FooDirective { } -FooDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -FooDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: FooDirective, selector: "[foo]", ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FooDirective, [{ - type: Directive, - args: [{ selector: '[foo]' }] - }], null, null); })(); +FooDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +FooDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: FooDirective, selector: "[foo]", ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: FooDirective, decorators: [{ + type: Directive, + args: [{ selector: '[foo]' }] + }] }); export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: '
' }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: '
' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [I18nDirective, I18nFooDirective, FooDirective, MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [I18nDirective, I18nFooDirective, FooDirective, MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [I18nDirective, I18nFooDirective, FooDirective, MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [I18nDirective, I18nFooDirective, FooDirective, MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: i18n_prefix_attribute_directive.d.ts @@ -127,31 +127,31 @@ import { Component, Directive, Input, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class SomeDirective { } -SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[someDirective]", inputs: { someDirective: "someDirective" }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SomeDirective, [{ - type: Directive, - args: [{ selector: '[someDirective]' }] - }], null, { someDirective: [{ - type: Input - }] }); })(); +SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[someDirective]", inputs: { someDirective: "someDirective" }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, decorators: [{ + type: Directive, + args: [{ selector: '[someDirective]' }] + }], propDecorators: { someDirective: [{ + type: Input + }] } }); export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
', isInline: true, directives: [{ type: SomeDirective, selector: "[someDirective]", inputs: ["someDirective"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: '
' }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
', isInline: true, directives: [{ type: SomeDirective, selector: "[someDirective]", inputs: ["someDirective"] }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: '
' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SomeDirective, MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [SomeDirective, MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SomeDirective, MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [SomeDirective, MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: property_binding_directive.d.ts @@ -179,36 +179,36 @@ import { Component, Directive, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class DirectiveA { } -DirectiveA.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: DirectiveA, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -DirectiveA.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: DirectiveA, selector: "ng-template[directiveA]", ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DirectiveA, [{ - type: Directive, - args: [{ selector: 'ng-template[directiveA]' }] - }], null, null); })(); +DirectiveA.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: DirectiveA, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +DirectiveA.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: DirectiveA, selector: "ng-template[directiveA]", ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: DirectiveA, decorators: [{ + type: Directive, + args: [{ selector: 'ng-template[directiveA]' }] + }] }); export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` Some content `, isInline: true, directives: [{ type: DirectiveA, selector: "ng-template[directiveA]" }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` Some content ` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [DirectiveA, MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [DirectiveA, MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [DirectiveA, MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [DirectiveA, MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: ng_template_directive.d.ts @@ -235,36 +235,36 @@ import { Component, Directive, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class DirectiveA { } -DirectiveA.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: DirectiveA, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -DirectiveA.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: DirectiveA, selector: "ng-container[directiveA]", ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DirectiveA, [{ - type: Directive, - args: [{ selector: 'ng-container[directiveA]' }] - }], null, null); })(); +DirectiveA.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: DirectiveA, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +DirectiveA.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: DirectiveA, selector: "ng-container[directiveA]", ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: DirectiveA, decorators: [{ + type: Directive, + args: [{ selector: 'ng-container[directiveA]' }] + }] }); export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` Some content `, isInline: true, directives: [{ type: DirectiveA, selector: "ng-container[directiveA]" }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` Some content ` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [DirectiveA, MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [DirectiveA, MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [DirectiveA, MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [DirectiveA, MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: ng_container_directive.d.ts @@ -291,34 +291,34 @@ import { Component, Directive, Input, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class SomeDirective { } -SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[someDirective]", inputs: { someDirective: "someDirective" }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SomeDirective, [{ - type: Directive, - args: [{ selector: '[someDirective]' }] - }], null, { someDirective: [{ - type: Input - }] }); })(); +SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[someDirective]", inputs: { someDirective: "someDirective" }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, decorators: [{ + type: Directive, + args: [{ selector: '[someDirective]' }] + }], propDecorators: { someDirective: [{ + type: Input + }] } }); export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '', isInline: true, directives: [{ type: SomeDirective, selector: "[someDirective]", inputs: ["someDirective"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: '', - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '', isInline: true, directives: [{ type: SomeDirective, selector: "[someDirective]", inputs: ["someDirective"] }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: '', + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SomeDirective, MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [SomeDirective, MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SomeDirective, MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [SomeDirective, MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: ng_template_binding_directive.d.ts @@ -346,31 +346,31 @@ import { Component, Directive, Input, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class SomeDirective { } -SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[someDirective]", inputs: { someDirective: "someDirective" }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SomeDirective, [{ - type: Directive, - args: [{ selector: '[someDirective]' }] - }], null, { someDirective: [{ - type: Input - }] }); })(); +SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[someDirective]", inputs: { someDirective: "someDirective" }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, decorators: [{ + type: Directive, + args: [{ selector: '[someDirective]' }] + }], propDecorators: { someDirective: [{ + type: Input + }] } }); export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
', isInline: true, directives: [{ type: SomeDirective, selector: "[someDirective]", inputs: ["someDirective"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: '
' }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
', isInline: true, directives: [{ type: SomeDirective, selector: "[someDirective]", inputs: ["someDirective"] }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: '
' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SomeDirective, MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [SomeDirective, MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SomeDirective, MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [SomeDirective, MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: structural_directive.d.ts @@ -401,32 +401,32 @@ export class SomeDirective { this.someDirective = new EventEmitter(); } } -SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[someDirective]", outputs: { someDirective: "someDirective" }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SomeDirective, [{ - type: Directive, - args: [{ selector: '[someDirective]' }] - }], null, { someDirective: [{ - type: Output - }] }); })(); +SomeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +SomeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SomeDirective, selector: "[someDirective]", outputs: { someDirective: "someDirective" }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeDirective, decorators: [{ + type: Directive, + args: [{ selector: '[someDirective]' }] + }], propDecorators: { someDirective: [{ + type: Output + }] } }); export class MyComponent { noop() { } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
', isInline: true, directives: [{ type: SomeDirective, selector: "[someDirective]", outputs: ["someDirective"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: '
' }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
', isInline: true, directives: [{ type: SomeDirective, selector: "[someDirective]", outputs: ["someDirective"] }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: '
' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SomeDirective, MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [SomeDirective, MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [SomeDirective, MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [SomeDirective, MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: output_directive.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_directives/matching/i18n_attribute_directive_definition.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_directives/matching/i18n_attribute_directive_definition.js deleted file mode 100644 index 0992c8c235..0000000000 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_directives/matching/i18n_attribute_directive_definition.js +++ /dev/null @@ -1,12 +0,0 @@ -MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyComponent, - selectors: [["my-component"]], - decls: 1, - vars: 0, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div"); - } - }, - encapsulation: 2 -}); diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/element_attributes/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/element_attributes/GOLDEN_PARTIAL.js index a46b59d691..a43dd277b0 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/element_attributes/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/element_attributes/GOLDEN_PARTIAL.js @@ -5,8 +5,8 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Content A
Content B
Content C
@@ -16,11 +16,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
Content G
Content H
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
Content A
Content B
Content C
@@ -30,17 +30,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
Content G
Content H
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: meaning_description.d.ts @@ -63,28 +63,28 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` ` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: ng-template_basic.d.ts @@ -110,28 +110,28 @@ export class MyComponent { this.visible = false; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` Test `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` Test ` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: ng-template_structural.d.ts @@ -158,28 +158,28 @@ export class MyComponent { this.name = ''; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` ` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: ng-template_interpolation.d.ts @@ -204,39 +204,39 @@ import * as i0 from "@angular/core"; export class UppercasePipe { transform(v) { } } -UppercasePipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -UppercasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, name: "uppercase" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UppercasePipe, [{ - type: Pipe, - args: [{ name: 'uppercase' }] - }], null, null); })(); +UppercasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +UppercasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, name: "uppercase" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, decorators: [{ + type: Pipe, + args: [{ name: 'uppercase' }] + }] }); export class MyComponent { constructor() { this.name = ''; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` ` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [UppercasePipe, MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [UppercasePipe, MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [UppercasePipe, MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [UppercasePipe, MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: ng-template_interpolation_structural.d.ts @@ -265,28 +265,28 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: empty_attributes.d.ts @@ -313,34 +313,34 @@ export class MyComponent { this.label = ''; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: bound_attributes.d.ts @@ -365,28 +365,28 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: static_attributes.d.ts @@ -412,28 +412,28 @@ export class MyComponent { this.exp = true; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: static_attributes_structural.d.ts @@ -458,30 +458,30 @@ import * as i0 from "@angular/core"; export class UppercasePipe { transform(v) { } } -UppercasePipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -UppercasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, name: "uppercase" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UppercasePipe, [{ - type: Pipe, - args: [{ name: 'uppercase' }] - }], null, null); })(); +UppercasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +UppercasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, name: "uppercase" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, decorators: [{ + type: Pipe, + args: [{ name: 'uppercase' }] + }] }); export class DivDir { } -DivDir.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: DivDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -DivDir.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: DivDir, selector: "div", inputs: { al: ["aria-label", "al"], arl: ["aria-roledescription", "arl"] }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DivDir, [{ - type: Directive, - args: [{ selector: 'div' }] - }], null, { al: [{ - type: Input, - args: ['aria-label'] - }], arl: [{ - type: Input, - args: ['aria-roledescription'] - }] }); })(); +DivDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: DivDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +DivDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: DivDir, selector: "div", inputs: { al: ["aria-label", "al"], arl: ["aria-roledescription", "arl"] }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: DivDir, decorators: [{ + type: Directive, + args: [{ selector: 'div' }] + }], propDecorators: { al: [{ + type: Input, + args: ['aria-label'] + }], arl: [{ + type: Input, + args: ['aria-roledescription'] + }] } }); export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true, directives: [{ type: DivDir, selector: "div", inputs: ["aria-label", "aria-roledescription"] }], pipes: { "uppercase": UppercasePipe } }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [UppercasePipe, MyComponent, DivDir] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [UppercasePipe, MyComponent, DivDir] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [UppercasePipe, MyComponent, DivDir] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [UppercasePipe, MyComponent, DivDir] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: interpolation_basic.d.ts @@ -555,40 +555,40 @@ import * as i0 from "@angular/core"; export class UppercasePipe { transform(v) { } } -UppercasePipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -UppercasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, name: "uppercase" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UppercasePipe, [{ - type: Pipe, - args: [{ name: 'uppercase' }] - }], null, null); })(); +UppercasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +UppercasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, name: "uppercase" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, decorators: [{ + type: Pipe, + args: [{ name: 'uppercase' }] + }] }); export class MyComponent { constructor() { this.valueA = ''; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true, pipes: { "uppercase": UppercasePipe }, interpolation: ["{%", "%}"] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
`, - interpolation: ['{%', '%}'], - }] - }], null, null); })(); + interpolation: ['{%', '%}'], + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [UppercasePipe, MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [UppercasePipe, MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [UppercasePipe, MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [UppercasePipe, MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: interpolation_custom_config.d.ts @@ -618,43 +618,43 @@ import * as i0 from "@angular/core"; export class UppercasePipe { transform(v) { } } -UppercasePipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -UppercasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, name: "uppercase" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UppercasePipe, [{ - type: Pipe, - args: [{ name: 'uppercase' }] - }], null, null); })(); +UppercasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +UppercasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, name: "uppercase" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, decorators: [{ + type: Pipe, + args: [{ name: 'uppercase' }] + }] }); export class MyComponent { constructor() { this.outer = ''; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true, pipes: { "uppercase": UppercasePipe } }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [UppercasePipe, MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [UppercasePipe, MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [UppercasePipe, MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [UppercasePipe, MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: interpolation_nested_context.d.ts @@ -683,28 +683,28 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: interpolation_complex_expressions.d.ts @@ -728,28 +728,28 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: interpolation_complex_expressions.d.ts @@ -773,28 +773,28 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Some content
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
Some content
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: i18n_root_node.d.ts @@ -817,32 +817,32 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Some content
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
Some content
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: invalid_i18n_meta.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/element_attributes/interpolation_complex_expressions.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/element_attributes/interpolation_complex_expressions.js index 76daa891f9..e7d37015f3 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/element_attributes/interpolation_complex_expressions.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/element_attributes/interpolation_complex_expressions.js @@ -14,7 +14,7 @@ template: function MyComponent_Template(rf, ctx) { $r3$.ɵɵelementEnd(); } if (rf & 2) { - let $tmp_0_0$ = null; + let $tmp_0_0$; $r3$.ɵɵi18nExp(($tmp_0_0$ = ctx.valueA.getRawValue()) == null ? null : $tmp_0_0$.getTitle()); $r3$.ɵɵi18nApply(1); } diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/es5_support/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/es5_support/GOLDEN_PARTIAL.js index c8a081ce74..383c1b39d6 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/es5_support/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/es5_support/GOLDEN_PARTIAL.js @@ -6,31 +6,31 @@ import * as i0 from "@angular/core"; var MyComponent = /** @class */ (function () { function MyComponent() { } - MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); - MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
Content A
', isInline: true }); + MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); + MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
Content A
', isInline: true }); return MyComponent; }()); export { MyComponent }; -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: '
Content A
', - }] - }], null, null); })(); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: '
Content A
', + }] + }] }); var MyModule = /** @class */ (function () { function MyModule() { } - MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); - MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); - MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); + MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); + MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); + MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); return MyModule; }()); export { MyModule }; -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: test.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/icu_logic/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/icu_logic/GOLDEN_PARTIAL.js index 55ddfad2f2..77d3cf7380 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/icu_logic/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/icu_logic/GOLDEN_PARTIAL.js @@ -8,28 +8,28 @@ export class MyComponent { this.gender = 'male'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
{gender, select, male {male} female {female} other {other}}
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
{gender, select, male {male} female {female} other {other}}
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: single_icu.d.ts @@ -56,28 +56,28 @@ export class MyComponent { this.gender = 'male'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
{gender, select, single {'single quotes'} double {"double quotes"} other {other}}
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
{gender, select, single {'single quotes'} double {"double quotes"} other {other}}
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: escape_quotes.d.ts @@ -104,28 +104,28 @@ export class MyComponent { this.age = 20; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` {age, select, 10 {ten} 20 {twenty} other {other}} `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` {age, select, 10 {ten} 20 {twenty} other {other}} `, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: icu_only.d.ts @@ -152,8 +152,8 @@ export class MyComponent { this.gender = 'female'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
{gender, select, male {male} female {female} other {other}}
{age, select, 10 {ten} 20 {twenty} other {other}} @@ -162,11 +162,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty You have {count, select, 0 {no emails} 1 {one email} other {{{count}} emails}}.
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
{gender, select, male {male} female {female} other {other}}
{age, select, 10 {ten} 20 {twenty} other {other}} @@ -175,17 +175,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty You have {count, select, 0 {no emails} 1 {one email} other {{{count}} emails}}.
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: bare_icu.d.ts @@ -213,29 +213,29 @@ export class MyComponent { this.other = 'bla'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
{age, select, 10 {ten} 20 {twenty} other {{% other %}}}
`, isInline: true, interpolation: ["{%", "%}"] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
{age, select, 10 {ten} 20 {twenty} other {{% other %}}}
`, - interpolation: ['{%', '%}'], - }] - }], null, null); })(); + interpolation: ['{%', '%}'], + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: custom_interpolation.d.ts @@ -263,36 +263,36 @@ export class MyComponent { this.gender = 'female'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
{gender, select, male {male - male} female {female female} other {
other
}} Other content
Another content
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
{gender, select, male {male - male} female {female female} other {
other
}} Other content
Another content
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: html_content.d.ts @@ -322,28 +322,28 @@ export class MyComponent { this.ageC = 3; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
{gender, select, male {male of age: {{ ageA + ageB + ageC }}} female {female} other {other}}
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
{gender, select, male {male of age: {{ ageA + ageB + ageC }}} female {female} other {other}}
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: expressions.d.ts @@ -374,34 +374,34 @@ export class MyComponent { this.age = 1; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
{gender, select, male {male} female {female} other {other}} {age, select, 10 {ten} 20 {twenty} 30 {thirty} other {other}}
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
{gender, select, male {male} female {female} other {other}} {age, select, 10 {ten} 20 {twenty} 30 {thirty} other {other}}
`, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: multiple_icus.d.ts @@ -429,8 +429,8 @@ export class MyComponent { this.gender = 'male'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
{gender, select, male {male} female {female} other {other}}
@@ -441,11 +441,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
{gender, select, male {male} female {female} other {other}}
@@ -456,17 +456,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: shared_placeholder.d.ts @@ -494,8 +494,8 @@ export class MyComponent { this.gender = 'male'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
{gender, select, male {male of age: {age, select, 10 {ten} 20 {twenty} 30 {thirty} other {other}}} @@ -504,11 +504,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty }
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
{gender, select, male {male of age: {age, select, 10 {ten} 20 {twenty} 30 {thirty} other {other}}} @@ -517,17 +517,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty }
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: nested_icus.d.ts @@ -556,8 +556,8 @@ export class MyComponent { this.name = 'Andrew'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
{count, plural, =0 {zero} =2 {{{count}} {name, select, @@ -567,11 +567,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty other {other - {{count}}} }
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
{count, plural, =0 {zero} =2 {{{count}} {name, select, @@ -581,17 +581,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty other {other - {{count}}} }
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: nested_icu_in_other_block.d.ts @@ -619,8 +619,8 @@ export class MyComponent { this.gender = 'female'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
{gender, select, male {male} female {female} other {other}} @@ -628,11 +628,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
{gender, select, male {male} female {female} other {other}} @@ -640,17 +640,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: different_contexts.d.ts @@ -679,8 +679,8 @@ export class MyComponent { this.height = 1; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
{gender, select, male {male {{ weight }}} female {female {{ height }}} other {other}} @@ -688,11 +688,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
{gender, select, male {male {{ weight }}} female {female {{ height }}} other {other}} @@ -700,17 +700,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: icu_with_interpolations.d.ts @@ -742,8 +742,8 @@ export class MyComponent { this.age = 1; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
{ gender, select, @@ -752,11 +752,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty other {other {{ age // i18n(ph="PH WITH SPACES") }}} }
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
{ gender, select, @@ -765,17 +765,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty other {other {{ age // i18n(ph="PH WITH SPACES") }}} }
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: named_interpolations.d.ts @@ -805,28 +805,28 @@ export class MyComponent { this.count = 1; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
{count, select, 1 {one} other {more than one}}
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
{count, select, 1 {one} other {more than one}}
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: metadata.d.ts @@ -853,34 +853,34 @@ export class MyComponent { this.count = 0; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
{count, select , 1 {one} other {more than one}} {count, plural , =1 {one} other {more than one}}
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
{count, select , 1 {one} other {more than one}} {count, plural , =1 {one} other {more than one}}
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: keyword_spaces.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/line_ending_normalization/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/line_ending_normalization/GOLDEN_PARTIAL.js index 98e60766ea..bc4043cf4e 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/line_ending_normalization/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/line_ending_normalization/GOLDEN_PARTIAL.js @@ -5,8 +5,8 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Some Message @@ -17,13 +17,13 @@ Some Message zero } }
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - // NOTE: This template has escaped `\r\n` line-endings markers that will be converted to real - // `\r\n` line-ending chars when loaded from the test file-system. - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + // NOTE: This template has escaped `\r\n` line-endings markers that will be converted to real + // `\r\n` line-ending chars when loaded from the test file-system. + template: `
Some Message @@ -34,17 +34,17 @@ Some Message zero } }
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: inline_template_non_legacy_normalized.d.ts @@ -68,8 +68,8 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Some Message @@ -80,13 +80,13 @@ Some Message zero } }
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - // NOTE: This template has escaped `\r\n` line-endings markers that will be converted to real - // `\r\n` line-ending chars when loaded from the test file-system. - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + // NOTE: This template has escaped `\r\n` line-endings markers that will be converted to real + // `\r\n` line-ending chars when loaded from the test file-system. + template: `
Some Message @@ -97,17 +97,17 @@ Some Message zero } }
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: inline_template_non_legacy_non_normalized.d.ts @@ -131,26 +131,26 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: "\n
\r\n Some Message\r\n {\r\n value,\r\n select,\r\n =0 {\r\n zero\r\n }\r\n }
" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - // NOTE: The template has escaped `\r\n` line-endings markers that will be converted to real - // `\r\n` line-ending chars when loaded from the test file-system. - templateUrl: 'template.html' - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: "\n
\r\n Some Message\r\n {\r\n value,\r\n select,\r\n =0 {\r\n zero\r\n }\r\n }
" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + // NOTE: The template has escaped `\r\n` line-endings markers that will be converted to real + // `\r\n` line-ending chars when loaded from the test file-system. + templateUrl: 'template.html' + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: external_template_non_legacy_normalized.d.ts @@ -174,26 +174,26 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: "\n
\r\n Some Message\r\n {\r\n value,\r\n select,\r\n =0 {\r\n zero\r\n }\r\n }
" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - // NOTE: The template has escaped `\r\n` line-endings markers that will be converted to real - // `\r\n` line-ending chars when loaded from the test file-system. - templateUrl: 'template.html' - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: "\n
\r\n Some Message\r\n {\r\n value,\r\n select,\r\n =0 {\r\n zero\r\n }\r\n }
" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + // NOTE: The template has escaped `\r\n` line-endings markers that will be converted to real + // `\r\n` line-ending chars when loaded from the test file-system. + templateUrl: 'template.html' + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: external_template_non_legacy_non_normalized.d.ts @@ -217,8 +217,8 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Some Message @@ -229,13 +229,13 @@ Some Message zero } }
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - // NOTE: This template has escaped `\r\n` line-endings markers that will be converted to real - // `\r\n` line-ending chars when loaded from the test file-system. - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + // NOTE: This template has escaped `\r\n` line-endings markers that will be converted to real + // `\r\n` line-ending chars when loaded from the test file-system. + template: `
Some Message @@ -246,17 +246,17 @@ Some Message zero } }
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: inline_template_legacy_normalized.d.ts @@ -280,8 +280,8 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Some Message @@ -292,13 +292,13 @@ Some Message zero } }
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - // NOTE: This template has escaped `\r\n` line-endings markers that will be converted to real - // `\r\n` line-ending chars when loaded from the test file-system. - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + // NOTE: This template has escaped `\r\n` line-endings markers that will be converted to real + // `\r\n` line-ending chars when loaded from the test file-system. + template: `
Some Message @@ -309,17 +309,17 @@ Some Message zero } }
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: inline_template_legacy_non_normalized.d.ts @@ -343,26 +343,26 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: "\n
\r\n Some Message\r\n {\r\n value,\r\n select,\r\n =0 {\r\n zero\r\n }\r\n }
" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - // NOTE: The template has escaped `\r\n` line-endings markers that will be converted to real - // `\r\n` line-ending chars when loaded from the test file-system. - templateUrl: 'template.html' - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: "\n
\r\n Some Message\r\n {\r\n value,\r\n select,\r\n =0 {\r\n zero\r\n }\r\n }
" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + // NOTE: The template has escaped `\r\n` line-endings markers that will be converted to real + // `\r\n` line-ending chars when loaded from the test file-system. + templateUrl: 'template.html' + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: external_template_legacy_normalized.d.ts @@ -386,26 +386,26 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: "\n
\r\n Some Message\r\n {\r\n value,\r\n select,\r\n =0 {\r\n zero\r\n }\r\n }
" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - // NOTE: The template has escaped `\r\n` line-endings markers that will be converted to real - // `\r\n` line-ending chars when loaded from the test file-system. - templateUrl: 'template.html' - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: "\n
\r\n Some Message\r\n {\r\n value,\r\n select,\r\n =0 {\r\n zero\r\n }\r\n }
" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + // NOTE: The template has escaped `\r\n` line-endings markers that will be converted to real + // `\r\n` line-ending chars when loaded from the test file-system. + templateUrl: 'template.html' + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: external_template_legacy_non_normalized.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/line_ending_normalization/TEST_CASES.json b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/line_ending_normalization/TEST_CASES.json index bd6e3d7763..d91df4e2f6 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/line_ending_normalization/TEST_CASES.json +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/line_ending_normalization/TEST_CASES.json @@ -106,6 +106,9 @@ "i18nNormalizeLineEndingsInICUs": true, "enableI18nLegacyMessageIdFormat": true }, + "compilationModeFilter": [ + "full compile" + ], "expectations": [ { "files": [ @@ -130,6 +133,9 @@ "i18nNormalizeLineEndingsInICUs": false, "enableI18nLegacyMessageIdFormat": true }, + "compilationModeFilter": [ + "full compile" + ], "expectations": [ { "files": [ @@ -154,6 +160,9 @@ "i18nNormalizeLineEndingsInICUs": true, "enableI18nLegacyMessageIdFormat": true }, + "compilationModeFilter": [ + "full compile" + ], "expectations": [ { "extraChecks": [ @@ -172,6 +181,9 @@ "i18nNormalizeLineEndingsInICUs": false, "enableI18nLegacyMessageIdFormat": true }, + "compilationModeFilter": [ + "full compile" + ], "expectations": [ { "extraChecks": [ diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/line_ending_normalization/external_template_legacy_non_normalized.ts b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/line_ending_normalization/external_template_legacy_non_normalized.ts deleted file mode 100644 index 26ea41f171..0000000000 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/line_ending_normalization/external_template_legacy_non_normalized.ts +++ /dev/null @@ -1,15 +0,0 @@ -import {Component, NgModule} from '@angular/core'; - -@Component({ - selector: 'my-component', - // NOTE: The template has escaped `\r\n` line-endings markers that will be converted to real - // `\r\n` line-ending chars when loaded from the test file-system. - templateUrl: 'template.html' -}) -export class MyComponent { - value!: any; -} - -@NgModule({declarations: [MyComponent]}) -export class MyModule { -} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/line_ending_normalization/external_template_non_legacy_non_normalized.ts b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/line_ending_normalization/external_template_non_legacy_non_normalized.ts deleted file mode 100644 index 26ea41f171..0000000000 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/line_ending_normalization/external_template_non_legacy_non_normalized.ts +++ /dev/null @@ -1,15 +0,0 @@ -import {Component, NgModule} from '@angular/core'; - -@Component({ - selector: 'my-component', - // NOTE: The template has escaped `\r\n` line-endings markers that will be converted to real - // `\r\n` line-ending chars when loaded from the test file-system. - templateUrl: 'template.html' -}) -export class MyComponent { - value!: any; -} - -@NgModule({declarations: [MyComponent]}) -export class MyModule { -} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/line_ending_normalization/inline_template_legacy_non_normalized.ts b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/line_ending_normalization/inline_template_legacy_non_normalized.ts deleted file mode 100644 index e488573f5a..0000000000 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/line_ending_normalization/inline_template_legacy_non_normalized.ts +++ /dev/null @@ -1,25 +0,0 @@ -import {Component, NgModule} from '@angular/core'; - -@Component({ - selector: 'my-component', - // NOTE: This template has escaped `\r\n` line-endings markers that will be converted to real - // `\r\n` line-ending chars when loaded from the test file-system. - template: ` -
\r\n -Some Message\r\n -{\r\n - value,\r\n - select,\r\n - =0 {\r\n - zero\r\n - }\r\n -}
` -}) -export class MyComponent { - value!: any; -} - -@NgModule({declarations: [MyComponent]}) -export class MyModule { -} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/line_ending_normalization/inline_template_legacy_normalized.ts b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/line_ending_normalization/inline_template_legacy_normalized.ts deleted file mode 100644 index e488573f5a..0000000000 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/line_ending_normalization/inline_template_legacy_normalized.ts +++ /dev/null @@ -1,25 +0,0 @@ -import {Component, NgModule} from '@angular/core'; - -@Component({ - selector: 'my-component', - // NOTE: This template has escaped `\r\n` line-endings markers that will be converted to real - // `\r\n` line-ending chars when loaded from the test file-system. - template: ` -
\r\n -Some Message\r\n -{\r\n - value,\r\n - select,\r\n - =0 {\r\n - zero\r\n - }\r\n -}
` -}) -export class MyComponent { - value!: any; -} - -@NgModule({declarations: [MyComponent]}) -export class MyModule { -} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/localize_legacy_message_ids/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/localize_legacy_message_ids/GOLDEN_PARTIAL.js index 494b6e15a8..c875e1fc24 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/localize_legacy_message_ids/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/localize_legacy_message_ids/GOLDEN_PARTIAL.js @@ -5,28 +5,28 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Some Message
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
Some Message
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: legacy_enabled.d.ts @@ -49,28 +49,28 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Some Message
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
Some Message
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: legacy_disabled.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/localize_legacy_message_ids/TEST_CASES.json b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/localize_legacy_message_ids/TEST_CASES.json index c5ff12e140..ce115a9574 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/localize_legacy_message_ids/TEST_CASES.json +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/localize_legacy_message_ids/TEST_CASES.json @@ -9,6 +9,9 @@ "angularCompilerOptions": { "enableI18nLegacyMessageIdFormat": true }, + "compilationModeFilter": [ + "full compile" + ], "expectations": [ { "extraChecks": [ diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/namespaces/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/namespaces/GOLDEN_PARTIAL.js index efe4774881..e063694d2c 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/namespaces/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/namespaces/GOLDEN_PARTIAL.js @@ -5,8 +5,8 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` @@ -15,11 +15,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` @@ -28,17 +28,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty `, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: foreign_object.d.ts @@ -61,8 +61,8 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` @@ -71,11 +71,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` @@ -84,17 +84,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty `, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: namespaced_div.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/nested_nodes/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/nested_nodes/GOLDEN_PARTIAL.js index 1e708bd57f..720c27ea31 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/nested_nodes/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/nested_nodes/GOLDEN_PARTIAL.js @@ -5,36 +5,36 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: empty_content.d.ts @@ -57,28 +57,28 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Some text
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
Some text
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: comments_in_translated_text.d.ts @@ -101,28 +101,28 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Some text 'with single quotes', "with double quotes", \`with backticks\` and without quotes.
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
Some text 'with single quotes', "with double quotes", \`with backticks\` and without quotes.
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: escape_quotes.d.ts @@ -148,24 +148,24 @@ export class MyComponent { this.count = 1; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
`{{ count }}`
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: '
`{{ count }}`
', - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
`{{ count }}`
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: '
`{{ count }}`
', + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: backtick_quotes.d.ts @@ -189,36 +189,36 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
My i18n block #1
My non-i18n block #1
My i18n block #2
My non-i18n block #2
My i18n block #3
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
My i18n block #1
My non-i18n block #1
My i18n block #2
My non-i18n block #2
My i18n block #3
`, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: plain_text_messages.d.ts @@ -245,34 +245,34 @@ export class MyComponent { this.valueB = ''; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Named interpolation: {{ valueA // i18n(ph="PH_A") }} Named interpolation with spaces: {{ valueB // i18n(ph="PH B") }}
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
Named interpolation: {{ valueA // i18n(ph="PH_A") }} Named interpolation with spaces: {{ valueB // i18n(ph="PH B") }}
`, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: named_interpolations.d.ts @@ -300,29 +300,29 @@ export class MyComponent { this.valueA = ''; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
{% valueA %}
`, isInline: true, interpolation: ["{%", "%}"] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
{% valueA %}
`, - interpolation: ['{%', '%}'], - }] - }], null, null); })(); + interpolation: ['{%', '%}'], + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: interpolation_custom_config.d.ts @@ -347,44 +347,44 @@ import * as i0 from "@angular/core"; export class AsyncPipe { transform(v) { } } -AsyncPipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AsyncPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -AsyncPipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AsyncPipe, name: "async" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AsyncPipe, [{ - type: Pipe, - args: [{ name: 'async' }] - }], null, null); })(); +AsyncPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AsyncPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +AsyncPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AsyncPipe, name: "async" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AsyncPipe, decorators: [{ + type: Pipe, + args: [{ name: 'async' }] + }] }); export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
{{ valueA | async }} {{ valueA?.a?.b }} {{ valueA.getRawValue()?.getTitle() }}
`, isInline: true, pipes: { "async": AsyncPipe } }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
{{ valueA | async }} {{ valueA?.a?.b }} {{ valueA.getRawValue()?.getTitle() }}
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, AsyncPipe] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent, AsyncPipe] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, AsyncPipe] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent, AsyncPipe] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: interpolation_complex_expressions.d.ts @@ -414,12 +414,12 @@ import * as i0 from "@angular/core"; export class UppercasePipe { transform(v) { } } -UppercasePipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -UppercasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, name: "uppercase" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UppercasePipe, [{ - type: Pipe, - args: [{ name: 'uppercase' }] - }], null, null); })(); +UppercasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +UppercasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, name: "uppercase" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, decorators: [{ + type: Pipe, + args: [{ name: 'uppercase' }] + }] }); export class MyComponent { constructor() { this.one = 1; @@ -429,32 +429,32 @@ export class MyComponent { this.five = 5; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
My i18n block #{{ one }}
My i18n block #{{ two | uppercase }}
My i18n block #{{ three + four + five }}
`, isInline: true, pipes: { "uppercase": UppercasePipe } }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
My i18n block #{{ one }}
My i18n block #{{ two | uppercase }}
My i18n block #{{ three + four + five }}
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, UppercasePipe] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent, UppercasePipe] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, UppercasePipe] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent, UppercasePipe] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: bindings_in_content.d.ts @@ -488,12 +488,12 @@ import * as i0 from "@angular/core"; export class UppercasePipe { transform(v) { } } -UppercasePipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -UppercasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, name: "uppercase" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UppercasePipe, [{ - type: Pipe, - args: [{ name: 'uppercase' }] - }], null, null); })(); +UppercasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +UppercasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, name: "uppercase" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, decorators: [{ + type: Pipe, + args: [{ name: 'uppercase' }] + }] }); export class MyComponent { constructor() { this.one = 1; @@ -501,8 +501,8 @@ export class MyComponent { this.nestedInBlockTwo = ''; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
My i18n block #{{ one }} Plain text in nested element @@ -518,11 +518,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, isInline: true, pipes: { "uppercase": UppercasePipe } }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
My i18n block #{{ one }} Plain text in nested element @@ -538,17 +538,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, UppercasePipe] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent, UppercasePipe] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, UppercasePipe] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent, UppercasePipe] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: nested_elements.d.ts @@ -580,16 +580,16 @@ import * as i0 from "@angular/core"; export class UppercasePipe { transform(v) { } } -UppercasePipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -UppercasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, name: "uppercase" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UppercasePipe, [{ - type: Pipe, - args: [{ name: 'uppercase' }] - }], null, null); })(); +UppercasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +UppercasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, name: "uppercase" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, decorators: [{ + type: Pipe, + args: [{ name: 'uppercase' }] + }] }); export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
My i18n block #1 with value: {{ valueA }} @@ -603,11 +603,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, isInline: true, pipes: { "uppercase": UppercasePipe } }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
My i18n block #1 with value: {{ valueA }} @@ -621,17 +621,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [UppercasePipe, MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [UppercasePipe, MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [UppercasePipe, MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [UppercasePipe, MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: nested_elements_with_i18n_attributes.d.ts @@ -664,8 +664,8 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Some content
@@ -678,11 +678,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
Some content
@@ -695,17 +695,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: nested_templates.d.ts @@ -728,32 +728,32 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` `, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: self_closing.d.ts @@ -776,8 +776,8 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Some content
@@ -800,11 +800,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
Some content
@@ -827,17 +827,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: nested_templates_context.d.ts @@ -860,28 +860,28 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Some other content {{ valueA }}
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
Some other content {{ valueA }}
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: directives.d.ts @@ -905,28 +905,28 @@ import * as i0 from "@angular/core"; export class MyComponent { onClick() { } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Hello
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
Hello
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: event_listeners.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/nested_nodes/interpolation_complex_expressions.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/nested_nodes/interpolation_complex_expressions.js index 5f577ba2fb..be5a9ef843 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/nested_nodes/interpolation_complex_expressions.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/nested_nodes/interpolation_complex_expressions.js @@ -12,11 +12,11 @@ template: function MyComponent_Template(rf, ctx) { $r3$.ɵɵelementEnd(); } if (rf & 2) { - let $tmp_2_0$ = null; + let $tmp_2_0$; $r3$.ɵɵadvance(2); $r3$.ɵɵi18nExp($r3$.ɵɵpipeBind1(2, 3, ctx.valueA)) (ctx.valueA == null ? null : ctx.valueA.a == null ? null : ctx.valueA.a.b) (($tmp_2_0$ = ctx.valueA.getRawValue()) == null ? null : $tmp_2_0$.getTitle()); $r3$.ɵɵi18nApply(1); } -} \ No newline at end of file +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/ng-container_ng-template/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/ng-container_ng-template/GOLDEN_PARTIAL.js index 127bd0cb05..47972ba72d 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/ng-container_ng-template/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/ng-container_ng-template/GOLDEN_PARTIAL.js @@ -6,39 +6,39 @@ import * as i0 from "@angular/core"; export class UppercasePipe { transform(v) { } } -UppercasePipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -UppercasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, name: "uppercase" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UppercasePipe, [{ - type: Pipe, - args: [{ name: 'uppercase' }] - }], null, null); })(); +UppercasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +UppercasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, name: "uppercase" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, decorators: [{ + type: Pipe, + args: [{ name: 'uppercase' }] + }] }); export class MyComponent { constructor() { this.valueA = ''; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` Some content: {{ valueA | uppercase }} `, isInline: true, pipes: { "uppercase": UppercasePipe } }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` Some content: {{ valueA | uppercase }} `, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, UppercasePipe] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent, UppercasePipe] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, UppercasePipe] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent, UppercasePipe] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: single_ng-container.d.ts @@ -67,28 +67,28 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` Some content: {{ valueA | uppercase }} `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` Some content: {{ valueA | uppercase }} `, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: single_ng-template.d.ts @@ -112,46 +112,46 @@ import * as i0 from "@angular/core"; export class UppercasePipe { transform(v) { } } -UppercasePipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -UppercasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, name: "uppercase" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UppercasePipe, [{ - type: Pipe, - args: [{ name: 'uppercase' }] - }], null, null); })(); +UppercasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +UppercasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, name: "uppercase" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: UppercasePipe, decorators: [{ + type: Pipe, + args: [{ name: 'uppercase' }] + }] }); export class MyComponent { constructor() { this.valueA = ''; this.valueB = ''; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Template content: {{ valueA | uppercase }} Container content: {{ valueB | uppercase }}
`, isInline: true, pipes: { "uppercase": UppercasePipe } }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
Template content: {{ valueA | uppercase }} Container content: {{ valueB | uppercase }}
`, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, UppercasePipe] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent, UppercasePipe] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, UppercasePipe] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent, UppercasePipe] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: child_elements.d.ts @@ -184,30 +184,30 @@ export class MyComponent { this.age = 0; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` {gender, select, male {male} female {female} other {other}} {age, select, 10 {ten} 20 {twenty} other {other}} `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` {gender, select, male {male} female {female} other {other}} {age, select, 10 {ten} 20 {twenty} other {other}} `, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: bare_icus.d.ts @@ -231,8 +231,8 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Template A: {{ valueA | uppercase }} @@ -245,11 +245,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
Template A: {{ valueA | uppercase }} @@ -262,17 +262,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: nested_templates.d.ts @@ -298,30 +298,30 @@ export class MyComponent { this.gender = 'female'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` {gender, select, male {male} female {female} other {other}} {age, select, 10 {ten} 20 {twenty} other {other}} `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` {gender, select, male {male} female {female} other {other}} {age, select, 10 {ten} 20 {twenty} other {other}} `, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: icus.d.ts @@ -345,8 +345,8 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` is my logo #1 @@ -354,11 +354,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty is my logo #2 `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` is my logo #1 @@ -366,17 +366,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty is my logo #2 `, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: self_closing_tags.d.ts @@ -399,30 +399,30 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Test
Test
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
Test
Test
`, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: duplicate_content.d.ts @@ -445,32 +445,32 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Hello there
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
Hello there
`, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: self_closing_ng-container.d.ts @@ -493,32 +493,32 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Hello there !
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
Hello there !
`, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: ng-container_with_non_text_content.d.ts @@ -541,30 +541,30 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` Content A Content B `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` Content A Content B `, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: structural_directives.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/self-closing_i18n_instructions/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/self-closing_i18n_instructions/GOLDEN_PARTIAL.js index 91fa8db4bb..98ae8c5159 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/self-closing_i18n_instructions/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/self-closing_i18n_instructions/GOLDEN_PARTIAL.js @@ -5,28 +5,28 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
My i18n block #1
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
My i18n block #1
`, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: text_only_content.d.ts @@ -52,28 +52,28 @@ export class MyComponent { this.age = 1; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
{age, select, 10 {ten} 20 {twenty} other {other}}
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
{age, select, 10 {ten} 20 {twenty} other {other}}
`, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: icu_only.d.ts @@ -97,30 +97,30 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` My i18n block #1 My i18n block #2 `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` My i18n block #1 My i18n block #2 `, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: ng-container_ng-template.d.ts @@ -143,30 +143,30 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` Text #1 Text #2 `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` Text #1 Text #2 `, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: styles.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/whitespace_preserving_mode/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/whitespace_preserving_mode/GOLDEN_PARTIAL.js index ffef7dece5..aa06c74f36 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/whitespace_preserving_mode/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_i18n/whitespace_preserving_mode/GOLDEN_PARTIAL.js @@ -5,35 +5,35 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
Some text Text inside span
`, isInline: true, preserveWhitespaces: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
Some text Text inside span
`, - preserveWhitespaces: true, - }] - }], null, null); })(); + preserveWhitespaces: true, + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: preserve_inner_content.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_input_outputs/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_input_outputs/GOLDEN_PARTIAL.js index 0d81426036..8d10c69036 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_input_outputs/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_input_outputs/GOLDEN_PARTIAL.js @@ -5,31 +5,31 @@ import { Component, Input, NgModule, Output } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", inputs: { componentInput: "componentInput", originalComponentInput: ["renamedComponentInput", "originalComponentInput"] }, outputs: { componentOutput: "componentOutput", originalComponentOutput: "renamedComponentOutput" }, ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: '' }] - }], null, { componentInput: [{ - type: Input - }], originalComponentInput: [{ - type: Input, - args: ['renamedComponentInput'] - }], componentOutput: [{ - type: Output - }], originalComponentOutput: [{ - type: Output, - args: ['renamedComponentOutput'] - }] }); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", inputs: { componentInput: "componentInput", originalComponentInput: ["renamedComponentInput", "originalComponentInput"] }, outputs: { componentOutput: "componentOutput", originalComponentOutput: "renamedComponentOutput" }, ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: '' }] + }], propDecorators: { componentInput: [{ + type: Input + }], originalComponentInput: [{ + type: Input, + args: ['renamedComponentInput'] + }], componentOutput: [{ + type: Output + }], originalComponentOutput: [{ + type: Output, + args: ['renamedComponentOutput'] + }] } }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: component.d.ts @@ -56,31 +56,31 @@ import { Directive, Input, NgModule, Output } from '@angular/core'; import * as i0 from "@angular/core"; export class MyDirective { } -MyDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -MyDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: MyDirective, selector: "[my-directive]", inputs: { directiveInput: "directiveInput", originalDirectiveInput: ["renamedDirectiveInput", "originalDirectiveInput"] }, outputs: { directiveOutput: "directiveOutput", originalDirectiveOutput: "renamedDirectiveOutput" }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyDirective, [{ - type: Directive, - args: [{ selector: '[my-directive]' }] - }], null, { directiveInput: [{ - type: Input - }], originalDirectiveInput: [{ - type: Input, - args: ['renamedDirectiveInput'] - }], directiveOutput: [{ - type: Output - }], originalDirectiveOutput: [{ - type: Output, - args: ['renamedDirectiveOutput'] - }] }); })(); +MyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +MyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyDirective, selector: "[my-directive]", inputs: { directiveInput: "directiveInput", originalDirectiveInput: ["renamedDirectiveInput", "originalDirectiveInput"] }, outputs: { directiveOutput: "directiveOutput", originalDirectiveOutput: "renamedDirectiveOutput" }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDirective, decorators: [{ + type: Directive, + args: [{ selector: '[my-directive]' }] + }], propDecorators: { directiveInput: [{ + type: Input + }], originalDirectiveInput: [{ + type: Input, + args: ['renamedDirectiveInput'] + }], directiveOutput: [{ + type: Output + }], originalDirectiveOutput: [{ + type: Output, + args: ['renamedDirectiveOutput'] + }] } }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyDirective] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyDirective] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyDirective] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyDirective] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: directive.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/GOLDEN_PARTIAL.js index 3cf7d47bcd..5e698d0a5f 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/GOLDEN_PARTIAL.js @@ -6,21 +6,21 @@ import * as i0 from "@angular/core"; export class MyComponent { onClick(event) { } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: `
` }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: `
` }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: element_listener.d.ts @@ -44,30 +44,30 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyApp { } -MyApp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: `
My App
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyApp, [{ - type: Component, - args: [{ selector: 'my-app', template: `
My App
` }] - }], null, null); })(); +MyApp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyApp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyApp, selector: "my-app", ngImport: i0, template: `
My App
`, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyApp, decorators: [{ + type: Component, + args: [{ selector: 'my-app', template: `
My App
` }] + }] }); export class MyComponent { onClick(event) { } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ``, isInline: true, components: [{ type: MyApp, selector: "my-app" }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: `` }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ``, isInline: true, components: [{ type: MyApp, selector: "my-app" }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: `` }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, MyApp] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent, MyApp] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, MyApp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent, MyApp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: component_listener.d.ts @@ -97,34 +97,34 @@ export class MyComponent { onClick(name) { } onClick2(name) { } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: shared_snapshot_listeners.d.ts @@ -150,30 +150,30 @@ import * as i0 from "@angular/core"; export class MyComponent { onClick(v) { } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` ` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: local_ref_before_listener.d.ts @@ -199,24 +199,24 @@ export class MyComponent { click() { } change() { } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: `
`, - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
`, + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: same_element_chained_listeners.d.ts @@ -245,49 +245,49 @@ export class SomeComp { this.delete = new EventEmitter(); } } -SomeComp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -SomeComp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: SomeComp, selector: "some-comp", outputs: { update: "update", delete: "delete" }, ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SomeComp, [{ - type: Component, - args: [{ - selector: 'some-comp', - template: '', - }] - }], null, { update: [{ - type: Output - }], delete: [{ - type: Output - }] }); })(); +SomeComp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +SomeComp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: SomeComp, selector: "some-comp", outputs: { update: "update", delete: "delete" }, ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: SomeComp, decorators: [{ + type: Component, + args: [{ + selector: 'some-comp', + template: '', + }] + }], propDecorators: { update: [{ + type: Output + }], delete: [{ + type: Output + }] } }); export class MyComponent { click() { } change() { } delete() { } update() { } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true, components: [{ type: SomeComp, selector: "some-comp", outputs: ["update", "delete"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, SomeComp] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent, SomeComp] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, SomeComp] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent, SomeComp] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: cross_element_chained_listeners.d.ts @@ -321,24 +321,24 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ``, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: `` - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ``, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `` + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: template_chained_listeners.d.ts @@ -362,12 +362,12 @@ import * as i0 from "@angular/core"; export class MyComponent { onClick() { } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ template: `
` }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: `
`, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ template: `
` }] + }] }); /**************************************************************************************************** * PARTIAL FILE: no_event_arg_listener.d.ts @@ -389,20 +389,20 @@ export class MyComponent { click() { } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", host: { listeners: { "mousedown": "mousedown()", "click": "click()" } }, ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: '', - host: { - '(mousedown)': 'mousedown()', - } - }] - }], null, { click: [{ - type: HostListener, - args: ['click'] - }] }); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", host: { listeners: { "mousedown": "mousedown()", "click": "click()" } }, ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + template: '', + host: { + '(mousedown)': 'mousedown()', + } + }] + }], propDecorators: { click: [{ + type: HostListener, + args: ['click'] + }] } }); /**************************************************************************************************** * PARTIAL FILE: no_event_arg_host_listener.d.ts @@ -424,14 +424,14 @@ export class MyComponent { click(target) { } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -MyComponent.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: MyComponent, host: { listeners: { "click": "click($event.target)" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Directive - }], null, { click: [{ - type: HostListener, - args: ['click', ['$event.target']] - }] }); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +MyComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, host: { listeners: { "click": "click($event.target)" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Directive + }], propDecorators: { click: [{ + type: HostListener, + args: ['click', ['$event.target']] + }] } }); /**************************************************************************************************** * PARTIAL FILE: has_event_arg_host_listener.d.ts @@ -451,12 +451,12 @@ import * as i0 from "@angular/core"; class Comp { c(event) { } } -Comp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Comp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -Comp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: Comp, selector: "ng-component", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Comp, [{ - type: Component, - args: [{ template: '
' }] - }], null, null); })(); +Comp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Comp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +Comp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: Comp, selector: "ng-component", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Comp, decorators: [{ + type: Component, + args: [{ template: '
' }] + }] }); /**************************************************************************************************** * PARTIAL FILE: event_arg_listener_implicit_meaning.d.ts @@ -474,12 +474,12 @@ class Comp { } c(value) { } } -Comp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Comp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -Comp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: Comp, selector: "ng-component", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Comp, [{ - type: Component, - args: [{ template: '
' }] - }], null, null); })(); +Comp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Comp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +Comp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: Comp, selector: "ng-component", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Comp, decorators: [{ + type: Component, + args: [{ template: '
' }] + }] }); /**************************************************************************************************** * PARTIAL FILE: event_explicit_access.d.ts @@ -493,34 +493,34 @@ import { Component, Directive, Input, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class DivDir { } -DivDir.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: DivDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -DivDir.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: DivDir, selector: "div", inputs: { event: "event" }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DivDir, [{ - type: Directive, - args: [{ selector: 'div' }] - }], null, { event: [{ - type: Input - }] }); })(); +DivDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: DivDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +DivDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: DivDir, selector: "div", inputs: { event: "event" }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: DivDir, decorators: [{ + type: Directive, + args: [{ selector: 'div' }] + }], propDecorators: { event: [{ + type: Input + }] } }); class Comp { constructor() { this.$event = 1; } } -Comp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Comp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -Comp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: Comp, selector: "ng-component", ngImport: i0, template: '
', isInline: true, directives: [{ type: DivDir, selector: "div", inputs: ["event"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Comp, [{ - type: Component, - args: [{ template: '
' }] - }], null, null); })(); +Comp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Comp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +Comp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: Comp, selector: "ng-component", ngImport: i0, template: '
', isInline: true, directives: [{ type: DivDir, selector: "div", inputs: ["event"] }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Comp, decorators: [{ + type: Component, + args: [{ template: '
' }] + }] }); export class MyMod { } -MyMod.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyMod.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, declarations: [Comp, DivDir] }); -MyMod.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyMod, [{ - type: NgModule, - args: [{ declarations: [Comp, DivDir] }] - }], null, null); })(); +MyMod.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyMod.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, declarations: [Comp, DivDir] }); +MyMod.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyMod, decorators: [{ + type: NgModule, + args: [{ declarations: [Comp, DivDir] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: event_in_property_binding.d.ts @@ -545,12 +545,12 @@ import * as i0 from "@angular/core"; class Dir { c(event) { } } -Dir.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Dir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -Dir.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: Dir, host: { listeners: { "click": "c($event)" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Dir, [{ - type: Directive, - args: [{ host: { '(click)': 'c($event)' } }] - }], null, null); })(); +Dir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Dir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +Dir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: Dir, host: { listeners: { "click": "c($event)" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Dir, decorators: [{ + type: Directive, + args: [{ host: { '(click)': 'c($event)' } }] + }] }); /**************************************************************************************************** * PARTIAL FILE: event_arg_host_listener_implicit_meaning.d.ts @@ -568,19 +568,119 @@ class Dir { } c(value) { } } -Dir.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Dir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -Dir.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: Dir, host: { listeners: { "click": "c(this.$event)" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Dir, [{ - type: Directive, - args: [{ - host: { - '(click)': 'c(this.$event)', - } - }] - }], null, null); })(); +Dir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Dir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +Dir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: Dir, host: { listeners: { "click": "c(this.$event)" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: Dir, decorators: [{ + type: Directive, + args: [{ + host: { + '(click)': 'c(this.$event)', + } + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: event_host_explicit_access.d.ts ****************************************************************************************************/ export {}; +/**************************************************************************************************** + * PARTIAL FILE: implicit_receiver_keyed_write_inside_template.js + ****************************************************************************************************/ +import { Component, NgModule } from '@angular/core'; +import * as i0 from "@angular/core"; +export class MyComponent { + constructor() { + this.message = ''; + } +} +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` + + + + `, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` + + + + ` + }] + }] }); +export class MyModule { +} +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); + +/**************************************************************************************************** + * PARTIAL FILE: implicit_receiver_keyed_write_inside_template.d.ts + ****************************************************************************************************/ +import * as i0 from "@angular/core"; +export declare class MyComponent { + message: string; + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵcmp: i0.ɵɵComponentDeclaration; +} +export declare class MyModule { + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵinj: i0.ɵɵInjectorDeclaration; +} + +/**************************************************************************************************** + * PARTIAL FILE: embedded_view_listener_context.js + ****************************************************************************************************/ +import { Component, NgModule } from '@angular/core'; +import * as i0 from "@angular/core"; +export class MyComponent { +} +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` + + + + `, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` + + + + ` + }] + }] }); +export class MyModule { +} +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); + +/**************************************************************************************************** + * PARTIAL FILE: embedded_view_listener_context.d.ts + ****************************************************************************************************/ +import * as i0 from "@angular/core"; +export declare class MyComponent { + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵcmp: i0.ɵɵComponentDeclaration; +} +export declare class MyModule { + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵinj: i0.ɵɵInjectorDeclaration; +} + diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/TEST_CASES.json b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/TEST_CASES.json index 7a46d6f143..52cce67833 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/TEST_CASES.json +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/TEST_CASES.json @@ -264,6 +264,40 @@ "failureMessage": "Incorrect event listener" } ] + }, + { + "description": "should generate the view restoration statements if a keyed write is used in an event listener from within an ng-template", + "inputFiles": [ + "implicit_receiver_keyed_write_inside_template.ts" + ], + "expectations": [ + { + "files": [ + { + "expected": "implicit_receiver_keyed_write_inside_template_template.js", + "generated": "implicit_receiver_keyed_write_inside_template.js" + } + ], + "failureMessage": "Incorrect template" + } + ] + }, + { + "description": "should reference correct context in listener inside embedded view", + "inputFiles": [ + "embedded_view_listener_context.ts" + ], + "expectations": [ + { + "files": [ + { + "expected": "embedded_view_listener_context_template.js", + "generated": "embedded_view_listener_context.js" + } + ], + "failureMessage": "Incorrect template" + } + ] } ] } diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/property_bindings/interpolation.ts b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/embedded_view_listener_context.ts similarity index 66% rename from packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/property_bindings/interpolation.ts rename to packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/embedded_view_listener_context.ts index 95bf09eb8f..72876362f8 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/property_bindings/interpolation.ts +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/embedded_view_listener_context.ts @@ -3,10 +3,12 @@ import {Component, NgModule} from '@angular/core'; @Component({ selector: 'my-component', template: ` - ` + + + + ` }) export class MyComponent { - name = 'World'; } @NgModule({declarations: [MyComponent]}) diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/embedded_view_listener_context_template.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/embedded_view_listener_context_template.js new file mode 100644 index 0000000000..f903938b9c --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/embedded_view_listener_context_template.js @@ -0,0 +1,13 @@ +function MyComponent_ng_template_0_Template(rf, $ctx$) { + if (rf & 1) { + const _r3 = $i0$.ɵɵgetCurrentView(); + $i0$.ɵɵelementStart(0, "button", 0); + $i0$.ɵɵlistener("click", function MyComponent_ng_template_0_Template_button_click_0_listener() { + const restoredCtx = $i0$.ɵɵrestoreView(_r3); + const $obj_r1$ = restoredCtx.$implicit; + return $obj_r1$.value = 1; + }); + $i0$.ɵɵtext(1, "Change"); + $i0$.ɵɵelementEnd(); + } +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/implicit_receiver_keyed_write_inside_template.ts b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/implicit_receiver_keyed_write_inside_template.ts new file mode 100644 index 0000000000..63ff6a62cd --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/implicit_receiver_keyed_write_inside_template.ts @@ -0,0 +1,17 @@ +import {Component, NgModule} from '@angular/core'; + +@Component({ + selector: 'my-component', + template: ` + + + + ` +}) +export class MyComponent { + message = ''; +} + +@NgModule({declarations: [MyComponent]}) +export class MyModule { +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/implicit_receiver_keyed_write_inside_template_template.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/implicit_receiver_keyed_write_inside_template_template.js new file mode 100644 index 0000000000..bac6f51471 --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_listener/implicit_receiver_keyed_write_inside_template_template.js @@ -0,0 +1,13 @@ +function MyComponent_ng_template_0_Template(rf, $ctx$) { + if (rf & 1) { + const _r3 = $i0$.ɵɵgetCurrentView(); + $i0$.ɵɵelementStart(0, "button", 1); + $i0$.ɵɵlistener("click", function MyComponent_ng_template_0_Template_button_click_0_listener() { + $i0$.ɵɵrestoreView(_r3); + const $ctx_2$ = $i0$.ɵɵnextContext(); + return ($ctx_2$["mes" + "sage"] = "hello"); + }); + $i0$.ɵɵtext(1, "Click me"); + $i0$.ɵɵelementEnd(); + } +} diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_providers/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_providers/GOLDEN_PARTIAL.js index c91969c98c..4f58e9f63e 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_providers/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_providers/GOLDEN_PARTIAL.js @@ -12,26 +12,26 @@ class GreeterEN { } export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", providers: [GreeterEN, { provide: Greeter, useClass: GreeterEN }], ngImport: i0, template: '
', isInline: true, viewProviders: [GreeterEN] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: '
', - providers: [GreeterEN, { provide: Greeter, useClass: GreeterEN }], - viewProviders: [GreeterEN] - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", providers: [GreeterEN, { provide: Greeter, useClass: GreeterEN }], ngImport: i0, template: '
', isInline: true, viewProviders: [GreeterEN] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: '
', + providers: [GreeterEN, { provide: Greeter, useClass: GreeterEN }], + viewProviders: [GreeterEN] + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: providers_feature_providers_and_view_providers.d.ts @@ -61,25 +61,25 @@ class GreeterEN { } export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", providers: [GreeterEN, { provide: Greeter, useClass: GreeterEN }], ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: '
', - providers: [GreeterEN, { provide: Greeter, useClass: GreeterEN }] - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", providers: [GreeterEN, { provide: Greeter, useClass: GreeterEN }], ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: '
', + providers: [GreeterEN, { provide: Greeter, useClass: GreeterEN }] + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: providers_feature_providers_only.d.ts @@ -109,21 +109,21 @@ class GreeterEN { } export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
', isInline: true, viewProviders: [GreeterEN] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: '
', viewProviders: [GreeterEN] }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
', isInline: true, viewProviders: [GreeterEN] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: '
', viewProviders: [GreeterEN] }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: providers_feature_view_providers_only.d.ts @@ -146,21 +146,21 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: '
' }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: '
' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: providers_feature_no_providers.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/binding_slots/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/binding_slots/GOLDEN_PARTIAL.js index f9fe3cacfb..ea4cff48a8 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/binding_slots/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/binding_slots/GOLDEN_PARTIAL.js @@ -12,40 +12,40 @@ export class MyComponent { this.name = ''; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", inputs: { name: "name" }, host: { attributes: { "title": "foo title" }, properties: { "style": "this.myStyle", "class": "this.myClass", "id": "this.id", "title": "this.title" }, styleAttribute: "width:200px; height:500px", classAttribute: "foo baz" }, ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: '', - host: { 'style': 'width:200px; height:500px', 'class': 'foo baz', 'title': 'foo title' } - }] - }], null, { myStyle: [{ - type: HostBinding, - args: ['style'] - }], myClass: [{ - type: HostBinding, - args: ['class'] - }], id: [{ - type: HostBinding, - args: ['id'] - }], title: [{ - type: HostBinding, - args: ['title'] - }], name: [{ - type: Input, - args: ['name'] - }] }); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", inputs: { name: "name" }, host: { attributes: { "title": "foo title" }, properties: { "style": "this.myStyle", "class": "this.myClass", "id": "this.id", "title": "this.title" }, styleAttribute: "width:200px; height:500px", classAttribute: "foo baz" }, ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: '', + host: { 'style': 'width:200px; height:500px', 'class': 'foo baz', 'title': 'foo title' } + }] + }], propDecorators: { myStyle: [{ + type: HostBinding, + args: ['style'] + }], myClass: [{ + type: HostBinding, + args: ['class'] + }], id: [{ + type: HostBinding, + args: ['id'] + }], title: [{ + type: HostBinding, + args: ['title'] + }], name: [{ + type: Input, + args: ['name'] + }] } }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: component_host_binding_slots.d.ts @@ -83,24 +83,24 @@ export class WidthDirective { this.title = 'some title'; } } -WidthDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: WidthDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -WidthDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: WidthDirective, selector: "[myWidthDir]", host: { properties: { "style.width": "this.myWidth", "class.foo": "this.myFooClass", "id": "this.id", "title": "this.title" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WidthDirective, [{ - type: Directive, - args: [{ selector: '[myWidthDir]' }] - }], null, { myWidth: [{ - type: HostBinding, - args: ['style.width'] - }], myFooClass: [{ - type: HostBinding, - args: ['class.foo'] - }], id: [{ - type: HostBinding, - args: ['id'] - }], title: [{ - type: HostBinding, - args: ['title'] - }] }); })(); +WidthDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: WidthDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +WidthDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: WidthDirective, selector: "[myWidthDir]", host: { properties: { "style.width": "this.myWidth", "class.foo": "this.myFooClass", "id": "this.id", "title": "this.title" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: WidthDirective, decorators: [{ + type: Directive, + args: [{ selector: '[myWidthDir]' }] + }], propDecorators: { myWidth: [{ + type: HostBinding, + args: ['style.width'] + }], myFooClass: [{ + type: HostBinding, + args: ['class.foo'] + }], id: [{ + type: HostBinding, + args: ['id'] + }], title: [{ + type: HostBinding, + args: ['title'] + }] } }); /**************************************************************************************************** * PARTIAL FILE: directive_host_binding_slots.d.ts @@ -129,49 +129,49 @@ export class MyDir { this._animParam2 = null; } } -MyDir.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -MyDir.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: MyDir, selector: "[my-dir]", host: { properties: { "title": "title", "class.foo": "foo", "@anim": "{\n value: _animValue,\n params: {\n param1: _animParam1,\n param2: _animParam2\n }\n }" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyDir, [{ - type: Directive, - args: [{ - selector: '[my-dir]', - host: { - '[title]': 'title', - '[class.foo]': 'foo', - '[@anim]': `{ +MyDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +MyDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyDir, selector: "[my-dir]", host: { properties: { "title": "title", "class.foo": "foo", "@anim": "{\n value: _animValue,\n params: {\n param1: _animParam1,\n param2: _animParam2\n }\n }" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyDir, decorators: [{ + type: Directive, + args: [{ + selector: '[my-dir]', + host: { + '[title]': 'title', + '[class.foo]': 'foo', + '[@anim]': `{ value: _animValue, params: { param1: _animParam1, param2: _animParam2 } }` - } - }] - }], null, null); })(); + } + }] + }] }); export class MyAppComp { } -MyAppComp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyAppComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyAppComp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyAppComp, selector: "my-app", ngImport: i0, template: ` +MyAppComp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyAppComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyAppComp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyAppComp, selector: "my-app", ngImport: i0, template: `
`, isInline: true, directives: [{ type: MyDir, selector: "[my-dir]" }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyAppComp, [{ - type: Component, - args: [{ - selector: 'my-app', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyAppComp, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyAppComp, MyDir] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyAppComp, MyDir] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyAppComp, MyDir] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyAppComp, MyDir] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: host_binding_slots.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/chaining/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/chaining/GOLDEN_PARTIAL.js index 3cbdba9b7d..90598e7bf8 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/chaining/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/chaining/GOLDEN_PARTIAL.js @@ -10,20 +10,20 @@ export class MyComponent { this.yesToTomato = false; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: `
` - }] - }], null, null); })(); + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: class_bindings.d.ts @@ -49,20 +49,20 @@ export class MyComponent { this.transition = 'all 1337ms ease'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: `
` - }] - }], null, null); })(); + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: style_bindings.d.ts @@ -91,26 +91,26 @@ export class MyComponent { this.yesToTomato = false; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: `
` - }] - }], null, null); })(); + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: mixed_bindings.d.ts @@ -137,20 +137,20 @@ export class MyComponent { this.one = ''; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: `
` - }] - }], null, null); })(); + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: interpolations_equal_arity.d.ts @@ -174,26 +174,26 @@ export class MyComponent { this.three = ''; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: `
` - }] - }], null, null); })(); + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: interpolations_different_arity.d.ts @@ -221,8 +221,8 @@ export class MyComponent { this.yesToOrange = true; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: `
` - }] - }], null, null); })(); + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: break_different_instructions.d.ts @@ -274,26 +274,26 @@ export class MyComponent { this.width = '42px'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: `
` - }] - }], null, null); })(); + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: break_different_interpolation_instructions.d.ts @@ -324,26 +324,26 @@ export class MyComponent { this.yesToOrange = true; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", host: { properties: { "class.apple": "yesToApple", "style.color": "color", "class.tomato": "yesToTomato", "style.transition": "transition", "style.border": "this.border", "class.orange": "this.yesToOrange" } }, ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: '', - host: { - '[class.apple]': 'yesToApple', - '[style.color]': 'color', - '[class.tomato]': 'yesToTomato', - '[style.transition]': 'transition' - } - }] - }], null, { border: [{ - type: HostBinding, - args: ['style.border'] - }], yesToOrange: [{ - type: HostBinding, - args: ['class.orange'] - }] }); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", host: { properties: { "class.apple": "yesToApple", "style.color": "color", "class.tomato": "yesToTomato", "style.transition": "transition", "style.border": "this.border", "class.orange": "this.yesToOrange" } }, ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + template: '', + host: { + '[class.apple]': 'yesToApple', + '[style.color]': 'color', + '[class.tomato]': 'yesToTomato', + '[style.transition]': 'transition' + } + }] + }], propDecorators: { border: [{ + type: HostBinding, + args: ['style.border'] + }], yesToOrange: [{ + type: HostBinding, + args: ['class.orange'] + }] } }); /**************************************************************************************************** * PARTIAL FILE: host_bindings.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/class_bindings/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/class_bindings/GOLDEN_PARTIAL.js index 01ce7029dc..b1fd2c4090 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/class_bindings/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/class_bindings/GOLDEN_PARTIAL.js @@ -8,21 +8,21 @@ export class MyComponent { this.myClassExp = { 'foo': true }; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: `
` }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: `
` }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: class_binding.d.ts @@ -53,34 +53,34 @@ export class MyComponent { this.yesToOrange = true; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: class_ordering.d.ts @@ -109,32 +109,32 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: static_bindings.d.ts @@ -157,21 +157,21 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: `
` }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: `
` }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: empty_class_bindings.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/component_animations/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/component_animations/GOLDEN_PARTIAL.js index 89419f3d6b..24715547af 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/component_animations/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/component_animations/GOLDEN_PARTIAL.js @@ -5,21 +5,21 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '', isInline: true, animations: [{ name: 'foo123' }, { name: 'trigger123' }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', animations: [{ name: 'foo123' }, { name: 'trigger123' }], template: '' }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '', isInline: true, animations: [{ name: 'foo123' }, { name: 'trigger123' }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', animations: [{ name: 'foo123' }, { name: 'trigger123' }], template: '' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: metadata.d.ts @@ -42,21 +42,21 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '', isInline: true, animations: [] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', animations: [], template: '' }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '', isInline: true, animations: [] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', animations: [], template: '' }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: metadata_empty.d.ts @@ -82,30 +82,30 @@ export class MyComponent { this.exp = ''; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
`, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: animation_property_bindings.d.ts @@ -135,8 +135,8 @@ class MyComponent { this.doneEvent = event; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-cmp", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-cmp", ngImport: i0, template: `
state', [style({ 'opacity': '0' }), animate(500, style({ 'opacity': '1' }))]), ]), ] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-cmp', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-cmp', + template: `
`, - animations: [ - trigger('myAnimation', [ - transition('* => state', [style({ 'opacity': '0' }), animate(500, style({ 'opacity': '1' }))]), - ]), - ], - }] - }], null, null); })(); + animations: [ + trigger('myAnimation', [ + transition('* => state', [style({ 'opacity': '0' }), animate(500, style({ 'opacity': '1' }))]), + ]), + ], + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: animation_listeners.d.ts @@ -195,39 +195,39 @@ class MyAnimDir { onStart() { } onDone() { } } -MyAnimDir.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyAnimDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -MyAnimDir.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: MyAnimDir, selector: "[my-anim-dir]", host: { listeners: { "@myAnim.start": "onStart()", "@myAnim.done": "onDone()" }, properties: { "@myAnim": "myAnimState" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyAnimDir, [{ - type: Directive, - args: [{ - selector: '[my-anim-dir]', - host: { '[@myAnim]': 'myAnimState', '(@myAnim.start)': 'onStart()', '(@myAnim.done)': 'onDone()' } - }] - }], null, null); })(); +MyAnimDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyAnimDir, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +MyAnimDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyAnimDir, selector: "[my-anim-dir]", host: { listeners: { "@myAnim.start": "onStart()", "@myAnim.done": "onDone()" }, properties: { "@myAnim": "myAnimState" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyAnimDir, decorators: [{ + type: Directive, + args: [{ + selector: '[my-anim-dir]', + host: { '[@myAnim]': 'myAnimState', '(@myAnim.start)': 'onStart()', '(@myAnim.done)': 'onDone()' } + }] + }] }); class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-cmp", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-cmp", ngImport: i0, template: `
`, isInline: true, directives: [{ type: MyAnimDir, selector: "[my-anim-dir]" }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-cmp', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-cmp', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, MyAnimDir] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent, MyAnimDir] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, MyAnimDir] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent, MyAnimDir] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: animation_host_bindings.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/component_styles/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/component_styles/GOLDEN_PARTIAL.js index e2db0f81a0..f9083ceced 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/component_styles/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/component_styles/GOLDEN_PARTIAL.js @@ -5,27 +5,27 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '...', isInline: true, styles: ["div.foo { color: red; }", ":host p:nth-child(even) { --webkit-transition: 1s linear all; }"] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - styles: [ - 'div.foo { color: red; }', ':host p:nth-child(even) { --webkit-transition: 1s linear all; }' - ], - template: '...' - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '...', isInline: true, styles: ["div.foo { color: red; }", ":host p:nth-child(even) { --webkit-transition: 1s linear all; }"] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + styles: [ + 'div.foo { color: red; }', ':host p:nth-child(even) { --webkit-transition: 1s linear all; }' + ], + template: '...' + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: encapsulation_default.d.ts @@ -48,26 +48,26 @@ import { Component, NgModule, ViewEncapsulation } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '...', isInline: true, styles: ["div.tall { height: 123px; }", ":host.small p { height:5px; }"], encapsulation: i0.ViewEncapsulation.None }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - encapsulation: ViewEncapsulation.None, - styles: ['div.tall { height: 123px; }', ':host.small p { height:5px; }'], - template: '...' - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '...', isInline: true, styles: ["div.tall { height: 123px; }", ":host.small p { height:5px; }"], encapsulation: i0.ViewEncapsulation.None }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + encapsulation: ViewEncapsulation.None, + styles: ['div.tall { height: 123px; }', ':host.small p { height:5px; }'], + template: '...' + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: encapsulation_none.d.ts @@ -90,26 +90,26 @@ import { Component, NgModule, ViewEncapsulation } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '...', isInline: true, styles: ["div.cool { color: blue; }", ":host.nice p { color: gold; }"], encapsulation: i0.ViewEncapsulation.ShadowDom }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - encapsulation: ViewEncapsulation.ShadowDom, - selector: 'my-component', - styles: ['div.cool { color: blue; }', ':host.nice p { color: gold; }'], - template: '...' - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '...', isInline: true, styles: ["div.cool { color: blue; }", ":host.nice p { color: gold; }"], encapsulation: i0.ViewEncapsulation.ShadowDom }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + encapsulation: ViewEncapsulation.ShadowDom, + selector: 'my-component', + styles: ['div.cool { color: blue; }', ':host.nice p { color: gold; }'], + template: '...' + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: encapsulation_shadow_dom.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/host_bindings/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/host_bindings/GOLDEN_PARTIAL.js index 3bfa6f710f..f3babc5d97 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/host_bindings/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/host_bindings/GOLDEN_PARTIAL.js @@ -11,37 +11,37 @@ export class MyComponent { this.myFooClass = 'red'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", host: { properties: { "style": "this.myStyle", "class": "this.myClass", "style.color": "this.myColorProp", "class.foo": "this.myFooClass" }, styleAttribute: "width:200px; height:500px", classAttribute: "foo baz" }, ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: '', - host: { 'style': 'width:200px; height:500px', 'class': 'foo baz' } - }] - }], null, { myStyle: [{ - type: HostBinding, - args: ['style'] - }], myClass: [{ - type: HostBinding, - args: ['class'] - }], myColorProp: [{ - type: HostBinding, - args: ['style.color'] - }], myFooClass: [{ - type: HostBinding, - args: ['class.foo'] - }] }); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", host: { properties: { "style": "this.myStyle", "class": "this.myClass", "style.color": "this.myColorProp", "class.foo": "this.myFooClass" }, styleAttribute: "width:200px; height:500px", classAttribute: "foo baz" }, ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: '', + host: { 'style': 'width:200px; height:500px', 'class': 'foo baz' } + }] + }], propDecorators: { myStyle: [{ + type: HostBinding, + args: ['style'] + }], myClass: [{ + type: HostBinding, + args: ['class'] + }], myColorProp: [{ + type: HostBinding, + args: ['style.color'] + }], myFooClass: [{ + type: HostBinding, + args: ['class.foo'] + }] } }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: static_and_dynamic.d.ts @@ -80,37 +80,37 @@ export class MyComponent { this.myClasses = { a: true, b: true }; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", host: { properties: { "style.height.pt": "myHeightProp", "class.bar": "myBarClass", "style": "this.myStyle", "style.width": "this.myWidthProp", "class.foo": "this.myFooClass", "class": "this.myClasses" } }, ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: '', - host: { '[style.height.pt]': 'myHeightProp', '[class.bar]': 'myBarClass' } - }] - }], null, { myStyle: [{ - type: HostBinding, - args: ['style'] - }], myWidthProp: [{ - type: HostBinding, - args: ['style.width'] - }], myFooClass: [{ - type: HostBinding, - args: ['class.foo'] - }], myClasses: [{ - type: HostBinding, - args: ['class'] - }] }); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", host: { properties: { "style.height.pt": "myHeightProp", "class.bar": "myBarClass", "style": "this.myStyle", "style.width": "this.myWidthProp", "class.foo": "this.myFooClass", "class": "this.myClasses" } }, ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: '', + host: { '[style.height.pt]': 'myHeightProp', '[class.bar]': 'myBarClass' } + }] + }], propDecorators: { myStyle: [{ + type: HostBinding, + args: ['style'] + }], myWidthProp: [{ + type: HostBinding, + args: ['style.width'] + }], myFooClass: [{ + type: HostBinding, + args: ['class.foo'] + }], myClasses: [{ + type: HostBinding, + args: ['class'] + }] } }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: multiple_dynamic.d.ts @@ -150,37 +150,37 @@ export class MyComponent { this.myHeightExp = '200px'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", host: { properties: { "style!important": "myStyleExp", "class!important": "myClassExp", "class.foo!important": "this.myFooClassExp", "style.width!important": "this.myWidthExp" } }, ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", host: { properties: { "style!important": "myStyleExp", "class!important": "myClassExp", "class.foo!important": "this.myFooClassExp", "style.width!important": "this.myWidthExp" } }, ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
`, - host: { '[style!important]': 'myStyleExp', '[class!important]': 'myClassExp' } - }] - }], null, { myFooClassExp: [{ - type: HostBinding, - args: ['class.foo!important'] - }], myWidthExp: [{ - type: HostBinding, - args: ['style.width!important'] - }] }); })(); + host: { '[style!important]': 'myStyleExp', '[class!important]': 'myClassExp' } + }] + }], propDecorators: { myFooClassExp: [{ + type: HostBinding, + args: ['class.foo!important'] + }], myWidthExp: [{ + type: HostBinding, + args: ['style.width!important'] + }] } }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: important.d.ts @@ -220,8 +220,8 @@ export class MyComponent { this.p9 = 100; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
@@ -232,11 +232,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
@@ -247,17 +247,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: class_interpolation.d.ts @@ -300,8 +300,8 @@ export class MyComponent { this.p9 = 100; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
@@ -312,11 +312,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
@@ -327,17 +327,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: style_interpolation.d.ts @@ -372,71 +372,71 @@ export class ClassDirective { this.myClassMap = { red: true }; } } -ClassDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ClassDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -ClassDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: ClassDirective, selector: "[myClassDir]", host: { properties: { "class": "this.myClassMap" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ClassDirective, [{ - type: Directive, - args: [{ selector: '[myClassDir]' }] - }], null, { myClassMap: [{ - type: HostBinding, - args: ['class'] - }] }); })(); +ClassDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ClassDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +ClassDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: ClassDirective, selector: "[myClassDir]", host: { properties: { "class": "this.myClassMap" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ClassDirective, decorators: [{ + type: Directive, + args: [{ selector: '[myClassDir]' }] + }], propDecorators: { myClassMap: [{ + type: HostBinding, + args: ['class'] + }] } }); export class WidthDirective { constructor() { this.myWidth = 200; this.myFooClass = true; } } -WidthDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: WidthDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -WidthDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: WidthDirective, selector: "[myWidthDir]", host: { properties: { "style.width": "this.myWidth", "class.foo": "this.myFooClass" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WidthDirective, [{ - type: Directive, - args: [{ selector: '[myWidthDir]' }] - }], null, { myWidth: [{ - type: HostBinding, - args: ['style.width'] - }], myFooClass: [{ - type: HostBinding, - args: ['class.foo'] - }] }); })(); +WidthDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: WidthDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +WidthDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: WidthDirective, selector: "[myWidthDir]", host: { properties: { "style.width": "this.myWidth", "class.foo": "this.myFooClass" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: WidthDirective, decorators: [{ + type: Directive, + args: [{ selector: '[myWidthDir]' }] + }], propDecorators: { myWidth: [{ + type: HostBinding, + args: ['style.width'] + }], myFooClass: [{ + type: HostBinding, + args: ['class.foo'] + }] } }); export class HeightDirective { constructor() { this.myHeight = 200; this.myBarClass = true; } } -HeightDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HeightDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -HeightDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: HeightDirective, selector: "[myHeightDir]", host: { properties: { "style.height": "this.myHeight", "class.bar": "this.myBarClass" } }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HeightDirective, [{ - type: Directive, - args: [{ selector: '[myHeightDir]' }] - }], null, { myHeight: [{ - type: HostBinding, - args: ['style.height'] - }], myBarClass: [{ - type: HostBinding, - args: ['class.bar'] - }] }); })(); +HeightDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HeightDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +HeightDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: HeightDirective, selector: "[myHeightDir]", host: { properties: { "style.height": "this.myHeight", "class.bar": "this.myBarClass" } }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: HeightDirective, decorators: [{ + type: Directive, + args: [{ selector: '[myHeightDir]' }] + }], propDecorators: { myHeight: [{ + type: HostBinding, + args: ['style.height'] + }], myBarClass: [{ + type: HostBinding, + args: ['class.bar'] + }] } }); export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
', isInline: true, directives: [{ type: WidthDirective, selector: "[myWidthDir]" }, { type: HeightDirective, selector: "[myHeightDir]" }, { type: ClassDirective, selector: "[myClassDir]" }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: '
', - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '
', isInline: true, directives: [{ type: WidthDirective, selector: "[myWidthDir]" }, { type: HeightDirective, selector: "[myHeightDir]" }, { type: ClassDirective, selector: "[myClassDir]" }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: '
', + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, WidthDirective, HeightDirective, ClassDirective] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent, WidthDirective, HeightDirective, ClassDirective] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, WidthDirective, HeightDirective, ClassDirective] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent, WidthDirective, HeightDirective, ClassDirective] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: multiple_directives.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/interpolations/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/interpolations/GOLDEN_PARTIAL.js index 6ce3e76800..71130af6de 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/interpolations/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/interpolations/GOLDEN_PARTIAL.js @@ -16,8 +16,8 @@ export class MyComponent { this.nine = ''; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: `
@@ -29,10 +29,10 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + template: `
@@ -44,8 +44,8 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
` - }] - }], null, null); })(); + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: class_interpolations.d.ts @@ -83,8 +83,8 @@ export class MyComponent { this.nine = ''; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: `
@@ -96,10 +96,10 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + template: `
@@ -111,8 +111,8 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
` - }] - }], null, null); })(); + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: style_properties.d.ts @@ -143,18 +143,18 @@ export class MyComponent { this.two = ''; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + template: `
` - }] - }], null, null); })(); + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: style_binding_suffixed.d.ts @@ -182,22 +182,22 @@ export class MyComponent { this.myRepeat = 'no-repeat'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + template: `
` - }] - }], null, null); })(); + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: style_binding_sanitizer.d.ts @@ -225,18 +225,18 @@ export class MyComponent { this.two = ''; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + template: `
` - }] - }], null, null); })(); + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: style_binding_important.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/invalid/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/invalid/GOLDEN_PARTIAL.js index 4f6f70d1b9..9710e3a1a6 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/invalid/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/invalid/GOLDEN_PARTIAL.js @@ -8,12 +8,12 @@ export class MyComponent { this.isEnabled = true; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ template: '
' }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ template: '
' }] + }] }); /**************************************************************************************************** * PARTIAL FILE: individual_class_binding.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/mixed_style_and_class/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/mixed_style_and_class/GOLDEN_PARTIAL.js index 1e7da4d426..150bff81bd 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/mixed_style_and_class/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/mixed_style_and_class/GOLDEN_PARTIAL.js @@ -9,21 +9,21 @@ export class MyComponent { this.myClassExp = 'foo bar apple'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: `
` }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: `
` }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: mixed.d.ts @@ -55,45 +55,45 @@ import * as i0 from "@angular/core"; export class StylePipe { transform(v) { } } -StylePipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: StylePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -StylePipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: StylePipe, name: "stylePipe" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StylePipe, [{ - type: Pipe, - args: [{ name: 'stylePipe' }] - }], null, null); })(); +StylePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: StylePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +StylePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: StylePipe, name: "stylePipe" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: StylePipe, decorators: [{ + type: Pipe, + args: [{ name: 'stylePipe' }] + }] }); export class ClassPipe { transform(v) { } } -ClassPipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ClassPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -ClassPipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ClassPipe, name: "classPipe" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ClassPipe, [{ - type: Pipe, - args: [{ name: 'classPipe' }] - }], null, null); })(); +ClassPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ClassPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +ClassPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ClassPipe, name: "classPipe" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: ClassPipe, decorators: [{ + type: Pipe, + args: [{ name: 'classPipe' }] + }] }); export class MyComponent { constructor() { this.myStyleExp = [{ color: 'red' }, { color: 'blue', duration: 1000 }]; this.myClassExp = 'foo bar apple'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true, pipes: { "stylePipe": StylePipe, "classPipe": ClassPipe } }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: `
` - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true, pipes: { "stylePipe": StylePipe, "classPipe": ClassPipe } }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
` + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, StylePipe, ClassPipe] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent, StylePipe, ClassPipe] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, StylePipe, ClassPipe] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent, StylePipe, ClassPipe] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: pipe_bindings.d.ts @@ -135,12 +135,12 @@ import * as i0 from "@angular/core"; export class PipePipe { transform(v) { } } -PipePipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: PipePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -PipePipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: PipePipe, name: "pipe" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PipePipe, [{ - type: Pipe, - args: [{ name: 'pipe' }] - }], null, null); })(); +PipePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: PipePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +PipePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: PipePipe, name: "pipe" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: PipePipe, decorators: [{ + type: Pipe, + args: [{ name: 'pipe' }] + }] }); export class MyComponent { constructor() { this.myStyleExp = {}; @@ -151,36 +151,36 @@ export class MyComponent { this.item = 1; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
{{ item }}
`, isInline: true, pipes: { "pipe": PipePipe } }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
{{ item }}
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, PipePipe] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent, PipePipe] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent, PipePipe] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent, PipePipe] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: pipe_bindings_slots.d.ts @@ -220,34 +220,34 @@ export class MyComponent { this.r1 = true; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: multiple_elements.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/style_bindings/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/style_bindings/GOLDEN_PARTIAL.js index 1a99ee2d6d..e8528077e8 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/style_bindings/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_styling/style_bindings/GOLDEN_PARTIAL.js @@ -8,21 +8,21 @@ export class MyComponent { this.myStyleExp = [{ color: 'red' }, { color: 'blue', duration: 1000 }]; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: `
` }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: `
` }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: style_binding.d.ts @@ -55,70 +55,70 @@ export class MyComponentWithInterpolation { this.fooId = '123'; } } -MyComponentWithInterpolation.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponentWithInterpolation, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponentWithInterpolation.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponentWithInterpolation, selector: "my-component-with-interpolation", ngImport: i0, template: ` +MyComponentWithInterpolation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponentWithInterpolation, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponentWithInterpolation.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponentWithInterpolation, selector: "my-component-with-interpolation", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponentWithInterpolation, [{ - type: Component, - args: [{ - selector: 'my-component-with-interpolation', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponentWithInterpolation, decorators: [{ + type: Component, + args: [{ + selector: 'my-component-with-interpolation', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyComponentWithMuchosInterpolation { constructor() { this.fooId = '123'; this.fooUsername = 'superfoo'; } } -MyComponentWithMuchosInterpolation.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponentWithMuchosInterpolation, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponentWithMuchosInterpolation.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponentWithMuchosInterpolation, selector: "my-component-with-muchos-interpolation", ngImport: i0, template: ` +MyComponentWithMuchosInterpolation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponentWithMuchosInterpolation, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponentWithMuchosInterpolation.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponentWithMuchosInterpolation, selector: "my-component-with-muchos-interpolation", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponentWithMuchosInterpolation, [{ - type: Component, - args: [{ - selector: 'my-component-with-muchos-interpolation', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponentWithMuchosInterpolation, decorators: [{ + type: Component, + args: [{ + selector: 'my-component-with-muchos-interpolation', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyComponentWithoutInterpolation { constructor() { this.exp = 'bar'; } } -MyComponentWithoutInterpolation.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponentWithoutInterpolation, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponentWithoutInterpolation.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponentWithoutInterpolation, selector: "my-component-without-interpolation", ngImport: i0, template: ` +MyComponentWithoutInterpolation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponentWithoutInterpolation, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponentWithoutInterpolation.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponentWithoutInterpolation, selector: "my-component-without-interpolation", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponentWithoutInterpolation, [{ - type: Component, - args: [{ - selector: 'my-component-without-interpolation', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponentWithoutInterpolation, decorators: [{ + type: Component, + args: [{ + selector: 'my-component-without-interpolation', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponentWithInterpolation, MyComponentWithMuchosInterpolation, MyComponentWithoutInterpolation] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ - declarations: [ - MyComponentWithInterpolation, MyComponentWithMuchosInterpolation, - MyComponentWithoutInterpolation - ] - }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponentWithInterpolation, MyComponentWithMuchosInterpolation, MyComponentWithoutInterpolation] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ + declarations: [ + MyComponentWithInterpolation, MyComponentWithMuchosInterpolation, + MyComponentWithoutInterpolation + ] + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: binding_slots.d.ts @@ -158,32 +158,32 @@ export class MyComponent { this.myHeight = '100px'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: binding_slots_interpolations.d.ts @@ -218,21 +218,21 @@ export class MyComponent { this.myImage = 'url(foo.jpg)'; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: `
` }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: `
` }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: style_ordering.d.ts @@ -256,21 +256,21 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: `
` }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: `
` }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: style_binding_suffixed.d.ts @@ -293,21 +293,21 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ selector: 'my-component', template: `
` }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ selector: 'my-component', template: `
` }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: empty_style_bindings.d.ts diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_template/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_template/GOLDEN_PARTIAL.js index c6e996169a..31bd342a11 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_template/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_template/GOLDEN_PARTIAL.js @@ -10,8 +10,8 @@ export class MyComponent { format(outer, middle, inner) { } onClick(outer, middle, inner) { } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: nested_template_context.d.ts @@ -77,28 +77,28 @@ export class MyComponent { } _handleClick(d, i) { } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: nested_template_context_many_bindings.d.ts @@ -124,30 +124,30 @@ import * as i0 from "@angular/core"; export class MyComponent { greet(val) { } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: implicit_receiver.d.ts @@ -171,32 +171,32 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` {{ i }} - {{ item }} `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` {{ i }} - {{ item }} ` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: ng_for_context_variables.d.ts @@ -219,34 +219,34 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
{{ i }} - {{ item }}
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
{{ i }} - {{ item }}
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: ng_for_parent_context_variables.d.ts @@ -269,8 +269,8 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
@@ -278,11 +278,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
@@ -290,17 +290,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty
` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: template_context_skip.d.ts @@ -323,30 +323,30 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` some-content `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` some-content ` - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: ng_template.d.ts @@ -369,24 +369,24 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: 'some-content', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: 'some-content', - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: 'some-content', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: 'some-content', + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: ng_template_local_ref.d.ts @@ -409,24 +409,24 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: '', - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: '', + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: ng_template_output.d.ts @@ -452,28 +452,28 @@ class WithInput { this.dir = ''; } } -WithInput.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: WithInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -WithInput.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: WithInput, selector: "[dir]", inputs: { dir: "dir" }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WithInput, [{ - type: Directive, - args: [{ selector: '[dir]' }] - }], null, { dir: [{ - type: Input - }] }); })(); +WithInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: WithInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +WithInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: WithInput, selector: "[dir]", inputs: { dir: "dir" }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: WithInput, decorators: [{ + type: Directive, + args: [{ selector: '[dir]' }] + }], propDecorators: { dir: [{ + type: Input + }] } }); export class TestComp { constructor() { this.message = 'Hello'; } } -TestComp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestComp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestComp, selector: "my-app", ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestComp, [{ - type: Component, - args: [{ - selector: 'my-app', - template: '', - }] - }], null, null); })(); +TestComp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestComp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestComp, selector: "my-app", ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestComp, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + template: '', + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: ng_template_interpolated_prop.d.ts @@ -495,28 +495,28 @@ class WithInput { this.dir = ''; } } -WithInput.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: WithInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -WithInput.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: WithInput, selector: "[dir]", inputs: { dir: "dir" }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WithInput, [{ - type: Directive, - args: [{ selector: '[dir]' }] - }], null, { dir: [{ - type: Input - }] }); })(); +WithInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: WithInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +WithInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: WithInput, selector: "[dir]", inputs: { dir: "dir" }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: WithInput, decorators: [{ + type: Directive, + args: [{ selector: '[dir]' }] + }], propDecorators: { dir: [{ + type: Input + }] } }); export class TestComp { constructor() { this.message = 'Hello'; } } -TestComp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestComp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestComp, selector: "my-app", ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestComp, [{ - type: Component, - args: [{ - selector: 'my-app', - template: '', - }] - }], null, null); })(); +TestComp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestComp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestComp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestComp, selector: "my-app", ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestComp, decorators: [{ + type: Component, + args: [{ + selector: 'my-app', + template: '', + }] + }] }); /**************************************************************************************************** * PARTIAL FILE: ng_template_interpolated_prop_with_structural_directive.d.ts @@ -538,8 +538,8 @@ export class AComponent { this.items = [4, 2]; } } -AComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -AComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: AComponent, selector: "a-component", ngImport: i0, template: ` +AComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +AComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: AComponent, selector: "a-component", ngImport: i0, template: `

less than 10

less than 10

@@ -548,11 +548,11 @@ AComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", typ

more than 10

`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AComponent, [{ - type: Component, - args: [{ - selector: 'a-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AComponent, decorators: [{ + type: Component, + args: [{ + selector: 'a-component', + template: `

less than 10

less than 10

@@ -561,17 +561,17 @@ AComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", typ

more than 10

`, - }] - }], null, null); })(); + }] + }] }); export class AModule { } -AModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -AModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule, declarations: [AComponent] }); -AModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AModule, [{ - type: NgModule, - args: [{ declarations: [AComponent] }] - }], null, null); })(); +AModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +AModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule, declarations: [AComponent] }); +AModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule, decorators: [{ + type: NgModule, + args: [{ declarations: [AComponent] }] + }] }); export class BComponent { constructor() { this.items = [ @@ -580,8 +580,8 @@ export class BComponent { ]; } } -BComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -BComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: BComponent, selector: "b-component", ngImport: i0, template: ` +BComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +BComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: BComponent, selector: "b-component", ngImport: i0, template: `

less than 10

@@ -597,11 +597,11 @@ BComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", typ
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BComponent, [{ - type: Component, - args: [{ - selector: 'b-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BComponent, decorators: [{ + type: Component, + args: [{ + selector: 'b-component', + template: `

less than 10

@@ -617,17 +617,17 @@ BComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", typ
`, - }] - }], null, null); })(); + }] + }] }); export class BModule { } -BModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -BModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BModule, declarations: [BComponent] }); -BModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BModule, [{ - type: NgModule, - args: [{ declarations: [BComponent] }] - }], null, null); })(); +BModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +BModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BModule, declarations: [BComponent] }); +BModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BModule, decorators: [{ + type: NgModule, + args: [{ declarations: [BComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: unique_template_function_names.d.ts @@ -666,46 +666,46 @@ export class AComponent { this.show = true; } } -AComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -AComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: AComponent, selector: "a-component", ngImport: i0, template: ` +AComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +AComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: AComponent, selector: "a-component", ngImport: i0, template: ` `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AComponent, [{ - type: Component, - args: [{ - selector: 'a-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AComponent, decorators: [{ + type: Component, + args: [{ + selector: 'a-component', + template: ` `, - }] - }], null, null); })(); + }] + }] }); export class BComponent { constructor() { this.show = true; } } -BComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -BComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: BComponent, selector: "b-component", ngImport: i0, template: ` +BComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +BComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: BComponent, selector: "b-component", ngImport: i0, template: ` `, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BComponent, [{ - type: Component, - args: [{ - selector: 'b-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: BComponent, decorators: [{ + type: Component, + args: [{ + selector: 'b-component', + template: ` `, - }] - }], null, null); })(); + }] + }] }); export class AModule { } -AModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -AModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule, declarations: [AComponent, BComponent] }); -AModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AModule, [{ - type: NgModule, - args: [{ declarations: [AComponent, BComponent] }] - }], null, null); })(); +AModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +AModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule, declarations: [AComponent, BComponent] }); +AModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AModule, decorators: [{ + type: NgModule, + args: [{ declarations: [AComponent, BComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: unique_template_function_names_ng_content.d.ts @@ -737,8 +737,8 @@ export class MyComponent { this.items = [4, 2]; } } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `

{{ item }}

{{ item }}

@@ -747,11 +747,11 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty

{{ item }}

`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `

{{ item }}

{{ item }}

@@ -760,17 +760,17 @@ MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", ty

{{ item }}

`, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: unique_listener_function_names.d.ts @@ -794,24 +794,24 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: `
`, - }] - }], null, null); })(); +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: `
`, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: `
`, + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: template_binding_pipe.d.ts @@ -834,26 +834,26 @@ import { Component, NgModule } from '@angular/core'; import * as i0 from "@angular/core"; export class MyComponent { } -MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); -MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "my-component", ngImport: i0, template: ` {{a?.b ? 1 : 2 }}`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyComponent, [{ - type: Component, - args: [{ - selector: 'my-component', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + selector: 'my-component', + template: ` {{a?.b ? 1 : 2 }}`, - }] - }], null, null); })(); + }] + }] }); export class MyModule { } -MyModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); -MyModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyModule, [{ - type: NgModule, - args: [{ declarations: [MyComponent] }] - }], null, null); })(); +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); /**************************************************************************************************** * PARTIAL FILE: nested_ternary_operation.d.ts @@ -870,3 +870,54 @@ export declare class MyModule { static ɵinj: i0.ɵɵInjectorDeclaration; } +/**************************************************************************************************** + * PARTIAL FILE: shorthand_property_declaration.js + ****************************************************************************************************/ +import { Component, NgModule } from '@angular/core'; +import * as i0 from "@angular/core"; +export class MyComponent { + constructor() { + this.a = 1; + this.c = 3; + } + _handleClick(_value) { } +} +MyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); +MyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: MyComponent, selector: "ng-component", ngImport: i0, template: ` +
+ `, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyComponent, decorators: [{ + type: Component, + args: [{ + template: ` +
+ ` + }] + }] }); +export class MyModule { +} +MyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +MyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, declarations: [MyComponent] }); +MyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: MyModule, decorators: [{ + type: NgModule, + args: [{ declarations: [MyComponent] }] + }] }); + +/**************************************************************************************************** + * PARTIAL FILE: shorthand_property_declaration.d.ts + ****************************************************************************************************/ +import * as i0 from "@angular/core"; +export declare class MyComponent { + a: number; + c: number; + _handleClick(_value: any): void; + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵcmp: i0.ɵɵComponentDeclaration; +} +export declare class MyModule { + static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵinj: i0.ɵɵInjectorDeclaration; +} + diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_template/TEST_CASES.json b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_template/TEST_CASES.json index a8ee6599f7..602379b99f 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_template/TEST_CASES.json +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_template/TEST_CASES.json @@ -269,6 +269,23 @@ "failureMessage": "Incorrect template" } ] + }, + { + "description": "should handle shorthand property declarations in templates", + "inputFiles": [ + "shorthand_property_declaration.ts" + ], + "expectations": [ + { + "files": [ + { + "expected": "shorthand_property_declaration_template.js", + "generated": "shorthand_property_declaration.js" + } + ], + "failureMessage": "Incorrect template" + } + ] } ] } diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/text_bindings/interpolation.ts b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_template/shorthand_property_declaration.ts similarity index 62% rename from packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/text_bindings/interpolation.ts rename to packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_template/shorthand_property_declaration.ts index 8d85955209..e2a673de48 100644 --- a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_bindings/text_bindings/interpolation.ts +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_template/shorthand_property_declaration.ts @@ -1,12 +1,14 @@ import {Component, NgModule} from '@angular/core'; @Component({ - selector: 'my-component', template: ` -
Hello {{ name }}
` +
+ ` }) export class MyComponent { - name = 'World'; + a = 1; + c = 3; + _handleClick(_value: any) {} } @NgModule({declarations: [MyComponent]}) diff --git a/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_template/shorthand_property_declaration_template.js b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_template/shorthand_property_declaration_template.js new file mode 100644 index 0000000000..03de9b391b --- /dev/null +++ b/packages/compiler-cli/test/compliance/test_cases/r3_view_compiler_template/shorthand_property_declaration_template.js @@ -0,0 +1,13 @@ +template: function MyComponent_Template(rf, ctx) { + if (rf & 1) { + … + i0.ɵɵlistener("click", function MyComponent_Template_div_click_0_listener() { + return ctx._handleClick({ + a: ctx.a, + b: 2, + c: ctx.c + }); + }); + … + } +} diff --git a/packages/compiler-cli/test/compliance/test_cases/source_mapping/external_templates/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/source_mapping/external_templates/GOLDEN_PARTIAL.js index 228e3a4040..433da01359 100644 --- a/packages/compiler-cli/test/compliance/test_cases/source_mapping/external_templates/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/source_mapping/external_templates/GOLDEN_PARTIAL.js @@ -5,20 +5,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: "
this is a test
\n
{{ 1 + 2 }}
" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - templateUrl: './dir/test.html', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: "
this is a test
\n
{{ 1 + 2 }}
" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + templateUrl: './dir/test.html', + }] + }] }); //# sourceMappingURL=external_template.js.map /**************************************************************************************************** * PARTIAL FILE: external_template.js.map ****************************************************************************************************/ -{"version":3,"file":"external_template.js","sourceRoot":"","sources":["../external_template.ts","../dir/test.html"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDCNpB,mDACsB;uFDKT,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,WAAW,EAAE,iBAAiB;aAC/B","sourcesContent":["import {Component} from '@angular/core';\n\n@Component({\n selector: 'test-cmp',\n templateUrl: './dir/test.html',\n})\nexport class TestCmp {\n}\n","
this is a test
\n
{{ 1 + 2 }}
"]} +{"version":3,"file":"external_template.js","sourceRoot":"","sources":["../external_template.ts","../dir/test.html"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDCNpB,mDACsB;sGDKT,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,WAAW,EAAE,iBAAiB;iBAC/B","sourcesContent":["import {Component} from '@angular/core';\n\n@Component({\n selector: 'test-cmp',\n templateUrl: './dir/test.html',\n})\nexport class TestCmp {\n}\n","
this is a test
\n
{{ 1 + 2 }}
"]} /**************************************************************************************************** * PARTIAL FILE: external_template.d.ts ****************************************************************************************************/ @@ -35,20 +35,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: "
this is a test
\n
{{ 1 + 2 }}
" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - templateUrl: './dir/test.html', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: "
this is a test
\n
{{ 1 + 2 }}
" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + templateUrl: './dir/test.html', + }] + }] }); //# sourceMappingURL=external_template.js.map /**************************************************************************************************** * PARTIAL FILE: external_template.js.map ****************************************************************************************************/ -{"version":3,"file":"external_template.js","sourceRoot":"","sources":["../external_template.ts","../dir/test.html"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDCNpB,mDACsB;uFDKT,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,WAAW,EAAE,iBAAiB;aAC/B","sourcesContent":["import {Component} from '@angular/core';\n\n@Component({\n selector: 'test-cmp',\n templateUrl: './dir/test.html',\n})\nexport class TestCmp {\n}\n","
this is a test
\n
{{ 1 + 2 }}
"]} +{"version":3,"file":"external_template.js","sourceRoot":"","sources":["../external_template.ts","../dir/test.html"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDCNpB,mDACsB;sGDKT,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,WAAW,EAAE,iBAAiB;iBAC/B","sourcesContent":["import {Component} from '@angular/core';\n\n@Component({\n selector: 'test-cmp',\n templateUrl: './dir/test.html',\n})\nexport class TestCmp {\n}\n","
this is a test
\n
{{ 1 + 2 }}
"]} /**************************************************************************************************** * PARTIAL FILE: external_template.d.ts ****************************************************************************************************/ @@ -65,20 +65,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: "
this is a test
\n
{{ 1 + 2 }}
" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - templateUrl: './dir/extra.html', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: "
this is a test
\n
{{ 1 + 2 }}
" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + templateUrl: './dir/extra.html', + }] + }] }); //# sourceMappingURL=extra_root_dir.js.map /**************************************************************************************************** * PARTIAL FILE: extra_root_dir.js.map ****************************************************************************************************/ -{"version":3,"file":"extra_root_dir.js","sourceRoot":"","sources":["../extra_root_dir.ts","../extraRootDir/dir/extra.html"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDCNpB,mDACsB;uFDKT,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,WAAW,EAAE,kBAAkB;aAChC","sourcesContent":["import {Component} from '@angular/core';\n\n@Component({\n selector: 'test-cmp',\n templateUrl: './dir/extra.html',\n})\nexport class TestCmp {\n}\n","
this is a test
\n
{{ 1 + 2 }}
"]} +{"version":3,"file":"extra_root_dir.js","sourceRoot":"","sources":["../extra_root_dir.ts","../extraRootDir/dir/extra.html"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDCNpB,mDACsB;sGDKT,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,WAAW,EAAE,kBAAkB;iBAChC","sourcesContent":["import {Component} from '@angular/core';\n\n@Component({\n selector: 'test-cmp',\n templateUrl: './dir/extra.html',\n})\nexport class TestCmp {\n}\n","
this is a test
\n
{{ 1 + 2 }}
"]} /**************************************************************************************************** * PARTIAL FILE: extra_root_dir.d.ts ****************************************************************************************************/ @@ -95,20 +95,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: "
this is a test
\n
{{ 1 + 2 }}
" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - templateUrl: './dir/extra.html', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: "
this is a test
\n
{{ 1 + 2 }}
" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + templateUrl: './dir/extra.html', + }] + }] }); //# sourceMappingURL=extra_root_dir.js.map /**************************************************************************************************** * PARTIAL FILE: extra_root_dir.js.map ****************************************************************************************************/ -{"version":3,"file":"extra_root_dir.js","sourceRoot":"","sources":["../extra_root_dir.ts","../extraRootDir/dir/extra.html"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDCNpB,mDACsB;uFDKT,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,WAAW,EAAE,kBAAkB;aAChC","sourcesContent":["import {Component} from '@angular/core';\n\n@Component({\n selector: 'test-cmp',\n templateUrl: './dir/extra.html',\n})\nexport class TestCmp {\n}\n","
this is a test
\n
{{ 1 + 2 }}
"]} +{"version":3,"file":"extra_root_dir.js","sourceRoot":"","sources":["../extra_root_dir.ts","../extraRootDir/dir/extra.html"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDCNpB,mDACsB;sGDKT,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,WAAW,EAAE,kBAAkB;iBAChC","sourcesContent":["import {Component} from '@angular/core';\n\n@Component({\n selector: 'test-cmp',\n templateUrl: './dir/extra.html',\n})\nexport class TestCmp {\n}\n","
this is a test
\n
{{ 1 + 2 }}
"]} /**************************************************************************************************** * PARTIAL FILE: extra_root_dir.d.ts ****************************************************************************************************/ @@ -125,20 +125,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: "\n
\r\n Some Message\r\n Encoded character: \uD83D\uDE80\r\n
" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - templateUrl: './escaped_chars.html', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: "\n
\r\n Some Message\r\n Encoded character: \uD83D\uDE80\r\n
" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + templateUrl: './escaped_chars.html', + }] + }] }); //# sourceMappingURL=escaped_chars.js.map /**************************************************************************************************** * PARTIAL FILE: escaped_chars.js.map ****************************************************************************************************/ -{"version":3,"file":"escaped_chars.js","sourceRoot":"","sources":["../escaped_chars.ts","../escaped_chars.html"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDCNpB,4VAOM;uFDDO,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,WAAW,EAAE,sBAAsB;aACpC","sourcesContent":["import {Component} from '@angular/core';\n\n@Component({\n selector: 'test-cmp',\n templateUrl: './escaped_chars.html',\n})\nexport class TestCmp {\n}\n","\n
\r\n Some Message\r\n Encoded character: 🚀\r\n
"]} +{"version":3,"file":"escaped_chars.js","sourceRoot":"","sources":["../escaped_chars.ts","../escaped_chars.html"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDCNpB,4VAOM;sGDDO,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,WAAW,EAAE,sBAAsB;iBACpC","sourcesContent":["import {Component} from '@angular/core';\n\n@Component({\n selector: 'test-cmp',\n templateUrl: './escaped_chars.html',\n})\nexport class TestCmp {\n}\n","\n
\r\n Some Message\r\n Encoded character: 🚀\r\n
"]} /**************************************************************************************************** * PARTIAL FILE: escaped_chars.d.ts ****************************************************************************************************/ @@ -155,20 +155,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: "\n
\r\n Some Message\r\n Encoded character: \uD83D\uDE80\r\n
" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - templateUrl: './escaped_chars.html', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: "\n
\r\n Some Message\r\n Encoded character: \uD83D\uDE80\r\n
" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + templateUrl: './escaped_chars.html', + }] + }] }); //# sourceMappingURL=escaped_chars.js.map /**************************************************************************************************** * PARTIAL FILE: escaped_chars.js.map ****************************************************************************************************/ -{"version":3,"file":"escaped_chars.js","sourceRoot":"","sources":["../escaped_chars.ts","../escaped_chars.html"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDCNpB,4VAOM;uFDDO,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,WAAW,EAAE,sBAAsB;aACpC","sourcesContent":["import {Component} from '@angular/core';\n\n@Component({\n selector: 'test-cmp',\n templateUrl: './escaped_chars.html',\n})\nexport class TestCmp {\n}\n","\n
\r\n Some Message\r\n Encoded character: 🚀\r\n
"]} +{"version":3,"file":"escaped_chars.js","sourceRoot":"","sources":["../escaped_chars.ts","../escaped_chars.html"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDCNpB,4VAOM;sGDDO,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,WAAW,EAAE,sBAAsB;iBACpC","sourcesContent":["import {Component} from '@angular/core';\n\n@Component({\n selector: 'test-cmp',\n templateUrl: './escaped_chars.html',\n})\nexport class TestCmp {\n}\n","\n
\r\n Some Message\r\n Encoded character: 🚀\r\n
"]} /**************************************************************************************************** * PARTIAL FILE: escaped_chars.d.ts ****************************************************************************************************/ diff --git a/packages/compiler-cli/test/compliance/test_cases/source_mapping/inline_templates/GOLDEN_PARTIAL.js b/packages/compiler-cli/test/compliance/test_cases/source_mapping/inline_templates/GOLDEN_PARTIAL.js index b33d4c102c..bac64611f1 100644 --- a/packages/compiler-cli/test/compliance/test_cases/source_mapping/inline_templates/GOLDEN_PARTIAL.js +++ b/packages/compiler-cli/test/compliance/test_cases/source_mapping/inline_templates/GOLDEN_PARTIAL.js @@ -5,20 +5,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '

Heading 1

', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '

Heading 1

', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '

Heading 1

', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '

Heading 1

', + }] + }] }); //# sourceMappingURL=simple_element.js.map /**************************************************************************************************** * PARTIAL FILE: simple_element.js.map ****************************************************************************************************/ -{"version":3,"file":"simple_element.js","sourceRoot":"","sources":["../simple_element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAFR,oBAAoB;uFAEnB,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,oBAAoB;aAC/B"} +{"version":3,"file":"simple_element.js","sourceRoot":"","sources":["../simple_element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAFR,oBAAoB;sGAEnB,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,oBAAoB;iBAC/B"} /**************************************************************************************************** * PARTIAL FILE: simple_element.d.ts ****************************************************************************************************/ @@ -35,20 +35,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '

Heading 1

', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '

Heading 1

', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '

Heading 1

', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '

Heading 1

', + }] + }] }); //# sourceMappingURL=simple_element.js.map /**************************************************************************************************** * PARTIAL FILE: simple_element.js.map ****************************************************************************************************/ -{"version":3,"file":"simple_element.js","sourceRoot":"","sources":["../simple_element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAFR,oBAAoB;uFAEnB,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,oBAAoB;aAC/B"} +{"version":3,"file":"simple_element.js","sourceRoot":"","sources":["../simple_element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAFR,oBAAoB;sGAEnB,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,oBAAoB;iBAC/B"} /**************************************************************************************************** * PARTIAL FILE: simple_element.d.ts ****************************************************************************************************/ @@ -65,20 +65,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
', + }] + }] }); //# sourceMappingURL=void_element.js.map /**************************************************************************************************** * PARTIAL FILE: void_element.js.map ****************************************************************************************************/ -{"version":3,"file":"void_element.js","sourceRoot":"","sources":["../void_element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAFR,MAAM;uFAEL,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,MAAM;aACjB"} +{"version":3,"file":"void_element.js","sourceRoot":"","sources":["../void_element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAFR,MAAM;sGAEL,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,MAAM;iBACjB"} /**************************************************************************************************** * PARTIAL FILE: void_element.d.ts ****************************************************************************************************/ @@ -95,20 +95,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
', + }] + }] }); //# sourceMappingURL=void_element.js.map /**************************************************************************************************** * PARTIAL FILE: void_element.js.map ****************************************************************************************************/ -{"version":3,"file":"void_element.js","sourceRoot":"","sources":["../void_element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAFR,MAAM;uFAEL,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,MAAM;aACjB"} +{"version":3,"file":"void_element.js","sourceRoot":"","sources":["../void_element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAFR,MAAM;sGAEL,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,MAAM;iBACjB"} /**************************************************************************************************** * PARTIAL FILE: void_element.d.ts ****************************************************************************************************/ @@ -128,20 +128,20 @@ export class TestCmp { this.name = ''; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '

Hello {{ name }}

', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '

Hello {{ name }}

', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '

Hello {{ name }}

', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '

Hello {{ name }}

', + }] + }] }); //# sourceMappingURL=interpolation_basic.js.map /**************************************************************************************************** * PARTIAL FILE: interpolation_basic.js.map ****************************************************************************************************/ -{"version":3,"file":"interpolation_basic.js","sourceRoot":"","sources":["../interpolation_basic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;yFAFY,OAAO;6EAAP,OAAO,gDAFR,2BAA2B;uFAE1B,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,2BAA2B;aACtC"} +{"version":3,"file":"interpolation_basic.js","sourceRoot":"","sources":["../interpolation_basic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAFY,OAAO;mGAAP,OAAO,gDAFR,2BAA2B;sGAE1B,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,2BAA2B;iBACtC"} /**************************************************************************************************** * PARTIAL FILE: interpolation_basic.d.ts ****************************************************************************************************/ @@ -162,20 +162,20 @@ export class TestCmp { this.name = ''; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '

Hello {{ name }}

', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '

Hello {{ name }}

', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '

Hello {{ name }}

', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '

Hello {{ name }}

', + }] + }] }); //# sourceMappingURL=interpolation_basic.js.map /**************************************************************************************************** * PARTIAL FILE: interpolation_basic.js.map ****************************************************************************************************/ -{"version":3,"file":"interpolation_basic.js","sourceRoot":"","sources":["../interpolation_basic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;yFAFY,OAAO;6EAAP,OAAO,gDAFR,2BAA2B;uFAE1B,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,2BAA2B;aACtC"} +{"version":3,"file":"interpolation_basic.js","sourceRoot":"","sources":["../interpolation_basic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAFY,OAAO;mGAAP,OAAO,gDAFR,2BAA2B;sGAE1B,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,2BAA2B;iBACtC"} /**************************************************************************************************** * PARTIAL FILE: interpolation_basic.d.ts ****************************************************************************************************/ @@ -197,20 +197,20 @@ export class TestCmp { this.name = ''; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '

{{ greeting + " " + name }}

', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '

{{ greeting + " " + name }}

', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '

{{ greeting + " " + name }}

', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '

{{ greeting + " " + name }}

', + }] + }] }); //# sourceMappingURL=interpolation_complex.js.map /**************************************************************************************************** * PARTIAL FILE: interpolation_complex.js.map ****************************************************************************************************/ -{"version":3,"file":"interpolation_complex.js","sourceRoot":"","sources":["../interpolation_complex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,aAAQ,GAAW,EAAE,CAAC;QACtB,SAAI,GAAW,EAAE,CAAC;KACnB;;yFAHY,OAAO;6EAAP,OAAO,gDAFR,sCAAsC;uFAErC,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,sCAAsC;aACjD"} +{"version":3,"file":"interpolation_complex.js","sourceRoot":"","sources":["../interpolation_complex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,aAAQ,GAAW,EAAE,CAAC;QACtB,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAHY,OAAO;mGAAP,OAAO,gDAFR,sCAAsC;sGAErC,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,sCAAsC;iBACjD"} /**************************************************************************************************** * PARTIAL FILE: interpolation_complex.d.ts ****************************************************************************************************/ @@ -233,20 +233,20 @@ export class TestCmp { this.name = ''; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '

{{ greeting + " " + name }}

', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '

{{ greeting + " " + name }}

', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '

{{ greeting + " " + name }}

', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '

{{ greeting + " " + name }}

', + }] + }] }); //# sourceMappingURL=interpolation_complex.js.map /**************************************************************************************************** * PARTIAL FILE: interpolation_complex.js.map ****************************************************************************************************/ -{"version":3,"file":"interpolation_complex.js","sourceRoot":"","sources":["../interpolation_complex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,aAAQ,GAAW,EAAE,CAAC;QACtB,SAAI,GAAW,EAAE,CAAC;KACnB;;yFAHY,OAAO;6EAAP,OAAO,gDAFR,sCAAsC;uFAErC,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,sCAAsC;aACjD"} +{"version":3,"file":"interpolation_complex.js","sourceRoot":"","sources":["../interpolation_complex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,aAAQ,GAAW,EAAE,CAAC;QACtB,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAHY,OAAO;mGAAP,OAAO,gDAFR,sCAAsC;sGAErC,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,sCAAsC;iBACjD"} /**************************************************************************************************** * PARTIAL FILE: interpolation_complex.d.ts ****************************************************************************************************/ @@ -268,20 +268,20 @@ export class TestCmp { this.name = ''; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
', + }] + }] }); //# sourceMappingURL=interpolation_properties.js.map /**************************************************************************************************** * PARTIAL FILE: interpolation_properties.js.map ****************************************************************************************************/ -{"version":3,"file":"interpolation_properties.js","sourceRoot":"","sources":["../interpolation_properties.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;yFAFY,OAAO;6EAAP,OAAO,gDAFR,2BAA2B;uFAE1B,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,2BAA2B;aACtC"} +{"version":3,"file":"interpolation_properties.js","sourceRoot":"","sources":["../interpolation_properties.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAFY,OAAO;mGAAP,OAAO,gDAFR,2BAA2B;sGAE1B,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,2BAA2B;iBACtC"} /**************************************************************************************************** * PARTIAL FILE: interpolation_properties.d.ts ****************************************************************************************************/ @@ -302,20 +302,20 @@ export class TestCmp { this.name = ''; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
', + }] + }] }); //# sourceMappingURL=interpolation_properties.js.map /**************************************************************************************************** * PARTIAL FILE: interpolation_properties.js.map ****************************************************************************************************/ -{"version":3,"file":"interpolation_properties.js","sourceRoot":"","sources":["../interpolation_properties.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;yFAFY,OAAO;6EAAP,OAAO,gDAFR,2BAA2B;uFAE1B,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,2BAA2B;aACtC"} +{"version":3,"file":"interpolation_properties.js","sourceRoot":"","sources":["../interpolation_properties.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAFY,OAAO;mGAAP,OAAO,gDAFR,2BAA2B;sGAE1B,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,2BAA2B;iBACtC"} /**************************************************************************************************** * PARTIAL FILE: interpolation_properties.d.ts ****************************************************************************************************/ @@ -333,38 +333,38 @@ import { Component, NgModule, Pipe } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
{{200.3 | percent : 2 }}
', isInline: true, pipes: { "percent": i0.forwardRef(function () { return PercentPipe; }) } }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
{{200.3 | percent : 2 }}
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
{{200.3 | percent : 2 }}
', isInline: true, pipes: { "percent": i0.forwardRef(function () { return PercentPipe; }) } }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
{{200.3 | percent : 2 }}
', + }] + }] }); export class PercentPipe { transform() { } } -PercentPipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: PercentPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -PercentPipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: PercentPipe, name: "percent" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PercentPipe, [{ - type: Pipe, - args: [{ name: 'percent' }] - }], null, null); })(); +PercentPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: PercentPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +PercentPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: PercentPipe, name: "percent" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: PercentPipe, decorators: [{ + type: Pipe, + args: [{ name: 'percent' }] + }] }); export class AppModule { } -AppModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -AppModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, declarations: [TestCmp, PercentPipe] }); -AppModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppModule, [{ - type: NgModule, - args: [{ declarations: [TestCmp, PercentPipe] }] - }], null, null); })(); +AppModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +AppModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, declarations: [TestCmp, PercentPipe] }); +AppModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, decorators: [{ + type: NgModule, + args: [{ declarations: [TestCmp, PercentPipe] }] + }] }); //# sourceMappingURL=interpolation_with_pipe.js.map /**************************************************************************************************** * PARTIAL FILE: interpolation_with_pipe.js.map ****************************************************************************************************/ -{"version":3,"file":"interpolation_with_pipe.js","sourceRoot":"","sources":["../interpolation_with_pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAgB,MAAM,eAAe,CAAC;;AAMvE,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAFR,qCAAqC,yEAMpC,WAAW;uFAJX,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,qCAAqC;aAChD;;AAKD,MAAM,OAAO,WAAW;IACtB,SAAS,KAAI,CAAC;;6FADH,WAAW;2FAAX,WAAW;uFAAX,WAAW;cADvB,IAAI;eAAC,EAAC,IAAI,EAAE,SAAS,EAAC;;AAMvB,MAAM,OAAO,SAAS;;2FAAT,SAAS;4FAAT,SAAS,iBATT,OAAO,EAIP,WAAW;4FAKX,SAAS;uFAAT,SAAS;cADrB,QAAQ;eAAC,EAAC,YAAY,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,EAAC"} +{"version":3,"file":"interpolation_with_pipe.js","sourceRoot":"","sources":["../interpolation_with_pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAgB,MAAM,eAAe,CAAC;;AAMvE,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAFR,qCAAqC,yEAMpC,WAAW;sGAJX,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,qCAAqC;iBAChD;;AAKD,MAAM,OAAO,WAAW;IACtB,SAAS,KAAI,CAAC;;mHADH,WAAW;iHAAX,WAAW;sGAAX,WAAW;kBADvB,IAAI;mBAAC,EAAC,IAAI,EAAE,SAAS,EAAC;;AAMvB,MAAM,OAAO,SAAS;;iHAAT,SAAS;kHAAT,SAAS,iBATT,OAAO,EAIP,WAAW;kHAKX,SAAS;sGAAT,SAAS;kBADrB,QAAQ;mBAAC,EAAC,YAAY,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,EAAC"} /**************************************************************************************************** * PARTIAL FILE: interpolation_with_pipe.d.ts ****************************************************************************************************/ @@ -392,38 +392,38 @@ import { Component, NgModule, Pipe } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
{{200.3 | percent : 2 }}
', isInline: true, pipes: { "percent": i0.forwardRef(function () { return PercentPipe; }) } }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
{{200.3 | percent : 2 }}
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
{{200.3 | percent : 2 }}
', isInline: true, pipes: { "percent": i0.forwardRef(function () { return PercentPipe; }) } }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
{{200.3 | percent : 2 }}
', + }] + }] }); export class PercentPipe { transform() { } } -PercentPipe.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: PercentPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); -PercentPipe.ɵpipe = i0.ɵɵngDeclarePipe({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: PercentPipe, name: "percent" }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PercentPipe, [{ - type: Pipe, - args: [{ name: 'percent' }] - }], null, null); })(); +PercentPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: PercentPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); +PercentPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: PercentPipe, name: "percent" }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: PercentPipe, decorators: [{ + type: Pipe, + args: [{ name: 'percent' }] + }] }); export class AppModule { } -AppModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -AppModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, declarations: [TestCmp, PercentPipe] }); -AppModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppModule, [{ - type: NgModule, - args: [{ declarations: [TestCmp, PercentPipe] }] - }], null, null); })(); +AppModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +AppModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, declarations: [TestCmp, PercentPipe] }); +AppModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, decorators: [{ + type: NgModule, + args: [{ declarations: [TestCmp, PercentPipe] }] + }] }); //# sourceMappingURL=interpolation_with_pipe.js.map /**************************************************************************************************** * PARTIAL FILE: interpolation_with_pipe.js.map ****************************************************************************************************/ -{"version":3,"file":"interpolation_with_pipe.js","sourceRoot":"","sources":["../interpolation_with_pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAgB,MAAM,eAAe,CAAC;;AAMvE,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAFR,qCAAqC,yEAMpC,WAAW;uFAJX,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,qCAAqC;aAChD;;AAKD,MAAM,OAAO,WAAW;IACtB,SAAS,KAAI,CAAC;;6FADH,WAAW;2FAAX,WAAW;uFAAX,WAAW;cADvB,IAAI;eAAC,EAAC,IAAI,EAAE,SAAS,EAAC;;AAMvB,MAAM,OAAO,SAAS;;2FAAT,SAAS;4FAAT,SAAS,iBATT,OAAO,EAIP,WAAW;4FAKX,SAAS;uFAAT,SAAS;cADrB,QAAQ;eAAC,EAAC,YAAY,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,EAAC"} +{"version":3,"file":"interpolation_with_pipe.js","sourceRoot":"","sources":["../interpolation_with_pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAgB,MAAM,eAAe,CAAC;;AAMvE,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAFR,qCAAqC,yEAMpC,WAAW;sGAJX,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,qCAAqC;iBAChD;;AAKD,MAAM,OAAO,WAAW;IACtB,SAAS,KAAI,CAAC;;mHADH,WAAW;iHAAX,WAAW;sGAAX,WAAW;kBADvB,IAAI;mBAAC,EAAC,IAAI,EAAE,SAAS,EAAC;;AAMvB,MAAM,OAAO,SAAS;;iHAAT,SAAS;kHAAT,SAAS,iBATT,OAAO,EAIP,WAAW;kHAKX,SAAS;sGAAT,SAAS;kBADrB,QAAQ;mBAAC,EAAC,YAAY,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,EAAC"} /**************************************************************************************************** * PARTIAL FILE: interpolation_with_pipe.d.ts ****************************************************************************************************/ @@ -454,20 +454,20 @@ export class TestCmp { this.name = ''; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
', + }] + }] }); //# sourceMappingURL=input_binding_simple.js.map /**************************************************************************************************** * PARTIAL FILE: input_binding_simple.js.map ****************************************************************************************************/ -{"version":3,"file":"input_binding_simple.js","sourceRoot":"","sources":["../input_binding_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;yFAFY,OAAO;6EAAP,OAAO,gDAFR,4BAA4B;uFAE3B,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,4BAA4B;aACvC"} +{"version":3,"file":"input_binding_simple.js","sourceRoot":"","sources":["../input_binding_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAFY,OAAO;mGAAP,OAAO,gDAFR,4BAA4B;sGAE3B,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,4BAA4B;iBACvC"} /**************************************************************************************************** * PARTIAL FILE: input_binding_simple.d.ts ****************************************************************************************************/ @@ -488,20 +488,20 @@ export class TestCmp { this.name = ''; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
', + }] + }] }); //# sourceMappingURL=input_binding_simple.js.map /**************************************************************************************************** * PARTIAL FILE: input_binding_simple.js.map ****************************************************************************************************/ -{"version":3,"file":"input_binding_simple.js","sourceRoot":"","sources":["../input_binding_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;yFAFY,OAAO;6EAAP,OAAO,gDAFR,4BAA4B;uFAE3B,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,4BAA4B;aACvC"} +{"version":3,"file":"input_binding_simple.js","sourceRoot":"","sources":["../input_binding_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAFY,OAAO;mGAAP,OAAO,gDAFR,4BAA4B;sGAE3B,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,4BAA4B;iBACvC"} /**************************************************************************************************** * PARTIAL FILE: input_binding_simple.d.ts ****************************************************************************************************/ @@ -523,20 +523,20 @@ export class TestCmp { this.name = ''; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
', + }] + }] }); //# sourceMappingURL=input_binding_complex.js.map /**************************************************************************************************** * PARTIAL FILE: input_binding_complex.js.map ****************************************************************************************************/ -{"version":3,"file":"input_binding_complex.js","sourceRoot":"","sources":["../input_binding_complex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,aAAQ,GAAW,EAAE,CAAC;QACtB,SAAI,GAAW,EAAE,CAAC;KACnB;;yFAHY,OAAO;6EAAP,OAAO,gDAFR,uCAAuC;uFAEtC,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,uCAAuC;aAClD"} +{"version":3,"file":"input_binding_complex.js","sourceRoot":"","sources":["../input_binding_complex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,aAAQ,GAAW,EAAE,CAAC;QACtB,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAHY,OAAO;mGAAP,OAAO,gDAFR,uCAAuC;sGAEtC,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,uCAAuC;iBAClD"} /**************************************************************************************************** * PARTIAL FILE: input_binding_complex.d.ts ****************************************************************************************************/ @@ -559,20 +559,20 @@ export class TestCmp { this.name = ''; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
', + }] + }] }); //# sourceMappingURL=input_binding_complex.js.map /**************************************************************************************************** * PARTIAL FILE: input_binding_complex.js.map ****************************************************************************************************/ -{"version":3,"file":"input_binding_complex.js","sourceRoot":"","sources":["../input_binding_complex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,aAAQ,GAAW,EAAE,CAAC;QACtB,SAAI,GAAW,EAAE,CAAC;KACnB;;yFAHY,OAAO;6EAAP,OAAO,gDAFR,uCAAuC;uFAEtC,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,uCAAuC;aAClD"} +{"version":3,"file":"input_binding_complex.js","sourceRoot":"","sources":["../input_binding_complex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,aAAQ,GAAW,EAAE,CAAC;QACtB,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAHY,OAAO;mGAAP,OAAO,gDAFR,uCAAuC;sGAEtC,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,uCAAuC;iBAClD"} /**************************************************************************************************** * PARTIAL FILE: input_binding_complex.d.ts ****************************************************************************************************/ @@ -594,20 +594,20 @@ export class TestCmp { this.name = ''; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
', + }] + }] }); //# sourceMappingURL=input_binding_longhand.js.map /**************************************************************************************************** * PARTIAL FILE: input_binding_longhand.js.map ****************************************************************************************************/ -{"version":3,"file":"input_binding_longhand.js","sourceRoot":"","sources":["../input_binding_longhand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;yFAFY,OAAO;6EAAP,OAAO,gDAFR,+BAA+B;uFAE9B,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,+BAA+B;aAC1C"} +{"version":3,"file":"input_binding_longhand.js","sourceRoot":"","sources":["../input_binding_longhand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAFY,OAAO;mGAAP,OAAO,gDAFR,+BAA+B;sGAE9B,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,+BAA+B;iBAC1C"} /**************************************************************************************************** * PARTIAL FILE: input_binding_longhand.d.ts ****************************************************************************************************/ @@ -628,20 +628,20 @@ export class TestCmp { this.name = ''; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
', + }] + }] }); //# sourceMappingURL=input_binding_longhand.js.map /**************************************************************************************************** * PARTIAL FILE: input_binding_longhand.js.map ****************************************************************************************************/ -{"version":3,"file":"input_binding_longhand.js","sourceRoot":"","sources":["../input_binding_longhand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;yFAFY,OAAO;6EAAP,OAAO,gDAFR,+BAA+B;uFAE9B,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,+BAA+B;aAC1C"} +{"version":3,"file":"input_binding_longhand.js","sourceRoot":"","sources":["../input_binding_longhand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAFY,OAAO;mGAAP,OAAO,gDAFR,+BAA+B;sGAE9B,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,+BAA+B;iBAC1C"} /**************************************************************************************************** * PARTIAL FILE: input_binding_longhand.d.ts ****************************************************************************************************/ @@ -660,20 +660,20 @@ import * as i0 from "@angular/core"; export class TestCmp { doSomething() { } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '', + }] + }] }); //# sourceMappingURL=output_binding_simple.js.map /**************************************************************************************************** * PARTIAL FILE: output_binding_simple.js.map ****************************************************************************************************/ -{"version":3,"file":"output_binding_simple.js","sourceRoot":"","sources":["../output_binding_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAClB,WAAW,KAAI,CAAC;;yFADL,OAAO;6EAAP,OAAO,gDAFR,gDAAgD;uFAE/C,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,gDAAgD;aAC3D"} +{"version":3,"file":"output_binding_simple.js","sourceRoot":"","sources":["../output_binding_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAClB,WAAW,KAAI,CAAC;;+GADL,OAAO;mGAAP,OAAO,gDAFR,gDAAgD;sGAE/C,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,gDAAgD;iBAC3D"} /**************************************************************************************************** * PARTIAL FILE: output_binding_simple.d.ts ****************************************************************************************************/ @@ -692,20 +692,20 @@ import * as i0 from "@angular/core"; export class TestCmp { doSomething() { } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '', + }] + }] }); //# sourceMappingURL=output_binding_simple.js.map /**************************************************************************************************** * PARTIAL FILE: output_binding_simple.js.map ****************************************************************************************************/ -{"version":3,"file":"output_binding_simple.js","sourceRoot":"","sources":["../output_binding_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAClB,WAAW,KAAI,CAAC;;yFADL,OAAO;6EAAP,OAAO,gDAFR,gDAAgD;uFAE/C,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,gDAAgD;aAC3D"} +{"version":3,"file":"output_binding_simple.js","sourceRoot":"","sources":["../output_binding_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAClB,WAAW,KAAI,CAAC;;+GADL,OAAO;mGAAP,OAAO,gDAFR,gDAAgD;sGAE/C,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,gDAAgD;iBAC3D"} /**************************************************************************************************** * PARTIAL FILE: output_binding_simple.d.ts ****************************************************************************************************/ @@ -726,20 +726,20 @@ export class TestCmp { this.items = []; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: ``, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: ``, - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: ``, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: ``, + }] + }] }); //# sourceMappingURL=output_binding_complex.js.map /**************************************************************************************************** * PARTIAL FILE: output_binding_complex.js.map ****************************************************************************************************/ -{"version":3,"file":"output_binding_complex.js","sourceRoot":"","sources":["../output_binding_complex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,UAAK,GAAa,EAAE,CAAC;KACtB;;yFAFY,OAAO;6EAAP,OAAO,gDAFR,uEAAuE;uFAEtE,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,uEAAuE;aAClF"} +{"version":3,"file":"output_binding_complex.js","sourceRoot":"","sources":["../output_binding_complex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,UAAK,GAAa,EAAE,CAAC;KACtB;;+GAFY,OAAO;mGAAP,OAAO,gDAFR,uEAAuE;sGAEtE,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,uEAAuE;iBAClF"} /**************************************************************************************************** * PARTIAL FILE: output_binding_complex.d.ts ****************************************************************************************************/ @@ -760,20 +760,20 @@ export class TestCmp { this.items = []; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: ``, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: ``, - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: ``, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: ``, + }] + }] }); //# sourceMappingURL=output_binding_complex.js.map /**************************************************************************************************** * PARTIAL FILE: output_binding_complex.js.map ****************************************************************************************************/ -{"version":3,"file":"output_binding_complex.js","sourceRoot":"","sources":["../output_binding_complex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,UAAK,GAAa,EAAE,CAAC;KACtB;;yFAFY,OAAO;6EAAP,OAAO,gDAFR,uEAAuE;uFAEtE,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,uEAAuE;aAClF"} +{"version":3,"file":"output_binding_complex.js","sourceRoot":"","sources":["../output_binding_complex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,UAAK,GAAa,EAAE,CAAC;KACtB;;+GAFY,OAAO;mGAAP,OAAO,gDAFR,uEAAuE;sGAEtE,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,uEAAuE;iBAClF"} /**************************************************************************************************** * PARTIAL FILE: output_binding_complex.d.ts ****************************************************************************************************/ @@ -792,20 +792,20 @@ import * as i0 from "@angular/core"; export class TestCmp { doSomething() { } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '', + }] + }] }); //# sourceMappingURL=output_binding_longhand.js.map /**************************************************************************************************** * PARTIAL FILE: output_binding_longhand.js.map ****************************************************************************************************/ -{"version":3,"file":"output_binding_longhand.js","sourceRoot":"","sources":["../output_binding_longhand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAClB,WAAW,KAAI,CAAC;;yFADL,OAAO;6EAAP,OAAO,gDAFR,iDAAiD;uFAEhD,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,iDAAiD;aAC5D"} +{"version":3,"file":"output_binding_longhand.js","sourceRoot":"","sources":["../output_binding_longhand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAClB,WAAW,KAAI,CAAC;;+GADL,OAAO;mGAAP,OAAO,gDAFR,iDAAiD;sGAEhD,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,iDAAiD;iBAC5D"} /**************************************************************************************************** * PARTIAL FILE: output_binding_longhand.d.ts ****************************************************************************************************/ @@ -824,20 +824,20 @@ import * as i0 from "@angular/core"; export class TestCmp { doSomething() { } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '', + }] + }] }); //# sourceMappingURL=output_binding_longhand.js.map /**************************************************************************************************** * PARTIAL FILE: output_binding_longhand.js.map ****************************************************************************************************/ -{"version":3,"file":"output_binding_longhand.js","sourceRoot":"","sources":["../output_binding_longhand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAClB,WAAW,KAAI,CAAC;;yFADL,OAAO;6EAAP,OAAO,gDAFR,iDAAiD;uFAEhD,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,iDAAiD;aAC5D"} +{"version":3,"file":"output_binding_longhand.js","sourceRoot":"","sources":["../output_binding_longhand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAClB,WAAW,KAAI,CAAC;;+GADL,OAAO;mGAAP,OAAO,gDAFR,iDAAiD;sGAEhD,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,iDAAiD;iBAC5D"} /**************************************************************************************************** * PARTIAL FILE: output_binding_longhand.d.ts ****************************************************************************************************/ @@ -858,45 +858,45 @@ export class TestCmp { this.name = ''; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: 'Name: ', isInline: true, directives: [{ type: i0.forwardRef(function () { return NgModelDirective; }), selector: "[ngModel]", inputs: ["ngModel"], outputs: ["ngModelChanges"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: 'Name: ', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: 'Name: ', isInline: true, directives: [{ type: i0.forwardRef(function () { return NgModelDirective; }), selector: "[ngModel]", inputs: ["ngModel"], outputs: ["ngModelChanges"] }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: 'Name: ', + }] + }] }); export class NgModelDirective { constructor() { this.ngModel = ''; this.ngModelChanges = new EventEmitter(); } } -NgModelDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: NgModelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -NgModelDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: NgModelDirective, selector: "[ngModel]", inputs: { ngModel: "ngModel" }, outputs: { ngModelChanges: "ngModelChanges" }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NgModelDirective, [{ - type: Directive, - args: [{ selector: '[ngModel]' }] - }], null, { ngModel: [{ - type: Input - }], ngModelChanges: [{ - type: Output - }] }); })(); +NgModelDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: NgModelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +NgModelDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: NgModelDirective, selector: "[ngModel]", inputs: { ngModel: "ngModel" }, outputs: { ngModelChanges: "ngModelChanges" }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: NgModelDirective, decorators: [{ + type: Directive, + args: [{ selector: '[ngModel]' }] + }], propDecorators: { ngModel: [{ + type: Input + }], ngModelChanges: [{ + type: Output + }] } }); export class AppModule { } -AppModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -AppModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, declarations: [TestCmp, NgModelDirective] }); -AppModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppModule, [{ - type: NgModule, - args: [{ declarations: [TestCmp, NgModelDirective] }] - }], null, null); })(); +AppModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +AppModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, declarations: [TestCmp, NgModelDirective] }); +AppModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, decorators: [{ + type: NgModule, + args: [{ declarations: [TestCmp, NgModelDirective] }] + }] }); //# sourceMappingURL=two_way_binding_simple.js.map /**************************************************************************************************** * PARTIAL FILE: two_way_binding_simple.js.map ****************************************************************************************************/ -{"version":3,"file":"two_way_binding_simple.js","sourceRoot":"","sources":["../two_way_binding_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;;AAM1F,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;yFAFY,OAAO;6EAAP,OAAO,gDAFR,kCAAkC,0EAOjC,gBAAgB;uFALhB,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,kCAAkC;aAC7C;;AAMD,MAAM,OAAO,gBAAgB;IAD7B;QAEW,YAAO,GAAW,EAAE,CAAC;QACpB,mBAAc,GAAyB,IAAI,YAAY,EAAE,CAAC;KACrE;;kGAHY,gBAAgB;sFAAhB,gBAAgB;uFAAhB,gBAAgB;cAD5B,SAAS;eAAC,EAAC,QAAQ,EAAE,WAAW,EAAC;gBAEvB,OAAO;kBAAf,KAAK;YACI,cAAc;kBAAvB,MAAM;;AAIT,MAAM,OAAO,SAAS;;2FAAT,SAAS;4FAAT,SAAS,iBAXT,OAAO,EAKP,gBAAgB;4FAMhB,SAAS;uFAAT,SAAS;cADrB,QAAQ;eAAC,EAAC,YAAY,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAC"} +{"version":3,"file":"two_way_binding_simple.js","sourceRoot":"","sources":["../two_way_binding_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;;AAM1F,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAFY,OAAO;mGAAP,OAAO,gDAFR,kCAAkC,0EAOjC,gBAAgB;sGALhB,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,kCAAkC;iBAC7C;;AAMD,MAAM,OAAO,gBAAgB;IAD7B;QAEW,YAAO,GAAW,EAAE,CAAC;QACpB,mBAAc,GAAyB,IAAI,YAAY,EAAE,CAAC;KACrE;;wHAHY,gBAAgB;4GAAhB,gBAAgB;sGAAhB,gBAAgB;kBAD5B,SAAS;mBAAC,EAAC,QAAQ,EAAE,WAAW,EAAC;8BAEvB,OAAO;sBAAf,KAAK;gBACI,cAAc;sBAAvB,MAAM;;AAIT,MAAM,OAAO,SAAS;;iHAAT,SAAS;kHAAT,SAAS,iBAXT,OAAO,EAKP,gBAAgB;kHAMhB,SAAS;sGAAT,SAAS;kBADrB,QAAQ;mBAAC,EAAC,YAAY,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAC"} /**************************************************************************************************** * PARTIAL FILE: two_way_binding_simple.d.ts ****************************************************************************************************/ @@ -929,45 +929,45 @@ export class TestCmp { this.name = ''; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: 'Name: ', isInline: true, directives: [{ type: i0.forwardRef(function () { return NgModelDirective; }), selector: "[ngModel]", inputs: ["ngModel"], outputs: ["ngModelChanges"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: 'Name: ', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: 'Name: ', isInline: true, directives: [{ type: i0.forwardRef(function () { return NgModelDirective; }), selector: "[ngModel]", inputs: ["ngModel"], outputs: ["ngModelChanges"] }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: 'Name: ', + }] + }] }); export class NgModelDirective { constructor() { this.ngModel = ''; this.ngModelChanges = new EventEmitter(); } } -NgModelDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: NgModelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -NgModelDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: NgModelDirective, selector: "[ngModel]", inputs: { ngModel: "ngModel" }, outputs: { ngModelChanges: "ngModelChanges" }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NgModelDirective, [{ - type: Directive, - args: [{ selector: '[ngModel]' }] - }], null, { ngModel: [{ - type: Input - }], ngModelChanges: [{ - type: Output - }] }); })(); +NgModelDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: NgModelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +NgModelDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: NgModelDirective, selector: "[ngModel]", inputs: { ngModel: "ngModel" }, outputs: { ngModelChanges: "ngModelChanges" }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: NgModelDirective, decorators: [{ + type: Directive, + args: [{ selector: '[ngModel]' }] + }], propDecorators: { ngModel: [{ + type: Input + }], ngModelChanges: [{ + type: Output + }] } }); export class AppModule { } -AppModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -AppModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, declarations: [TestCmp, NgModelDirective] }); -AppModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppModule, [{ - type: NgModule, - args: [{ declarations: [TestCmp, NgModelDirective] }] - }], null, null); })(); +AppModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +AppModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, declarations: [TestCmp, NgModelDirective] }); +AppModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, decorators: [{ + type: NgModule, + args: [{ declarations: [TestCmp, NgModelDirective] }] + }] }); //# sourceMappingURL=two_way_binding_simple.js.map /**************************************************************************************************** * PARTIAL FILE: two_way_binding_simple.js.map ****************************************************************************************************/ -{"version":3,"file":"two_way_binding_simple.js","sourceRoot":"","sources":["../two_way_binding_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;;AAM1F,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;yFAFY,OAAO;6EAAP,OAAO,gDAFR,kCAAkC,0EAOjC,gBAAgB;uFALhB,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,kCAAkC;aAC7C;;AAMD,MAAM,OAAO,gBAAgB;IAD7B;QAEW,YAAO,GAAW,EAAE,CAAC;QACpB,mBAAc,GAAyB,IAAI,YAAY,EAAE,CAAC;KACrE;;kGAHY,gBAAgB;sFAAhB,gBAAgB;uFAAhB,gBAAgB;cAD5B,SAAS;eAAC,EAAC,QAAQ,EAAE,WAAW,EAAC;gBAEvB,OAAO;kBAAf,KAAK;YACI,cAAc;kBAAvB,MAAM;;AAIT,MAAM,OAAO,SAAS;;2FAAT,SAAS;4FAAT,SAAS,iBAXT,OAAO,EAKP,gBAAgB;4FAMhB,SAAS;uFAAT,SAAS;cADrB,QAAQ;eAAC,EAAC,YAAY,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAC"} +{"version":3,"file":"two_way_binding_simple.js","sourceRoot":"","sources":["../two_way_binding_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;;AAM1F,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAFY,OAAO;mGAAP,OAAO,gDAFR,kCAAkC,0EAOjC,gBAAgB;sGALhB,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,kCAAkC;iBAC7C;;AAMD,MAAM,OAAO,gBAAgB;IAD7B;QAEW,YAAO,GAAW,EAAE,CAAC;QACpB,mBAAc,GAAyB,IAAI,YAAY,EAAE,CAAC;KACrE;;wHAHY,gBAAgB;4GAAhB,gBAAgB;sGAAhB,gBAAgB;kBAD5B,SAAS;mBAAC,EAAC,QAAQ,EAAE,WAAW,EAAC;8BAEvB,OAAO;sBAAf,KAAK;gBACI,cAAc;sBAAvB,MAAM;;AAIT,MAAM,OAAO,SAAS;;iHAAT,SAAS;kHAAT,SAAS,iBAXT,OAAO,EAKP,gBAAgB;kHAMhB,SAAS;sGAAT,SAAS;kBADrB,QAAQ;mBAAC,EAAC,YAAY,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAC"} /**************************************************************************************************** * PARTIAL FILE: two_way_binding_simple.d.ts ****************************************************************************************************/ @@ -1000,45 +1000,45 @@ export class TestCmp { this.name = ''; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: 'Name: ', isInline: true, directives: [{ type: i0.forwardRef(function () { return NgModelDirective; }), selector: "[ngModel]", inputs: ["ngModel"], outputs: ["ngModelChanges"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: 'Name: ', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: 'Name: ', isInline: true, directives: [{ type: i0.forwardRef(function () { return NgModelDirective; }), selector: "[ngModel]", inputs: ["ngModel"], outputs: ["ngModelChanges"] }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: 'Name: ', + }] + }] }); export class NgModelDirective { constructor() { this.ngModel = ''; this.ngModelChanges = new EventEmitter(); } } -NgModelDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: NgModelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -NgModelDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: NgModelDirective, selector: "[ngModel]", inputs: { ngModel: "ngModel" }, outputs: { ngModelChanges: "ngModelChanges" }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NgModelDirective, [{ - type: Directive, - args: [{ selector: '[ngModel]' }] - }], null, { ngModel: [{ - type: Input - }], ngModelChanges: [{ - type: Output - }] }); })(); +NgModelDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: NgModelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +NgModelDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: NgModelDirective, selector: "[ngModel]", inputs: { ngModel: "ngModel" }, outputs: { ngModelChanges: "ngModelChanges" }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: NgModelDirective, decorators: [{ + type: Directive, + args: [{ selector: '[ngModel]' }] + }], propDecorators: { ngModel: [{ + type: Input + }], ngModelChanges: [{ + type: Output + }] } }); export class AppModule { } -AppModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -AppModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, declarations: [TestCmp, NgModelDirective] }); -AppModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppModule, [{ - type: NgModule, - args: [{ declarations: [TestCmp, NgModelDirective] }] - }], null, null); })(); +AppModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +AppModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, declarations: [TestCmp, NgModelDirective] }); +AppModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, decorators: [{ + type: NgModule, + args: [{ declarations: [TestCmp, NgModelDirective] }] + }] }); //# sourceMappingURL=two_way_binding_longhand.js.map /**************************************************************************************************** * PARTIAL FILE: two_way_binding_longhand.js.map ****************************************************************************************************/ -{"version":3,"file":"two_way_binding_longhand.js","sourceRoot":"","sources":["../two_way_binding_longhand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;;AAM1F,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;yFAFY,OAAO;6EAAP,OAAO,gDAFR,qCAAqC,0EAOpC,gBAAgB;uFALhB,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,qCAAqC;aAChD;;AAMD,MAAM,OAAO,gBAAgB;IAD7B;QAEW,YAAO,GAAW,EAAE,CAAC;QACpB,mBAAc,GAAyB,IAAI,YAAY,EAAE,CAAC;KACrE;;kGAHY,gBAAgB;sFAAhB,gBAAgB;uFAAhB,gBAAgB;cAD5B,SAAS;eAAC,EAAC,QAAQ,EAAE,WAAW,EAAC;gBAEvB,OAAO;kBAAf,KAAK;YACI,cAAc;kBAAvB,MAAM;;AAIT,MAAM,OAAO,SAAS;;2FAAT,SAAS;4FAAT,SAAS,iBAXT,OAAO,EAKP,gBAAgB;4FAMhB,SAAS;uFAAT,SAAS;cADrB,QAAQ;eAAC,EAAC,YAAY,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAC"} +{"version":3,"file":"two_way_binding_longhand.js","sourceRoot":"","sources":["../two_way_binding_longhand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;;AAM1F,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAFY,OAAO;mGAAP,OAAO,gDAFR,qCAAqC,0EAOpC,gBAAgB;sGALhB,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,qCAAqC;iBAChD;;AAMD,MAAM,OAAO,gBAAgB;IAD7B;QAEW,YAAO,GAAW,EAAE,CAAC;QACpB,mBAAc,GAAyB,IAAI,YAAY,EAAE,CAAC;KACrE;;wHAHY,gBAAgB;4GAAhB,gBAAgB;sGAAhB,gBAAgB;kBAD5B,SAAS;mBAAC,EAAC,QAAQ,EAAE,WAAW,EAAC;8BAEvB,OAAO;sBAAf,KAAK;gBACI,cAAc;sBAAvB,MAAM;;AAIT,MAAM,OAAO,SAAS;;iHAAT,SAAS;kHAAT,SAAS,iBAXT,OAAO,EAKP,gBAAgB;kHAMhB,SAAS;sGAAT,SAAS;kBADrB,QAAQ;mBAAC,EAAC,YAAY,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAC"} /**************************************************************************************************** * PARTIAL FILE: two_way_binding_longhand.d.ts ****************************************************************************************************/ @@ -1071,45 +1071,45 @@ export class TestCmp { this.name = ''; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: 'Name: ', isInline: true, directives: [{ type: i0.forwardRef(function () { return NgModelDirective; }), selector: "[ngModel]", inputs: ["ngModel"], outputs: ["ngModelChanges"] }] }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: 'Name: ', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: 'Name: ', isInline: true, directives: [{ type: i0.forwardRef(function () { return NgModelDirective; }), selector: "[ngModel]", inputs: ["ngModel"], outputs: ["ngModelChanges"] }] }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: 'Name: ', + }] + }] }); export class NgModelDirective { constructor() { this.ngModel = ''; this.ngModelChanges = new EventEmitter(); } } -NgModelDirective.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: NgModelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); -NgModelDirective.ɵdir = i0.ɵɵngDeclareDirective({ version: "0.0.0-PLACEHOLDER", type: NgModelDirective, selector: "[ngModel]", inputs: { ngModel: "ngModel" }, outputs: { ngModelChanges: "ngModelChanges" }, ngImport: i0 }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NgModelDirective, [{ - type: Directive, - args: [{ selector: '[ngModel]' }] - }], null, { ngModel: [{ - type: Input - }], ngModelChanges: [{ - type: Output - }] }); })(); +NgModelDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: NgModelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); +NgModelDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: NgModelDirective, selector: "[ngModel]", inputs: { ngModel: "ngModel" }, outputs: { ngModelChanges: "ngModelChanges" }, ngImport: i0 }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: NgModelDirective, decorators: [{ + type: Directive, + args: [{ selector: '[ngModel]' }] + }], propDecorators: { ngModel: [{ + type: Input + }], ngModelChanges: [{ + type: Output + }] } }); export class AppModule { } -AppModule.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); -AppModule.ɵmod = i0.ɵɵngDeclareNgModule({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, declarations: [TestCmp, NgModelDirective] }); -AppModule.ɵinj = i0.ɵɵngDeclareInjector({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppModule, [{ - type: NgModule, - args: [{ declarations: [TestCmp, NgModelDirective] }] - }], null, null); })(); +AppModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); +AppModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, declarations: [TestCmp, NgModelDirective] }); +AppModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: AppModule, decorators: [{ + type: NgModule, + args: [{ declarations: [TestCmp, NgModelDirective] }] + }] }); //# sourceMappingURL=two_way_binding_longhand.js.map /**************************************************************************************************** * PARTIAL FILE: two_way_binding_longhand.js.map ****************************************************************************************************/ -{"version":3,"file":"two_way_binding_longhand.js","sourceRoot":"","sources":["../two_way_binding_longhand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;;AAM1F,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;yFAFY,OAAO;6EAAP,OAAO,gDAFR,qCAAqC,0EAOpC,gBAAgB;uFALhB,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,qCAAqC;aAChD;;AAMD,MAAM,OAAO,gBAAgB;IAD7B;QAEW,YAAO,GAAW,EAAE,CAAC;QACpB,mBAAc,GAAyB,IAAI,YAAY,EAAE,CAAC;KACrE;;kGAHY,gBAAgB;sFAAhB,gBAAgB;uFAAhB,gBAAgB;cAD5B,SAAS;eAAC,EAAC,QAAQ,EAAE,WAAW,EAAC;gBAEvB,OAAO;kBAAf,KAAK;YACI,cAAc;kBAAvB,MAAM;;AAIT,MAAM,OAAO,SAAS;;2FAAT,SAAS;4FAAT,SAAS,iBAXT,OAAO,EAKP,gBAAgB;4FAMhB,SAAS;uFAAT,SAAS;cADrB,QAAQ;eAAC,EAAC,YAAY,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAC"} +{"version":3,"file":"two_way_binding_longhand.js","sourceRoot":"","sources":["../two_way_binding_longhand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;;AAM1F,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAFY,OAAO;mGAAP,OAAO,gDAFR,qCAAqC,0EAOpC,gBAAgB;sGALhB,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,qCAAqC;iBAChD;;AAMD,MAAM,OAAO,gBAAgB;IAD7B;QAEW,YAAO,GAAW,EAAE,CAAC;QACpB,mBAAc,GAAyB,IAAI,YAAY,EAAE,CAAC;KACrE;;wHAHY,gBAAgB;4GAAhB,gBAAgB;sGAAhB,gBAAgB;kBAD5B,SAAS;mBAAC,EAAC,QAAQ,EAAE,WAAW,EAAC;8BAEvB,OAAO;sBAAf,KAAK;gBACI,cAAc;sBAAvB,MAAM;;AAIT,MAAM,OAAO,SAAS;;iHAAT,SAAS;kHAAT,SAAS,iBAXT,OAAO,EAKP,gBAAgB;kHAMhB,SAAS;sGAAT,SAAS;kBADrB,QAAQ;mBAAC,EAAC,YAAY,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAC"} /**************************************************************************************************** * PARTIAL FILE: two_way_binding_longhand.d.ts ****************************************************************************************************/ @@ -1142,20 +1142,20 @@ export class TestCmp { this.isInitial = true; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
Message
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
Message
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
Message
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
Message
', + }] + }] }); //# sourceMappingURL=input_binding_class.js.map /**************************************************************************************************** * PARTIAL FILE: input_binding_class.js.map ****************************************************************************************************/ -{"version":3,"file":"input_binding_class.js","sourceRoot":"","sources":["../input_binding_class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,cAAS,GAAY,IAAI,CAAC;KAC3B;;yFAFY,OAAO;6EAAP,OAAO,gDAFR,gDAAgD;uFAE/C,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,gDAAgD;aAC3D"} +{"version":3,"file":"input_binding_class.js","sourceRoot":"","sources":["../input_binding_class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,cAAS,GAAY,IAAI,CAAC;KAC3B;;+GAFY,OAAO;mGAAP,OAAO,gDAFR,gDAAgD;sGAE/C,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,gDAAgD;iBAC3D"} /**************************************************************************************************** * PARTIAL FILE: input_binding_class.d.ts ****************************************************************************************************/ @@ -1176,20 +1176,20 @@ export class TestCmp { this.isInitial = true; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
Message
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
Message
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
Message
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
Message
', + }] + }] }); //# sourceMappingURL=input_binding_class.js.map /**************************************************************************************************** * PARTIAL FILE: input_binding_class.js.map ****************************************************************************************************/ -{"version":3,"file":"input_binding_class.js","sourceRoot":"","sources":["../input_binding_class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,cAAS,GAAY,IAAI,CAAC;KAC3B;;yFAFY,OAAO;6EAAP,OAAO,gDAFR,gDAAgD;uFAE/C,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,gDAAgD;aAC3D"} +{"version":3,"file":"input_binding_class.js","sourceRoot":"","sources":["../input_binding_class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,cAAS,GAAY,IAAI,CAAC;KAC3B;;+GAFY,OAAO;mGAAP,OAAO,gDAFR,gDAAgD;sGAE/C,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,gDAAgD;iBAC3D"} /**************************************************************************************************** * PARTIAL FILE: input_binding_class.d.ts ****************************************************************************************************/ @@ -1207,20 +1207,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
{{ name }}
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
{{ name }}
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
{{ name }}
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
{{ name }}
', + }] + }] }); //# sourceMappingURL=ng_if_simple.js.map /**************************************************************************************************** * PARTIAL FILE: ng_if_simple.js.map ****************************************************************************************************/ -{"version":3,"file":"ng_if_simple.js","sourceRoot":"","sources":["../ng_if_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAFR,6CAA6C;uFAE5C,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,6CAA6C;aACxD"} +{"version":3,"file":"ng_if_simple.js","sourceRoot":"","sources":["../ng_if_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAFR,6CAA6C;sGAE5C,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,6CAA6C;iBACxD"} /**************************************************************************************************** * PARTIAL FILE: ng_if_simple.d.ts ****************************************************************************************************/ @@ -1237,20 +1237,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
{{ name }}
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
{{ name }}
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
{{ name }}
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
{{ name }}
', + }] + }] }); //# sourceMappingURL=ng_if_simple.js.map /**************************************************************************************************** * PARTIAL FILE: ng_if_simple.js.map ****************************************************************************************************/ -{"version":3,"file":"ng_if_simple.js","sourceRoot":"","sources":["../ng_if_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAFR,6CAA6C;uFAE5C,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,6CAA6C;aACxD"} +{"version":3,"file":"ng_if_simple.js","sourceRoot":"","sources":["../ng_if_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAFR,6CAA6C;sGAE5C,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,6CAA6C;iBACxD"} /**************************************************************************************************** * PARTIAL FILE: ng_if_simple.d.ts ****************************************************************************************************/ @@ -1267,28 +1267,28 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: ` +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: `
{{ name }}

`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: `
{{ name }}

` - }] - }], null, null); })(); + }] + }] }); //# sourceMappingURL=ng_if_templated.js.map /**************************************************************************************************** * PARTIAL FILE: ng_if_templated.js.map ****************************************************************************************************/ -{"version":3,"file":"ng_if_templated.js","sourceRoot":"","sources":["../ng_if_templated.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAUxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDANR;;;;mBAIO;uFAEN,OAAO;cARnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE;;;;mBAIO;aAClB"} +{"version":3,"file":"ng_if_templated.js","sourceRoot":"","sources":["../ng_if_templated.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAUxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDANR;;;;mBAIO;sGAEN,OAAO;kBARnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE;;;;mBAIO;iBAClB"} /**************************************************************************************************** * PARTIAL FILE: ng_if_templated.d.ts ****************************************************************************************************/ @@ -1305,28 +1305,28 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: ` +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: `
{{ name }}

`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: `
{{ name }}

` - }] - }], null, null); })(); + }] + }] }); //# sourceMappingURL=ng_if_templated.js.map /**************************************************************************************************** * PARTIAL FILE: ng_if_templated.js.map ****************************************************************************************************/ -{"version":3,"file":"ng_if_templated.js","sourceRoot":"","sources":["../ng_if_templated.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAUxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDANR;;;;mBAIO;uFAEN,OAAO;cARnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE;;;;mBAIO;aAClB"} +{"version":3,"file":"ng_if_templated.js","sourceRoot":"","sources":["../ng_if_templated.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAUxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDANR;;;;mBAIO;sGAEN,OAAO;kBARnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE;;;;mBAIO;iBAClB"} /**************************************************************************************************** * PARTIAL FILE: ng_if_templated.d.ts ****************************************************************************************************/ @@ -1343,20 +1343,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
{{ item }}
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
{{ item }}
' - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
{{ item }}
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
{{ item }}
' + }] + }] }); //# sourceMappingURL=ng_for_simple.js.map /**************************************************************************************************** * PARTIAL FILE: ng_for_simple.js.map ****************************************************************************************************/ -{"version":3,"file":"ng_for_simple.js","sourceRoot":"","sources":["../ng_for_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAFR,kFAAkF;uFAEjF,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,kFAAkF;aAC7F"} +{"version":3,"file":"ng_for_simple.js","sourceRoot":"","sources":["../ng_for_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAFR,kFAAkF;sGAEjF,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,kFAAkF;iBAC7F"} /**************************************************************************************************** * PARTIAL FILE: ng_for_simple.d.ts ****************************************************************************************************/ @@ -1373,20 +1373,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
{{ item }}
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
{{ item }}
' - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
{{ item }}
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
{{ item }}
' + }] + }] }); //# sourceMappingURL=ng_for_simple.js.map /**************************************************************************************************** * PARTIAL FILE: ng_for_simple.js.map ****************************************************************************************************/ -{"version":3,"file":"ng_for_simple.js","sourceRoot":"","sources":["../ng_for_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAFR,kFAAkF;uFAEjF,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,kFAAkF;aAC7F"} +{"version":3,"file":"ng_for_simple.js","sourceRoot":"","sources":["../ng_for_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAFR,kFAAkF;sGAEjF,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,kFAAkF;iBAC7F"} /**************************************************************************************************** * PARTIAL FILE: ng_for_simple.d.ts ****************************************************************************************************/ @@ -1403,20 +1403,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: `{{ item }}`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: `{{ item }}` - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: `{{ item }}`, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: `{{ item }}` + }] + }] }); //# sourceMappingURL=ng_for_templated.js.map /**************************************************************************************************** * PARTIAL FILE: ng_for_templated.js.map ****************************************************************************************************/ -{"version":3,"file":"ng_for_templated.js","sourceRoot":"","sources":["../ng_for_templated.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAFR,wEAAwE;uFAEvE,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,wEAAwE;aACnF"} +{"version":3,"file":"ng_for_templated.js","sourceRoot":"","sources":["../ng_for_templated.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAFR,wEAAwE;sGAEvE,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,wEAAwE;iBACnF"} /**************************************************************************************************** * PARTIAL FILE: ng_for_templated.d.ts ****************************************************************************************************/ @@ -1433,20 +1433,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: `{{ item }}`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: `{{ item }}` - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: `{{ item }}`, isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: `{{ item }}` + }] + }] }); //# sourceMappingURL=ng_for_templated.js.map /**************************************************************************************************** * PARTIAL FILE: ng_for_templated.js.map ****************************************************************************************************/ -{"version":3,"file":"ng_for_templated.js","sourceRoot":"","sources":["../ng_for_templated.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAFR,wEAAwE;uFAEvE,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,wEAAwE;aACnF"} +{"version":3,"file":"ng_for_templated.js","sourceRoot":"","sources":["../ng_for_templated.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAFR,wEAAwE;sGAEvE,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,wEAAwE;iBACnF"} /**************************************************************************************************** * PARTIAL FILE: ng_for_templated.d.ts ****************************************************************************************************/ @@ -1463,24 +1463,24 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: ` +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: `

`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: `

` - }] - }], null, null); })(); + }] + }] }); //# sourceMappingURL=projection.js.map /**************************************************************************************************** * PARTIAL FILE: projection.js.map ****************************************************************************************************/ -{"version":3,"file":"projection.js","sourceRoot":"","sources":["../projection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAQxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAJR;;uCAE2B;uFAE1B,OAAO;cANnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE;;uCAE2B;aACtC"} +{"version":3,"file":"projection.js","sourceRoot":"","sources":["../projection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAQxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAJR;;uCAE2B;sGAE1B,OAAO;kBANnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE;;uCAE2B;iBACtC"} /**************************************************************************************************** * PARTIAL FILE: projection.d.ts ****************************************************************************************************/ @@ -1497,24 +1497,24 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: ` +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: `

`, isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: ` +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: `

` - }] - }], null, null); })(); + }] + }] }); //# sourceMappingURL=projection.js.map /**************************************************************************************************** * PARTIAL FILE: projection.js.map ****************************************************************************************************/ -{"version":3,"file":"projection.js","sourceRoot":"","sources":["../projection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAQxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAJR;;uCAE2B;uFAE1B,OAAO;cANnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE;;uCAE2B;aACtC"} +{"version":3,"file":"projection.js","sourceRoot":"","sources":["../projection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAQxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAJR;;uCAE2B;sGAE1B,OAAO;kBANnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE;;uCAE2B;iBACtC"} /**************************************************************************************************** * PARTIAL FILE: projection.d.ts ****************************************************************************************************/ @@ -1531,20 +1531,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
Hello, World!
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
Hello, World!
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
Hello, World!
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
Hello, World!
', + }] + }] }); //# sourceMappingURL=i18n_message_simple.js.map /**************************************************************************************************** * PARTIAL FILE: i18n_message_simple.js.map ****************************************************************************************************/ -{"version":3,"file":"i18n_message_simple.js","sourceRoot":"","sources":["../i18n_message_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAFR,+BAA+B;uFAE9B,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,+BAA+B;aAC1C"} +{"version":3,"file":"i18n_message_simple.js","sourceRoot":"","sources":["../i18n_message_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAFR,+BAA+B;sGAE9B,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,+BAA+B;iBAC1C"} /**************************************************************************************************** * PARTIAL FILE: i18n_message_simple.d.ts ****************************************************************************************************/ @@ -1561,20 +1561,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
Hello, World!
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
Hello, World!
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
Hello, World!
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
Hello, World!
', + }] + }] }); //# sourceMappingURL=i18n_message_simple.js.map /**************************************************************************************************** * PARTIAL FILE: i18n_message_simple.js.map ****************************************************************************************************/ -{"version":3,"file":"i18n_message_simple.js","sourceRoot":"","sources":["../i18n_message_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAFR,+BAA+B;uFAE9B,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,+BAA+B;aAC1C"} +{"version":3,"file":"i18n_message_simple.js","sourceRoot":"","sources":["../i18n_message_simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAFR,+BAA+B;sGAE9B,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,+BAA+B;iBAC1C"} /**************************************************************************************************** * PARTIAL FILE: i18n_message_simple.d.ts ****************************************************************************************************/ @@ -1594,20 +1594,20 @@ export class TestCmp { this.name = ''; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
Hello, {{name}}!
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
Hello, {{name}}!
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
Hello, {{name}}!
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
Hello, {{name}}!
', + }] + }] }); //# sourceMappingURL=i18n_message_placeholder.js.map /**************************************************************************************************** * PARTIAL FILE: i18n_message_placeholder.js.map ****************************************************************************************************/ -{"version":3,"file":"i18n_message_placeholder.js","sourceRoot":"","sources":["../i18n_message_placeholder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;yFAFY,OAAO;6EAAP,OAAO,gDAFR,kCAAkC;uFAEjC,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,kCAAkC;aAC7C"} +{"version":3,"file":"i18n_message_placeholder.js","sourceRoot":"","sources":["../i18n_message_placeholder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAFY,OAAO;mGAAP,OAAO,gDAFR,kCAAkC;sGAEjC,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,kCAAkC;iBAC7C"} /**************************************************************************************************** * PARTIAL FILE: i18n_message_placeholder.d.ts ****************************************************************************************************/ @@ -1628,20 +1628,20 @@ export class TestCmp { this.name = ''; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
Hello, {{name}}!
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
Hello, {{name}}!
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
Hello, {{name}}!
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
Hello, {{name}}!
', + }] + }] }); //# sourceMappingURL=i18n_message_placeholder.js.map /**************************************************************************************************** * PARTIAL FILE: i18n_message_placeholder.js.map ****************************************************************************************************/ -{"version":3,"file":"i18n_message_placeholder.js","sourceRoot":"","sources":["../i18n_message_placeholder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;yFAFY,OAAO;6EAAP,OAAO,gDAFR,kCAAkC;uFAEjC,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,kCAAkC;aAC7C"} +{"version":3,"file":"i18n_message_placeholder.js","sourceRoot":"","sources":["../i18n_message_placeholder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;IAJpB;QAKE,SAAI,GAAW,EAAE,CAAC;KACnB;;+GAFY,OAAO;mGAAP,OAAO,gDAFR,kCAAkC;sGAEjC,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,kCAAkC;iBAC7C"} /**************************************************************************************************** * PARTIAL FILE: i18n_message_placeholder.d.ts ****************************************************************************************************/ @@ -1663,20 +1663,20 @@ export class TestCmp { this.bodyValue = ''; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
pre-body {{bodyValue}} post-body
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
pre-body {{bodyValue}} post-body
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
pre-body {{bodyValue}} post-body
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
pre-body {{bodyValue}} post-body
', + }] + }] }); //# sourceMappingURL=i18n_message_interpolation_whitespace.js.map /**************************************************************************************************** * PARTIAL FILE: i18n_message_interpolation_whitespace.js.map ****************************************************************************************************/ -{"version":3,"file":"i18n_message_interpolation_whitespace.js","sourceRoot":"","sources":["../i18n_message_interpolation_whitespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAOxC,MAAM,OAAO,OAAO;IALpB;QAME,eAAU,GAAW,EAAE,CAAC;QACxB,cAAS,GAAW,EAAE,CAAC;KACxB;;yFAHY,OAAO;6EAAP,OAAO,gDAFd,+GAA+G;uFAExG,OAAO;cALnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EACJ,+GAA+G;aACpH"} +{"version":3,"file":"i18n_message_interpolation_whitespace.js","sourceRoot":"","sources":["../i18n_message_interpolation_whitespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAOxC,MAAM,OAAO,OAAO;IALpB;QAME,eAAU,GAAW,EAAE,CAAC;QACxB,cAAS,GAAW,EAAE,CAAC;KACxB;;+GAHY,OAAO;mGAAP,OAAO,gDAFd,+GAA+G;sGAExG,OAAO;kBALnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EACJ,+GAA+G;iBACpH"} /**************************************************************************************************** * PARTIAL FILE: i18n_message_interpolation_whitespace.d.ts ****************************************************************************************************/ @@ -1699,20 +1699,20 @@ export class TestCmp { this.bodyValue = ''; } } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
pre-body {{bodyValue}} post-body
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
pre-body {{bodyValue}} post-body
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
pre-body {{bodyValue}} post-body
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
pre-body {{bodyValue}} post-body
', + }] + }] }); //# sourceMappingURL=i18n_message_interpolation_whitespace.js.map /**************************************************************************************************** * PARTIAL FILE: i18n_message_interpolation_whitespace.js.map ****************************************************************************************************/ -{"version":3,"file":"i18n_message_interpolation_whitespace.js","sourceRoot":"","sources":["../i18n_message_interpolation_whitespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAOxC,MAAM,OAAO,OAAO;IALpB;QAME,eAAU,GAAW,EAAE,CAAC;QACxB,cAAS,GAAW,EAAE,CAAC;KACxB;;yFAHY,OAAO;6EAAP,OAAO,gDAFd,+GAA+G;uFAExG,OAAO;cALnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EACJ,+GAA+G;aACpH"} +{"version":3,"file":"i18n_message_interpolation_whitespace.js","sourceRoot":"","sources":["../i18n_message_interpolation_whitespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAOxC,MAAM,OAAO,OAAO;IALpB;QAME,eAAU,GAAW,EAAE,CAAC;QACxB,cAAS,GAAW,EAAE,CAAC;KACxB;;+GAHY,OAAO;mGAAP,OAAO,gDAFd,+GAA+G;sGAExG,OAAO;kBALnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EACJ,+GAA+G;iBACpH"} /**************************************************************************************************** * PARTIAL FILE: i18n_message_interpolation_whitespace.d.ts ****************************************************************************************************/ @@ -1731,20 +1731,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
\n pre-p\n

\n in-p\n

\n post-p\n
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
\n pre-p\n

\n in-p\n

\n post-p\n
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
\n pre-p\n

\n in-p\n

\n post-p\n
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
\n pre-p\n

\n in-p\n

\n post-p\n
', + }] + }] }); //# sourceMappingURL=i18n_message_element_whitespace.js.map /**************************************************************************************************** * PARTIAL FILE: i18n_message_element_whitespace.js.map ****************************************************************************************************/ -{"version":3,"file":"i18n_message_element_whitespace.js","sourceRoot":"","sources":["../i18n_message_element_whitespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAFR,gEAAgE;uFAE/D,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,gEAAgE;aAC3E"} +{"version":3,"file":"i18n_message_element_whitespace.js","sourceRoot":"","sources":["../i18n_message_element_whitespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAFR,gEAAgE;sGAE/D,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,gEAAgE;iBAC3E"} /**************************************************************************************************** * PARTIAL FILE: i18n_message_element_whitespace.d.ts ****************************************************************************************************/ @@ -1761,20 +1761,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
\n pre-p\n

\n in-p\n

\n post-p\n
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
\n pre-p\n

\n in-p\n

\n post-p\n
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
\n pre-p\n

\n in-p\n

\n post-p\n
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
\n pre-p\n

\n in-p\n

\n post-p\n
', + }] + }] }); //# sourceMappingURL=i18n_message_element_whitespace.js.map /**************************************************************************************************** * PARTIAL FILE: i18n_message_element_whitespace.js.map ****************************************************************************************************/ -{"version":3,"file":"i18n_message_element_whitespace.js","sourceRoot":"","sources":["../i18n_message_element_whitespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAFR,gEAAgE;uFAE/D,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,gEAAgE;aAC3E"} +{"version":3,"file":"i18n_message_element_whitespace.js","sourceRoot":"","sources":["../i18n_message_element_whitespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAFR,gEAAgE;sGAE/D,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,gEAAgE;iBAC3E"} /**************************************************************************************************** * PARTIAL FILE: i18n_message_element_whitespace.d.ts ****************************************************************************************************/ @@ -1791,20 +1791,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
Hello, World!
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
Hello, World!
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
Hello, World!
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
Hello, World!
', + }] + }] }); //# sourceMappingURL=i18n_message_container_tag.js.map /**************************************************************************************************** * PARTIAL FILE: i18n_message_container_tag.js.map ****************************************************************************************************/ -{"version":3,"file":"i18n_message_container_tag.js","sourceRoot":"","sources":["../i18n_message_container_tag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAFR,sCAAsC;uFAErC,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,sCAAsC;aACjD"} +{"version":3,"file":"i18n_message_container_tag.js","sourceRoot":"","sources":["../i18n_message_container_tag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAFR,sCAAsC;sGAErC,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,sCAAsC;iBACjD"} /**************************************************************************************************** * PARTIAL FILE: i18n_message_container_tag.d.ts ****************************************************************************************************/ @@ -1821,20 +1821,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
Hello, World!
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
Hello, World!
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
Hello, World!
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
Hello, World!
', + }] + }] }); //# sourceMappingURL=i18n_message_container_tag.js.map /**************************************************************************************************** * PARTIAL FILE: i18n_message_container_tag.js.map ****************************************************************************************************/ -{"version":3,"file":"i18n_message_container_tag.js","sourceRoot":"","sources":["../i18n_message_container_tag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAFR,sCAAsC;uFAErC,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,sCAAsC;aACjD"} +{"version":3,"file":"i18n_message_container_tag.js","sourceRoot":"","sources":["../i18n_message_container_tag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAFR,sCAAsC;sGAErC,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,sCAAsC;iBACjD"} /**************************************************************************************************** * PARTIAL FILE: i18n_message_container_tag.d.ts ****************************************************************************************************/ @@ -1851,20 +1851,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
this is a test
{{ 1 + 2 }}
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
this is a test
{{ 1 + 2 }}
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
this is a test
{{ 1 + 2 }}
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
this is a test
{{ 1 + 2 }}
', + }] + }] }); //# sourceMappingURL=update_mode.js.map /**************************************************************************************************** * PARTIAL FILE: update_mode.js.map ****************************************************************************************************/ -{"version":3,"file":"update_mode.js","sourceRoot":"","sources":["../update_mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAFR,iDAAiD;uFAEhD,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,iDAAiD;aAC5D"} +{"version":3,"file":"update_mode.js","sourceRoot":"","sources":["../update_mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAFR,iDAAiD;sGAEhD,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,iDAAiD;iBAC5D"} /**************************************************************************************************** * PARTIAL FILE: update_mode.d.ts ****************************************************************************************************/ @@ -1881,20 +1881,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
this is a test
{{ 1 + 2 }}
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
this is a test
{{ 1 + 2 }}
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
this is a test
{{ 1 + 2 }}
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
this is a test
{{ 1 + 2 }}
', + }] + }] }); //# sourceMappingURL=update_mode.js.map /**************************************************************************************************** * PARTIAL FILE: update_mode.js.map ****************************************************************************************************/ -{"version":3,"file":"update_mode.js","sourceRoot":"","sources":["../update_mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAFR,iDAAiD;uFAEhD,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,iDAAiD;aAC5D"} +{"version":3,"file":"update_mode.js","sourceRoot":"","sources":["../update_mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAFR,iDAAiD;sGAEhD,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,iDAAiD;iBAC5D"} /**************************************************************************************************** * PARTIAL FILE: update_mode.d.ts ****************************************************************************************************/ @@ -1911,20 +1911,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
this is a test
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
this is a test
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
this is a test
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
this is a test
', + }] + }] }); //# sourceMappingURL=escape_sequences.js.map /**************************************************************************************************** * PARTIAL FILE: escape_sequences.js.map ****************************************************************************************************/ -{"version":3,"file":"escape_sequences.js","sourceRoot":"","sources":["../escape_sequences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAFR,gDAAgD;uFAE/C,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,gDAAgD;aAC3D"} +{"version":3,"file":"escape_sequences.js","sourceRoot":"","sources":["../escape_sequences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAFR,gDAAgD;sGAE/C,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,gDAAgD;iBAC3D"} /**************************************************************************************************** * PARTIAL FILE: escape_sequences.d.ts ****************************************************************************************************/ @@ -1941,20 +1941,20 @@ import { Component } from '@angular/core'; import * as i0 from "@angular/core"; export class TestCmp { } -TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); -TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
this is a test
', isInline: true }); -(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestCmp, [{ - type: Component, - args: [{ - selector: 'test-cmp', - template: '
this is a test
', - }] - }], null, null); })(); +TestCmp.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, deps: [], target: i0.ɵɵFactoryTarget.Component }); +TestCmp.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", type: TestCmp, selector: "test-cmp", ngImport: i0, template: '
this is a test
', isInline: true }); +i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0-PLACEHOLDER", ngImport: i0, type: TestCmp, decorators: [{ + type: Component, + args: [{ + selector: 'test-cmp', + template: '
this is a test
', + }] + }] }); //# sourceMappingURL=escape_sequences.js.map /**************************************************************************************************** * PARTIAL FILE: escape_sequences.js.map ****************************************************************************************************/ -{"version":3,"file":"escape_sequences.js","sourceRoot":"","sources":["../escape_sequences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;yFAAP,OAAO;6EAAP,OAAO,gDAFR,gDAAgD;uFAE/C,OAAO;cAJnB,SAAS;eAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,gDAAgD;aAC3D"} +{"version":3,"file":"escape_sequences.js","sourceRoot":"","sources":["../escape_sequences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAC;;AAMxC,MAAM,OAAO,OAAO;;+GAAP,OAAO;mGAAP,OAAO,gDAFR,gDAAgD;sGAE/C,OAAO;kBAJnB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,gDAAgD;iBAC3D"} /**************************************************************************************************** * PARTIAL FILE: escape_sequences.d.ts ****************************************************************************************************/ diff --git a/packages/compiler-cli/test/compliance_old/BUILD.bazel b/packages/compiler-cli/test/compliance_old/BUILD.bazel deleted file mode 100644 index 3635c4b97f..0000000000 --- a/packages/compiler-cli/test/compliance_old/BUILD.bazel +++ /dev/null @@ -1,36 +0,0 @@ -load("//tools:defaults.bzl", "jasmine_node_test", "ts_library") - -ts_library( - name = "test_lib", - testonly = True, - srcs = glob( - ["**/*.ts"], - ), - visibility = [ - ":__subpackages__", - ], - deps = [ - "//packages:types", - "//packages/compiler", - "//packages/compiler-cli", - "//packages/compiler-cli/src/ngtsc/file_system", - "//packages/compiler-cli/test/compliance_old/mock_compile", - "//packages/compiler/test:test_utils", - "@npm//typescript", - ], -) - -jasmine_node_test( - name = "compliance_old", - bootstrap = ["//tools/testing:node_no_angular_es5"], - data = [ - "//packages/compiler-cli/src/ngtsc/testing/fake_core:npm_package", - ], - shard_count = 2, - tags = [ - "ivy-only", - ], - deps = [ - ":test_lib", - ], -) diff --git a/packages/compiler-cli/test/compliance_old/README.md b/packages/compiler-cli/test/compliance_old/README.md deleted file mode 100644 index c383188ac1..0000000000 --- a/packages/compiler-cli/test/compliance_old/README.md +++ /dev/null @@ -1,5 +0,0 @@ -Tests in this directory should be run with: - -``` -yarn bazel test --config=ivy packages/compiler-cli/test/compliance:compliance -``` \ No newline at end of file diff --git a/packages/compiler-cli/test/compliance_old/mock_compile/BUILD.bazel b/packages/compiler-cli/test/compliance_old/mock_compile/BUILD.bazel deleted file mode 100644 index 9cd4bf7687..0000000000 --- a/packages/compiler-cli/test/compliance_old/mock_compile/BUILD.bazel +++ /dev/null @@ -1,19 +0,0 @@ -load("//tools:defaults.bzl", "ts_library") - -ts_library( - name = "mock_compile", - testonly = True, - srcs = ["index.ts"], - visibility = [ - "//packages/compiler-cli/test/compliance_old:__subpackages__", - ], - deps = [ - "//packages:types", - "//packages/compiler", - "//packages/compiler-cli", - "//packages/compiler-cli/src/ngtsc/core:api", - "//packages/compiler-cli/src/ngtsc/file_system", - "//packages/compiler/test:test_utils", - "@npm//typescript", - ], -) diff --git a/packages/compiler-cli/test/compliance_old/mock_compile/index.ts b/packages/compiler-cli/test/compliance_old/mock_compile/index.ts deleted file mode 100644 index 95c50391ea..0000000000 --- a/packages/compiler-cli/test/compliance_old/mock_compile/index.ts +++ /dev/null @@ -1,249 +0,0 @@ -/** - * @license - * 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 - */ -import {escapeRegExp} from '@angular/compiler/src/util'; -import {arrayToMockDir, MockCompilerHost, MockData, MockDirectory, toMockFileArray} from '@angular/compiler/test/aot/test_util'; -import * as ts from 'typescript'; - -import {NgCompilerOptions} from '../../../src/ngtsc/core/api'; -import {NodeJSFileSystem, setFileSystem} from '../../../src/ngtsc/file_system'; -import {NgtscProgram} from '../../../src/ngtsc/program'; - -const IDENTIFIER = /[A-Za-z_$ɵ][A-Za-z0-9_$]*/; -const OPERATOR = - /!|\?|%|\*|\/|\^|&&?|\|\|?|\(|\)|\{|\}|\[|\]|:|;|<=?|>=?|={1,3}|!==?|=>|\+\+?|--?|@|,|\.|\.\.\.|`|\\'/; -const STRING = /'(\\'|[^'])*'|"(\\"|[^"])*"/; -const BACKTICK_STRING = /\\`(([\s\S]*?)(\$\{[^}]*?\})?)*?[^\\]\\`/; -const BACKTICK_INTERPOLATION = /(\$\{[^}]*\})/; -const NUMBER = /\d+/; - -const ELLIPSIS = '…'; -const TOKEN = new RegExp( - `\\s*((${IDENTIFIER.source})|(${BACKTICK_STRING.source})|(${OPERATOR.source})|(${ - STRING.source})|${NUMBER.source}|${ELLIPSIS})\\s*`, - 'y'); - -type Piece = string|RegExp; - -const SKIP = /(?:.|\n|\r)*/; - -const ERROR_CONTEXT_WIDTH = 30; -// Transform the expected output to set of tokens -function tokenize(text: string): Piece[] { - // TOKEN.lastIndex is stateful so we cache the `lastIndex` and restore it at the end of the call. - const lastIndex = TOKEN.lastIndex; - TOKEN.lastIndex = 0; - - let match: RegExpMatchArray|null; - let tokenizedTextEnd = 0; - const pieces: Piece[] = []; - - while ((match = TOKEN.exec(text)) !== null) { - const [fullMatch, token] = match; - if (token === 'IDENT') { - pieces.push(IDENTIFIER); - } else if (token === ELLIPSIS) { - pieces.push(SKIP); - } else if (match = BACKTICK_STRING.exec(token)) { - pieces.push(...tokenizeBackTickString(token)); - } else { - pieces.push(token); - } - tokenizedTextEnd += fullMatch.length; - } - - if (pieces.length === 0 || tokenizedTextEnd < text.length) { - // The new token that could not be found is located after the - // last tokenized character. - const from = tokenizedTextEnd; - const to = from + ERROR_CONTEXT_WIDTH; - throw Error( - `Invalid test, no token found for "${text[tokenizedTextEnd]}" ` + - `(context = '${text.substr(from, to)}...'`); - } - // Reset the lastIndex in case we are in a recursive `tokenize()` call. - TOKEN.lastIndex = lastIndex; - - return pieces; -} - -/** - * Back-ticks are escaped as "\`" so we must strip the backslashes. - * Also the string will likely contain interpolations and if an interpolation holds an - * identifier we will need to match that later. So tokenize the interpolation too! - */ -function tokenizeBackTickString(str: string): Piece[] { - const pieces: Piece[] = ['`']; - // Unescape backticks that are inside the backtick string - // (we had to double escape them in the test string so they didn't look like string markers) - str = str.replace(/\\\\\\`/g, '\\`'); - const backTickPieces = str.slice(2, -2).split(BACKTICK_INTERPOLATION); - backTickPieces.forEach((backTickPiece) => { - if (BACKTICK_INTERPOLATION.test(backTickPiece)) { - // An interpolation so tokenize this expression - pieces.push(...tokenize(backTickPiece)); - } else { - // Not an interpolation so just add it as a piece - pieces.push(backTickPiece); - } - }); - pieces.push('`'); - return pieces; -} - -export function expectEmit( - source: string, expected: string, description: string, - assertIdentifiers?: {[name: string]: RegExp}) { - // turns `// ...` into `…` - // remove `// TODO` comment lines - expected = expected.replace(/\/\/\s*\.\.\./g, ELLIPSIS).replace(/\/\/\s*TODO.*?\n/g, ''); - - const pieces = tokenize(expected); - const {regexp, groups} = buildMatcher(pieces); - const matches = source.match(regexp); - if (matches === null) { - let last: number = 0; - for (let i = 1; i < pieces.length; i++) { - const {regexp} = buildMatcher(pieces.slice(0, i)); - const m = source.match(regexp); - const expectedPiece = pieces[i - 1] == IDENTIFIER ? '' : pieces[i - 1]; - if (!m) { - // display at most `contextLength` characters of the line preceding the error location - const contextLength = 50; - const fullContext = source.substring(source.lastIndexOf('\n', last) + 1, last); - const context = fullContext.length > contextLength ? - `...${fullContext.substr(-contextLength)}` : - fullContext; - fail(`${description}: Failed to find "${expectedPiece}" after "${context}" in:\n'${ - source.substr(0, last)}[<---HERE expected "${expectedPiece}"]${source.substr(last)}'`); - return; - } else { - last = (m.index || 0) + m[0].length; - } - } - fail( - `Test helper failure: Expected expression failed but the reporting logic could not find where it failed in: ${ - source}`); - } else { - if (assertIdentifiers) { - // It might be possible to add the constraints in the original regexp (see `buildMatcher`) - // by transforming the assertion regexps when using anchoring, grouping, back references, - // flags, ... - // - // Checking identifiers after they have matched allows for a simple and flexible - // implementation. - // The overall performance are not impacted when `assertIdentifiers` is empty. - const ids = Object.keys(assertIdentifiers); - for (let i = 0; i < ids.length; i++) { - const id = ids[i]; - if (groups.has(id)) { - const name = matches[groups.get(id) as number]; - const regexp = assertIdentifiers[id]; - if (!regexp.test(name)) { - throw Error(`${description}: The matching identifier "${id}" is "${ - name}" which doesn't match ${regexp}`); - } - } - } - } - } -} - -const IDENT_LIKE = /^[a-z][A-Z]/; -const MATCHING_IDENT = /^\$.*\$$/; - -/* - * Builds a regexp that matches the given `pieces` - * - * It returns: - * - the `regexp` to be used to match the generated code, - * - the `groups` which maps `$...$` identifier to their position in the regexp matches. - */ -function buildMatcher(pieces: (string|RegExp)[]): {regexp: RegExp, groups: Map} { - const results: string[] = []; - let first = true; - let group = 0; - - const groups = new Map(); - for (const piece of pieces) { - if (!first) - results.push(`\\s${typeof piece === 'string' && IDENT_LIKE.test(piece) ? '+' : '*'}`); - first = false; - if (typeof piece === 'string') { - if (MATCHING_IDENT.test(piece)) { - const matchGroup = groups.get(piece); - if (!matchGroup) { - results.push('(' + IDENTIFIER.source + ')'); - const newGroup = ++group; - groups.set(piece, newGroup); - } else { - results.push(`\\${matchGroup}`); - } - } else { - results.push(escapeRegExp(piece)); - } - } else { - results.push('(?:' + piece.source + ')'); - } - } - return { - regexp: new RegExp(results.join('')), - groups, - }; -} - -export function compileFiles( - data: MockDirectory, angularFiles: MockData, options: NgCompilerOptions = {}): { - fileName: string; source: string, -}[] { - setFileSystem(new NodeJSFileSystem()); - const testFiles = toMockFileArray(data); - const scripts = testFiles.map(entry => entry.fileName); - const angularFilesArray = toMockFileArray(angularFiles); - const files = arrayToMockDir([...testFiles, ...angularFilesArray]); - const mockCompilerHost = new MockCompilerHost(scripts, files); - - const program = new NgtscProgram( - scripts, { - target: ts.ScriptTarget.ES2015, - module: ts.ModuleKind.ES2015, - moduleResolution: ts.ModuleResolutionKind.NodeJs, - enableI18nLegacyMessageIdFormat: false, - ...options, - }, - mockCompilerHost); - program.emit(); - return scripts.map(script => { - const fileName = script.replace(/\.ts$/, '.js'); - const source = mockCompilerHost.readFile(fileName); - return {fileName, source}; - }); -} - -function doCompile(data: MockDirectory, angularFiles: MockData, options: NgCompilerOptions = {}): { - source: string, -} { - const scripts = compileFiles(data, angularFiles, options); - const source = scripts.map(script => script.source).join('\n'); - - return {source}; -} - -export type CompileFn = typeof doCompile; - -/** - * The actual compile function that will be used to compile the test code. - * This can be updated by a test bootstrap script to provide an alternative compile function. - */ -export let compile: CompileFn = doCompile; - -/** - * Update the `compile` exported function to use a new implementation. - */ -export function setCompileFn(compileFn: CompileFn) { - compile = compileFn; -} diff --git a/packages/compiler-cli/test/compliance_old/mock_compiler_spec.ts b/packages/compiler-cli/test/compliance_old/mock_compiler_spec.ts deleted file mode 100644 index ba8cf564b5..0000000000 --- a/packages/compiler-cli/test/compliance_old/mock_compiler_spec.ts +++ /dev/null @@ -1,245 +0,0 @@ -/** - * @license - * 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 - */ - - -import {setup} from '@angular/compiler/test/aot/test_util'; -import {compile, expectEmit} from './mock_compile'; - -describe('mock_compiler', () => { - // This produces a MockDirectory of the file needed to compile an Angular application. - // This setup is performed in a beforeAll which populates the map returned. - const angularFiles = setup({ - compileAngular: false, - compileFakeCore: true, - compileAnimations: false, - }); - - describe('compiling', () => { - // To use compile you need to supply the files in a MockDirectory that can be merged - // with a set of "environment" files such as the angular files. - it('should be able to compile a simple application', () => { - const files = { - app: { - 'hello.component.ts': ` - import {Component, Input} from '@angular/core'; - - @Component({template: 'Hello {{name}}!'}) - export class HelloComponent { - @Input() name: string = 'world'; - } - `, - 'hello.module.ts': ` - import {NgModule} from '@angular/core'; - import {HelloComponent} from './hello.component'; - - @NgModule({declarations: [HelloComponent]}) - export class HelloModule {} - ` - } - }; - const result = compile(files, angularFiles); - - // result.source contains just the emitted factory declarations regardless of the original - // module. - expect(result.source).toContain('Hello'); - }); - }); - - describe('expecting emitted output', () => { - it('should be able to find a simple expression in the output', () => { - const files = { - app: { - 'hello.component.ts': ` - import {Component, Input} from '@angular/core'; - - @Component({template: 'Hello {{name}}! Your name as {{name.length}} characters'}) - export class HelloComponent { - @Input() name: string = 'world'; - } - `, - 'hello.module.ts': ` - import {NgModule} from '@angular/core'; - import {HelloComponent} from './hello.component'; - - @NgModule({declarations: [HelloComponent]}) - export class HelloModule {} - ` - } - }; - - const result = compile(files, angularFiles); - - // The expression can expected directly. - expectEmit(result.source, 'name.length', 'name length expression not found'); - - // Whitespace is not significant - expectEmit( - result.source, 'name \n\n . \n length', - 'name length expression not found (whitespace)'); - }); - - it('should throw if the expected output contains unknown characters', () => { - const files = { - app: { - 'test.ts': `ɵsayHello();`, - } - }; - - const result = compile(files, angularFiles); - - expect(() => { - expectEmit(result.source, `ΔsayHello();`, 'Output does not match.'); - }).toThrowError(/Invalid test, no token found for "Δ"/); - }); - - it('should be able to properly handle string literals with escaped quote', () => { - const files = { - app: { - 'test.ts': String.raw`const identifier = "\"quoted\"";`, - } - }; - - const result = compile(files, angularFiles); - - expect(() => { - expectEmit(result.source, String.raw`const $a$ = "\"quoted\"";`, 'Output does not match.'); - }).not.toThrow(); - }); - }); - - it('should be able to skip untested regions (… and // ...)', () => { - const files = { - app: { - 'hello.component.ts': ` - import {Component, Input} from '@angular/core'; - - @Component({template: 'Hello {{name}}! Your name as {{name.length}} characters'}) - export class HelloComponent { - @Input() name: string = 'world'; - } - `, - 'hello.module.ts': ` - import {NgModule} from '@angular/core'; - import {HelloComponent} from './hello.component'; - - @NgModule({declarations: [HelloComponent]}) - export class HelloModule {} - ` - } - }; - - const result = compile(files, angularFiles); - - // The special character … means anything can be generated between the two sections allowing - // skipping sections of the output that are not under test. The ellipsis unicode char (…) is - // used instead of '...' because '...' is legal JavaScript (the spread operator) and might - // need to be tested. `// ...` could also be used in place of `…`. - expectEmit(result.source, 'ctx.name … ctx.name.length', 'could not find correct length access'); - expectEmit( - result.source, 'ctx.name // ... ctx.name.length', 'could not find correct length access'); - }); - - it('should be able to skip TODO comments (// TODO)', () => { - const files = { - app: { - 'hello.component.ts': ` - import {Component, Input} from '@angular/core'; - - @Component({template: 'Hello!'}) - export class HelloComponent { } - `, - 'hello.module.ts': ` - import {NgModule} from '@angular/core'; - import {HelloComponent} from './hello.component'; - - @NgModule({declarations: [HelloComponent]}) - export class HelloModule {} - ` - } - }; - - const result = compile(files, angularFiles); - - expectEmit( - result.source, ` - // TODO: this comment should not be taken into account - $r3$.ɵɵtext(0, "Hello!"); - // TODO: this comment should not be taken into account - `, - 'todo comments should be ignored'); - }); - - - it('should be able to enforce consistent identifiers', () => { - const files = { - app: { - 'hello.component.ts': ` - import {Component, Input} from '@angular/core'; - - @Component({template: 'Hello {{name}}! Your name as {{name.length}} characters'}) - export class HelloComponent { - @Input() name: string = 'world'; - } - `, - 'hello.module.ts': ` - import {NgModule} from '@angular/core'; - import {HelloComponent} from './hello.component'; - - @NgModule({declarations: [HelloComponent]}) - export class HelloModule {} - ` - } - }; - - const result = compile(files, angularFiles); - - // IDENT can be used a wild card for any identifier - expectEmit(result.source, 'IDENT.name', 'could not find context access'); - - // $$ can be used as a wild-card but all the content matched by the identifiers must - // match each other. - // This is useful if the code generator is free to invent a name but should use the name - // consistently. - expectEmit( - result.source, '$ctx$.$name$ … $ctx$.$name$.length', - 'could not find correct length access'); - }); - - it('should be able to enforce that identifiers match a regexp', () => { - const files = { - app: { - 'hello.component.ts': ` - import {Component, Input} from '@angular/core'; - - @Component({template: 'Hello {{name}}! Your name as {{name.length}} characters'}) - export class HelloComponent { - @Input() name: string = 'world'; - } - `, - 'hello.module.ts': ` - import {NgModule} from '@angular/core'; - import {HelloComponent} from './hello.component'; - - @NgModule({declarations: [HelloComponent]}) - export class HelloModule {} - ` - } - }; - - const result = compile(files, angularFiles); - - // Pass: `$n$` ends with `ME` in the generated code - expectEmit(result.source, '$ctx$.$n$ … $ctx$.$n$.length', 'Match names', {'$n$': /ME$/i}); - - // Fail: `$n$` does not match `/(not)_(\1)/` in the generated code - expect(() => { - expectEmit( - result.source, '$ctx$.$n$ … $ctx$.$n$.length', 'Match names', {'$n$': /(not)_(\1)/}); - }).toThrowError(/"\$n\$" is "name" which doesn't match \/\(not\)_\(\\1\)\//); - }); -}); diff --git a/packages/compiler-cli/test/compliance_old/prelink/BUILD.bazel b/packages/compiler-cli/test/compliance_old/prelink/BUILD.bazel deleted file mode 100644 index 3953c78dc9..0000000000 --- a/packages/compiler-cli/test/compliance_old/prelink/BUILD.bazel +++ /dev/null @@ -1,41 +0,0 @@ -load("//tools:defaults.bzl", "jasmine_node_test", "ts_library") - -ts_library( - name = "prelink_bootstrap", - testonly = True, - srcs = ["bootstrap.ts"], - deps = [ - "//packages:types", - "//packages/compiler-cli/linker", - "//packages/compiler-cli/linker/babel", - "//packages/compiler-cli/src/ngtsc/file_system/testing", - "//packages/compiler-cli/src/ngtsc/logging/testing", - "//packages/compiler-cli/test/compliance_old/mock_compile", - "@npm//@babel/core", - "@npm//@babel/generator", - "@npm//@babel/template", - "@npm//@babel/types", - "@npm//@types/babel__core", - "@npm//@types/babel__generator", - "@npm//@types/babel__template", - "@npm//typescript", - ], -) - -jasmine_node_test( - name = "prelink", - bootstrap = [ - "//tools/testing:node_no_angular_es5", - ":prelink_bootstrap_es5", - ], - data = [ - "//packages/compiler-cli/src/ngtsc/testing/fake_core:npm_package", - ], - shard_count = 4, - tags = [ - "ivy-only", - ], - deps = [ - "//packages/compiler-cli/test/compliance_old:test_lib", - ], -) diff --git a/packages/compiler-cli/test/compliance_old/prelink/bootstrap.ts b/packages/compiler-cli/test/compliance_old/prelink/bootstrap.ts deleted file mode 100644 index 3830156273..0000000000 --- a/packages/compiler-cli/test/compliance_old/prelink/bootstrap.ts +++ /dev/null @@ -1,79 +0,0 @@ -/** - * @license - * 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 - */ -import {PluginObj, transformSync} from '@babel/core'; -import * as ts from 'typescript'; - -import {needsLinking} from '../../../linker'; -import {createEs2015LinkerPlugin} from '../../../linker/babel'; -import {MockFileSystemNative} from '../../../src/ngtsc/file_system/testing'; -import {MockLogger} from '../../../src/ngtsc/logging/testing'; -import {compileFiles, CompileFn, setCompileFn} from '../mock_compile'; - -/** - * A function to compile the given code in two steps: - * - * - first compile the code in partial mode - * - then compile the partially compiled code using the linker - * - * This should produce the same output as the full AOT compilation - */ -const linkedCompile: CompileFn = (data, angularFiles, options) => { - if (options !== undefined && options.target !== undefined && - options.target < ts.ScriptTarget.ES2015) { - pending('ES5 is not supported in the partial compilation tests'); - throw new Error('ES5 is not supported in the partial compilation tests'); - } - - const compiledFiles = compileFiles(data, angularFiles, {...options, compilationMode: 'partial'}); - const fileSystem = new MockFileSystemNative(); - const logger = new MockLogger(); - const linkerPlugin = createEs2015LinkerPlugin({ - fileSystem, - logger, - // enableI18nLegacyMessageIdFormat defaults to false in `compileFiles`. - enableI18nLegacyMessageIdFormat: false, - ...options, - }); - - const source = - compiledFiles - .map(file => applyLinker({path: file.fileName, source: file.source}, linkerPlugin)) - .join('\n'); - - return {source}; -}; - -/** - * Runs the provided code through the Babel linker plugin, if the file has the .js extension. - * - * @param file The absolute file path and its source to be transformed using the linker. - * @param linkerPlugin The linker plugin to apply. - * @returns The file's source content, which has been transformed using the linker if necessary. - */ -function applyLinker(file: {path: string; source: string}, linkerPlugin: PluginObj): string { - if (!file.path.endsWith('.js') || !needsLinking(file.path, file.source)) { - return file.source; - } - const result = transformSync(file.source, { - filename: file.path, - plugins: [linkerPlugin], - parserOpts: {sourceType: 'unambiguous'}, - }); - if (result === null) { - throw fail('Babel transform did not have output'); - } - if (result.code == null) { - throw fail('Babel transform result does not have any code'); - } - return result.code; -} - -// Update the function that will do the compiling with this specialised version that -// runs the prelink and postlink parts of AOT compilation, to check it produces the -// same result as a normal full AOT compile. -setCompileFn(linkedCompile); diff --git a/packages/compiler-cli/test/compliance_old/r3_compiler_compliance_spec.ts b/packages/compiler-cli/test/compliance_old/r3_compiler_compliance_spec.ts deleted file mode 100644 index 8b99bf37ad..0000000000 --- a/packages/compiler-cli/test/compliance_old/r3_compiler_compliance_spec.ts +++ /dev/null @@ -1,3356 +0,0 @@ -/** - * @license - * 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 - */ - -import {AttributeMarker} from '@angular/compiler/src/core'; -import {setup} from '@angular/compiler/test/aot/test_util'; -import * as ts from 'typescript'; -import {compile, expectEmit} from './mock_compile'; - - -/** - * These tests are codified version of the tests in compiler_canonical_spec.ts. Every - * test in compiler_canonical_spec.ts should have a corresponding test here. - */ -describe('compiler compliance', () => { - const angularFiles = setup({ - compileAngular: false, - compileAnimations: false, - compileFakeCore: true, - }); - - describe('elements', () => { - it('should handle SVG', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`

test

\` - }) - export class MyComponent {} - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - // The factory should look like this: - const factory = - 'MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); }'; - - // The template should look like this (where IDENT is a wild card for an identifier): - const template = ` - … - consts: [["title", "Hello", ${ - AttributeMarker.Classes}, "my-app"], ["cx", "20", "cy", "30", "r", "50"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div", 0); - $r3$.ɵɵnamespaceSVG(); - $r3$.ɵɵelementStart(1, "svg"); - $r3$.ɵɵelement(2, "circle", 1); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵnamespaceHTML(); - $r3$.ɵɵelementStart(3, "p"); - $r3$.ɵɵtext(4, "test"); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementEnd(); - } - } - `; - - - const result = compile(files, angularFiles); - - expectEmit(result.source, factory, 'Incorrect factory'); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should handle MathML', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`

test

\` - }) - export class MyComponent {} - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - // The factory should look like this: - const factory = - 'MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); }'; - - // The template should look like this (where IDENT is a wild card for an identifier): - const template = ` - … - consts: [["title", "Hello", ${AttributeMarker.Classes}, "my-app"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div", 0); - $r3$.ɵɵnamespaceMathML(); - $r3$.ɵɵelementStart(1, "math"); - $r3$.ɵɵelement(2, "infinity"); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵnamespaceHTML(); - $r3$.ɵɵelementStart(3, "p"); - $r3$.ɵɵtext(4, "test"); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementEnd(); - } - } - `; - - - const result = compile(files, angularFiles); - expectEmit(result.source, factory, 'Incorrect factory'); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should translate DOM structure', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`
Hello World!
\` - }) - export class MyComponent {} - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - // The factory should look like this: - const factory = - 'MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); }'; - - // The template should look like this (where IDENT is a wild card for an identifier): - const template = ` - … - consts: [["title", "Hello", ${AttributeMarker.Classes}, "my-app"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div", 0); - $r3$.ɵɵtext(1, "Hello "); - $r3$.ɵɵelementStart(2, "b"); - $r3$.ɵɵtext(3, "World"); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵtext(4, "!"); - $r3$.ɵɵelementEnd(); - } - } - `; - - - const result = compile(files, angularFiles); - - expectEmit(result.source, factory, 'Incorrect factory'); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should support namespaced attributes', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`
Hello World!
\` - }) - export class MyComponent {} - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - // The factory should look like this: - const factory = - 'MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); }'; - - // The template should look like this (where IDENT is a wild card for an identifier): - const template = ` - … - consts: [[${AttributeMarker.NamespaceURI}, "xmlns", "foo", "http://someuri/foo", ${ - AttributeMarker.NamespaceURI}, "foo", "bar", "baz", "title", "Hello", ${ - AttributeMarker.NamespaceURI}, "foo", "qux", "quacks", ${ - AttributeMarker.Classes}, "my-app"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div", 0); - $r3$.ɵɵtext(1, "Hello "); - $r3$.ɵɵelementStart(2, "b"); - $r3$.ɵɵtext(3, "World"); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵtext(4, "!"); - $r3$.ɵɵelementEnd(); - } - } - `; - - - const result = compile(files, angularFiles); - - expectEmit(result.source, factory, 'Incorrect factory'); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should support ', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`in a container\` - }) - export class MyComponent {} - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - // The template should look like this (where IDENT is a wild card for an identifier): - const template = ` - … - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - i0.ɵɵelementContainerStart(0); - i0.ɵɵelementStart(1, "span"); - i0.ɵɵtext(2, "in a "); - i0.ɵɵelementEnd(); - i0.ɵɵtext(3, "container"); - i0.ɵɵelementContainerEnd(); - } - } - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should generate self-closing elementContainer instruction for empty ', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`\` - }) - export class MyComponent {} - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - // The template should look like this (where IDENT is a wild card for an identifier): - const template = ` - … - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - i0.ɵɵelementContainer(0); - } - } - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should bind to element properties', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`
\` - }) - export class MyComponent { - id = 'one'; - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const factory = - 'MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); }'; - const template = ` - … - consts: [[${AttributeMarker.Bindings}, "id"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div", 0); - } - if (rf & 2) { - $r3$.ɵɵproperty("id", ctx.id); - } - } - `; - - - const result = compile(files, angularFiles); - - expectEmit(result.source, factory, 'Incorrect factory'); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should reserve slots for pure functions', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`
\` - }) - export class MyComponent { - id = 'one'; - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - /////////////// - // TODO(FW-1273): The code generated below is adding extra parens, and we need to stop - // generating those. - // - // For example: - // `$r3$.ɵɵproperty("ternary", (ctx.cond ? $r3$.ɵɵpureFunction1(8, $c0$, ctx.a): $c1$));` - /////////////// - - const factory = - 'MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); }'; - const template = ` - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div", 0); - $r3$.ɵɵpipe(1, "pipe"); - } - if (rf & 2) { - $r3$.ɵɵproperty("ternary", ctx.cond ? $r3$.ɵɵpureFunction1(8, $c0$, ctx.a): $r3$.ɵɵpureFunction0(10, $c1$))("pipe", $r3$.ɵɵpipeBind3(1, 4, ctx.value, 1, 2))("and", ctx.cond && $r3$.ɵɵpureFunction1(11, $c0$, ctx.b))("or", ctx.cond || $r3$.ɵɵpureFunction1(13, $c0$, ctx.c)); - } - } - `; - - - const result = compile(files, angularFiles); - - expectEmit(result.source, factory, 'Incorrect factory'); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should reserve slots for pure functions in host binding function', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule, Input} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: '...', - host: { - '[@expansionHeight]': \`{ - value: getExpandedState(), - params: { - collapsedHeight: collapsedHeight, - expandedHeight: expandedHeight - } - }\`, - '[@expansionWidth]': \`{ - value: getExpandedState(), - params: { - collapsedWidth: collapsedWidth, - expandedWidth: expandedWidth - } - }\` - } - }) - export class MyComponent { - @Input() expandedHeight: string; - @Input() collapsedHeight: string; - - @Input() expandedWidth: string; - @Input() collapsedWidth: string; - - getExpandedState() { - return 'expanded'; - } - } - - @NgModule({ - declarations: [MyComponent] - }) - export class MyModule {} - ` - } - }; - - const hostBindingsDef = ` - const $_c0$ = function (a0, a1) { return { collapsedHeight: a0, expandedHeight: a1 }; }; - const $_c1$ = function (a0, a1) { return { value: a0, params: a1 }; }; - const $_c2$ = function (a0, a1) { return { collapsedWidth: a0, expandedWidth: a1 }; }; - … - hostVars: 14, - hostBindings: function MyComponent_HostBindings(rf, ctx) { - if (rf & 2) { - $r3$.ɵɵsyntheticHostProperty("@expansionHeight", - $r3$.ɵɵpureFunction2(5, $_c1$, ctx.getExpandedState(), - $r3$.ɵɵpureFunction2(2, $_c0$, ctx.collapsedHeight, ctx.expandedHeight) - ) - )("@expansionWidth", - $r3$.ɵɵpureFunction2(11, $_c1$, ctx.getExpandedState(), - $r3$.ɵɵpureFunction2(8, $_c2$, ctx.collapsedWidth, ctx.expandedWidth) - ) - ); - } - }, - … - `; - const result = compile(files, angularFiles); - expectEmit(result.source, hostBindingsDef, 'Incorrect "hostBindings" function'); - }); - - it('should bind to class and style names', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`
\` - }) - export class MyComponent { - error = true; - color = 'red'; - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const factory = - 'MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); }'; - const template = ` - MyComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({type:MyComponent,selectors:[["my-component"]], - decls: 1, - vars: 4, - template: function MyComponent_Template(rf,ctx){ - if (rf & 1) { - $r3$.ɵɵelement(0, "div"); - } - if (rf & 2) { - $r3$.ɵɵstyleProp("background-color", ctx.color); - $r3$.ɵɵclassProp("error", ctx.error); - } - }, - encapsulation: 2 - }); - `; - - - const result = compile(files, angularFiles); - - expectEmit(result.source, factory, 'Incorrect factory'); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should de-duplicate attribute arrays', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \` -
- - \` - }) - export class MyComponent { - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - … - consts: [["title", "hi"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div", 0); - $r3$.ɵɵelement(1, "span", 0); - } - … - } - `; - - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - }); - - describe('components & directives', () => { - it('should instantiate directives', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Directive, NgModule} from '@angular/core'; - - @Component({selector: 'child', template: 'child-view'}) - export class ChildComponent {} - - @Directive({selector: '[some-directive]'}) - export class SomeDirective {} - - @Component({selector: 'my-component', template: '!'}) - export class MyComponent {} - - @NgModule({declarations: [ChildComponent, SomeDirective, MyComponent]}) - export class MyModule{} - ` - } - }; - - // ChildComponent definition should be: - const ChildComponentDefinition = ` - ChildComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: ChildComponent, - selectors: [["child"]], - decls: 1, - vars: 0, - template: function ChildComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtext(0, "child-view"); - } - }, - encapsulation: 2 - });`; - - const ChildComponentFactory = - `ChildComponent.ɵfac = function ChildComponent_Factory(t) { return new (t || ChildComponent)(); };`; - - // SomeDirective definition should be: - const SomeDirectiveDefinition = ` - SomeDirective.ɵdir = /*@__PURE__*/ $r3$.ɵɵdefineDirective({ - type: SomeDirective, - selectors: [["", "some-directive", ""]] - }); - `; - - const SomeDirectiveFactory = - `SomeDirective.ɵfac = function SomeDirective_Factory(t) {return new (t || SomeDirective)(); };`; - - // MyComponent definition should be: - const MyComponentDefinition = ` - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyComponent, - selectors: [["my-component"]], - decls: 2, - vars: 0, - consts: [["some-directive", ""]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "child", 0); - $r3$.ɵɵtext(1, "!"); - } - }, - directives: [ChildComponent, SomeDirective], - encapsulation: 2 - }); - `; - - const MyComponentFactory = - `MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };`; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, ChildComponentDefinition, 'Incorrect ChildComponent.ɵcmp'); - expectEmit(source, ChildComponentFactory, 'Incorrect ChildComponent.ɵfac'); - expectEmit(source, SomeDirectiveDefinition, 'Incorrect SomeDirective.ɵdir'); - expectEmit(source, SomeDirectiveFactory, 'Incorrect SomeDirective.ɵfac'); - expectEmit(source, MyComponentDefinition, 'Incorrect MyComponentDefinition.ɵcmp'); - expectEmit(source, MyComponentFactory, 'Incorrect MyComponentDefinition.ɵfac'); - }); - - it('should support complex selectors', () => { - const files = { - app: { - 'spec.ts': ` - import {Directive, NgModule} from '@angular/core'; - - @Directive({selector: 'div.foo[some-directive]:not([title]):not(.baz)'}) - export class SomeDirective {} - - @Directive({selector: ':not(span[title]):not(.baz)'}) - export class OtherDirective {} - - @NgModule({declarations: [SomeDirective, OtherDirective]}) - export class MyModule{} - ` - } - }; - - // SomeDirective definition should be: - const SomeDirectiveDefinition = ` - SomeDirective.ɵdir = /*@__PURE__*/ $r3$.ɵɵdefineDirective({ - type: SomeDirective, - selectors: [["div", "some-directive", "", 8, "foo", 3, "title", "", 9, "baz"]] - }); - `; - - const SomeDirectiveFactory = - `SomeDirective.ɵfac = function SomeDirective_Factory(t) {return new (t || SomeDirective)(); };`; - - // OtherDirective definition should be: - const OtherDirectiveDefinition = ` - OtherDirective.ɵdir = /*@__PURE__*/ $r3$.ɵɵdefineDirective({ - type: OtherDirective, - selectors: [["", 5, "span", "title", "", 9, "baz"]] - }); - `; - - const OtherDirectiveFactory = - `OtherDirective.ɵfac = function OtherDirective_Factory(t) {return new (t || OtherDirective)(); };`; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, SomeDirectiveDefinition, 'Incorrect SomeDirective.ɵdir'); - expectEmit(source, SomeDirectiveFactory, 'Incorrect SomeDirective.ɵfac'); - expectEmit(source, OtherDirectiveDefinition, 'Incorrect OtherDirective.ɵdir'); - expectEmit(source, OtherDirectiveFactory, 'Incorrect OtherDirective.ɵfac'); - }); - - it('should convert #my-app selector to ["", "id", "my-app"]', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({selector: '#my-app', template: ''}) - export class SomeComponent {} - - @NgModule({declarations: [SomeComponent]}) - export class MyModule{} - ` - } - }; - - // SomeDirective definition should be: - const SomeDirectiveDefinition = ` - SomeComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: SomeComponent, - selectors: [["", "id", "my-app"]], - … - }); - `; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, SomeDirectiveDefinition, 'Incorrect SomeComponent.ɵcomp'); - }); - it('should support components without selector', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Directive, NgModule} from '@angular/core'; - - @Component({template: ''}) - export class EmptyOutletComponent {} - - @NgModule({declarations: [EmptyOutletComponent]}) - export class MyModule{} - ` - } - }; - - // EmptyOutletComponent definition should be: - const EmptyOutletComponentDefinition = ` - … - EmptyOutletComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: EmptyOutletComponent, - selectors: [["ng-component"]], - decls: 1, - vars: 0, - template: function EmptyOutletComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "router-outlet"); - } - }, - encapsulation: 2 - }); - `; - - const EmptyOutletComponentFactory = - `EmptyOutletComponent.ɵfac = function EmptyOutletComponent_Factory(t) { return new (t || EmptyOutletComponent)(); };`; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, EmptyOutletComponentDefinition, 'Incorrect EmptyOutletComponent.ɵcmp'); - expectEmit(source, EmptyOutletComponentFactory, 'Incorrect EmptyOutletComponent.ɵfac'); - }); - - it('should not treat ElementRef, ViewContainerRef, or ChangeDetectorRef specially when injecting', - () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule, ElementRef, ChangeDetectorRef, ViewContainerRef} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: '' - }) - export class MyComponent { - constructor(public el: ElementRef, public vcr: ViewContainerRef, public cdr: ChangeDetectorRef) {} - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const MyComponentDefinition = ` - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyComponent, - selectors: [["my-component"]], - decls: 0, - vars: 0, - template: function MyComponent_Template(rf, ctx) {}, - encapsulation: 2 - });`; - - const MyComponentFactory = `MyComponent.ɵfac = function MyComponent_Factory(t) { - return new (t || MyComponent)( - $r3$.ɵɵdirectiveInject($i$.ElementRef), $r3$.ɵɵdirectiveInject($i$.ViewContainerRef), - $r3$.ɵɵdirectiveInject($i$.ChangeDetectorRef)); - };`; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, MyComponentDefinition, 'Incorrect MyComponent.ɵcmp'); - expectEmit(source, MyComponentFactory, 'Incorrect MyComponent.ɵfac'); - }); - - it('should support structural directives', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Directive, NgModule, TemplateRef} from '@angular/core'; - - @Directive({selector: '[if]'}) - export class IfDirective { - constructor(template: TemplateRef) { } - } - - @Component({ - selector: 'my-component', - template: '
  • {{salutation}} {{foo}}
' - }) - export class MyComponent { - salutation = 'Hello'; - } - - @NgModule({declarations: [IfDirective, MyComponent]}) - export class MyModule {} - ` - } - }; - - const IfDirectiveDefinition = ` - IfDirective.ɵdir = /*@__PURE__*/ $r3$.ɵɵdefineDirective({ - type: IfDirective, - selectors: [["", "if", ""]] - });`; - const IfDirectiveFactory = - `IfDirective.ɵfac = function IfDirective_Factory(t) { return new (t || IfDirective)($r3$.ɵɵdirectiveInject($i$.TemplateRef)); };`; - - const MyComponentDefinition = ` - function MyComponent_li_2_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "li"); - $r3$.ɵɵtext(1); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - const $myComp$ = $r3$.ɵɵnextContext(); - const $foo$ = $r3$.ɵɵreference(1); - $r3$.ɵɵadvance(1); - $r3$.ɵɵtextInterpolate2("", $myComp$.salutation, " ", $foo$, ""); - } - } - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyComponent, - selectors: [["my-component"]], - decls: 3, - vars: 0, - consts: [["foo", ""], [${AttributeMarker.Template}, "if"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "ul", null, 0); - $r3$.ɵɵtemplate(2, MyComponent_li_2_Template, 2, 2, "li", 1); - $r3$.ɵɵelementEnd(); - } - }, - directives: [IfDirective], - encapsulation: 2 - });`; - - const MyComponentFactory = - `MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); };`; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, IfDirectiveDefinition, 'Incorrect IfDirective.ɵdir'); - expectEmit(source, IfDirectiveFactory, 'Incorrect IfDirective.ɵfac'); - expectEmit(source, MyComponentDefinition, 'Incorrect MyComponent.ɵcmp'); - expectEmit(source, MyComponentFactory, 'Incorrect MyComponent.ɵfac'); - }); - - describe('value composition', () => { - it('should support array literals', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Input, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-comp', - template: \` -

{{ names[0] }}

-

{{ names[1] }}

- \` - }) - export class MyComp { - @Input() names: string[]; - } - - @Component({ - selector: 'my-app', - template: \` - - \` - }) - export class MyApp { - customName = 'Bess'; - } - - @NgModule({declarations: [MyComp, MyApp]}) - export class MyModule { } - ` - } - }; - - const MyAppDeclaration = ` - const $e0_ff$ = function ($v$) { return ["Nancy", $v$]; }; - … - MyApp.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyApp, - selectors: [["my-app"]], - decls: 1, - vars: 3, - consts: [[${AttributeMarker.Bindings}, "names"]], - template: function MyApp_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "my-comp", 0); - } - if (rf & 2) { - $r3$.ɵɵproperty("names", $r3$.ɵɵpureFunction1(1, $e0_ff$, ctx.customName)); - } - }, - directives: [MyComp], - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, MyAppDeclaration, 'Invalid array emit'); - }); - - it('should support 9+ bindings in array literals', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Input, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-comp', - template: \` - {{ names[0] }} - {{ names[1] }} - {{ names[3] }} - {{ names[4] }} - {{ names[5] }} - {{ names[6] }} - {{ names[7] }} - {{ names[8] }} - {{ names[9] }} - {{ names[10] }} - {{ names[11] }} - \` - }) - export class MyComp { - @Input() names: string[]; - } - - @Component({ - selector: 'my-app', - template: \` - - - \` - }) - export class MyApp { - n0 = 'a'; - n1 = 'b'; - n2 = 'c'; - n3 = 'd'; - n4 = 'e'; - n5 = 'f'; - n6 = 'g'; - n7 = 'h'; - n8 = 'i'; - } - - @NgModule({declarations: [MyComp, MyApp]}) - export class MyModule {} - ` - } - }; - - const MyAppDefinition = ` - const $e0_ff$ = function ($v0$, $v1$, $v2$, $v3$, $v4$, $v5$, $v6$, $v7$, $v8$) { - return ["start-", $v0$, $v1$, $v2$, $v3$, $v4$, "-middle-", $v5$, $v6$, $v7$, $v8$, "-end"]; - } - … - MyApp.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyApp, - selectors: [["my-app"]], - decls: 1, - vars: 11, - consts: [[${AttributeMarker.Bindings}, "names"]], - template: function MyApp_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "my-comp", 0); - } - if (rf & 2) { - $r3$.ɵɵproperty("names", - $r3$.ɵɵpureFunctionV(1, $e0_ff$, [ctx.n0, ctx.n1, ctx.n2, ctx.n3, ctx.n4, ctx.n5, ctx.n6, ctx.n7, ctx.n8])); - } - }, - directives: [MyComp], - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, MyAppDefinition, 'Invalid array binding'); - }); - - it('should support object literals', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Input, NgModule} from '@angular/core'; - - @Component({ - selector: 'object-comp', - template: \` -

{{ config['duration'] }}

-

{{ config.animation }}

- \` - }) - export class ObjectComp { - @Input() config: {[key: string]: any}; - } - - @Component({ - selector: 'my-app', - template: \` - - \` - }) - export class MyApp { - name = 'slide'; - } - - @NgModule({declarations: [ObjectComp, MyApp]}) - export class MyModule {} - ` - } - }; - - const MyAppDefinition = ` - const $e0_ff$ = function ($v$) { return {"duration": 500, animation: $v$}; }; - … - MyApp.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyApp, - selectors: [["my-app"]], - decls: 1, - vars: 3, - consts: [[${AttributeMarker.Bindings}, "config"]], - template: function MyApp_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "object-comp", 0); - } - if (rf & 2) { - $r3$.ɵɵproperty("config", $r3$.ɵɵpureFunction1(1, $e0_ff$, ctx.name)); - } - }, - directives: [ObjectComp], - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, MyAppDefinition, 'Invalid object literal binding'); - }); - - it('should support expressions nested deeply in object/array literals', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Input, NgModule} from '@angular/core'; - - @Component({ - selector: 'nested-comp', - template: \` -

{{ config.animation }}

-

{{config.actions[0].opacity }}

-

{{config.actions[1].duration }}

- \` - }) - export class NestedComp { - @Input() config: {[key: string]: any}; - } - - @Component({ - selector: 'my-app', - template: \` - - - \` - }) - export class MyApp { - name = 'slide'; - duration = 100; - } - - @NgModule({declarations: [NestedComp, MyApp]}) - export class MyModule {} - ` - } - }; - - const MyAppDefinition = ` - const $c0$ = function () { return {opacity: 0, duration: 0}; }; - const $e0_ff$ = function ($v$) { return {opacity: 1, duration: $v$}; }; - const $e0_ff_1$ = function ($v1$, $v2$) { return [$v1$, $v2$]; }; - const $e0_ff_2$ = function ($v1$, $v2$) { return {animation: $v1$, actions: $v2$}; }; - … - MyApp.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyApp, - selectors: [["my-app"]], - decls: 1, - vars: 10, - consts: [[${AttributeMarker.Bindings}, "config"]], - template: function MyApp_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "nested-comp", 0); - } - if (rf & 2) { - $r3$.ɵɵproperty("config", - $r3$.ɵɵpureFunction2(7, $e0_ff_2$, ctx.name, $r3$.ɵɵpureFunction2(4, $e0_ff_1$, $r3$.ɵɵpureFunction0(1, $c0$), $r3$.ɵɵpureFunction1(2, $e0_ff$, ctx.duration)))); - } - }, - directives: [NestedComp], - encapsulation: 2 - }); - `; - - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, MyAppDefinition, 'Invalid array/object literal binding'); - }); - }); - - describe('content projection', () => { - it('should support content projection in root template', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Directive, NgModule, TemplateRef} from '@angular/core'; - - @Component({selector: 'simple', template: '
'}) - export class SimpleComponent {} - - @Component({ - selector: 'complex', - template: \` -
-
\` - }) - export class ComplexComponent { } - - @NgModule({declarations: [SimpleComponent, ComplexComponent]}) - export class MyModule {} - - @Component({ - selector: 'my-app', - template: 'content ' - }) - export class MyApp {} - ` - } - }; - - const SimpleComponentDefinition = ` - SimpleComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: SimpleComponent, - selectors: [["simple"]], - ngContentSelectors: $c0$, - decls: 2, - vars: 0, - template: function SimpleComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵprojectionDef(); - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵprojection(1); - $r3$.ɵɵelementEnd(); - } - }, - encapsulation: 2 - });`; - - const ComplexComponentDefinition = ` - const $c1$ = [[["span", "title", "tofirst"]], [["span", "title", "tosecond"]]]; - … - ComplexComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: ComplexComponent, - selectors: [["complex"]], - ngContentSelectors: $c2$, - decls: 4, - vars: 0, - consts: [["id","first"], ["id","second"]], - template: function ComplexComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵprojectionDef($c1$); - $r3$.ɵɵelementStart(0, "div", 0); - $r3$.ɵɵprojection(1); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementStart(2, "div", 1); - $r3$.ɵɵprojection(3, 1); - $r3$.ɵɵelementEnd(); - } - }, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit( - result.source, SimpleComponentDefinition, 'Incorrect SimpleComponent definition'); - expectEmit( - result.source, ComplexComponentDefinition, 'Incorrect ComplexComponent definition'); - }); - - it('should support multi-slot content projection with multiple wildcard slots', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - template: \` - - - - \`, - }) - class Cmp {} - - @NgModule({ declarations: [Cmp] }) - class Module {} - `, - } - }; - - const output = ` - const $c0$ = ["*", [["", "spacer", ""]], "*"]; - const $c1$ = ["*", "[spacer]", "*"]; - … - Cmp.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: Cmp, - selectors: [["ng-component"]], - ngContentSelectors: $c1$, - decls: 3, - vars: 0, - template: function Cmp_Template(rf, ctx) { - if (rf & 1) { - i0.ɵɵprojectionDef($c0$); - i0.ɵɵprojection(0); - i0.ɵɵprojection(1, 1); - i0.ɵɵprojection(2, 2); - } - }, - encapsulation: 2 - }); - `; - - const {source} = compile(files, angularFiles); - expectEmit(source, output, 'Invalid content projection instructions generated'); - }); - - it('should support content projection in nested templates', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - template: \` -
- -
-
- No ng-content, no instructions generated. -
- - '*' selector: - - \`, - }) - class Cmp {} - - @NgModule({ declarations: [Cmp] }) - class Module {} - ` - } - }; - const output = ` - function Cmp_div_0_Template(rf, ctx) { if (rf & 1) { - $r3$.ɵɵelementStart(0, "div", 2); - $r3$.ɵɵprojection(1); - $r3$.ɵɵelementEnd(); - } } - function Cmp_div_1_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div", 3); - $r3$.ɵɵtext(1, " No ng-content, no instructions generated. "); - $r3$.ɵɵelementEnd(); - } - } - function Cmp_ng_template_2_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtext(0, " '*' selector: "); - $r3$.ɵɵprojection(1, 1); - } - } - const $_c4$ = [[["span", "title", "tofirst"]], "*"]; - … - consts: [["id", "second", ${AttributeMarker.Template}, "ngIf"], ["id", "third", ${ - AttributeMarker.Template}, "ngIf"], ["id", "second"], ["id", "third"]], - template: function Cmp_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵprojectionDef($_c4$); - $r3$.ɵɵtemplate(0, Cmp_div_0_Template, 2, 0, "div", 0); - $r3$.ɵɵtemplate(1, Cmp_div_1_Template, 2, 0, "div", 1); - $r3$.ɵɵtemplate(2, Cmp_ng_template_2_Template, 2, 0, "ng-template"); - } - if (rf & 2) { - $r3$.ɵɵproperty("ngIf", ctx.visible); - $r3$.ɵɵadvance(1); - $r3$.ɵɵproperty("ngIf", ctx.visible); - } - } - `; - - const {source} = compile(files, angularFiles); - expectEmit(source, output, 'Invalid content projection instructions generated'); - }); - - it('should support content projection in both the root and nested templates', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - template: \` - - - - - - - - - '*' selector in a template: - - - \`, - }) - class Cmp {} - - @NgModule({ declarations: [Cmp] }) - class Module {} - ` - } - }; - - const output = ` - function Cmp_ng_template_1_ng_template_1_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵprojection(0, 3); - } - } - function Cmp_ng_template_1_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵprojection(0, 2); - $r3$.ɵɵtemplate(1, Cmp_ng_template_1_ng_template_1_Template, 1, 0, "ng-template"); - } - } - function Cmp_ng_template_2_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtext(0, " '*' selector in a template: "); - $r3$.ɵɵprojection(1, 4); - } - } - const $_c0$ = [[["", "id", "tomainbefore"]], [["", "id", "tomainafter"]], [["", "id", "totemplate"]], [["", "id", "tonestedtemplate"]], "*"]; - const $_c1$ = ["[id=toMainBefore]", "[id=toMainAfter]", "[id=toTemplate]", "[id=toNestedTemplate]", "*"]; - … - template: function Cmp_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵprojectionDef($_c0$); - $r3$.ɵɵprojection(0); - $r3$.ɵɵtemplate(1, Cmp_ng_template_1_Template, 2, 0, "ng-template"); - $r3$.ɵɵtemplate(2, Cmp_ng_template_2_Template, 2, 0, "ng-template"); - $r3$.ɵɵprojection(3, 1); - } - } - `; - - const {source} = compile(files, angularFiles); - expectEmit(source, output, 'Invalid content projection instructions generated'); - }); - - it('should parse the selector that is passed into ngProjectAs', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'simple', - template: '
' - }) - export class SimpleComponent {} - - @NgModule({declarations: [SimpleComponent]}) - export class MyModule {} - - @Component({ - selector: 'my-app', - template: '

' - }) - export class MyApp {} - ` - } - }; - - // Note that the c0 and c1 constants aren't being used in this particular test, - // but they are used in some of the logic that is folded under the ellipsis. - const SimpleComponentDefinition = ` - const $_c0$ = [[["", "title", ""]]]; - const $_c1$ = ["[title]"]; - … - MyApp.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyApp, - selectors: [["my-app"]], - decls: 2, - vars: 0, - consts: [["ngProjectAs", "[title]", 5, ["", "title", ""]]], - template: function MyApp_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "simple"); - $r3$.ɵɵelement(1, "h1", 0); - $r3$.ɵɵelementEnd(); - } - }, - encapsulation: 2 - })`; - - const result = compile(files, angularFiles); - - expectEmit( - result.source, SimpleComponentDefinition, 'Incorrect SimpleComponent definition'); - }); - - it('should take the first selector if multiple values are passed into ngProjectAs', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'simple', - template: '
' - }) - export class SimpleComponent {} - - @NgModule({declarations: [SimpleComponent]}) - export class MyModule {} - - @Component({ - selector: 'my-app', - template: '

' - }) - export class MyApp {} - ` - } - }; - - // Note that the c0 and c1 constants aren't being used in this particular test, - // but they are used in some of the logic that is folded under the ellipsis. - const SimpleComponentDefinition = ` - const $_c0$ = [[["", "title", ""]]]; - const $_c1$ = ["[title]"]; - … - MyApp.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyApp, - selectors: [["my-app"]], - decls: 2, - vars: 0, - consts: [["ngProjectAs", "[title],[header]", 5, ["", "title", ""]]], - template: function MyApp_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "simple"); - $r3$.ɵɵelement(1, "h1", 0); - $r3$.ɵɵelementEnd(); - } - }, - encapsulation: 2 - })`; - - const result = compile(files, angularFiles); - - expectEmit( - result.source, SimpleComponentDefinition, 'Incorrect SimpleComponent definition'); - }); - - it('should include parsed ngProjectAs selectors into template attrs', () => { - const files = { - app: { - 'spec.ts': ` - import {Component} from '@angular/core'; - - @Component({ - selector: 'my-app', - template: '
' - }) - export class MyApp { - show = true; - } - ` - } - }; - - const SimpleComponentDefinition = ` - MyApp.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ - type: MyApp, - selectors: [ - ["my-app"] - ], - decls: 1, - vars: 1, - consts: [ - ["ngProjectAs", ".someclass", ${AttributeMarker.ProjectAs}, ["", 8, "someclass"], ${ - AttributeMarker.Template}, "ngIf"], - ["ngProjectAs", ".someclass", ${AttributeMarker.ProjectAs}, ["", 8, "someclass"]] - ], - template: function MyApp_Template(rf, ctx) { - if (rf & 1) { - i0.ɵɵtemplate(0, MyApp_div_0_Template, 1, 0, "div", 0); - } - if (rf & 2) { - i0.ɵɵproperty("ngIf", ctx.show); - } - }, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, SimpleComponentDefinition, 'Incorrect MyApp definition'); - }); - - it('should capture the node name of ng-content with a structural directive', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Directive, NgModule, TemplateRef} from '@angular/core'; - - @Component({selector: 'simple', template: ''}) - export class SimpleComponent {} - ` - } - }; - - const SimpleComponentDefinition = ` - SimpleComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: SimpleComponent, - selectors: [["simple"]], - ngContentSelectors: $c0$, - decls: 1, - vars: 1, - consts: [[4, "ngIf"]], - template: function SimpleComponent_Template(rf, ctx) { - if (rf & 1) { - i0.ɵɵprojectionDef(); - i0.ɵɵtemplate(0, SimpleComponent_ng_content_0_Template, 1, 0, "ng-content", 0); - } - if (rf & 2) { - i0.ɵɵproperty("ngIf", ctx.showContent); - } - }, - encapsulation: 2 - });`; - - const result = compile(files, angularFiles); - expectEmit( - result.source, SimpleComponentDefinition, 'Incorrect SimpleComponent definition'); - }); - }); - - describe('queries', () => { - const directive = { - 'some.directive.ts': ` - import {Directive} from '@angular/core'; - - @Directive({ - selector: '[someDir]', - }) - export class SomeDirective { } - ` - }; - - it('should support view queries with directives', () => { - const files = { - app: { - ...directive, - 'view_query.component.ts': ` - import {Component, NgModule, ViewChild, ViewChildren} from '@angular/core'; - import {SomeDirective} from './some.directive'; - - @Component({ - selector: 'view-query-component', - template: \` -
- \` - }) - export class ViewQueryComponent { - @ViewChild(SomeDirective) someDir: SomeDirective; - @ViewChildren(SomeDirective) someDirs: QueryList; - } - - @NgModule({declarations: [SomeDirective, ViewQueryComponent]}) - export class MyModule {} - ` - } - }; - - const ViewQueryComponentDefinition = ` - … - ViewQueryComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: ViewQueryComponent, - selectors: [["view-query-component"]], - viewQuery: function ViewQueryComponent_Query(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵviewQuery(SomeDirective, 5); - $r3$.ɵɵviewQuery(SomeDirective, 5); - } - if (rf & 2) { - let $tmp$; - $r3$.ɵɵqueryRefresh($tmp$ = $r3$.ɵɵloadQuery()) && (ctx.someDir = $tmp$.first); - $r3$.ɵɵqueryRefresh($tmp$ = $r3$.ɵɵloadQuery()) && (ctx.someDirs = $tmp$); - } - }, - decls: 1, - vars: 0, - consts: [["someDir",""]], - template: function ViewQueryComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div", 0); - } - }, - directives: function () { return [SomeDirective]; }, - encapsulation: 2 - });`; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, ViewQueryComponentDefinition, 'Invalid ViewQuery declaration'); - }); - - it('should support view queries with local refs', () => { - const files = { - app: { - 'view_query.component.ts': ` - import {Component, NgModule, ViewChild, ViewChildren, QueryList} from '@angular/core'; - - @Component({ - selector: 'view-query-component', - template: \` -
-
- \` - }) - export class ViewQueryComponent { - @ViewChild('myRef') myRef: any; - @ViewChildren('myRef1, myRef2, myRef3') myRefs: QueryList; - } - - @NgModule({declarations: [ViewQueryComponent]}) - export class MyModule {} - ` - } - }; - - const ViewQueryComponentDefinition = ` - const $e0_attrs$ = ["myRef"]; - const $e1_attrs$ = ["myRef1", "myRef2", "myRef3"]; - … - ViewQueryComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - … - viewQuery: function ViewQueryComponent_Query(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵviewQuery($e0_attrs$, 5); - $r3$.ɵɵviewQuery($e1_attrs$, 5); - } - if (rf & 2) { - let $tmp$; - $r3$.ɵɵqueryRefresh($tmp$ = $r3$.ɵɵloadQuery()) && (ctx.myRef = $tmp$.first); - $r3$.ɵɵqueryRefresh($tmp$ = $r3$.ɵɵloadQuery()) && (ctx.myRefs = $tmp$); - } - }, - … - });`; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, ViewQueryComponentDefinition, 'Invalid ViewQuery declaration'); - }); - - it('should support static view queries', () => { - const files = { - app: { - ...directive, - 'view_query.component.ts': ` - import {Component, NgModule, ViewChild} from '@angular/core'; - import {SomeDirective} from './some.directive'; - - @Component({ - selector: 'view-query-component', - template: \` -
- \` - }) - export class ViewQueryComponent { - @ViewChild(SomeDirective, {static: true}) someDir !: SomeDirective; - @ViewChild('foo') foo !: ElementRef; - } - - @NgModule({declarations: [SomeDirective, ViewQueryComponent]}) - export class MyModule {} - ` - } - }; - - const ViewQueryComponentDefinition = ` - const $refs$ = ["foo"]; - … - ViewQueryComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: ViewQueryComponent, - selectors: [["view-query-component"]], - viewQuery: function ViewQueryComponent_Query(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵviewQuery(SomeDirective, 7); - $r3$.ɵɵviewQuery($refs$, 5); - } - if (rf & 2) { - let $tmp$; - $r3$.ɵɵqueryRefresh($tmp$ = $r3$.ɵɵloadQuery()) && (ctx.someDir = $tmp$.first); - $r3$.ɵɵqueryRefresh($tmp$ = $r3$.ɵɵloadQuery()) && (ctx.foo = $tmp$.first); - } - }, - decls: 1, - vars: 0, - consts: [["someDir",""]], - template: function ViewQueryComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div", 0); - } - }, - directives: function () { return [SomeDirective]; }, - encapsulation: 2 - });`; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, ViewQueryComponentDefinition, 'Invalid ViewQuery declaration'); - }); - - it('should support view queries with read tokens specified', () => { - const files = { - app: { - ...directive, - 'view_query.component.ts': ` - import {Component, NgModule, ViewChild, ViewChildren, QueryList, ElementRef, TemplateRef} from '@angular/core'; - import {SomeDirective} from './some.directive'; - - @Component({ - selector: 'view-query-component', - template: \` -
-
-
- \` - }) - export class ViewQueryComponent { - @ViewChild('myRef', {read: TemplateRef}) myRef: TemplateRef; - @ViewChildren('myRef1, myRef2, myRef3', {read: ElementRef}) myRefs: QueryList; - @ViewChild(SomeDirective, {read: ElementRef}) someDir: ElementRef; - @ViewChildren(SomeDirective, {read: TemplateRef}) someDirs: QueryList; - } - - @NgModule({declarations: [ViewQueryComponent]}) - export class MyModule {} - ` - } - }; - - const ViewQueryComponentDefinition = ` - const $e0_attrs$ = ["myRef"]; - const $e1_attrs$ = ["myRef1", "myRef2", "myRef3"]; - … - ViewQueryComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - … - viewQuery: function ViewQueryComponent_Query(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵviewQuery($e0_attrs$, 5, TemplateRef); - $r3$.ɵɵviewQuery(SomeDirective, 5, ElementRef); - $r3$.ɵɵviewQuery($e1_attrs$, 5, ElementRef); - $r3$.ɵɵviewQuery(SomeDirective, 5, TemplateRef); - } - if (rf & 2) { - let $tmp$; - $r3$.ɵɵqueryRefresh($tmp$ = $r3$.ɵɵloadQuery()) && (ctx.myRef = $tmp$.first); - $r3$.ɵɵqueryRefresh($tmp$ = $r3$.ɵɵloadQuery()) && (ctx.someDir = $tmp$.first); - $r3$.ɵɵqueryRefresh($tmp$ = $r3$.ɵɵloadQuery()) && (ctx.myRefs = $tmp$); - $r3$.ɵɵqueryRefresh($tmp$ = $r3$.ɵɵloadQuery()) && (ctx.someDirs = $tmp$); - } - }, - … - });`; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, ViewQueryComponentDefinition, 'Invalid ViewQuery declaration'); - }); - - it('should support content queries with directives', () => { - const files = { - app: { - ...directive, - 'content_query.ts': ` - import {Component, ContentChild, ContentChildren, NgModule, QueryList} from '@angular/core'; - import {SomeDirective} from './some.directive'; - - @Component({ - selector: 'content-query-component', - template: \` -
- \` - }) - export class ContentQueryComponent { - @ContentChild(SomeDirective) someDir: SomeDirective; - @ContentChildren(SomeDirective) someDirList !: QueryList; - } - - @Component({ - selector: 'my-app', - template: \` - -
-
- \` - }) - export class MyApp { } - - @NgModule({declarations: [SomeDirective, ContentQueryComponent, MyApp]}) - export class MyModule { } - ` - } - }; - - const ContentQueryComponentDefinition = ` - ContentQueryComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: ContentQueryComponent, - selectors: [["content-query-component"]], - contentQueries: function ContentQueryComponent_ContentQueries(rf, ctx, dirIndex) { - if (rf & 1) { - $r3$.ɵɵcontentQuery(dirIndex, SomeDirective, 5); - $r3$.ɵɵcontentQuery(dirIndex, SomeDirective, 4); - } - if (rf & 2) { - let $tmp$; - $r3$.ɵɵqueryRefresh($tmp$ = $r3$.ɵɵloadQuery()) && (ctx.someDir = $tmp$.first); - $r3$.ɵɵqueryRefresh($tmp$ = $r3$.ɵɵloadQuery()) && (ctx.someDirList = $tmp$); - } - }, - ngContentSelectors: _c0, - decls: 2, - vars: 0, - template: function ContentQueryComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵprojectionDef(); - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵprojection(1); - $r3$.ɵɵelementEnd(); - } - }, - encapsulation: 2 - });`; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, ContentQueryComponentDefinition, 'Invalid ContentQuery declaration'); - }); - - it('should support content queries with local refs', () => { - const files = { - app: { - 'content_query.component.ts': ` - import {Component, ContentChild, ContentChildren, NgModule, QueryList} from '@angular/core'; - - @Component({ - selector: 'content-query-component', - template: \` -
-
- \` - }) - export class ContentQueryComponent { - @ContentChild('myRef') myRef: any; - @ContentChildren('myRef1, myRef2, myRef3') myRefs: QueryList; - } - @NgModule({declarations: [ContentQueryComponent]}) - export class MyModule {} - ` - } - }; - - const ContentQueryComponentDefinition = ` - const $e0_attrs$ = ["myRef"]; - const $e1_attrs$ = ["myRef1", "myRef2", "myRef3"]; - … - ContentQueryComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - … - contentQueries: function ContentQueryComponent_ContentQueries(rf, ctx, dirIndex) { - if (rf & 1) { - $r3$.ɵɵcontentQuery(dirIndex, $e0_attrs$, 5); - $r3$.ɵɵcontentQuery(dirIndex, $e1_attrs$, 4); - } - if (rf & 2) { - let $tmp$; - $r3$.ɵɵqueryRefresh($tmp$ = $r3$.ɵɵloadQuery()) && (ctx.myRef = $tmp$.first); - $r3$.ɵɵqueryRefresh($tmp$ = $r3$.ɵɵloadQuery()) && (ctx.myRefs = $tmp$); - } - }, - … - });`; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, ContentQueryComponentDefinition, 'Invalid ContentQuery declaration'); - }); - - it('should support static content queries', () => { - const files = { - app: { - ...directive, - 'content_query.ts': ` - import {Component, ContentChild, NgModule} from '@angular/core'; - import {SomeDirective} from './some.directive'; - - @Component({ - selector: 'content-query-component', - template: \` -
- \` - }) - export class ContentQueryComponent { - @ContentChild(SomeDirective, {static: true}) someDir !: SomeDirective; - @ContentChild('foo') foo !: ElementRef; - } - - @Component({ - selector: 'my-app', - template: \` - -
-
- \` - }) - export class MyApp { } - - @NgModule({declarations: [SomeDirective, ContentQueryComponent, MyApp]}) - export class MyModule { } - ` - } - }; - - const ContentQueryComponentDefinition = ` - ContentQueryComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: ContentQueryComponent, - selectors: [["content-query-component"]], - contentQueries: function ContentQueryComponent_ContentQueries(rf, ctx, dirIndex) { - if (rf & 1) { - $r3$.ɵɵcontentQuery(dirIndex, SomeDirective, 7); - $r3$.ɵɵcontentQuery(dirIndex, $ref0$, 5); - } - if (rf & 2) { - let $tmp$; - $r3$.ɵɵqueryRefresh($tmp$ = $r3$.ɵɵloadQuery()) && (ctx.someDir = $tmp$.first); - $r3$.ɵɵqueryRefresh($tmp$ = $r3$.ɵɵloadQuery()) && (ctx.foo = $tmp$.first); - } - }, - ngContentSelectors: $_c1$, - decls: 2, - vars: 0, - template: function ContentQueryComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵprojectionDef(); - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵprojection(1); - $r3$.ɵɵelementEnd(); - } - }, - encapsulation: 2 - });`; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, ContentQueryComponentDefinition, 'Invalid ContentQuery declaration'); - }); - - it('should support content queries with read tokens specified', () => { - const files = { - app: { - ...directive, - 'content_query.component.ts': ` - import {Component, ContentChild, ContentChildren, NgModule, QueryList, ElementRef, TemplateRef} from '@angular/core'; - import {SomeDirective} from './some.directive'; - - @Component({ - selector: 'content-query-component', - template: \` -
-
-
- \` - }) - export class ContentQueryComponent { - @ContentChild('myRef', {read: TemplateRef}) myRef: TemplateRef; - @ContentChildren('myRef1, myRef2, myRef3', {read: ElementRef}) myRefs: QueryList; - @ContentChild(SomeDirective, {read: ElementRef}) someDir: ElementRef; - @ContentChildren(SomeDirective, {read: TemplateRef}) someDirs: QueryList; - } - @NgModule({declarations: [ContentQueryComponent]}) - export class MyModule {} - ` - } - }; - - const ContentQueryComponentDefinition = ` - const $e0_attrs$ = ["myRef"]; - const $e1_attrs$ = ["myRef1", "myRef2", "myRef3"]; - … - ContentQueryComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - … - contentQueries: function ContentQueryComponent_ContentQueries(rf, ctx, dirIndex) { - if (rf & 1) { - $r3$.ɵɵcontentQuery(dirIndex, $e0_attrs$, 5, TemplateRef); - $r3$.ɵɵcontentQuery(dirIndex, SomeDirective, 5, ElementRef); - $r3$.ɵɵcontentQuery(dirIndex, $e1_attrs$, 4, ElementRef); - $r3$.ɵɵcontentQuery(dirIndex, SomeDirective, 4, TemplateRef); - } - if (rf & 2) { - let $tmp$; - $r3$.ɵɵqueryRefresh($tmp$ = $r3$.ɵɵloadQuery()) && (ctx.myRef = $tmp$.first); - $r3$.ɵɵqueryRefresh($tmp$ = $r3$.ɵɵloadQuery()) && (ctx.someDir = $tmp$.first); - $r3$.ɵɵqueryRefresh($tmp$ = $r3$.ɵɵloadQuery()) && (ctx.myRefs = $tmp$); - $r3$.ɵɵqueryRefresh($tmp$ = $r3$.ɵɵloadQuery()) && (ctx.someDirs = $tmp$); - } - }, - … - });`; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, ContentQueryComponentDefinition, 'Invalid ContentQuery declaration'); - }); - }); - - describe('pipes', () => { - it('should render pipes', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule, Pipe, PipeTransform, OnDestroy} from '@angular/core'; - - @Pipe({ - name: 'myPipe', - pure: false - }) - export class MyPipe implements PipeTransform, - OnDestroy { - transform(value: any, ...args: any[]) { return value; } - ngOnDestroy(): void { } - } - - @Pipe({ - name: 'myPurePipe', - pure: true, - }) - export class MyPurePipe implements PipeTransform { - transform(value: any, ...args: any[]) { return value; } - } - - @Component({ - selector: 'my-app', - template: '{{name | myPipe:size | myPurePipe:size }}

{{ name | myPipe:1:2:3:4:5 }} {{ name ? 1 : 2 | myPipe }}

' - }) - export class MyApp { - name = 'World'; - size = 0; - } - - @NgModule({declarations:[MyPipe, MyPurePipe, MyApp]}) - export class MyModule {} - ` - } - }; - - const MyPipeDefinition = ` - MyPipe.ɵpipe = /*@__PURE__*/ $r3$.ɵɵdefinePipe({ - name: "myPipe", - type: MyPipe, - pure: false - }); - `; - - const MyPipeFactoryDef = ` - MyPipe.ɵfac = function MyPipe_Factory(t) { return new (t || MyPipe)(); }; - `; - - const MyPurePipeDefinition = ` - MyPurePipe.ɵpipe = /*@__PURE__*/ $r3$.ɵɵdefinePipe({ - name: "myPurePipe", - type: MyPurePipe, - pure: true - });`; - - const MyPurePipeFactoryDef = ` - MyPurePipe.ɵfac = function MyPurePipe_Factory(t) { return new (t || MyPurePipe)(); }; - `; - - const MyAppDefinition = ` - const $c0$ = function ($a0$) { - return [$a0$, 1, 2, 3, 4, 5]; - }; - // ... - MyApp.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyApp, - selectors: [["my-app"]], - decls: 7, - vars: 20, - template: function MyApp_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtext(0); - $r3$.ɵɵpipe(1, "myPurePipe"); - $r3$.ɵɵpipe(2, "myPipe"); - $r3$.ɵɵelementStart(3, "p"); - $r3$.ɵɵtext(4); - $r3$.ɵɵpipe(5, "myPipe"); - $r3$.ɵɵpipe(6, "myPipe"); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵtextInterpolate($r3$.ɵɵpipeBind2(1, 3, $r3$.ɵɵpipeBind2(2, 6, ctx.name, ctx.size), ctx.size)); - $r3$.ɵɵadvance(4); - $r3$.ɵɵtextInterpolate2("", $r3$.ɵɵpipeBindV(5, 9, $r3$.ɵɵpureFunction1(18, $c0$, ctx.name)), " ", ctx.name ? 1 : $r3$.ɵɵpipeBind1(6, 16, 2), ""); - } - }, - pipes: [MyPurePipe, MyPipe], - encapsulation: 2 - });`; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, MyPipeDefinition, 'Invalid pipe definition'); - expectEmit(source, MyPipeFactoryDef, 'Invalid pipe factory function'); - expectEmit(source, MyPurePipeDefinition, 'Invalid pure pipe definition'); - expectEmit(source, MyPurePipeFactoryDef, 'Invalid pure pipe factory function'); - expectEmit(source, MyAppDefinition, 'Invalid MyApp definition'); - }); - - it('should use appropriate function for a given no of pipe arguments', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule, Pipe, PipeTransform, OnDestroy} from '@angular/core'; - - @Pipe({ - name: 'myPipe', - pure: false - }) - export class MyPipe implements PipeTransform, - OnDestroy { - transform(value: any, ...args: any[]) { return value; } - ngOnDestroy(): void { } - } - - @Component({ - selector: 'my-app', - template: '0:{{name | myPipe}}1:{{name | myPipe:1}}2:{{name | myPipe:1:2}}3:{{name | myPipe:1:2:3}}4:{{name | myPipe:1:2:3:4}}' - }) - export class MyApp { - } - - @NgModule({declarations:[MyPipe, MyApp]}) - export class MyModule {} - ` - } - }; - - const MyAppDefinition = ` - // ... - MyApp.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyApp, - selectors: [["my-app"]], - decls: 6, - vars: 27, - template: function MyApp_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtext(0); - $r3$.ɵɵpipe(1, "myPipe"); - $r3$.ɵɵpipe(2, "myPipe"); - $r3$.ɵɵpipe(3, "myPipe"); - $r3$.ɵɵpipe(4, "myPipe"); - $r3$.ɵɵpipe(5, "myPipe"); - } - if (rf & 2) { - $r3$.ɵɵtextInterpolate5( - "0:", i0.ɵɵpipeBind1(1, 5, ctx.name), - "1:", i0.ɵɵpipeBind2(2, 7, ctx.name, 1), - "2:", i0.ɵɵpipeBind3(3, 10, ctx.name, 1, 2), - "3:", i0.ɵɵpipeBind4(4, 14, ctx.name, 1, 2, 3), - "4:", i0.ɵɵpipeBindV(5, 19, $r3$.ɵɵpureFunction1(25, $c0$, ctx.name)), - "" - ); - } - }, - pipes: [MyPipe], - encapsulation: 2 - });`; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, MyAppDefinition, 'Invalid MyApp definition'); - }); - - it('should generate the proper instruction when injecting ChangeDetectorRef into a pipe', - () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule, Pipe, PipeTransform, ChangeDetectorRef, Optional} from '@angular/core'; - - @Pipe({name: 'myPipe'}) - export class MyPipe implements PipeTransform { - constructor(changeDetectorRef: ChangeDetectorRef) {} - - transform(value: any, ...args: any[]) { return value; } - } - - @Pipe({name: 'myOtherPipe'}) - export class MyOtherPipe implements PipeTransform { - constructor(@Optional() changeDetectorRef: ChangeDetectorRef) {} - - transform(value: any, ...args: any[]) { return value; } - } - - @Component({ - selector: 'my-app', - template: '{{name | myPipe }}

{{ name | myOtherPipe }}

' - }) - export class MyApp { - name = 'World'; - } - - @NgModule({declarations:[MyPipe, MyOtherPipe, MyApp]}) - export class MyModule {} - ` - } - }; - - const MyPipeDefinition = ` - MyPipe.ɵpipe = /*@__PURE__*/ $r3$.ɵɵdefinePipe({ - name: "myPipe", - type: MyPipe, - pure: true - }); - `; - - const MyPipeFactory = ` - MyPipe.ɵfac = function MyPipe_Factory(t) { return new (t || MyPipe)($i0$.ɵɵdirectiveInject($i0$.ChangeDetectorRef, 16)); }; - `; - - const MyOtherPipeDefinition = ` - MyOtherPipe.ɵpipe = /*@__PURE__*/ $r3$.ɵɵdefinePipe({ - name: "myOtherPipe", - type: MyOtherPipe, - pure: true - });`; - - const MyOtherPipeFactory = ` - MyOtherPipe.ɵfac = function MyOtherPipe_Factory(t) { return new (t || MyOtherPipe)($i0$.ɵɵdirectiveInject($i0$.ChangeDetectorRef, 24)); }; - `; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, MyPipeDefinition, 'Invalid pipe definition'); - expectEmit(source, MyPipeFactory, 'Invalid pipe factory function'); - expectEmit(source, MyOtherPipeDefinition, 'Invalid alternate pipe definition'); - expectEmit(source, MyOtherPipeFactory, 'Invalid alternate pipe factory function'); - }); - }); - - it('local reference', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({selector: 'my-component', template: 'Hello {{user.value}}!'}) - export class MyComponent {} - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const MyComponentDefinition = ` - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyComponent, - selectors: [["my-component"]], - decls: 3, - vars: 1, - consts: [["user", ""]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "input", null, 0); - $r3$.ɵɵtext(2); - } - if (rf & 2) { - const $user$ = $r3$.ɵɵreference(1); - $r3$.ɵɵadvance(2); - $r3$.ɵɵtextInterpolate1("Hello ", $user$.value, "!"); - } - }, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, MyComponentDefinition, 'Incorrect MyComponent.ɵcmp'); - }); - - it('local references in nested views', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Directive, NgModule, TemplateRef} from '@angular/core'; - - @Directive({selector: '[if]'}) - export class IfDirective { - constructor(template: TemplateRef) { } - } - - @Component({ - selector: 'my-component', - template: \` -
- {{foo}} -
- {{foo}}-{{bar}} - {{foo}}-{{bar}}-{{baz}} - -
-
- \` - }) - export class MyComponent {} - - @NgModule({declarations: [IfDirective, MyComponent]}) - export class MyModule {} - ` - } - }; - - const MyComponentDefinition = ` - function MyComponent_div_3_span_2_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "span"); - $r3$.ɵɵtext(1); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵnextContext(); - const $bar$ = $r3$.ɵɵreference(4); - $r3$.ɵɵnextContext(); - const $foo$ = $r3$.ɵɵreference(1); - const $baz$ = $r3$.ɵɵreference(5); - $r3$.ɵɵadvance(1); - $r3$.ɵɵtextInterpolate3("", $foo$, "-", $bar$, "-", $baz$, ""); - } - } - function MyComponent_div_3_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵtext(1); - $r3$.ɵɵtemplate(2, MyComponent_div_3_span_2_Template, 2, 3, "span", 1); - $r3$.ɵɵelement(3, "span", null, 3); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - const $bar$ = $r3$.ɵɵreference(4); - $r3$.ɵɵnextContext(); - const $foo$ = $r3$.ɵɵreference(1); - $r3$.ɵɵadvance(1); - $r3$.ɵɵtextInterpolate2(" ", $foo$, "-", $bar$, " "); - } - } - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyComponent, - selectors: [["my-component"]], - decls: 6, - vars: 1, - consts: [["foo", ""], [${AttributeMarker.Template}, "if"], ["baz", ""], ["bar", ""]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div", null, 0); - $r3$.ɵɵtext(2); - $r3$.ɵɵtemplate(3, MyComponent_div_3_Template, 5, 2, "div", 1); - $r3$.ɵɵelement(4, "div", null, 2); - } - if (rf & 2) { - const $foo$ = $r3$.ɵɵreference(1); - $r3$.ɵɵadvance(2); - $r3$.ɵɵtextInterpolate1(" ", $foo$, " "); - } - }, - directives:[IfDirective], - encapsulation: 2 - });`; - - const result = compile(files, angularFiles); - const source = result.source; - expectEmit(source, MyComponentDefinition, 'Incorrect MyComponent.ɵcmp'); - }); - - it('should support local refs mixed with context assignments', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \` -
-
- - {{ foo }} - {{ item }} - -
\` - }) - export class MyComponent {} - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - function MyComponent_div_0_span_3_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵelementStart(0, "span"); - $i0$.ɵɵtext(1); - $i0$.ɵɵelementEnd(); - } - if (rf & 2) { - const $item$ = $i0$.ɵɵnextContext().$implicit; - const $foo$ = $i0$.ɵɵreference(2); - $r3$.ɵɵadvance(1); - $i0$.ɵɵtextInterpolate2(" ", $foo$, " - ", $item$, " "); - } - } - - function MyComponent_div_0_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵelementStart(0, "div"); - $i0$.ɵɵelement(1, "div", null, 1); - $i0$.ɵɵtemplate(3, MyComponent_div_0_span_3_Template, 2, 2, "span", 2); - $i0$.ɵɵelementEnd(); - } - if (rf & 2) { - const $app$ = $i0$.ɵɵnextContext(); - $r3$.ɵɵadvance(3); - $i0$.ɵɵproperty("ngIf", $app$.showing); - } - } - - // ... - consts: [[${AttributeMarker.Template}, "ngFor", "ngForOf"], ["foo", ""], [${ - AttributeMarker.Template}, "ngIf"]], - template:function MyComponent_Template(rf, ctx){ - if (rf & 1) { - $i0$.ɵɵtemplate(0, MyComponent_div_0_Template, 4, 1, "div", 0); - } - if (rf & 2) { - $i0$.ɵɵproperty("ngForOf", ctx.items); - } - }`; - - const result = compile(files, angularFiles); - - expectEmit(result.source, template, 'Incorrect template'); - }); - - describe('lifecycle hooks', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Input, NgModule} from '@angular/core'; - - let events: string[] = []; - - @Component({selector: 'lifecycle-comp', template: ''}) - export class LifecycleComp { - @Input('name') nameMin: string; - - ngOnChanges() { events.push('changes' + this.nameMin); } - - ngOnInit() { events.push('init' + this.nameMin); } - ngDoCheck() { events.push('check' + this.nameMin); } - - ngAfterContentInit() { events.push('content init' + this.nameMin); } - ngAfterContentChecked() { events.push('content check' + this.nameMin); } - - ngAfterViewInit() { events.push('view init' + this.nameMin); } - ngAfterViewChecked() { events.push('view check' + this.nameMin); } - - ngOnDestroy() { events.push(this.nameMin); } - } - - @Component({ - selector: 'simple-layout', - template: \` - - - \` - }) - export class SimpleLayout { - name1 = '1'; - name2 = '2'; - } - - @NgModule({declarations: [LifecycleComp, SimpleLayout]}) - export class LifecycleModule {} - ` - } - }; - - it('should gen hooks with a few simple components', () => { - const LifecycleCompDefinition = ` - LifecycleComp.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: LifecycleComp, - selectors: [["lifecycle-comp"]], - inputs: {nameMin: ["name", "nameMin"]}, - features: [$r3$.ɵɵNgOnChangesFeature], - decls: 0, - vars: 0, - template: function LifecycleComp_Template(rf, ctx) {}, - encapsulation: 2 - });`; - - const SimpleLayoutDefinition = ` - SimpleLayout.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: SimpleLayout, - selectors: [["simple-layout"]], - decls: 2, - vars: 2, - consts: [[3, "name"]], - template: function SimpleLayout_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "lifecycle-comp", 0); - $r3$.ɵɵelement(1, "lifecycle-comp", 0); - } - if (rf & 2) { - $r3$.ɵɵproperty("name", ctx.name1); - $r3$.ɵɵadvance(1); - $r3$.ɵɵproperty("name", ctx.name2); - } - }, - directives: [LifecycleComp], - encapsulation: 2 - });`; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, LifecycleCompDefinition, 'Invalid LifecycleComp definition'); - expectEmit(source, SimpleLayoutDefinition, 'Invalid SimpleLayout definition'); - }); - }); - - describe('template variables', () => { - const shared = { - shared: { - 'for_of.ts': ` - import {Directive, Input, SimpleChanges, TemplateRef, ViewContainerRef} from '@angular/core'; - - export interface ForOfContext { - $implicit: any; - index: number; - even: boolean; - odd: boolean; - } - - @Directive({selector: '[forOf]'}) - export class ForOfDirective { - private previous: any[]; - - constructor(private view: ViewContainerRef, private template: TemplateRef) {} - - @Input() forOf: any[]; - - ngOnChanges(simpleChanges: SimpleChanges) { - if ('forOf' in simpleChanges) { - this.update(); - } - } - - ngDoCheck(): void { - const previous = this.previous; - const current = this.forOf; - if (!previous || previous.length != current.length || - previous.some((value: any, index: number) => current[index] !== previous[index])) { - this.update(); - } - } - - private update() { - // TODO(chuckj): Not implemented yet - // this.view.clear(); - if (this.forOf) { - const current = this.forOf; - for (let i = 0; i < current.length; i++) { - const context = {$implicit: current[i], index: i, even: i % 2 == 0, odd: i % 2 == 1}; - // TODO(chuckj): Not implemented yet - // this.view.createEmbeddedView(this.template, context); - } - this.previous = [...this.forOf]; - } - } - } - ` - } - }; - - it('should support embedded views in the SVG namespace', () => { - const files = { - app: { - ...shared, - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - import {ForOfDirective} from './shared/for_of'; - - @Component({ - selector: 'my-component', - template: \`\` - }) - export class MyComponent { - items = [{ data: 42 }, { data: 42 }]; - } - - @NgModule({ - declarations: [MyComponent, ForOfDirective] - }) - export class MyModule {} - ` - } - }; - - // TODO(benlesh): Enforce this when the directives are specified - const ForDirectiveDefinition = ` - ForOfDirective.ɵdir = /*@__PURE__*/ $r3$.ɵɵdefineDirective({ - type: ForOfDirective, - selectors: [["", "forOf", ""]], - features: [$r3$.ɵɵNgOnChangesFeature], - inputs: {forOf: "forOf"} - }); - `; - - const ForDirectiveFactory = `ForOfDirective.ɵfac = function ForOfDirective_Factory(t) { - return new (t || ForOfDirective)($r3$.ɵɵdirectiveInject(ViewContainerRef), $r3$.ɵɵdirectiveInject(TemplateRef)); - };`; - - const MyComponentDefinition = ` - function MyComponent__svg_g_1_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵnamespaceSVG(); - $r3$.ɵɵelementStart(0,"g"); - $r3$.ɵɵelement(1,"circle"); - $r3$.ɵɵelementEnd(); - } - } - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyComponent, - selectors: [["my-component"]], - decls: 2, - vars: 1, - consts: [[${AttributeMarker.Template}, "for", "forOf"]], - template: function MyComponent_Template(rf, ctx){ - if (rf & 1) { - $r3$.ɵɵnamespaceSVG(); - $r3$.ɵɵelementStart(0,"svg"); - $r3$.ɵɵtemplate(1, MyComponent__svg_g_1_Template, 2, 0, "g", 0); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(1); - $r3$.ɵɵproperty("forOf", ctx.items); - } - }, - directives: function() { return [ForOfDirective]; }, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - const source = result.source; - - // TODO(benlesh): Enforce this when the directives are specified - // expectEmit(source, ForDirectiveDefinition, 'Invalid directive definition'); - // expectEmit(source, ForDirectiveFactory, 'Invalid directive factory'); - expectEmit(source, MyComponentDefinition, 'Invalid component definition'); - }); - - it('should support a let variable and reference', () => { - const files = { - app: { - ...shared, - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - import {ForOfDirective} from './shared/for_of'; - - @Component({ - selector: 'my-component', - template: \`
  • {{item.name}}
\` - }) - export class MyComponent { - items = [{name: 'one'}, {name: 'two'}]; - } - - @NgModule({ - declarations: [MyComponent, ForOfDirective] - }) - export class MyModule {} - ` - } - }; - - // TODO(chuckj): Enforce this when the directives are specified - const ForDirectiveDefinition = ` - ForOfDirective.ɵdir = /*@__PURE__*/ $r3$.ɵɵdefineDirective({ - type: ForOfDirective, - selectors: [["", "forOf", ""]], - features: [$r3$.ɵɵNgOnChangesFeature], - inputs: {forOf: "forOf"} - }); - `; - - const ForDirectiveFactory = ` - ForOfDirective.ɵfac = function ForOfDirective_Factory(t) { - return new (t || ForOfDirective)($r3$.ɵɵdirectiveInject(ViewContainerRef), $r3$.ɵɵdirectiveInject(TemplateRef)); - }; - `; - - const MyComponentDefinition = ` - function MyComponent_li_1_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "li"); - $r3$.ɵɵtext(1); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - const $item$ = ctx.$implicit; - $r3$.ɵɵadvance(1); - $r3$.ɵɵtextInterpolate($item$.name); - } - } - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyComponent, - selectors: [["my-component"]], - decls: 2, - vars: 1, - consts: [[${AttributeMarker.Template}, "for", "forOf"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "ul"); - $r3$.ɵɵtemplate(1, MyComponent_li_1_Template, 2, 1, "li", 0); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(1); - $r3$.ɵɵproperty("forOf", ctx.items); - } - }, - directives: function() { return [ForOfDirective]; }, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - const source = result.source; - - // TODO(chuckj): Enforce this when the directives are specified - // expectEmit(source, ForDirectiveDefinition, 'Invalid directive definition'); - // expectEmit(source, ForDirectiveFactory, 'Invalid directive factory'); - expectEmit(source, MyComponentDefinition, 'Invalid component definition'); - }); - - it('should support accessing parent template variables', () => { - const files = { - app: { - ...shared, - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - import {ForOfDirective} from './shared/for_of'; - - @Component({ - selector: 'my-component', - template: \` -
    -
  • -
    {{item.name}}
    -
      -
    • - {{item.name}}: {{info.description}} -
    • -
    -
  • -
\` - }) - export class MyComponent { - items = [ - {name: 'one', infos: [{description: '11'}, {description: '12'}]}, - {name: 'two', infos: [{description: '21'}, {description: '22'}]} - ]; - } - - @NgModule({ - declarations: [MyComponent, ForOfDirective] - }) - export class MyModule {} - ` - } - }; - - const MyComponentDefinition = ` - function MyComponent_li_1_li_4_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "li"); - $r3$.ɵɵtext(1); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - const $info$ = ctx.$implicit; - const $item$ = $r3$.ɵɵnextContext().$implicit; - $r3$.ɵɵadvance(1); - $r3$.ɵɵtextInterpolate2(" ", $item$.name, ": ", $info$.description, " "); - } - } - - function MyComponent_li_1_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "li"); - $r3$.ɵɵelementStart(1, "div"); - $r3$.ɵɵtext(2); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementStart(3, "ul"); - $r3$.ɵɵtemplate(4, MyComponent_li_1_li_4_Template, 2, 2, "li", 0); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - const $item$ = ctx.$implicit; - $r3$.ɵɵadvance(2); - $r3$.ɵɵtextInterpolate(IDENT.name); - $r3$.ɵɵadvance(2); - $r3$.ɵɵproperty("forOf", IDENT.infos); - } - } - - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyComponent, - selectors: [["my-component"]], - decls: 2, - vars: 1, - consts: [[${AttributeMarker.Template}, "for", "forOf"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "ul"); - $r3$.ɵɵtemplate(1, MyComponent_li_1_Template, 5, 2, "li", 0); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(1); - $r3$.ɵɵproperty("forOf", ctx.items); - } - }, - directives: function () { return [ForOfDirective]; }, - encapsulation: 2 - });`; - - const result = compile(files, angularFiles); - const source = result.source; - expectEmit(source, MyComponentDefinition, 'Invalid component definition'); - }); - }); - - it('should instantiate directives in a closure when they are forward referenced', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule, Directive} from '@angular/core'; - - @Component({ - selector: 'host-binding-comp', - template: \` - - \` - }) - export class HostBindingComp { - } - - @Directive({ - selector: 'my-forward-directive' - }) - class MyForwardDirective {} - - @NgModule({declarations: [HostBindingComp, MyForwardDirective]}) - export class MyModule {} - ` - } - }; - - const MyAppDefinition = ` - … - directives: function () { return [MyForwardDirective]; } - … - `; - - const result = compile(files, angularFiles); - const source = result.source; - expectEmit(source, MyAppDefinition, 'Invalid component definition'); - }); - - it('should instantiate pipes in a closure when they are forward referenced', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule, Pipe} from '@angular/core'; - - @Component({ - selector: 'host-binding-comp', - template: \` -
...
- \` - }) - export class HostBindingComp { - } - - @Pipe({ - name: 'my_forward_pipe' - }) - class MyForwardPipe {} - - @NgModule({declarations: [HostBindingComp, MyForwardPipe]}) - export class MyModule {} - ` - } - }; - - const MyAppDefinition = ` - … - pipes: function () { return [MyForwardPipe]; } - … - `; - - const result = compile(files, angularFiles); - const source = result.source; - expectEmit(source, MyAppDefinition, 'Invalid component definition'); - }); - - it('should split multiple `exportAs` values into an array', () => { - const files = { - app: { - 'spec.ts': ` - import {Directive, NgModule} from '@angular/core'; - - @Directive({selector: '[some-directive]', exportAs: 'someDir, otherDir'}) - export class SomeDirective {} - - @NgModule({declarations: [SomeDirective]}) - export class MyModule{} - ` - } - }; - - // SomeDirective definition should be: - const SomeDirectiveDefinition = ` - SomeDirective.ɵdir = /*@__PURE__*/ $r3$.ɵɵdefineDirective({ - type: SomeDirective, - selectors: [["", "some-directive", ""]], - exportAs: ["someDir", "otherDir"] - }); - `; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, SomeDirectiveDefinition, 'Incorrect SomeDirective.ɵdir'); - }); - - it('should not throw for empty property bindings on ng-template', () => { - const files = { - app: { - 'example.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-app', - template: '' - }) - export class MyComponent { - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {}` - } - }; - - expect(() => compile(files, angularFiles)).not.toThrow(); - }); - - it('should not generate a selectors array if the directive does not have a selector', () => { - const files = { - app: { - 'spec.ts': ` - import {Directive} from '@angular/core'; - - @Directive() - export class AbstractDirective { - } - ` - } - }; - const expectedOutput = ` - // ... - AbstractDirective.ɵdir = /*@__PURE__*/ $r3$.ɵɵdefineDirective({ - type: AbstractDirective - }); - // ... - `; - const result = compile(files, angularFiles); - expectEmit(result.source, expectedOutput, 'Invalid directive definition'); - }); - - it('should generate a pure function for constant object literals', () => { - const files = { - app: { - 'spec.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: '' - }) - export class MyApp { - } - ` - } - }; - - const MyAppDeclaration = ` - const $c0$ = function () { return {}; }; - const $c1$ = function () { return { a: 1, b: 2 }; }; - … - MyApp.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyApp, - selectors: [["ng-component"]], - decls: 1, - vars: 4, - consts: [[${AttributeMarker.Bindings}, "prop", "otherProp"]], - template: function MyApp_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "some-comp", 0); - } - if (rf & 2) { - $r3$.ɵɵproperty("prop", $r3$.ɵɵpureFunction0(2, $c0$))("otherProp", $r3$.ɵɵpureFunction0(3, $c1$)); - } - }, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, MyAppDeclaration, 'Invalid component definition'); - }); - - it('should generate a pure function for constant array literals', () => { - const files = { - app: { - 'spec.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: '' - }) - export class MyApp { - } - ` - } - }; - - const MyAppDeclaration = ` - const $c0$ = function () { return []; }; - const $c1$ = function () { return [0, 1, 2]; }; - … - MyApp.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyApp, - selectors: [["ng-component"]], - decls: 1, - vars: 4, - consts: [[${AttributeMarker.Bindings}, "prop", "otherProp"]], - template: function MyApp_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "some-comp", 0); - } - if (rf & 2) { - $r3$.ɵɵproperty("prop", $r3$.ɵɵpureFunction0(2, $c0$))("otherProp", $r3$.ɵɵpureFunction0(3, $c1$)); - } - }, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, MyAppDeclaration, 'Invalid component definition'); - }); - - it('should not share pure functions between null and object literals', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - template: \` -
-
- \` - }) - export class MyApp {} - - @NgModule({declarations: [MyApp]}) - export class MyModule {} - ` - } - }; - - const MyAppDeclaration = ` - const $c0$ = function () { return { foo: null }; }; - const $c1$ = function () { return {}; }; - const $c2$ = function (a0) { return { foo: a0 }; }; - … - MyApp.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyApp, - selectors: [["ng-component"]], - decls: 2, - vars: 6, - consts: [[${AttributeMarker.Bindings}, "dir"]], - template: function MyApp_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div", 0); - $r3$.ɵɵelement(1, "div", 0); - } - if (rf & 2) { - $r3$.ɵɵproperty("dir", $r3$.ɵɵpureFunction0(2, $c0$)); - $r3$.ɵɵadvance(1); - $r3$.ɵɵproperty("dir", $r3$.ɵɵpureFunction1(4, $c2$, $r3$.ɵɵpureFunction0(3, $c1$))); - } - }, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, MyAppDeclaration, 'Invalid component definition'); - }); - - it('should not share pure functions between null and array literals', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - template: \` -
-
- \` - }) - export class MyApp {} - - @NgModule({declarations: [MyApp]}) - export class MyModule {} - ` - } - }; - - const MyAppDeclaration = ` - const $c0$ = function () { return { foo: null }; }; - const $c1$ = function () { return []; }; - const $c2$ = function (a0) { return { foo: a0 }; }; - … - MyApp.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyApp, - selectors: [["ng-component"]], - decls: 2, - vars: 6, - consts: [[${AttributeMarker.Bindings}, "dir"]], - template: function MyApp_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div", 0); - $r3$.ɵɵelement(1, "div", 0); - } - if (rf & 2) { - $r3$.ɵɵproperty("dir", $r3$.ɵɵpureFunction0(2, $c0$)); - $r3$.ɵɵadvance(1); - $r3$.ɵɵproperty("dir", $r3$.ɵɵpureFunction1(4, $c2$, $r3$.ɵɵpureFunction0(3, $c1$))); - } - }, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, MyAppDeclaration, 'Invalid component definition'); - }); - - it('should not share pure functions between null and function calls', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - template: \` -
-
- \` - }) - export class MyApp { - getFoo() { - return 'foo!'; - } - } - - @NgModule({declarations: [MyApp]}) - export class MyModule {} - ` - } - }; - - const MyAppDeclaration = ` - const $c0$ = function () { return { foo: null }; }; - const $c1$ = function (a0) { return { foo: a0 }; }; - … - MyApp.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyApp, - selectors: [["ng-component"]], - decls: 2, - vars: 5, - consts: [[${AttributeMarker.Bindings}, "dir"]], - template: function MyApp_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div", 0); - $r3$.ɵɵelement(1, "div", 0); - } - if (rf & 2) { - $r3$.ɵɵproperty("dir", $r3$.ɵɵpureFunction0(2, $c0$)); - $r3$.ɵɵadvance(1); - $r3$.ɵɵproperty("dir", $r3$.ɵɵpureFunction1(3, $c1$, ctx.getFoo())); - } - }, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, MyAppDeclaration, 'Invalid component definition'); - }); - - it('should emit a valid setClassMetadata call in ES5 if a class with a custom decorator is referencing itself inside its own metadata', - () => { - const files = { - app: { - 'spec.ts': ` - import {Component, InjectionToken} from "@angular/core"; - - const token = new InjectionToken('token'); - - export function Custom() { - return function(target: any) {}; - } - - @Custom() - @Component({ - template: '', - providers: [{ provide: token, useExisting: Comp }], - }) - export class Comp {} - ` - } - }; - - // The setClassMetadata call should look like this. - const setClassMetadata = ` - (function() { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Comp, [{ - type: Component, - args: [{ - template: '', - providers: [{provide: token, useExisting: Comp}], - }] - }], null, null); })(); - `; - - const result = compile(files, angularFiles, {target: ts.ScriptTarget.ES5}); - expectEmit(result.source, setClassMetadata, 'Incorrect setClassMetadata call'); - }); - }); -}); diff --git a/packages/compiler-cli/test/compliance_old/r3_view_compiler_binding_spec.ts b/packages/compiler-cli/test/compliance_old/r3_view_compiler_binding_spec.ts deleted file mode 100644 index 206f4ff1b4..0000000000 --- a/packages/compiler-cli/test/compliance_old/r3_view_compiler_binding_spec.ts +++ /dev/null @@ -1,1503 +0,0 @@ -/** - * @license - * 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 - */ -import {AttributeMarker} from '@angular/compiler/src/core'; -import {MockDirectory, setup} from '@angular/compiler/test/aot/test_util'; -import {compile, expectEmit} from './mock_compile'; - -describe('compiler compliance: bindings', () => { - const angularFiles = setup({ - compileAngular: false, - compileFakeCore: true, - compileAnimations: false, - }); - - describe('text bindings', () => { - it('should generate interpolation instruction', () => { - const files: MockDirectory = { - app: { - 'example.ts': ` - import {Component, NgModule} from '@angular/core'; - @Component({ - selector: 'my-component', - template: \` -
Hello {{ name }}
\` - }) - export class MyComponent { - name = 'World'; - } - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - template:function MyComponent_Template(rf, $ctx$){ - if (rf & 1) { - $i0$.ɵɵelementStart(0, "div"); - $i0$.ɵɵtext(1); - $i0$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(1); - $i0$.ɵɵtextInterpolate1("Hello ", $ctx$.name, ""); - } - }`; - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect interpolated text binding'); - }); - }); - - describe('property bindings', () => { - it('should generate bind instruction', () => { - const files: MockDirectory = { - app: { - 'example.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-app', - template: '' - }) - export class MyComponent { - title = 'Hello World'; - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {}` - } - }; - - const template = ` - … - consts: [[${AttributeMarker.Bindings}, "title"]], - template:function MyComponent_Template(rf, $ctx$){ - if (rf & 1) { - $i0$.ɵɵelement(0, "a", 0); - } - if (rf & 2) { - $i0$.ɵɵproperty("title", $ctx$.title); - } - }`; - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect property binding'); - }); - - it('should generate interpolation instruction for {{...}} bindings', () => { - const files: MockDirectory = { - app: { - 'example.ts': ` - import {Component, NgModule} from '@angular/core'; - @Component({ - selector: 'my-component', - template: \` - \` - }) - export class MyComponent { - name = 'World'; - } - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - … - consts: [[${AttributeMarker.Bindings}, "title"]], - template:function MyComponent_Template(rf, $ctx$){ - if (rf & 1) { - $i0$.ɵɵelement(0, "a", 0); - } - if (rf & 2) { - $i0$.ɵɵpropertyInterpolate1("title", "Hello ", $ctx$.name, ""); - } - }`; - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect interpolated property binding'); - }); - - it('should ignore empty bindings', () => { - const files: MockDirectory = { - app: { - 'example.ts': ` - import {Component} from '@angular/core'; - @Component({ - selector: 'test', - template: '
' - }) - class FooCmp {} - ` - } - }; - const result = compile(files, angularFiles); - expect(result.source).not.toContain('i0.ɵɵproperty'); - }); - - it('should not remap property names whose names do not correspond to their attribute names', - () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \` - \` - }) - export class MyComponent { - forValue = 'some-input'; - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - consts: [[${AttributeMarker.Bindings}, "for"]] - - // ... - - function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵelement(0, "label", 0); - } - if (rf & 2) { - $i0$.ɵɵproperty("for", ctx.forValue); - } - }`; - - const result = compile(files, angularFiles); - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should emit temporary evaluation within the binding expression for in-order execution', - () => { - // https://github.com/angular/angular/issues/37194 - // Verifies that temporary expressions used for expressions with potential side-effects in - // the LHS of a safe navigation access are emitted within the binding expression itself, to - // ensure that these temporaries are evaluated during the evaluation of the binding. This - // is important for when the LHS contains a pipe, as pipe evaluation depends on the current - // binding index. - const files = { - app: { - 'example.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: '' - }) - export class MyComponent { - myTitle = 'hello'; - auth?: () => { identity(): any; }; - }` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - template: function MyComponent_Template(rf, ctx) { - … - if (rf & 2) { - let $tmp0$ = null; - $r3$.ɵɵproperty("title", ctx.myTitle)("id", ($tmp0$ = $r3$.ɵɵpipeBind1(1, 3, ($tmp0$ = ctx.auth()) == null ? null : $tmp0$.identity())) == null ? null : $tmp0$.id)("tabindex", 1); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain multiple property bindings into a single instruction', () => { - const files = { - app: { - 'example.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: '' - }) - export class MyComponent { - myTitle = 'hello'; - buttonId = 'special-button'; - }` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - template: function MyComponent_Template(rf, ctx) { - … - if (rf & 2) { - $r3$.ɵɵproperty("title", ctx.myTitle)("id", ctx.buttonId)("tabindex", 1); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain property bindings in the presence of other bindings', () => { - const files = { - app: { - 'example.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: '' - }) - export class MyComponent {}` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - template: function MyComponent_Template(rf, ctx) { - … - if (rf & 2) { - $r3$.ɵɵpropertyInterpolate("aria-label", 1 + 3); - $r3$.ɵɵproperty("title", 1)("tabindex", 3); - $r3$.ɵɵattribute("id", 2); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should not add interpolated properties to the property instruction chain', () => { - const files = { - app: { - 'example.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: '' - }) - export class MyComponent {}` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - template: function MyComponent_Template(rf, ctx) { - … - if (rf & 2) { - $r3$.ɵɵpropertyInterpolate("tabindex", 0 + 3); - $r3$.ɵɵpropertyInterpolate2("aria-label", "hello-", 1 + 3, "-", 2 + 3, ""); - $r3$.ɵɵproperty("title", 1)("id", 2); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain synthetic property bindings together with regular property bindings', () => { - const files = { - app: { - 'example.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: \` - - \` - }) - export class MyComponent { - expansionState = 'expanded'; - }` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - template: function MyComponent_Template(rf, ctx) { - … - if (rf & 2) { - $r3$.ɵɵproperty("title", ctx.myTitle)("@expand", ctx.expansionState)("tabindex", 1)("@fade", "out"); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain multiple property bindings on an ng-template', () => { - const files = { - app: { - 'example.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: '' - }) - export class MyComponent { - myTitle = 'hello'; - buttonId = 'custom-id'; - }` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - template: function MyComponent_Template(rf, ctx) { - … - if (rf & 2) { - $r3$.ɵɵproperty("title", ctx.myTitle)("id", ctx.buttonId)("tabindex", 1); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain multiple property bindings when there are multiple elements', () => { - const files = { - app: { - 'example.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: \` - - - - \` - }) - export class MyComponent { - myTitle = 'hello'; - buttonId = 'special-button'; - }` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - template: function MyComponent_Template(rf, ctx) { - … - if (rf & 2) { - $r3$.ɵɵproperty("title", ctx.myTitle)("id", ctx.buttonId)("tabindex", 1); - $r3$.ɵɵadvance(1); - $r3$.ɵɵproperty("id", 1)("title", "hello")("someProp", 1 + 2); - $r3$.ɵɵadvance(1); - $r3$.ɵɵproperty("prop", "one")("otherProp", 2); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain multiple property bindings when there are child elements', () => { - const files = { - app: { - 'example.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: \` - \` - }) - export class MyComponent { - myTitle = 'hello'; - buttonId = 'special-button'; - }` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - template: function MyComponent_Template(rf, ctx) { - … - if (rf & 2) { - $r3$.ɵɵproperty("title", ctx.myTitle)("id", ctx.buttonId)("tabindex", 1); - $r3$.ɵɵadvance(1); - $r3$.ɵɵproperty("id", 1)("title", "hello")("someProp", 1 + 2); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - }); - - describe('attribute bindings', () => { - it('should chain multiple attribute bindings into a single instruction', () => { - const files = { - app: { - 'example.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: \` - - \` - }) - export class MyComponent { - myTitle = 'hello'; - buttonId = 'special-button'; - }` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - template: function MyComponent_Template(rf, ctx) { - … - if (rf & 2) { - $r3$.ɵɵattribute("title", ctx.myTitle)("id", ctx.buttonId)("tabindex", 1); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain multiple single-interpolation attribute bindings into one instruction', () => { - const files = { - app: { - 'example.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: \` - - \` - }) - export class MyComponent { - myTitle = 'hello'; - buttonId = 'special-button'; - }` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - template: function MyComponent_Template(rf, ctx) { - … - if (rf & 2) { - $r3$.ɵɵattribute("title", ctx.myTitle)("id", ctx.buttonId)("tabindex", 1); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain attribute bindings in the presence of other bindings', () => { - const files = { - app: { - 'example.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: \` - - \` - }) - export class MyComponent {}` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - template: function MyComponent_Template(rf, ctx) { - … - if (rf & 2) { - $r3$.ɵɵattributeInterpolate1("aria-label", "prefix-", 1 + 3, ""); - $r3$.ɵɵproperty("id", 2); - $r3$.ɵɵattribute("title", 1)("tabindex", 3); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should not add interpolated attributes to the attribute instruction chain', () => { - const files = { - app: { - 'example.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: \` - \` - }) - export class MyComponent {}` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - template: function MyComponent_Template(rf, ctx) { - … - if (rf & 2) { - $r3$.ɵɵattributeInterpolate1("tabindex", "prefix-", 0 + 3, ""); - $r3$.ɵɵattributeInterpolate2("aria-label", "hello-", 1 + 3, "-", 2 + 3, ""); - $r3$.ɵɵattribute("title", 1)("id", 2); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain multiple attribute bindings when there are multiple elements', () => { - const files = { - app: { - 'example.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: \` - - - - \` - }) - export class MyComponent { - myTitle = 'hello'; - buttonId = 'special-button'; - }` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - template: function MyComponent_Template(rf, ctx) { - … - if (rf & 2) { - $r3$.ɵɵattribute("title", ctx.myTitle)("id", ctx.buttonId)("tabindex", 1); - $r3$.ɵɵadvance(1); - $r3$.ɵɵattribute("id", 1)("title", "hello")("some-attr", 1 + 2); - $r3$.ɵɵadvance(1); - $r3$.ɵɵattribute("some-attr", "one")("some-other-attr", 2); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain multiple attribute bindings when there are child elements', () => { - const files = { - app: { - 'example.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: \` - \` - }) - export class MyComponent { - myTitle = 'hello'; - buttonId = 'special-button'; - }` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - template: function MyComponent_Template(rf, ctx) { - … - if (rf & 2) { - $r3$.ɵɵattribute("title", ctx.myTitle)("id", ctx.buttonId)("tabindex", 1); - $r3$.ɵɵadvance(1); - $r3$.ɵɵattribute("id", 1)("title", "hello")("some-attr", 1 + 2); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should exclude attribute bindings from the attributes array', () => { - const files: MockDirectory = { - app: { - 'example.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-app', - template: \`\` - }) - export class MyComponent { - doThings() {} - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {}` - } - }; - - const template = ` - consts: [["target", "_blank", "aria-label", "link", ${ - AttributeMarker.Bindings}, "title", "id", "customEvent"]], - … - `; - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect attribute array'); - }); - }); - - describe('host bindings', () => { - it('should support host bindings', () => { - const files = { - app: { - 'spec.ts': ` - import {Directive, HostBinding, NgModule} from '@angular/core'; - - @Directive({selector: '[hostBindingDir]'}) - export class HostBindingDir { - @HostBinding('id') dirId = 'some id'; - } - - @NgModule({declarations: [HostBindingDir]}) - export class MyModule {} - ` - } - }; - - const HostBindingDirDeclaration = ` - HostBindingDir.ɵdir = /*@__PURE__*/ $r3$.ɵɵdefineDirective({ - type: HostBindingDir, - selectors: [["", "hostBindingDir", ""]], - hostVars: 1, - hostBindings: function HostBindingDir_HostBindings(rf, ctx) { - if (rf & 2) { - $r3$.ɵɵhostProperty("id", ctx.dirId); - } - } - }); - `; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, HostBindingDirDeclaration, 'Invalid host binding code'); - }); - - it('should support host bindings with temporary expressions', () => { - const files = { - app: { - 'spec.ts': ` - import {Directive, NgModule} from '@angular/core'; - - @Directive({ - selector: '[hostBindingDir]', - host: {'[id]': 'getData()?.id'} - }) - export class HostBindingDir { - getData?: () => { id: number }; - } - - @NgModule({declarations: [HostBindingDir]}) - export class MyModule {} - ` - } - }; - - const HostBindingDirDeclaration = ` - HostBindingDir.ɵdir = /*@__PURE__*/ $r3$.ɵɵdefineDirective({ - type: HostBindingDir, - selectors: [["", "hostBindingDir", ""]], - hostVars: 1, - hostBindings: function HostBindingDir_HostBindings(rf, ctx) { - if (rf & 2) { - let $tmp0$ = null; - $r3$.ɵɵhostProperty("id", ($tmp0$ = ctx.getData()) == null ? null : $tmp0$.id); - } - } - }); - `; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, HostBindingDirDeclaration, 'Invalid host binding code'); - }); - - it('should support host bindings with pure functions', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'host-binding-comp', - host: { - '[id]': '["red", id]' - }, - template: '' - }) - export class HostBindingComp { - id = 'some id'; - } - - @NgModule({declarations: [HostBindingComp]}) - export class MyModule {} - ` - } - }; - - const HostBindingCompDeclaration = ` - const $ff$ = function ($v$) { return ["red", $v$]; }; - … - HostBindingComp.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: HostBindingComp, - selectors: [["host-binding-comp"]], - hostVars: 3, - hostBindings: function HostBindingComp_HostBindings(rf, ctx) { - if (rf & 2) { - $r3$.ɵɵhostProperty("id", $r3$.ɵɵpureFunction1(1, $ff$, ctx.id)); - } - }, - decls: 0, - vars: 0, - template: function HostBindingComp_Template(rf, ctx) {}, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, HostBindingCompDeclaration, 'Invalid host binding code'); - }); - - it('should support host attribute bindings', () => { - const files = { - app: { - 'spec.ts': ` - import {Directive, NgModule} from '@angular/core'; - - @Directive({ - selector: '[hostAttributeDir]', - host: { - '[attr.required]': 'required' - } - }) - export class HostAttributeDir { - required = true; - } - - @NgModule({declarations: [HostAttributeDir]}) - export class MyModule {} - ` - } - }; - - const HostAttributeDirDeclaration = ` - HostAttributeDir.ɵdir = /*@__PURE__*/ $r3$.ɵɵdefineDirective({ - type: HostAttributeDir, - selectors: [["", "hostAttributeDir", ""]], - hostVars: 1, - hostBindings: function HostAttributeDir_HostBindings(rf, ctx) { - if (rf & 2) { - $r3$.ɵɵattribute("required", ctx.required); - } - } - }); - `; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, HostAttributeDirDeclaration, 'Invalid host attribute code'); - }); - - it('should support host attributes', () => { - const files = { - app: { - 'spec.ts': ` - import {Directive, NgModule} from '@angular/core'; - - @Directive({ - selector: '[hostAttributeDir]', - host: { - 'aria-label': 'label' - } - }) - export class HostAttributeDir { - } - - @NgModule({declarations: [HostAttributeDir]}) - export class MyModule {} - ` - } - }; - - const HostAttributeDirDeclaration = ` - HostAttributeDir.ɵdir = /*@__PURE__*/ $r3$.ɵɵdefineDirective({ - type: HostAttributeDir, - selectors: [["", "hostAttributeDir", ""]], - hostAttrs: ["aria-label", "label"] - }); - `; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, HostAttributeDirDeclaration, 'Invalid host attribute code'); - }); - - it('should support host attributes together with host classes and styles', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Directive, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-host-attribute-component', - template: "...", - host: { - 'title': 'hello there from component', - 'style': 'opacity:1' - } - }) - export class HostAttributeComp { - } - - @Directive({ - selector: '[hostAttributeDir]', - host: { - 'style': 'width: 200px; height: 500px', - '[style.opacity]': "true", - 'class': 'one two', - '[class.three]': "true", - 'title': 'hello there from directive', - } - }) - export class HostAttributeDir { - } - - @NgModule({declarations: [HostAttributeComp, HostAttributeDir]}) - export class MyModule {} - ` - } - }; - - const CompAndDirDeclaration = ` - HostAttributeComp.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: HostAttributeComp, - selectors: [["my-host-attribute-component"]], - hostAttrs: ["title", "hello there from component", ${ - AttributeMarker.Styles}, "opacity", "1"], - … - HostAttributeDir.ɵdir = /*@__PURE__*/ $r3$.ɵɵdefineDirective({ - type: HostAttributeDir, - selectors: [["", "hostAttributeDir", ""]], - hostAttrs: ["title", "hello there from directive", ${ - AttributeMarker.Classes}, "one", "two", ${ - AttributeMarker.Styles}, "width", "200px", "height", "500px"], - hostVars: 4, - hostBindings: function HostAttributeDir_HostBindings(rf, ctx) { - … - } - `; - - const result = compile(files, angularFiles); - const source = result.source; - expectEmit(source, CompAndDirDeclaration, 'Invalid host attribute code'); - }); - - it('should chain multiple host property bindings into a single instruction', () => { - const files = { - app: { - 'example.ts': ` - import {Directive} from '@angular/core'; - - @Directive({ - selector: '[my-dir]', - host: { - '[title]': 'myTitle', - '[tabindex]': '1', - '[id]': 'myId' - } - }) - export class MyDirective { - myTitle = 'hello'; - myId = 'special-directive'; - }` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - hostBindings: function MyDirective_HostBindings(rf, ctx) { - … - if (rf & 2) { - $r3$.ɵɵhostProperty("title", ctx.myTitle)("tabindex", 1)("id", ctx.myId); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain both host properties in the decorator and on the class', () => { - const files = { - app: { - 'example.ts': ` - import {Directive, HostBinding} from '@angular/core'; - - @Directive({ - selector: '[my-dir]', - host: { - '[tabindex]': '1' - } - }) - export class MyDirective { - @HostBinding('title') - myTitle = 'hello'; - - @HostBinding('id') - myId = 'special-directive'; - }` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - hostBindings: function MyDirective_HostBindings(rf, ctx) { - … - if (rf & 2) { - $r3$.ɵɵhostProperty("tabindex", 1)("title", ctx.myTitle)("id", ctx.myId); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain multiple host property bindings in the presence of other bindings', () => { - const files = { - app: { - 'example.ts': ` - import {Directive} from '@angular/core'; - - @Directive({ - selector: '[my-dir]', - host: { - '[title]': '"my title"', - '[attr.tabindex]': '1', - '[id]': '"my-id"' - } - }) - export class MyDirective {}` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - hostBindings: function MyDirective_HostBindings(rf, ctx) { - … - if (rf & 2) { - $r3$.ɵɵhostProperty("title", "my title")("id", "my-id"); - $r3$.ɵɵattribute("tabindex", 1); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain multiple synthetic properties into a single instruction call', () => { - const files = { - app: { - 'example.ts': ` - import {Directive} from '@angular/core'; - - @Directive({ - selector: '[my-dir]', - host: { - '[@expand]': 'expandedState', - '[@fadeOut]': 'true', - '[@shrink]': 'isSmall' - } - }) - export class MyDirective { - expandedState = 'collapsed'; - isSmall = true; - }` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - hostBindings: function MyDirective_HostBindings(rf, ctx) { - … - if (rf & 2) { - $r3$.ɵɵsyntheticHostProperty("@expand", ctx.expandedState)("@fadeOut", true)("@shrink", ctx.isSmall); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain multiple host attribute bindings into a single instruction', () => { - const files = { - app: { - 'example.ts': ` - import {Directive} from '@angular/core'; - - @Directive({ - selector: '[my-dir]', - host: { - '[attr.title]': 'myTitle', - '[attr.tabindex]': '1', - '[attr.id]': 'myId' - } - }) - export class MyDirective { - myTitle = 'hello'; - myId = 'special-directive'; - }` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - hostBindings: function MyDirective_HostBindings(rf, ctx) { - … - if (rf & 2) { - $r3$.ɵɵattribute("title", ctx.myTitle)("tabindex", 1)("id", ctx.myId); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain both host attributes in the decorator and on the class', () => { - const files = { - app: { - 'example.ts': ` - import {Directive, HostBinding} from '@angular/core'; - - @Directive({ - selector: '[my-dir]', - host: { - '[attr.tabindex]': '1' - } - }) - export class MyDirective { - @HostBinding('attr.title') - myTitle = 'hello'; - - @HostBinding('attr.id') - myId = 'special-directive'; - }` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - hostBindings: function MyDirective_HostBindings(rf, ctx) { - … - if (rf & 2) { - $r3$.ɵɵattribute("tabindex", 1)("title", ctx.myTitle)("id", ctx.myId); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain multiple host attribute bindings in the presence of other bindings', () => { - const files = { - app: { - 'example.ts': ` - import {Directive} from '@angular/core'; - - @Directive({ - selector: '[my-dir]', - host: { - '[attr.title]': '"my title"', - '[tabindex]': '1', - '[attr.id]': '"my-id"' - } - }) - export class MyDirective {}` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - hostBindings: function MyDirective_HostBindings(rf, ctx) { - … - if (rf & 2) { - $r3$.ɵɵhostProperty("tabindex", 1); - $r3$.ɵɵattribute("title", "my title")("id", "my-id"); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain multiple host listeners into a single instruction', () => { - const files = { - app: { - 'example.ts': ` - import {Directive, HostListener} from '@angular/core'; - - @Directive({ - selector: '[my-dir]', - host: { - '(mousedown)': 'mousedown()', - '(mouseup)': 'mouseup()', - } - }) - export class MyDirective { - mousedown() {} - mouseup() {} - - @HostListener('click') - click() {} - }` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - hostBindings: function MyDirective_HostBindings(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵlistener("mousedown", function MyDirective_mousedown_HostBindingHandler() { return ctx.mousedown(); })("mouseup", function MyDirective_mouseup_HostBindingHandler() { return ctx.mouseup(); })("click", function MyDirective_click_HostBindingHandler() { return ctx.click(); }); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain multiple synthetic host listeners into a single instruction', () => { - const files = { - app: { - 'example.ts': ` - import {Component, HostListener} from '@angular/core'; - - @Component({ - selector: 'my-comp', - template: '', - host: { - '(@animation.done)': 'done()', - } - }) - export class MyComponent { - @HostListener('@animation.start') - start() {} - }` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - hostBindings: function MyComponent_HostBindings(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵsyntheticHostListener("@animation.done", function MyComponent_animation_animation_done_HostBindingHandler() { return ctx.done(); })("@animation.start", function MyComponent_animation_animation_start_HostBindingHandler() { return ctx.start(); }); - } - } - `; - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain multiple regular and synthetic host listeners into two instructions', () => { - const files = { - app: { - 'example.ts': ` - import {Component, HostListener} from '@angular/core'; - - @Component({ - selector: 'my-comp', - template: '', - host: { - '(mousedown)': 'mousedown()', - '(@animation.done)': 'done()', - '(mouseup)': 'mouseup()', - } - }) - export class MyComponent { - @HostListener('@animation.start') - start() {} - - @HostListener('click') - click() {} - }` - } - }; - - const result = compile(files, angularFiles); - const template = ` - … - hostBindings: function MyComponent_HostBindings(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵsyntheticHostListener("@animation.done", function MyComponent_animation_animation_done_HostBindingHandler() { return ctx.done(); })("@animation.start", function MyComponent_animation_animation_start_HostBindingHandler() { return ctx.start(); }); - $r3$.ɵɵlistener("mousedown", function MyComponent_mousedown_HostBindingHandler() { return ctx.mousedown(); })("mouseup", function MyComponent_mouseup_HostBindingHandler() { return ctx.mouseup(); })("click", function MyComponent_click_HostBindingHandler() { return ctx.click(); }); - } - } - `; - expectEmit(result.source, template, 'Incorrect template'); - }); - }); - - describe('non bindable behavior', () => { - const getAppFiles = (template: string = ''): MockDirectory => ({ - app: { - 'example.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-app', - template: \`${template}\` - }) - export class MyComponent { - name = 'John Doe'; - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {}` - } - }); - - it('should generate the proper update instructions for interpolated properties', () => { - const files: MockDirectory = getAppFiles(` -
-
-
-
-
-
-
-
-
-
- `); - - const template = ` - … - if (rf & 2) { - i0.ɵɵpropertyInterpolateV("title", ["a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e", ctx.five, "f", ctx.six, "g", ctx.seven, "h", ctx.eight, "i", ctx.nine, "j"]); - i0.ɵɵadvance(1); - i0.ɵɵpropertyInterpolate8("title", "a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e", ctx.five, "f", ctx.six, "g", ctx.seven, "h", ctx.eight, "i"); - i0.ɵɵadvance(1); - i0.ɵɵpropertyInterpolate7("title", "a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e", ctx.five, "f", ctx.six, "g", ctx.seven, "h"); - i0.ɵɵadvance(1); - i0.ɵɵpropertyInterpolate6("title", "a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e", ctx.five, "f", ctx.six, "g"); - i0.ɵɵadvance(1); - i0.ɵɵpropertyInterpolate5("title", "a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e", ctx.five, "f"); - i0.ɵɵadvance(1); - i0.ɵɵpropertyInterpolate4("title", "a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e"); - i0.ɵɵadvance(1); - i0.ɵɵpropertyInterpolate3("title", "a", ctx.one, "b", ctx.two, "c", ctx.three, "d"); - i0.ɵɵadvance(1); - i0.ɵɵpropertyInterpolate2("title", "a", ctx.one, "b", ctx.two, "c"); - i0.ɵɵadvance(1); - i0.ɵɵpropertyInterpolate1("title", "a", ctx.one, "b"); - i0.ɵɵadvance(1); - i0.ɵɵpropertyInterpolate("title", ctx.one); - } - … - `; - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect handling of interpolated properties'); - }); - - - it('should generate the proper update instructions for interpolated attributes', () => { - const files: MockDirectory = getAppFiles(` -
-
-
-
-
-
-
-
-
-
- `); - - const template = ` - … - if (rf & 2) { - i0.ɵɵattributeInterpolateV("title", ["a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e", ctx.five, "f", ctx.six, "g", ctx.seven, "h", ctx.eight, "i", ctx.nine, "j"]); - i0.ɵɵadvance(1); - i0.ɵɵattributeInterpolate8("title", "a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e", ctx.five, "f", ctx.six, "g", ctx.seven, "h", ctx.eight, "i"); - i0.ɵɵadvance(1); - i0.ɵɵattributeInterpolate7("title", "a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e", ctx.five, "f", ctx.six, "g", ctx.seven, "h"); - i0.ɵɵadvance(1); - i0.ɵɵattributeInterpolate6("title", "a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e", ctx.five, "f", ctx.six, "g"); - i0.ɵɵadvance(1); - i0.ɵɵattributeInterpolate5("title", "a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e", ctx.five, "f"); - i0.ɵɵadvance(1); - i0.ɵɵattributeInterpolate4("title", "a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e"); - i0.ɵɵadvance(1); - i0.ɵɵattributeInterpolate3("title", "a", ctx.one, "b", ctx.two, "c", ctx.three, "d"); - i0.ɵɵadvance(1); - i0.ɵɵattributeInterpolate2("title", "a", ctx.one, "b", ctx.two, "c"); - i0.ɵɵadvance(1); - i0.ɵɵattributeInterpolate1("title", "a", ctx.one, "b"); - i0.ɵɵadvance(1); - i0.ɵɵattribute("title", ctx.one); - } - … - `; - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect handling of interpolated properties'); - }); - - it('should keep local ref for host element', () => { - const files: MockDirectory = getAppFiles(` - - Hello {{ name }}! - - {{ myRef.id }} - `); - - const template = ` - … - consts: [["id", "my-id"], ["myRef", ""]], - template:function MyComponent_Template(rf, $ctx$){ - if (rf & 1) { - $i0$.ɵɵelementStart(0, "b", 0, 1); - $i0$.ɵɵdisableBindings(); - $i0$.ɵɵelementStart(2, "i"); - $i0$.ɵɵtext(3, "Hello {{ name }}!"); - $i0$.ɵɵelementEnd(); - $i0$.ɵɵenableBindings(); - $i0$.ɵɵelementEnd(); - $i0$.ɵɵtext(4); - } - if (rf & 2) { - const $_r0$ = $i0$.ɵɵreference(1); - $r3$.ɵɵadvance(4); - $i0$.ɵɵtextInterpolate1(" ", $_r0$.id, " "); - } - } - `; - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect handling of local refs for host element'); - }); - - it('should not have local refs for nested elements', () => { - const files: MockDirectory = getAppFiles(` -
- {{ myInput.value }} -
- `); - - const template = ` - … - consts: [["value", "one", "#myInput", ""]], - template:function MyComponent_Template(rf, $ctx$){ - if (rf & 1) { - $i0$.ɵɵelementStart(0, "div"); - $i0$.ɵɵdisableBindings(); - $i0$.ɵɵelement(1, "input", 0); - $i0$.ɵɵtext(2, " {{ myInput.value }} "); - $i0$.ɵɵenableBindings(); - $i0$.ɵɵelementEnd(); - } - `; - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect handling of local refs for nested elements'); - }); - - it('should not process property bindings and listeners', () => { - const files: MockDirectory = getAppFiles(` -
-
-
- `); - - const template = ` - … - consts: [["[id]", "my-id", "(click)", "onclick"]], - template:function MyComponent_Template(rf, $ctx$){ - if (rf & 1) { - $i0$.ɵɵelementStart(0, "div"); - $i0$.ɵɵdisableBindings(); - $i0$.ɵɵelement(1, "div", 0); - $i0$.ɵɵenableBindings(); - $i0$.ɵɵelementEnd(); - } - `; - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect handling of property bindings and listeners'); - }); - - it('should not generate extra instructions for elements with no children', () => { - const files: MockDirectory = getAppFiles(` -
- `); - - const template = ` - template:function MyComponent_Template(rf, $ctx$){ - if (rf & 1) { - $i0$.ɵɵelement(0, "div"); - } - } - `; - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect handling of elements with no children'); - }); - }); -}); diff --git a/packages/compiler-cli/test/compliance_old/r3_view_compiler_di_spec.ts b/packages/compiler-cli/test/compliance_old/r3_view_compiler_di_spec.ts deleted file mode 100644 index 91820d3953..0000000000 --- a/packages/compiler-cli/test/compliance_old/r3_view_compiler_di_spec.ts +++ /dev/null @@ -1,398 +0,0 @@ -/** - * @license - * 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 - */ - -import {MockDirectory, setup} from '@angular/compiler/test/aot/test_util'; -import {compile, expectEmit} from './mock_compile'; - -describe('compiler compliance: dependency injection', () => { - const angularFiles = setup({ - compileAngular: false, - compileFakeCore: true, - compileAnimations: false, - }); - - it('should create factory methods', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule, Injectable, Attribute, Host, SkipSelf, Self, Optional} from '@angular/core'; - - @Injectable() - export class MyService {} - - function dynamicAttrName() { - return 'the-attr'; - } - - @Component({ - selector: 'my-component', - template: \`\` - }) - export class MyComponent { - constructor( - @Attribute('name') name:string, - @Attribute(dynamicAttrName()) other: string, - s1: MyService, - @Host() s2: MyService, - @Self() s4: MyService, - @SkipSelf() s3: MyService, - @Optional() s5: MyService, - @Self() @Optional() s6: MyService, - ) {} - } - - @NgModule({declarations: [MyComponent], providers: [MyService]}) - export class MyModule {} - ` - } - }; - - const factory = ` - MyComponent.ɵfac = function MyComponent_Factory(t) { - return new (t || MyComponent)( - $r3$.ɵɵinjectAttribute('name'), - $r3$.ɵɵinjectAttribute(dynamicAttrName()), - $r3$.ɵɵdirectiveInject(MyService), - $r3$.ɵɵdirectiveInject(MyService, 1), - $r3$.ɵɵdirectiveInject(MyService, 2), - $r3$.ɵɵdirectiveInject(MyService, 4), - $r3$.ɵɵdirectiveInject(MyService, 8), - $r3$.ɵɵdirectiveInject(MyService, 10) - ); - }`; - - - const result = compile(files, angularFiles); - - expectEmit(result.source, factory, 'Incorrect factory'); - }); - - it('should create a factory definition for an injectable', () => { - const files = { - app: { - 'spec.ts': ` - import {Injectable} from '@angular/core'; - - class MyDependency {} - - @Injectable() - export class MyService { - constructor(dep: MyDependency) {} - } - ` - } - }; - - const factory = ` - MyService.ɵfac = function MyService_Factory(t) { - return new (t || MyService)($r3$.ɵɵinject(MyDependency)); - }`; - - const def = ` - MyService.ɵprov = /*@__PURE__*/ $r3$.ɵɵdefineInjectable({ - token: MyService, - factory: MyService.ɵfac - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, factory, 'Incorrect factory definition'); - expectEmit(result.source, def, 'Incorrect injectable definition'); - }); - - it('should create a factory definition for an injectable with an overloaded constructor', () => { - const files = { - app: { - 'spec.ts': ` - import {Injectable, Optional} from '@angular/core'; - - class MyDependency {} - class MyOptionalDependency {} - - @Injectable() - export class MyService { - constructor(dep: MyDependency); - constructor(dep: MyDependency, @Optional() optionalDep?: MyOptionalDependency) {} - } - ` - } - }; - - const factory = ` - MyService.ɵfac = function MyService_Factory(t) { - return new (t || MyService)($r3$.ɵɵinject(MyDependency), $r3$.ɵɵinject(MyOptionalDependency, 8)); - }`; - - const def = ` - MyService.ɵprov = /*@__PURE__*/ $r3$.ɵɵdefineInjectable({ - token: MyService, - factory: MyService.ɵfac - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, factory, 'Incorrect factory definition'); - expectEmit(result.source, def, 'Incorrect injectable definition'); - }); - - it('should create a single factory def if the class has more than one decorator', () => { - const files = { - app: { - 'spec.ts': ` - import {Injectable, Pipe} from '@angular/core'; - - @Injectable() - @Pipe({name: 'my-pipe'}) - export class MyPipe { - } - ` - } - }; - - const result = compile(files, angularFiles).source; - const matches = result.match(/MyPipe\.ɵfac = function MyPipe_Factory/g); - expect(matches ? matches.length : 0).toBe(1); - }); - - it('should delegate directly to the alternate factory when setting `useFactory` without `deps`', - () => { - const files = { - app: { - 'spec.ts': ` - import {Injectable} from '@angular/core'; - - class MyAlternateService {} - - function alternateFactory() { - return new MyAlternateService(); - } - - @Injectable({ - useFactory: alternateFactory - }) - export class MyService { - } - ` - } - }; - - const def = ` - MyService.ɵprov = /*@__PURE__*/ $r3$.ɵɵdefineInjectable({ - token: MyService, - factory: function() { - return alternateFactory(); - } - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, def, 'Incorrect injectable definition'); - }); - - it('should not delegate directly to the alternate factory when setting `useFactory` with `deps`', - () => { - const files = { - app: { - 'spec.ts': ` - import {Injectable} from '@angular/core'; - - class SomeDep {} - class MyAlternateService {} - - @Injectable({ - useFactory: () => new MyAlternateFactory(), - deps: [SomeDep] - }) - export class MyService { - } - ` - } - }; - - const def = ` - MyService.ɵprov = /*@__PURE__*/ $r3$.ɵɵdefineInjectable({ - token: MyService, - factory: function MyService_Factory(t) { - let r = null; - if (t) { - r = new t(); - } else { - r = (() => new MyAlternateFactory())($r3$.ɵɵinject(SomeDep)); - } - return r; - } - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, def, 'Incorrect injectable definition'); - }); - - it('should delegate directly to the alternate class factory when setting `useClass` without `deps`', - () => { - const files = { - app: { - 'spec.ts': ` - import {Injectable} from '@angular/core'; - - @Injectable() - class MyAlternateService {} - - @Injectable({ - useClass: MyAlternateService - }) - export class MyService { - } - ` - } - }; - - const factory = ` - MyService.ɵprov = /*@__PURE__*/ $r3$.ɵɵdefineInjectable({ - token: MyService, - factory: function(t) { - return MyAlternateService.ɵfac(t); - } - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, factory, 'Incorrect factory definition'); - }); - - it('should not delegate directly to the alternate class when setting `useClass` with `deps`', - () => { - const files = { - app: { - 'spec.ts': ` - import {Injectable} from '@angular/core'; - - class SomeDep {} - - @Injectable() - class MyAlternateService {} - - @Injectable({ - useClass: MyAlternateService, - deps: [SomeDep] - }) - export class MyService { - } - ` - } - }; - - const factory = ` - MyService.ɵprov = /*@__PURE__*/ $r3$.ɵɵdefineInjectable({ - token: MyService, - factory: function MyService_Factory(t) { - let r = null; - if (t) { - r = new t(); - } else { - r = new MyAlternateService($r3$.ɵɵinject(SomeDep)); - } - return r; - } - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, factory, 'Incorrect factory definition'); - }); - - it('should unwrap forward refs when delegating to a different class', () => { - const files = { - app: { - 'spec.ts': ` - import {Injectable, forwardRef} from '@angular/core'; - - @Injectable({providedIn: 'root', useClass: forwardRef(() => SomeProviderImpl)}) - abstract class SomeProvider { - } - - @Injectable() - class SomeProviderImpl extends SomeProvider { - } - ` - } - }; - - const factory = ` - SomeProvider.ɵprov = /*@__PURE__*/ $r3$.ɵɵdefineInjectable({ - token: SomeProvider, - factory: function(t) { - return SomeProviderImpl.ɵfac(t); - }, - providedIn: 'root' - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, factory, 'Incorrect factory definition'); - }); - - it('should have the pipe factory take precedence over the injectable factory, if a class has multiple decorators', - () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule, Pipe, PipeTransform, Injectable} from '@angular/core'; - - @Injectable() - class Service {} - - @Injectable() - @Pipe({name: 'myPipe'}) - export class MyPipe implements PipeTransform { - constructor(service: Service) {} - transform(value: any, ...args: any[]) { return value; } - } - - @Pipe({name: 'myOtherPipe'}) - @Injectable() - export class MyOtherPipe implements PipeTransform { - constructor(service: Service) {} - transform(value: any, ...args: any[]) { return value; } - } - - @Component({ - selector: 'my-app', - template: '{{0 | myPipe | myOtherPipe}}' - }) - export class MyApp {} - - @NgModule({declarations: [MyPipe, MyOtherPipe, MyApp], declarations: [Service]}) - export class MyModule {} - ` - } - }; - - const result = compile(files, angularFiles); - const source = result.source; - - // The prov definition must be last so MyPipe.fac is defined - const MyPipeDefs = ` - MyPipe.ɵfac = function MyPipe_Factory(t) { return new (t || MyPipe)(i0.ɵɵdirectiveInject(Service, 16)); }; - MyPipe.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "myPipe", type: MyPipe, pure: true }); - MyPipe.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MyPipe, factory: MyPipe.ɵfac }); - `; - - // The prov definition must be last so MyOtherPipe.fac is defined - const MyOtherPipeDefs = ` - MyOtherPipe.ɵfac = function MyOtherPipe_Factory(t) { return new (t || MyOtherPipe)($r3$.ɵɵdirectiveInject(Service, 16)); }; - MyOtherPipe.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "myOtherPipe", type: MyOtherPipe, pure: true }); - MyOtherPipe.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MyOtherPipe, factory: MyOtherPipe.ɵfac }); - `; - - expectEmit(source, MyPipeDefs, 'Invalid pipe factory function'); - expectEmit(source, MyOtherPipeDefs, 'Invalid pipe factory function'); - expect(source.match(/MyPipe\.ɵfac =/g)!.length).toBe(1); - expect(source.match(/MyOtherPipe\.ɵfac =/g)!.length).toBe(1); - }); -}); diff --git a/packages/compiler-cli/test/compliance_old/r3_view_compiler_directives_spec.ts b/packages/compiler-cli/test/compliance_old/r3_view_compiler_directives_spec.ts deleted file mode 100644 index e5019a9aed..0000000000 --- a/packages/compiler-cli/test/compliance_old/r3_view_compiler_directives_spec.ts +++ /dev/null @@ -1,410 +0,0 @@ -/** - * @license - * 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 - */ -import {AttributeMarker} from '@angular/compiler/src/core'; -import {setup} from '@angular/compiler/test/aot/test_util'; -import {compile, expectEmit} from './mock_compile'; - -describe('compiler compliance: directives', () => { - const angularFiles = setup({ - compileAngular: false, - compileAnimations: false, - compileFakeCore: true, - }); - - describe('matching', () => { - it('should not match directives on i18n attribute', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Directive, NgModule} from '@angular/core'; - - @Directive({selector: '[i18n]'}) - export class I18nDirective {} - - @Component({selector: 'my-component', template: '
'}) - export class MyComponent {} - - @NgModule({declarations: [I18nDirective, MyComponent]}) - export class MyModule{}` - } - }; - - // MyComponent definition should be: - const MyComponentDefinition = ` - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyComponent, - selectors: [["my-component"]], - decls: 1, - vars: 0, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div"); - } - }, - encapsulation: 2 - }); - `; - - const MyComponentFactory = ` - MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); }; - `; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, MyComponentDefinition, 'Incorrect ChildComponent.ɵcmp'); - expectEmit(source, MyComponentFactory, 'Incorrect ChildComponent.ɵfac'); - }); - - it('should not match directives on i18n-prefixed attributes', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Directive, NgModule} from '@angular/core'; - - @Directive({selector: '[i18n]'}) - export class I18nDirective {} - - @Directive({selector: '[i18n-foo]'}) - export class I18nFooDirective {} - - @Directive({selector: '[foo]'}) - export class FooDirective {} - - @Component({selector: 'my-component', template: '
'}) - export class MyComponent {} - - @NgModule({declarations: [I18nDirective, I18nFooDirective, FooDirective, MyComponent]}) - export class MyModule{}` - } - }; - - // MyComponent definition should be: - const MyComponentDefinition = ` - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyComponent, - selectors: [["my-component"]], - decls: 1, - vars: 0, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div"); - } - }, - encapsulation: 2 - }); - `; - - const MyComponentFactory = ` - MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); }; - `; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, MyComponentDefinition, 'Incorrect ChildComponent.ɵcmp'); - expectEmit(source, MyComponentFactory, 'Incorrect ChildComponent.ɵfac'); - }); - - it('should match directives on property bindings', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Directive, Input, NgModule} from '@angular/core'; - - @Directive({selector: '[someDirective]'}) - export class SomeDirective { - @Input() someDirective; - } - - @Component({selector: 'my-component', template: '
'}) - export class MyComponent {} - - @NgModule({declarations: [SomeDirective, MyComponent]}) - export class MyModule{} - ` - } - }; - - - // MyComponent definition should be: - const MyComponentDefinition = ` - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - … - consts: [[${AttributeMarker.Bindings}, "someDirective"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div", 0); - } - if (rf & 2) { - $r3$.ɵɵproperty("someDirective", true); - } - }, - … - directives: [SomeDirective], - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, MyComponentDefinition, 'Incorrect ChildComponent.ɵcmp'); - }); - - it('should match directives on ng-templates', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Directive, NgModule, TemplateRef} from '@angular/core'; - - @Directive({ - selector: 'ng-template[directiveA]' - }) - export class DirectiveA { - constructor(public templateRef: TemplateRef) {} - } - - @Component({ - selector: 'my-component', - template: \` - Some content - \` - }) - export class MyComponent {} - - @NgModule({declarations: [DirectiveA, MyComponent]}) - export class MyModule{} - ` - } - }; - - const MyComponentDefinition = ` - … - function MyComponent_ng_template_0_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtext(0, "Some content"); - } - } - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - … - consts: [["directiveA", ""]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtemplate(0, MyComponent_ng_template_0_Template, 1, 0, "ng-template", 0); - } - }, - … - directives: [DirectiveA], - … - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, MyComponentDefinition, 'Incorrect ChildComponent.ɵcmp'); - }); - - it('should match directives on ng-container', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Directive, NgModule, TemplateRef} from '@angular/core'; - - @Directive({ - selector: 'ng-container[directiveA]' - }) - export class DirectiveA { - constructor(public templateRef: TemplateRef) {} - } - - @Component({ - selector: 'my-component', - template: \` - Some content - \` - }) - export class MyComponent {} - - @NgModule({declarations: [DirectiveA, MyComponent]}) - export class MyModule{} - ` - } - }; - - const MyComponentDefinition = ` - … - function MyComponent_ng_container_0_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementContainerStart(0, 1); - $r3$.ɵɵtext(1, "Some content"); - $r3$.ɵɵelementContainerEnd(); - } - } - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - … - consts: [["directiveA", "", ${AttributeMarker.Template}, "ngIf"], ["directiveA", ""]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtemplate(0, MyComponent_ng_container_0_Template, 2, 0, "ng-container", 0); - } - if (rf & 2) { - $r3$.ɵɵproperty("ngIf", ctx.showing); - } - }, - … - directives: [DirectiveA], - … - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, MyComponentDefinition, 'Incorrect ChildComponent.ɵcmp'); - }); - - it('should match directives on ng-template bindings', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Directive, Input, NgModule} from '@angular/core'; - - @Directive({selector: '[someDirective]'}) - export class SomeDirective { - @Input() someDirective; - } - - @Component({selector: 'my-component', template: ''}) - export class MyComponent {} - - @NgModule({declarations: [SomeDirective, MyComponent]}) - export class MyModule{} - ` - } - }; - - - // MyComponent definition should be: - const MyComponentDefinition = ` - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - … - consts: [[${AttributeMarker.Bindings}, "someDirective"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtemplate(0, MyComponent_ng_template_0_Template, 0, 0, "ng-template", 0); - } - if (rf & 2) { - $r3$.ɵɵproperty("someDirective", true); - } - }, - … - directives: [SomeDirective], - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, MyComponentDefinition, 'Incorrect ChildComponent.ɵcmp'); - }); - - it('should match structural directives', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Directive, Input, NgModule} from '@angular/core'; - - @Directive({selector: '[someDirective]'}) - export class SomeDirective { - @Input() someDirective; - } - - @Component({selector: 'my-component', template: '
'}) - export class MyComponent {} - - @NgModule({declarations: [SomeDirective, MyComponent]}) - export class MyModule{} - ` - } - }; - - // MyComponent definition should be: - const MyComponentDefinition = ` - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - … - consts: [[${AttributeMarker.Template}, "someDirective"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtemplate(0, MyComponent_div_0_Template, 1, 0, "div", 0); - } - }, - … - directives: [SomeDirective], - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, MyComponentDefinition, 'Incorrect ChildComponent.ɵcmp'); - }); - - it('should match directives on element outputs', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Directive, Output, EventEmitter, NgModule} from '@angular/core'; - - @Directive({selector: '[someDirective]'}) - export class SomeDirective { - @Output() someDirective = new EventEmitter(); - } - - @Component({selector: 'my-component', template: '
'}) - export class MyComponent { - noop() {} - } - - @NgModule({declarations: [SomeDirective, MyComponent]}) - export class MyModule{} - ` - } - }; - - - // MyComponent definition should be: - const MyComponentDefinition = ` - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - … - consts: [[${AttributeMarker.Bindings}, "someDirective"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div", 0); - $r3$.ɵɵlistener("someDirective", function MyComponent_Template_div_someDirective_0_listener() { return ctx.noop(); }); - $r3$.ɵɵelementEnd(); - } - }, - … - directives: [SomeDirective], - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, MyComponentDefinition, 'Incorrect ChildComponent.ɵcmp'); - }); - }); -}); diff --git a/packages/compiler-cli/test/compliance_old/r3_view_compiler_i18n_spec.ts b/packages/compiler-cli/test/compliance_old/r3_view_compiler_i18n_spec.ts deleted file mode 100644 index f0cf9ac3a5..0000000000 --- a/packages/compiler-cli/test/compliance_old/r3_view_compiler_i18n_spec.ts +++ /dev/null @@ -1,3446 +0,0 @@ -/** - * @license - * 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 - */ -import {AttributeMarker} from '@angular/compiler/src/core'; -import {setup} from '@angular/compiler/test/aot/test_util'; -import * as ts from 'typescript'; - -import {DEFAULT_INTERPOLATION_CONFIG, InterpolationConfig} from '../../../compiler/src/compiler'; -import {decimalDigest} from '../../../compiler/src/i18n/digest'; -import {extractMessages} from '../../../compiler/src/i18n/extractor_merger'; -import {HtmlParser} from '../../../compiler/src/ml_parser/html_parser'; - -import {compile, expectEmit} from './mock_compile'; - -const angularFiles = setup({ - compileAngular: false, - compileFakeCore: true, - compileAnimations: false, -}); - -const htmlParser = new HtmlParser(); - -// TODO: update translation extraction RegExp to support `$localize` tags. -const EXTRACT_GENERATED_TRANSLATIONS_REGEXP = - /const\s*(.*?)\s*=\s*goog\.getMsg\("(.*?)",?\s*(.*?)\)/g; - -const diff = (a: Set, b: Set): Set => - new Set([...Array.from(a)].filter(x => !b.has(x))); - -const extract = (from: string, regex: any, transformFn: (match: any[], state: Set) => any) => { - const result = new Set(); - let item; - while ((item = regex.exec(from)) !== null) { - result.add(transformFn(item, result)); - } - return result; -}; - -// verify that we extracted all the necessary translations -// and their ids match the ones extracted via 'ng extract-i18n' -const verifyTranslationIds = - (source: string, output: string, exceptions = {}, - interpolationConfig: InterpolationConfig = DEFAULT_INTERPOLATION_CONFIG) => { - const parseResult = - htmlParser.parse(source, 'path:://to/template', {tokenizeExpansionForms: true}); - const extractedIdToMsg = new Map(); - const extractedIds = new Set(); - const generatedIds = new Set(); - const msgs = extractMessages(parseResult.rootNodes, interpolationConfig, [], {}); - msgs.messages.forEach(msg => { - const id = msg.id || decimalDigest(msg); - extractedIds.add(id); - extractedIdToMsg.set(id, msg); - }); - const regexp = /const\s*MSG_EXTERNAL_(.+?)\s*=\s*goog\.getMsg/g; - const ids = extract(output, regexp, v => v[1]); - ids.forEach(id => { - generatedIds.add(id.split('$$')[0]); - }); - const delta = diff(extractedIds, generatedIds); - if (delta.size) { - // check if we have ids in exception list - const outstanding = diff(delta, new Set(Object.keys(exceptions))); - if (outstanding.size) { - throw new Error(` - Extracted and generated IDs don't match, delta: - ${JSON.stringify(Array.from(delta))} - `); - } - } - return true; - }; - -// verify that placeholders in translation string match -// placeholders object defined as goog.getMsg function argument -const verifyPlaceholdersIntegrity = (output: string) => { - const extractTranslations = (from: string) => { - return extract(from, EXTRACT_GENERATED_TRANSLATIONS_REGEXP, v => [v[2], v[3]]); - }; - const extractPlaceholdersFromBody = (body: string) => { - const regex = /{\$(.*?)}/g; - return extract(body, regex, v => v[1]); - }; - const extractPlaceholdersFromArgs = (args: string) => { - const regex = /\s+"(.+?)":\s*".*?"/g; - return extract(args, regex, v => v[1]); - }; - const translations = extractTranslations(output); - translations.forEach((translation) => { - const bodyPhs = extractPlaceholdersFromBody(translation[0]); - const argsPhs = extractPlaceholdersFromArgs(translation[1]); - if (bodyPhs.size !== argsPhs.size || diff(bodyPhs, argsPhs).size) { - return false; - } - }); - return true; -}; - -const verifyUniqueConsts = (output: string) => { - extract( - output, EXTRACT_GENERATED_TRANSLATIONS_REGEXP, - (current: string[], state: Set): string => { - const key = current[1]; - if (state.has(key)) { - throw new Error(`Duplicate const ${key} found in generated output!`); - } - return key; - }); - return true; -}; - -/** - * Escape the template string for being placed inside a backtick string literal. - * - * * "\" would erroneously indicate a control character - * * "`" and "${" strings would erroneously indicate the end of a message part - */ -const escapeTemplate = (template: string) => - template.replace(/\\/g, '\\\\').replace(/`/g, '\\`').replace(/\$\{/g, '$\\{'); - -const getAppFilesWithTemplate = (template: string, args: any = {}) => ({ - app: { - 'spec.template.html': template, - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - ${args.preserveWhitespaces ? 'preserveWhitespaces: true,' : ''} - ${args.interpolation ? 'interpolation: ' + JSON.stringify(args.interpolation) + ', ' : ''} - ${ - args.templateUrl ? `templateUrl: 'spec.template.html'` : - `template: \`${escapeTemplate(template)}\``}) - export class MyComponent {} - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } -}); - -const maybePrint = (output: string, verbose: boolean) => { - if (!verbose) return; - // tslint:disable-next-line - console.log(` -========== Generated output: ========== -${output} -======================================= - `); -}; - -const verify = (input: string, output: string, extra: { - inputArgs?: any, - compilerOptions?: any, - skipPathBasedCheck?: boolean, - skipIdBasedCheck?: boolean, - verbose?: boolean, - exceptions?: {} -} = {}): void => { - const files = getAppFilesWithTemplate(input, extra.inputArgs); - const opts = (i18nUseExternalIds: boolean) => - ({i18nUseExternalIds, ...(extra.compilerOptions || {})}); - - // invoke with file-based prefix translation names - if (!extra.skipPathBasedCheck) { - const result = compile(files, angularFiles, opts(false)); - maybePrint(result.source, !!extra.verbose); - expect(verifyPlaceholdersIntegrity(result.source)).toBe(true); - expect(verifyUniqueConsts(result.source)).toBe(true); - expectEmit(result.source, output, 'Incorrect template'); - } - - // invoke with translation names based on external ids - if (!extra.skipIdBasedCheck) { - const result = compile(files, angularFiles, opts(true)); - maybePrint(result.source, !!extra.verbose); - const interpolationConfig = extra.inputArgs && extra.inputArgs.interpolation ? - InterpolationConfig.fromArray(extra.inputArgs.interpolation) : - undefined; - expect(verifyTranslationIds(input, result.source, extra.exceptions, interpolationConfig)) - .toBe(true); - expect(verifyPlaceholdersIntegrity(result.source)).toBe(true); - expect(verifyUniqueConsts(result.source)).toBe(true); - expectEmit(result.source, output, 'Incorrect template'); - } -}; - -// Describes message metadata object. -interface Meta { - desc?: string; - meaning?: string; - id?: string; -} - -// Describes placeholder type used in tests. Note: the type is an array (not an object), since it's -// important to preserve the order of placeholders (so that we can compare it with generated -// output). -type Placeholder = [string, string]; - -// Unique message id index that is needed to avoid different i18n vars with the same name to appear -// in the i18n block while generating an output string (used to verify compiler-generated code). -let msgIndex = 0; - -// Wraps a string into quotes is needed. -// Note: if a string starts with `$` is a special case in tests when ICU reference -// is used as a placeholder value, this we should not wrap it in quotes. -const quotedValue = (value: string) => value.startsWith('$') ? value : `"${value}"`; - -// Generates a string that represents expected Closure metadata output. -const i18nMsgClosureMeta = (meta?: Meta): string => { - if (!meta || !(meta.desc || meta.meaning)) return ''; - return ` - /** - ${meta.desc ? '* @desc ' + meta.desc : ''} - ${meta.meaning ? '* @meaning ' + meta.meaning : ''} - */ - `; -}; - -// Converts a set of placeholders to a string (as it's expected from compiler). -const i18nPlaceholdersToString = (placeholders: Placeholder[]): string => { - if (placeholders.length === 0) return ''; - const result = placeholders.map(([key, value]) => `"${key}": ${quotedValue(value)}`); - return `, { ${result.join(',')} }`; -}; - -// Generates a string that represents expected $localize metadata output. -const i18nMsgLocalizeMeta = (meta?: Meta): string => { - if (!meta) return ''; - let localizeMeta = ''; - if (meta.meaning) localizeMeta += `${meta.meaning}|`; - if (meta.desc) localizeMeta += meta.desc; - if (meta.id) localizeMeta += `@@${meta.id}`; - return `:${localizeMeta}:`; -}; - -// Transforms a message in a Closure format to a $localize version. -const i18nMsgInsertLocalizePlaceholders = - (message: string, placeholders: Placeholder[]): string => { - if (placeholders.length > 0) { - message = message.replace(/{\$(.*?)}/g, function(_, name) { - const value = placeholders.find(([k, _]) => k === name)![1]; - // e.g. startDivTag -> START_DIV_TAG - const key = name.replace(/[A-Z]/g, (ch: string) => '_' + ch).toUpperCase(); - return '$' + String.raw`{${quotedValue(value)}}:${key}:`; - }); - } - return message; - }; - -// Generates a string that represents expected i18n block content for simple message. -const i18nMsg = (message: string, placeholders: Placeholder[] = [], meta?: Meta) => { - const varName = `$I18N_${msgIndex++}$`; - const closurePlaceholders = i18nPlaceholdersToString(placeholders); - const locMessageWithPlaceholders = i18nMsgInsertLocalizePlaceholders(message, placeholders); - return String.raw` - let ${varName}; - if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) { - ${i18nMsgClosureMeta(meta)} - const $MSG_EXTERNAL_${msgIndex}$ = goog.getMsg("${message}"${closurePlaceholders}); - ${varName} = $MSG_EXTERNAL_${msgIndex}$; - } - else { - ${varName} = $localize \`${i18nMsgLocalizeMeta(meta)}${locMessageWithPlaceholders}\`; - }`; -}; - -// Generates a string that represents expected i18n block content for a message that requires -// post-processing (thus includes `ɵɵi18nPostprocess` in generated code). -const i18nMsgWithPostprocess = - (message: string, placeholders: Placeholder[] = [], meta?: Meta, - postprocessPlaceholders?: Placeholder[]) => { - const varName = `$I18N_${msgIndex}$`; - const ppPaceholders = - postprocessPlaceholders ? i18nPlaceholdersToString(postprocessPlaceholders) : ''; - return String.raw` - ${i18nMsg(message, placeholders, meta)} - ${varName} = $r3$.ɵɵi18nPostprocess($${varName}$${ppPaceholders}); - `; - }; - -// Generates a string that represents expected i18n block content for an ICU. -const i18nIcuMsg = (message: string, placeholders: Placeholder[] = []) => { - return i18nMsgWithPostprocess(message, [], undefined, placeholders); -}; - -describe('i18n support in the template compiler', () => { - describe('element attributes', () => { - it('should add the meaning and description as JsDoc comments and metadata blocks', () => { - const input = ` -
Content A
-
Content B
-
Content C
-
Content D
-
Content E
-
Content F
-
Content G
-
Content H
- `; - - const i18n_0 = i18nMsg('Content A', [], {id: 'idA', meaning: 'meaningA', desc: 'descA'}); - const i18n_1 = i18nMsg('Title B', [], {id: 'idB', meaning: 'meaningB', desc: 'descB'}); - const i18n_2 = i18nMsg('Title C', [], {meaning: 'meaningC'}); - const i18n_3 = i18nMsg('Title D', [], {meaning: 'meaningD', desc: 'descD'}); - const i18n_4 = i18nMsg('Title E', [], {id: 'idE', desc: 'meaningE'}); - const i18n_5 = i18nMsg('Title F', [], {id: 'idF'}); - - // Keeping this block as a raw string, since it checks escaping of special chars. - const i18n_6 = String.raw` - let $i18n_23$; - if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) { - /** - * @desc [BACKUP_$` + - String.raw`{MESSAGE}_ID:idH]` + - '`' + String.raw`desc - */ - const $MSG_EXTERNAL_idG$$APP_SPEC_TS_24$ = goog.getMsg("Title G"); - $i18n_23$ = $MSG_EXTERNAL_idG$$APP_SPEC_TS_24$; - } - else { - $i18n_23$ = $localize \`:[BACKUP_$\{MESSAGE}_ID\:idH]\\\`desc@@idG:Title G\`; - } - `; - - // Keeping this block as a raw string, since it checks escaping of special chars. - const i18n_7 = String.raw` - let $i18n_7$; - if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) { - /** - * @desc Some text \' [BACKUP_MESSAGE_ID: xxx] - */ - const $MSG_EXTERNAL_idG$$APP_SPEC_TS_21$ = goog.getMsg("Content H"); - $i18n_7$ = $MSG_EXTERNAL_idG$$APP_SPEC_TS_21$; - } - else { - $i18n_7$ = $localize \`:Some text \\' [BACKUP_MESSAGE_ID\: xxx]:Content H\`; - } - `; - - const output = String.raw` - consts: function () { - ${i18n_0} - ${i18n_1} - ${i18n_2} - ${i18n_3} - ${i18n_4} - ${i18n_5} - ${i18n_6} - ${i18n_7} - return [ - $i18n_0$, - ["title", $i18n_1$], - ["title", $i18n_2$], - ["title", $i18n_3$], - ["title", $i18n_4$], - ["title", $i18n_5$], - ["title", $i18n_6$], - $i18n_7$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18n(1, 0); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementStart(2, "div", 1); - $r3$.ɵɵtext(3, "Content B"); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementStart(4, "div", 2); - $r3$.ɵɵtext(5, "Content C"); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementStart(6, "div", 3); - $r3$.ɵɵtext(7, "Content D"); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementStart(8, "div", 4); - $r3$.ɵɵtext(9, "Content E"); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementStart(10, "div", 5); - $r3$.ɵɵtext(11, "Content F"); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementStart(12, "div", 6); - $r3$.ɵɵtext(13, "Content G"); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementStart(14, "div"); - $r3$.ɵɵi18n(15, 7); - $r3$.ɵɵelementEnd(); - } - } - `; - - verify(input, output); - }); - - it('should support i18n attributes on explicit elements', () => { - const input = ` - - `; - - const i18n_0 = i18nMsg('Hello'); - const output = String.raw` - consts: function () { - ${i18n_0} - return [ - ["title", $i18n_0$] - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtemplate(0, MyComponent_ng_template_0_Template, 0, 0, "ng-template", 0); - } - } - `; - verify(input, output); - }); - - it('should support i18n attributes on explicit with structural directives', - () => { - const input = ` - Test - `; - - const i18n_0 = i18nMsg('Hello'); - - const output = String.raw` - function MyComponent_0_ng_template_0_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtext(0, "Test"); - } - } - function MyComponent_0_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtemplate(0, MyComponent_0_ng_template_0_Template, 1, 0, "ng-template", 1); - } - } - … - consts: function() { - ${i18n_0} - return [ - [${AttributeMarker.Template}, "ngIf"], - ["title", $i18n_0$] - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtemplate(0, MyComponent_0_Template, 1, 0, undefined, 0); - } - if (rf & 2) { - $r3$.ɵɵproperty("ngIf", ctx.visible); - } - } - `; - verify(input, output); - }); - - it('should support i18n attributes with interpolations on explicit elements', - () => { - const input = ` - - `; - - const i18n_0 = - i18nMsg('Hello {$interpolation}', [['interpolation', String.raw`\uFFFD0\uFFFD`]]); - const output = String.raw` - consts: function() { - ${i18n_0} - return [ - [${AttributeMarker.Bindings}, "title"], - ["title", $i18n_0$] - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtemplate(0, MyComponent_ng_template_0_Template, 0, 0, "ng-template", 0); - $r3$.ɵɵi18nAttributes(1, 1); - } - if (rf & 2) { - $r3$.ɵɵi18nExp(ctx.name); - $r3$.ɵɵi18nApply(1); - } - } - `; - verify(input, output); - }); - - it('should support i18n attributes with interpolations on explicit elements with structural directives', - () => { - const input = ` - - `; - - const i18n_0 = - i18nMsg('Hello {$interpolation}', [['interpolation', String.raw`\uFFFD0\uFFFD`]]); - const output = String.raw` - function MyComponent_0_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtemplate(0, MyComponent_0_ng_template_0_Template, 0, 0, "ng-template", 1); - $r3$.ɵɵi18nAttributes(1, 2); - } - if (rf & 2) { - const $ctx_r2$ = $r3$.ɵɵnextContext(); - $r3$.ɵɵi18nExp($ctx_r2$.name); - $r3$.ɵɵi18nApply(1); - } - } - … - consts: function() { - ${i18n_0} - return [ - [${AttributeMarker.Template}, "ngIf"], - [${AttributeMarker.Bindings}, "title"], - ["title", $i18n_0$] - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtemplate(0, MyComponent_0_Template, 2, 1, undefined, 0); - } - if (rf & 2) { - $r3$.ɵɵproperty("ngIf", true); - } - }, - `; - verify(input, output); - }); - - it('should not create translations for empty attributes', () => { - const input = ` -
- `; - - const output = ` - … - consts: [["id", "static", "title", ""]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div", 0); - } - } - `; - - verify(input, output); - }); - - it('should not create translations for bound attributes', () => { - const input = ` -
-
- `; - - const output = ` - consts: [[3, "title"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div", 0); - } - if (rf & 2) { - $r3$.ɵɵproperty("title", ctx.title); - $r3$.ɵɵattribute("label", ctx.label); - } - } - `; - - verify(input, output); - }); - - it('should translate static attributes', () => { - const input = ` -
- `; - - const i18n_0 = i18nMsg('introduction', [], {meaning: 'm', desc: 'd'}); - - const output = String.raw` - consts: function() { - ${i18n_0} - return [ - ["id", "static", "title", $i18n_0$] - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div", 0); - } - } - `; - - verify(input, output); - }); - - it('should support interpolation', () => { - const input = ` -
-
- `; - - const i18n_0 = i18nMsg('static text'); - const i18n_1 = i18nMsg( - 'intro {$interpolation}', [['interpolation', String.raw`\uFFFD0\uFFFD`]], - {meaning: 'm', desc: 'd'}); - const i18n_2 = i18nMsg( - '{$interpolation}', [['interpolation', String.raw`\uFFFD0\uFFFD`]], - {meaning: 'm1', desc: 'd1'}); - const i18n_3 = i18nMsg( - '{$interpolation} and {$interpolation_1} and again {$interpolation_2}', - [ - ['interpolation', String.raw`\uFFFD0\uFFFD`], - ['interpolation_1', String.raw`\uFFFD1\uFFFD`], - ['interpolation_2', String.raw`\uFFFD2\uFFFD`] - ], - {meaning: 'm2', desc: 'd2'}); - const i18n_4 = i18nMsg('{$interpolation}', [['interpolation', String.raw`\uFFFD0\uFFFD`]]); - - const output = String.raw` - decls: 5, - vars: 8, - consts: function() { - ${i18n_0} - ${i18n_1} - ${i18n_2} - ${i18n_3} - ${i18n_4} - return [ - ["id", "dynamic-1", "aria-roledescription", $i18n_0$, ${AttributeMarker.I18n}, - "title", "aria-label"], - ["title", $i18n_1$, "aria-label", $i18n_2$], - ["id", "dynamic-2", ${AttributeMarker.I18n}, "title", "aria-roledescription"], - ["title", $i18n_3$, "aria-roledescription", $i18n_4$] - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div", 0); - $r3$.ɵɵpipe(1, "uppercase"); - $r3$.ɵɵi18nAttributes(2, 1); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementStart(3, "div", 2); - $r3$.ɵɵi18nAttributes(4, 3); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵi18nExp($r3$.ɵɵpipeBind1(1, 6, ctx.valueA))(ctx.valueB); - $r3$.ɵɵi18nApply(2); - $r3$.ɵɵadvance(3); - $r3$.ɵɵi18nExp(ctx.valueA)(ctx.valueB)(ctx.valueA + ctx.valueB)(ctx.valueC); - $r3$.ɵɵi18nApply(4); - } - } - `; - - verify(input, output); - }); - - it('should support interpolation with custom interpolation config', () => { - const input = ` -
- `; - - const i18n_0 = i18nMsg( - 'intro {$interpolation}', [['interpolation', String.raw`\uFFFD0\uFFFD`]], - {meaning: 'm', desc: 'd'}); - - const output = String.raw` - consts: function() { - ${i18n_0} - return [ - [${AttributeMarker.I18n}, "title"], - ["title", $i18n_0$] - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div", 0); - $r3$.ɵɵpipe(1, "uppercase"); - $r3$.ɵɵi18nAttributes(2, 1); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵi18nExp($r3$.ɵɵpipeBind1(1, 1, ctx.valueA)); - $r3$.ɵɵi18nApply(2); - } - } - `; - verify(input, output, {inputArgs: {interpolation: ['{%', '%}']}}); - }); - - it('should correctly bind to context in nested template', () => { - const input = ` -
-
-
- `; - - const i18n_0 = i18nMsg( - 'different scope {$interpolation}', [['interpolation', String.raw`\uFFFD0\uFFFD`]], - {meaning: 'm', desc: 'd'}); - - const output = String.raw` - function MyComponent_div_0_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵelementStart(1, "div", 1); - $r3$.ɵɵpipe(2, "uppercase"); - $r3$.ɵɵi18nAttributes(3, 2); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - const $outer_r1$ = ctx.$implicit; - $r3$.ɵɵadvance(1); - $r3$.ɵɵi18nExp($r3$.ɵɵpipeBind1(2, 1, $outer_r1$)); - $r3$.ɵɵi18nApply(3); - } - } - … - decls: 1, - vars: 1, - consts: function() { - ${i18n_0} - return [ - [${AttributeMarker.Template}, "ngFor", "ngForOf"], - [${AttributeMarker.I18n}, "title"], - ["title", $i18n_0$] - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtemplate(0, MyComponent_div_0_Template, 4, 3, "div", 0); - } - if (rf & 2) { - $r3$.ɵɵproperty("ngForOf", ctx.items); - } - } - `; - - verify(input, output); - }); - - it('should support complex expressions in interpolation', () => { - const input = ` -
- `; - - const i18n_0 = - i18nMsg('{$interpolation} title', [['interpolation', String.raw`\uFFFD0\uFFFD`]]); - - const output = String.raw` - decls: 2, - vars: 1, - consts: function() { - ${i18n_0} - return [ - [${AttributeMarker.I18n}, "title"], - ["title", $i18n_0$] - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div", 0); - $r3$.ɵɵi18nAttributes(1, 1); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - let $tmp_0_0$ = null; - $r3$.ɵɵi18nExp(($tmp_0_0$ = ctx.valueA.getRawValue()) == null ? null : $tmp_0_0$.getTitle()); - $r3$.ɵɵi18nApply(1); - } - } - `; - - verify(input, output); - }); - - it('should work correctly when placed on i18n root node', () => { - const input = ` -
Some content
- `; - - const i18n_0 = i18nMsg('Element title', [], {meaning: 'm', desc: 'd'}); - const i18n_1 = i18nMsg('Some content'); - - const output = String.raw` - consts: function() { - ${i18n_0} - ${i18n_1} - return [ - ["title", $i18n_0$], - $i18n_1$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div", 0); - $r3$.ɵɵi18n(1, 1); - $r3$.ɵɵelementEnd(); - } - } - `; - verify(input, output); - }); - - it('should sanitize ids and generate proper variable names', () => { - const input = ` -
- Some content -
- `; - - // Keeping raw content (avoiding `i18nMsg`) to illustrate message id sanitization. - const output = String.raw` - let $I18N_0$; - if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) { - const $MSG_EXTERNAL_ID_WITH_INVALID_CHARS$$APP_SPEC_TS_1$ = goog.getMsg("Element title"); - $I18N_0$ = $MSG_EXTERNAL_ID_WITH_INVALID_CHARS$$APP_SPEC_TS_1$; - } - else { - $I18N_0$ = $localize \`:@@ID.WITH.INVALID.CHARS:Element title\`; - } - … - let $I18N_2$; - if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) { - const $MSG_EXTERNAL_ID_WITH_INVALID_CHARS_2$$APP_SPEC_TS_4$ = goog.getMsg(" Some content "); - $I18N_2$ = $MSG_EXTERNAL_ID_WITH_INVALID_CHARS_2$$APP_SPEC_TS_4$; - } - else { - $I18N_2$ = $localize \`:@@ID.WITH.INVALID.CHARS.2: Some content \`; - } - `; - - const exceptions = { - 'ID.WITH.INVALID.CHARS': 'Verify const name generation only', - 'ID.WITH.INVALID.CHARS.2': 'Verify const name generation only' - }; - verify(input, output, {exceptions, skipPathBasedCheck: true}); - }); - }); - - describe('nested nodes', () => { - it('should not produce instructions for empty content', () => { - const input = ` -
-
-
- -
- `; - - const output = String.raw` - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div"); - $r3$.ɵɵelement(1, "div"); - $r3$.ɵɵelement(2, "div"); - } - } - `; - - const exceptions = { - '6524085439495453930': 'No translation is produced for empty content (whitespaces)', - '814405839137385666': 'No translation is produced for empty content (line breaks)' - }; - verify(input, output, {exceptions}); - }); - - it('should ignore HTML comments within translated text', () => { - const input = `
Some text
`; - const output = i18nMsg('Some text'); - verify(input, output); - }); - - it('should properly escape quotes in content', () => { - const input = ` -
Some text 'with single quotes', "with double quotes", \`with backticks\` and without quotes.
- `; - - // Keeping raw content (avoiding `i18nMsg`) to illustrate quotes escaping. - const output = String.raw` - let $I18N_0$; - if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) { - const $MSG_EXTERNAL_4924931801512133405$$APP_SPEC_TS_0$ = goog.getMsg("Some text 'with single quotes', \"with double quotes\", ` + - '`with backticks`' + String.raw` and without quotes."); - $I18N_0$ = $MSG_EXTERNAL_4924931801512133405$$APP_SPEC_TS_0$; - } - else { - $I18N_0$ = $localize \`Some text 'with single quotes', "with double quotes", \\\`with backticks\\\` and without quotes.\`; - } - `; - - verify(input, output); - }); - - it('should handle interpolations wrapped in backticks', () => { - const input = '
`{{ count }}`
'; - // Keeping raw content (avoiding `i18nMsg`) to illustrate backticks escaping. - const output = String.raw` - let $I18N_0$; - if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) { - const $MSG_APP_SPEC_TS_1$ = goog.getMsg("` + - '`{$interpolation}`' + String.raw`", { "interpolation": "\uFFFD0\uFFFD" }); - $I18N_0$ = $MSG_APP_SPEC_TS_1$; - } - else { - $I18N_0$ = $localize \`\\\`$` + - String.raw`{"\uFFFD0\uFFFD"}:INTERPOLATION:\\\`\`; - }`; - verify(input, output); - }); - - it('should handle i18n attributes with plain-text content', () => { - const input = ` -
My i18n block #1
-
My non-i18n block #1
-
My i18n block #2
-
My non-i18n block #2
-
My i18n block #3
- `; - - const i18n_0 = i18nMsg('My i18n block #1'); - const i18n_1 = i18nMsg('My i18n block #2'); - const i18n_2 = i18nMsg('My i18n block #3'); - - const output = String.raw` - consts: function() { - ${i18n_0} - ${i18n_1} - ${i18n_2} - return [ - $i18n_0$, - $i18n_1$, - $i18n_2$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18n(1, 0); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementStart(2, "div"); - $r3$.ɵɵtext(3, "My non-i18n block #1"); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementStart(4, "div"); - $r3$.ɵɵi18n(5, 1); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementStart(6, "div"); - $r3$.ɵɵtext(7, "My non-i18n block #2"); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementStart(8, "div"); - $r3$.ɵɵi18n(9, 2); - $r3$.ɵɵelementEnd(); - } - } - `; - - verify(input, output); - }); - - it('should support named interpolations', () => { - const input = ` -
- Named interpolation: {{ valueA // i18n(ph="PH_A") }} - Named interpolation with spaces: {{ valueB // i18n(ph="PH B") }} -
- `; - - // Keeping raw content (avoiding `i18nMsg`) to illustrate how named interpolations are - // generated. - const i18n_0 = String.raw` - let $I18N_0$; - if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) { - const $MSG_EXTERNAL_7597881511811528589$$APP_SPEC_TS_0$ = goog.getMsg(" Named interpolation: {$phA} Named interpolation with spaces: {$phB} ", { - "phA": "\uFFFD0\uFFFD", - "phB": "\uFFFD1\uFFFD" - }); - $I18N_0$ = $MSG_EXTERNAL_7597881511811528589$$APP_SPEC_TS_0$; - } - else { - $I18N_0$ = $localize \` Named interpolation: $` + - String.raw`{"\uFFFD0\uFFFD"}:PH_A: Named interpolation with spaces: $` + - String.raw`{"\uFFFD1\uFFFD"}:PH_B: \`; - } - `; - - const output = String.raw` - decls: 2, - vars: 2, - consts: function() { - ${i18n_0} - return [ - $i18n_0$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18n(1, 0); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(1); - $r3$.ɵɵi18nExp(ctx.valueA)(ctx.valueB); - $r3$.ɵɵi18nApply(1); - } - } - `; - - verify(input, output); - }); - - it('should support interpolation with custom interpolation config', () => { - const input = ` -
{% valueA %}
- `; - - const i18n_0 = i18nMsg('{$interpolation}', [['interpolation', String.raw`\uFFFD0\uFFFD`]]); - - const output = String.raw` - consts: function() { - ${i18n_0} - return [ - $i18n_0$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18n(1, 0); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(1); - $r3$.ɵɵi18nExp(ctx.valueA); - $r3$.ɵɵi18nApply(1); - } - } - `; - verify(input, output, {inputArgs: {interpolation: ['{%', '%}']}}); - }); - - it('should support interpolations with complex expressions', () => { - const input = ` -
- {{ valueA | async }} - {{ valueA?.a?.b }} - {{ valueA.getRawValue()?.getTitle() }} -
- `; - - const i18n_0 = i18nMsg(' {$interpolation} {$interpolation_1} {$interpolation_2} ', [ - ['interpolation', String.raw`\uFFFD0\uFFFD`], - ['interpolation_1', String.raw`\uFFFD1\uFFFD`], - ['interpolation_2', String.raw`\uFFFD2\uFFFD`] - ]); - - const output = String.raw` - consts: function() { - ${i18n_0} - return [ - $i18n_0$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18n(1, 0); - $r3$.ɵɵpipe(2, "async"); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - let $tmp_2_0$ = null; - $r3$.ɵɵadvance(2); - $r3$.ɵɵi18nExp($r3$.ɵɵpipeBind1(2, 3, ctx.valueA)) - (ctx.valueA == null ? null : ctx.valueA.a == null ? null : ctx.valueA.a.b) - (($tmp_2_0$ = ctx.valueA.getRawValue()) == null ? null : $tmp_2_0$.getTitle()); - $r3$.ɵɵi18nApply(1); - } - } - `; - verify(input, output); - }); - - it('should handle i18n attributes with bindings in content', () => { - const input = ` -
My i18n block #{{ one }}
-
My i18n block #{{ two | uppercase }}
-
My i18n block #{{ three + four + five }}
- `; - - const i18n_0 = i18nMsg( - 'My i18n block #{$interpolation}', [['interpolation', String.raw`\uFFFD0\uFFFD`]]); - const i18n_1 = i18nMsg( - 'My i18n block #{$interpolation}', [['interpolation', String.raw`\uFFFD0\uFFFD`]]); - const i18n_2 = i18nMsg( - 'My i18n block #{$interpolation}', [['interpolation', String.raw`\uFFFD0\uFFFD`]]); - - const output = String.raw` - decls: 7, - vars: 5, - consts: function() { - ${i18n_0} - ${i18n_1} - ${i18n_2} - return [ - $i18n_0$, - $i18n_1$, - $i18n_2$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18n(1, 0); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementStart(2, "div"); - $r3$.ɵɵi18n(3, 1); - $r3$.ɵɵpipe(4, "uppercase"); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementStart(5, "div"); - $r3$.ɵɵi18n(6, 2); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(1); - $r3$.ɵɵi18nExp(ctx.one); - $r3$.ɵɵi18nApply(1); - $r3$.ɵɵadvance(3); - $r3$.ɵɵi18nExp($r3$.ɵɵpipeBind1(4, 3, ctx.two)); - $r3$.ɵɵi18nApply(3); - $r3$.ɵɵadvance(2); - $r3$.ɵɵi18nExp(ctx.three + ctx.four + ctx.five); - $r3$.ɵɵi18nApply(6); - } - } - `; - - verify(input, output); - }); - - it('should handle i18n attributes with bindings and nested elements in content', () => { - const input = ` -
- My i18n block #{{ one }} - Plain text in nested element -
-
- My i18n block #{{ two | uppercase }} -
-
- - More bindings in more nested element: {{ nestedInBlockTwo }} - -
-
-
- `; - - const i18n_0 = i18nMsg( - ' My i18n block #{$interpolation} {$startTagSpan}Plain text in nested element{$closeTagSpan}', - [ - ['interpolation', String.raw`\uFFFD0\uFFFD`], - ['startTagSpan', String.raw`\uFFFD#2\uFFFD`], - ['closeTagSpan', String.raw`\uFFFD/#2\uFFFD`] - ]); - const i18n_1 = i18nMsgWithPostprocess( - ' My i18n block #{$interpolation} {$startTagDiv}{$startTagDiv}{$startTagSpan} More bindings in more nested element: {$interpolation_1} {$closeTagSpan}{$closeTagDiv}{$closeTagDiv}', - [ - ['interpolation', String.raw`\uFFFD0\uFFFD`], - ['startTagDiv', String.raw`[\uFFFD#6\uFFFD|\uFFFD#7\uFFFD]`], - ['startTagSpan', String.raw`\uFFFD#8\uFFFD`], - ['interpolation_1', String.raw`\uFFFD1\uFFFD`], - ['closeTagSpan', String.raw`\uFFFD/#8\uFFFD`], - ['closeTagDiv', String.raw`[\uFFFD/#7\uFFFD|\uFFFD/#6\uFFFD]`] - ]); - - const output = String.raw` - decls: 9, - vars: 5, - consts: function() { - ${i18n_0} - ${i18n_1} - return [ - $i18n_0$, - $i18n_1$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18nStart(1, 0); - $r3$.ɵɵelement(2, "span"); - $r3$.ɵɵi18nEnd(); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementStart(3, "div"); - $r3$.ɵɵi18nStart(4, 1); - $r3$.ɵɵpipe(5, "uppercase"); - $r3$.ɵɵelementStart(6, "div"); - $r3$.ɵɵelementStart(7, "div"); - $r3$.ɵɵelement(8, "span"); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵi18nEnd(); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(2); - $r3$.ɵɵi18nExp(ctx.one); - $r3$.ɵɵi18nApply(1); - $r3$.ɵɵadvance(6); - $r3$.ɵɵi18nExp($r3$.ɵɵpipeBind1(5, 3, ctx.two))(ctx.nestedInBlockTwo); - $r3$.ɵɵi18nApply(4); - } - } - `; - - verify(input, output); - }); - - it('should handle i18n attributes with bindings in content and element attributes', () => { - const input = ` -
- My i18n block #1 with value: {{ valueA }} - - Plain text in nested element (block #1) - -
-
- My i18n block #2 with value {{ valueD | uppercase }} - - Plain text in nested element (block #2) - -
- `; - - const i18n_0 = i18nMsg('Span title {$interpolation} and {$interpolation_1}', [ - ['interpolation', String.raw`\uFFFD0\uFFFD`], ['interpolation_1', String.raw`\uFFFD1\uFFFD`] - ]); - const i18n_1 = i18nMsg( - ' My i18n block #1 with value: {$interpolation} {$startTagSpan} Plain text in nested element (block #1) {$closeTagSpan}', - [ - ['interpolation', String.raw`\uFFFD0\uFFFD`], - ['startTagSpan', String.raw`\uFFFD#2\uFFFD`], - ['closeTagSpan', String.raw`\uFFFD/#2\uFFFD`] - ]); - const i18n_2 = - i18nMsg('Span title {$interpolation}', [['interpolation', String.raw`\uFFFD0\uFFFD`]]); - const i18n_3 = i18nMsg( - ' My i18n block #2 with value {$interpolation} {$startTagSpan} Plain text in nested element (block #2) {$closeTagSpan}', - [ - ['interpolation', String.raw`\uFFFD0\uFFFD`], - ['startTagSpan', String.raw`\uFFFD#7\uFFFD`], - ['closeTagSpan', String.raw`\uFFFD/#7\uFFFD`] - ]); - - const output = String.raw` - decls: 9, - vars: 7, - consts: function() { - ${i18n_0} - ${i18n_1} - ${i18n_2} - ${i18n_3} - return [ - $i18n_0$, - [${AttributeMarker.I18n}, "title"], - ["title", $i18n_1$], - $i18n_2$, - ["title", $i18n_3$] - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18nStart(1, 0); - $r3$.ɵɵelementStart(2, "span", 1); - $r3$.ɵɵi18nAttributes(3, 2); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵi18nEnd(); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementStart(4, "div"); - $r3$.ɵɵi18nStart(5, 3); - $r3$.ɵɵpipe(6, "uppercase"); - $r3$.ɵɵelementStart(7, "span", 1); - $r3$.ɵɵi18nAttributes(8, 4); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵi18nEnd(); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(2); - $r3$.ɵɵi18nExp(ctx.valueB)(ctx.valueC); - $r3$.ɵɵi18nApply(3); - $r3$.ɵɵadvance(1); - $r3$.ɵɵi18nExp(ctx.valueA); - $r3$.ɵɵi18nApply(1); - $r3$.ɵɵadvance(4); - $r3$.ɵɵi18nExp(ctx.valueE); - $r3$.ɵɵi18nApply(8); - $r3$.ɵɵadvance(1); - $r3$.ɵɵi18nExp($r3$.ɵɵpipeBind1(6, 5, ctx.valueD)); - $r3$.ɵɵi18nApply(5); - } - } - `; - - verify(input, output); - }); - - it('should handle i18n attributes in nested templates', () => { - const input = ` -
- Some content -
-
- Some other content {{ valueA }} -
- More nested levels with bindings {{ valueB | uppercase }} -
-
-
-
- `; - - const i18n_0 = i18nMsg( - ' Some other content {$interpolation} {$startTagDiv} More nested levels with bindings {$interpolation_1} {$closeTagDiv}', - [ - ['interpolation', String.raw`\uFFFD0\uFFFD`], - ['startTagDiv', String.raw`\uFFFD#3\uFFFD`], - ['interpolation_1', String.raw`\uFFFD1\uFFFD`], - ['closeTagDiv', String.raw`\uFFFD/#3\uFFFD`] - ]); - - const output = String.raw` - function MyComponent_div_2_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵelementStart(1, "div"); - $r3$.ɵɵi18nStart(2, 1); - $r3$.ɵɵelement(3, "div"); - $r3$.ɵɵpipe(4, "uppercase"); - $r3$.ɵɵi18nEnd(); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - const $ctx_r0$ = $r3$.ɵɵnextContext(); - $r3$.ɵɵadvance(4); - $r3$.ɵɵi18nExp($ctx_r0$.valueA)($r3$.ɵɵpipeBind1(4, 2, $ctx_r0$.valueB)); - $r3$.ɵɵi18nApply(2); - } - } - … - decls: 3, - vars: 1, - consts: function() { - ${i18n_0} - return [ - [${AttributeMarker.Template}, "ngIf"], - $i18n_0$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵtext(1, " Some content "); - $r3$.ɵɵtemplate(2, MyComponent_div_2_Template, 5, 4, "div", 0); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(2); - $r3$.ɵɵproperty("ngIf", ctx.visible); - } - } - `; - - verify(input, output); - }); - - it('should ignore i18n attributes on self-closing tags', () => { - const input = ` - - - - `; - - const i18n_0 = - i18nMsg('App logo #{$interpolation}', [['interpolation', String.raw`\uFFFD0\uFFFD`]]); - - const output = String.raw` - function MyComponent_img_1_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "img", 0); - } - } - … - function MyComponent_img_2_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "img", 3); - $r3$.ɵɵi18nAttributes(1, 4); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - const $ctx_r1$ = $r3$.ɵɵnextContext(); - $r3$.ɵɵi18nExp($ctx_r1$.id); - $r3$.ɵɵi18nApply(1); - } - } - … - decls: 3, - vars: 2, - consts: function() { - ${i18n_0} - return [ - ["src", "logo.png"], - ["src", "logo.png", ${AttributeMarker.Template}, "ngIf"], - ["src", "logo.png", ${AttributeMarker.Bindings}, "title", - ${AttributeMarker.Template}, "ngIf"], - ["src", "logo.png", ${AttributeMarker.I18n}, "title"], - ["title", $i18n_0$] - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "img", 0); - $r3$.ɵɵtemplate(1, MyComponent_img_1_Template, 1, 0, "img", 1); - $r3$.ɵɵtemplate(2, MyComponent_img_2_Template, 2, 1, "img", 2); - } - if (rf & 2) { - $r3$.ɵɵadvance(1); - $r3$.ɵɵproperty("ngIf", ctx.visible); - $r3$.ɵɵadvance(1); - $r3$.ɵɵproperty("ngIf", ctx.visible); - } - } - `; - - verify(input, output); - }); - - it('should handle i18n context in nested templates', () => { - const input = ` -
- Some content -
- Some other content {{ valueA }} -
- More nested levels with bindings {{ valueB | uppercase }} -
- Content inside sub-template {{ valueC }} -
- Bottom level element {{ valueD }} -
-
-
-
-
- Some other content {{ valueE + valueF }} -
- More nested levels with bindings {{ valueG | uppercase }} -
-
-
- `; - - const i18n_0 = i18nMsgWithPostprocess( - ' Some content {$startTagDiv_2} Some other content {$interpolation} {$startTagDiv} More nested levels with bindings {$interpolation_1} {$startTagDiv_1} Content inside sub-template {$interpolation_2} {$startTagDiv} Bottom level element {$interpolation_3} {$closeTagDiv}{$closeTagDiv}{$closeTagDiv}{$closeTagDiv}{$startTagDiv_3} Some other content {$interpolation_4} {$startTagDiv} More nested levels with bindings {$interpolation_5} {$closeTagDiv}{$closeTagDiv}', - [ - ['startTagDiv_2', String.raw`\uFFFD*2:1\uFFFD\uFFFD#1:1\uFFFD`], - [ - 'closeTagDiv', - String - .raw`[\uFFFD/#2:2\uFFFD|\uFFFD/#1:2\uFFFD\uFFFD/*4:2\uFFFD|\uFFFD/#2:1\uFFFD|\uFFFD/#1:1\uFFFD\uFFFD/*2:1\uFFFD|\uFFFD/#2:3\uFFFD|\uFFFD/#1:3\uFFFD\uFFFD/*3:3\uFFFD]` - ], - ['startTagDiv_3', String.raw`\uFFFD*3:3\uFFFD\uFFFD#1:3\uFFFD`], - ['interpolation', String.raw`\uFFFD0:1\uFFFD`], - ['startTagDiv', String.raw`[\uFFFD#2:1\uFFFD|\uFFFD#2:2\uFFFD|\uFFFD#2:3\uFFFD]`], - ['interpolation_1', String.raw`\uFFFD1:1\uFFFD`], - ['startTagDiv_1', String.raw`\uFFFD*4:2\uFFFD\uFFFD#1:2\uFFFD`], - ['interpolation_2', String.raw`\uFFFD0:2\uFFFD`], - ['interpolation_3', String.raw`\uFFFD1:2\uFFFD`], - ['interpolation_4', String.raw`\uFFFD0:3\uFFFD`], - ['interpolation_5', String.raw`\uFFFD1:3\uFFFD`] - ]); - - const output = String.raw` - function MyComponent_div_2_div_4_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵi18nStart(0, 0, 2); - $r3$.ɵɵelementStart(1, "div"); - $r3$.ɵɵelement(2, "div"); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵi18nEnd(); - } - if (rf & 2) { - const $ctx_r2$ = $r3$.ɵɵnextContext(2); - $r3$.ɵɵadvance(2); - $r3$.ɵɵi18nExp($ctx_r2$.valueC)($ctx_r2$.valueD); - $r3$.ɵɵi18nApply(0); - } - } - function MyComponent_div_2_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵi18nStart(0, 0, 1); - $r3$.ɵɵelementStart(1, "div"); - $r3$.ɵɵelementStart(2, "div"); - $r3$.ɵɵpipe(3, "uppercase"); - $r3$.ɵɵtemplate(4, MyComponent_div_2_div_4_Template, 3, 2, "div", 1); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵi18nEnd(); - } - if (rf & 2) { - const $ctx_r0$ = $r3$.ɵɵnextContext(); - $r3$.ɵɵadvance(4); - $r3$.ɵɵproperty("ngIf", $ctx_r0$.exists); - $r3$.ɵɵi18nExp($ctx_r0$.valueA)($r3$.ɵɵpipeBind1(3, 3, $ctx_r0$.valueB)); - $r3$.ɵɵi18nApply(0); - } - } - … - function MyComponent_div_3_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵi18nStart(0, 0, 3); - $r3$.ɵɵelementStart(1, "div"); - $r3$.ɵɵelement(2, "div"); - $r3$.ɵɵpipe(3, "uppercase"); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵi18nEnd(); - } - if (rf & 2) { - const $ctx_r1$ = $r3$.ɵɵnextContext(); - $r3$.ɵɵadvance(3); - $r3$.ɵɵi18nExp($ctx_r1$.valueE + $ctx_r1$.valueF)($r3$.ɵɵpipeBind1(3, 2, $ctx_r1$.valueG)); - $r3$.ɵɵi18nApply(0); - } - } - … - decls: 4, - vars: 2, - consts: function() { - ${i18n_0} - return [ - $i18n_0$, - [${AttributeMarker.Template}, "ngIf"] - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18nStart(1, 0); - $r3$.ɵɵtemplate(2, MyComponent_div_2_Template, 5, 5, "div", 1); - $r3$.ɵɵtemplate(3, MyComponent_div_3_Template, 4, 4, "div", 1); - $r3$.ɵɵi18nEnd(); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(2); - $r3$.ɵɵproperty("ngIf", ctx.visible); - $r3$.ɵɵadvance(1); - $r3$.ɵɵproperty("ngIf", !ctx.visible); - } - } - `; - - verify(input, output); - }); - - it('should handle i18n attribute with directives', () => { - const input = ` -
Some other content {{ valueA }}
- `; - - const i18n_0 = i18nMsg('Some other content {$startTagSpan}{$interpolation}{$closeTagSpan}', [ - ['startTagSpan', String.raw`\uFFFD#2\uFFFD`], ['interpolation', String.raw`\uFFFD0\uFFFD`], - ['closeTagSpan', String.raw`\uFFFD/#2\uFFFD`] - ]); - - const output = String.raw` - function MyComponent_div_0_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18nStart(1, 1); - $r3$.ɵɵelement(2, "span"); - $r3$.ɵɵi18nEnd(); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - const $ctx_r0$ = $r3$.ɵɵnextContext(); - $r3$.ɵɵadvance(2); - $r3$.ɵɵi18nExp($ctx_r0$.valueA); - $r3$.ɵɵi18nApply(1); - } - } - … - decls: 1, - vars: 1, - consts: function() { - ${i18n_0} - return [ - [${AttributeMarker.Template}, "ngIf"], - $i18n_0$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtemplate(0, MyComponent_div_0_Template, 3, 1, "div", 0); - } - if (rf & 2) { - $r3$.ɵɵproperty("ngIf", ctx.visible); - } - } - `; - - verify(input, output); - }); - - it('should generate event listeners instructions before i18n ones', () => { - const input = ` -
Hello
- `; - - const i18n_0 = i18nMsg('Hello'); - - const output = String.raw` - consts: function() { - ${i18n_0} - return [ - [${AttributeMarker.Bindings}, "click"], - $i18n_0$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div", 0); - $r3$.ɵɵlistener("click", function MyComponent_Template_div_click_0_listener() { return ctx.onClick(); }); - $r3$.ɵɵi18n(1, 1); - $r3$.ɵɵelementEnd(); - } - } - `; - - verify(input, output); - }); - }); - - describe('self-closing i18n instructions', () => { - it('should be generated with text-only content', () => { - const input = ` -
My i18n block #1
- `; - - const i18n_0 = i18nMsg('My i18n block #1'); - - const output = String.raw` - consts: function() { - ${i18n_0} - return [ - $i18n_0$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18n(1, 0); - $r3$.ɵɵelementEnd(); - } - } - `; - - verify(input, output); - }); - - it('should be generated for ICU-only i18n blocks', () => { - const input = ` -
{age, select, 10 {ten} 20 {twenty} other {other}}
- `; - - const i18n_0 = i18nIcuMsg( - '{VAR_SELECT, select, 10 {ten} 20 {twenty} other {other}}', - [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`]]); - - const output = String.raw` - decls: 2, - vars: 1, - consts: function() { - ${i18n_0} - return [ - $i18n_0$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18n(1, 0); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(1); - $r3$.ɵɵi18nExp(ctx.age); - $r3$.ɵɵi18nApply(1); - } - } - `; - - verify(input, output); - }); - - it('should be generated within and blocks', () => { - const input = ` - My i18n block #1 - My i18n block #2 - `; - - const i18n_0 = i18nMsg('My i18n block #2'); - const i18n_1 = i18nMsg('My i18n block #1'); - - const output = String.raw` - function MyComponent_ng_template_0_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵi18n(0, 1); - } - } - … - consts: function() { - ${i18n_0} - ${i18n_1} - return [ - $i18n_0$, - $i18n_1$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtemplate(0, MyComponent_ng_template_0_Template, 1, 0, "ng-template"); - $r3$.ɵɵelementContainerStart(1); - $r3$.ɵɵi18n(2, 0); - $r3$.ɵɵelementContainerEnd(); - } - } - `; - - verify(input, output); - }); - - it('should not be generated in case we have styling instructions', () => { - const input = ` - Text #1 - Text #2 - `; - - const i18n_0 = i18nMsg('Text #1'); - const i18n_1 = i18nMsg('Text #2'); - - const output = String.raw` - decls: 4, - vars: 0, - consts: function() { - ${i18n_0} - ${i18n_1} - return [ - [${AttributeMarker.Classes}, "myClass"], - $i18n_0$, - [${AttributeMarker.Styles}, "padding", "10px"], - $i18n_1$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "span", 0); - $r3$.ɵɵi18n(1, 1); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementStart(2, "span", 2); - $r3$.ɵɵi18n(3, 3); - $r3$.ɵɵelementEnd(); - } - } - `; - - verify(input, output); - }); - }); - - describe('ng-container and ng-template', () => { - it('should handle single translation message using ', () => { - const input = ` - Some content: {{ valueA | uppercase }} - `; - - const i18n_0 = - i18nMsg('Some content: {$interpolation}', [['interpolation', String.raw`\uFFFD0\uFFFD`]]); - - const output = String.raw` - decls: 3, - vars: 3, - consts: function() { - ${i18n_0} - return [ - $i18n_0$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementContainerStart(0); - $r3$.ɵɵi18n(1, 0); - $r3$.ɵɵpipe(2, "uppercase"); - $r3$.ɵɵelementContainerEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(2); - $r3$.ɵɵi18nExp($r3$.ɵɵpipeBind1(2, 1, ctx.valueA)); - $r3$.ɵɵi18nApply(1); - } - } - `; - - verify(input, output); - }); - - it('should handle single translation message using ', () => { - const input = ` - Some content: {{ valueA | uppercase }} - `; - - const i18n_0 = - i18nMsg('Some content: {$interpolation}', [['interpolation', String.raw`\uFFFD0\uFFFD`]]); - - const output = String.raw` - function MyComponent_ng_template_0_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵi18n(0, 0); - $r3$.ɵɵpipe(1, "uppercase"); - } if (rf & 2) { - const $ctx_r0$ = $r3$.ɵɵnextContext(); - $r3$.ɵɵadvance(1); - $r3$.ɵɵi18nExp($r3$.ɵɵpipeBind1(1, 1, $ctx_r0$.valueA)); - $r3$.ɵɵi18nApply(0); - } - } - … - decls: 1, - vars: 0, - consts: function() { - ${i18n_0} - return [ - $i18n_0$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtemplate(0, MyComponent_ng_template_0_Template, 2, 3, "ng-template"); - } - } - `; - - verify(input, output); - }); - - it('should be able to act as child elements inside i18n block', () => { - const input = ` -
- Template content: {{ valueA | uppercase }} - Container content: {{ valueB | uppercase }} -
- `; - - const i18n_0 = i18nMsg( - '{$startTagNgTemplate}Template content: {$interpolation}{$closeTagNgTemplate}{$startTagNgContainer}Container content: {$interpolation_1}{$closeTagNgContainer}', - [ - ['startTagNgTemplate', String.raw`\uFFFD*2:1\uFFFD`], - ['closeTagNgTemplate', String.raw`\uFFFD/*2:1\uFFFD`], - ['startTagNgContainer', String.raw`\uFFFD#3\uFFFD`], - ['interpolation_1', String.raw`\uFFFD0\uFFFD`], - ['closeTagNgContainer', String.raw`\uFFFD/#3\uFFFD`], - ['interpolation', String.raw`\uFFFD0:1\uFFFD`] - ]); - - const output = String.raw` - function MyComponent_ng_template_2_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵi18n(0, 0, 1); - $r3$.ɵɵpipe(1, "uppercase"); - } - if (rf & 2) { - const $ctx_r0$ = $r3$.ɵɵnextContext(); - $r3$.ɵɵadvance(1); - $r3$.ɵɵi18nExp($r3$.ɵɵpipeBind1(1, 1, $ctx_r0$.valueA)); - $r3$.ɵɵi18nApply(0); - } - } - … - decls: 5, - vars: 3, - consts: function() { - ${i18n_0} - return [ - $i18n_0$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18nStart(1, 0); - $r3$.ɵɵtemplate(2, MyComponent_ng_template_2_Template, 2, 3, "ng-template"); - $r3$.ɵɵelementContainer(3); - $r3$.ɵɵpipe(4, "uppercase"); - $r3$.ɵɵi18nEnd(); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(4); - $r3$.ɵɵi18nExp($r3$.ɵɵpipeBind1(4, 1, ctx.valueB)); - $r3$.ɵɵi18nApply(1); - } - } - `; - - verify(input, output); - }); - - it('should handle ICUs outside of translatable sections', () => { - const input = ` - {gender, select, male {male} female {female} other {other}} - {age, select, 10 {ten} 20 {twenty} other {other}} - `; - - const i18n_0 = i18nIcuMsg( - '{VAR_SELECT, select, 10 {ten} 20 {twenty} other {other}}', - [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`]]); - const i18n_1 = i18nIcuMsg( - '{VAR_SELECT, select, male {male} female {female} other {other}}', - [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`]]); - - const output = String.raw` - function MyComponent_ng_template_0_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵi18n(0, 1); - } - if (rf & 2) { - const $ctx_r0$ = $r3$.ɵɵnextContext(); - $r3$.ɵɵi18nExp($ctx_r0$.gender); - $r3$.ɵɵi18nApply(0); - } - } - … - decls: 3, - vars: 1, - consts: function() { - ${i18n_0} - ${i18n_1} - return [ - $i18n_0$, - $i18n_1$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtemplate(0, MyComponent_ng_template_0_Template, 1, 1, "ng-template"); - $r3$.ɵɵelementContainerStart(1); - $r3$.ɵɵi18n(2, 0); - $r3$.ɵɵelementContainerEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(2); - $r3$.ɵɵi18nExp(ctx.age); - $r3$.ɵɵi18nApply(2); - } - } - `; - - verify(input, output); - }); - - it('should correctly propagate i18n context through nested templates', () => { - const input = ` -
- - Template A: {{ valueA | uppercase }} - - Template B: {{ valueB }} - - Template C: {{ valueC }} - - - -
- `; - - const i18n_0 = i18nMsgWithPostprocess( - '{$startTagNgTemplate} Template A: {$interpolation} {$startTagNgTemplate} Template B: {$interpolation_1} {$startTagNgTemplate} Template C: {$interpolation_2} {$closeTagNgTemplate}{$closeTagNgTemplate}{$closeTagNgTemplate}', - [ - [ - 'startTagNgTemplate', String.raw`[\uFFFD*2:1\uFFFD|\uFFFD*2:2\uFFFD|\uFFFD*1:3\uFFFD]` - ], - [ - 'closeTagNgTemplate', - String.raw`[\uFFFD/*1:3\uFFFD|\uFFFD/*2:2\uFFFD|\uFFFD/*2:1\uFFFD]` - ], - ['interpolation', String.raw`\uFFFD0:1\uFFFD`], - ['interpolation_1', String.raw`\uFFFD0:2\uFFFD`], - ['interpolation_2', String.raw`\uFFFD0:3\uFFFD`] - ]); - - const output = String.raw` - function MyComponent_ng_template_2_ng_template_2_ng_template_1_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵi18n(0, 0, 3); - } - if (rf & 2) { - const $ctx_r2$ = $r3$.ɵɵnextContext(3); - $r3$.ɵɵi18nExp($ctx_r2$.valueC); - $r3$.ɵɵi18nApply(0); - } - } - function MyComponent_ng_template_2_ng_template_2_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵi18nStart(0, 0, 2); - $r3$.ɵɵtemplate(1, MyComponent_ng_template_2_ng_template_2_ng_template_1_Template, 1, 1, "ng-template"); - $r3$.ɵɵi18nEnd(); - } - if (rf & 2) { - const $ctx_r1$ = $r3$.ɵɵnextContext(2); - $r3$.ɵɵadvance(1); - $r3$.ɵɵi18nExp($ctx_r1$.valueB); - $r3$.ɵɵi18nApply(0); - } - } - … - function MyComponent_ng_template_2_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵi18nStart(0, 0, 1); - $r3$.ɵɵpipe(1, "uppercase"); - $r3$.ɵɵtemplate(2, MyComponent_ng_template_2_ng_template_2_Template, 2, 1, "ng-template"); - $r3$.ɵɵi18nEnd(); - } - if (rf & 2) { - const $ctx_r0$ = $r3$.ɵɵnextContext(); - $r3$.ɵɵadvance(2); - $r3$.ɵɵi18nExp($r3$.ɵɵpipeBind1(1, 1, $ctx_r0$.valueA)); - $r3$.ɵɵi18nApply(0); - } - } - … - decls: 3, - vars: 0, - consts: function() { - ${i18n_0} - return [ - $i18n_0$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18nStart(1, 0); - $r3$.ɵɵtemplate(2, MyComponent_ng_template_2_Template, 3, 3, "ng-template"); - $r3$.ɵɵi18nEnd(); - $r3$.ɵɵelementEnd(); - } - } - `; - - verify(input, output); - }); - - it('should work with ICUs', () => { - const input = ` - {gender, select, male {male} female {female} other {other}} - {age, select, 10 {ten} 20 {twenty} other {other}} - `; - - const i18n_0 = i18nIcuMsg( - '{VAR_SELECT, select, male {male} female {female} other {other}}', - [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`]]); - const i18n_1 = i18nIcuMsg( - '{VAR_SELECT, select, 10 {ten} 20 {twenty} other {other}}', - [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`]]); - - const output = String.raw` - function MyComponent_ng_template_2_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵi18n(0, 1); - } - if (rf & 2) { - const $ctx_r0$ = $r3$.ɵɵnextContext(); - $r3$.ɵɵi18nExp($ctx_r0$.age); - $r3$.ɵɵi18nApply(0); - } - } - … - decls: 3, - vars: 1, - consts: function() { - ${i18n_0} - ${i18n_1} - return [ - $i18n_0$, - $i18n_1$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementContainerStart(0); - $r3$.ɵɵi18n(1, 0); - $r3$.ɵɵelementContainerEnd(); - $r3$.ɵɵtemplate(2, MyComponent_ng_template_2_Template, 1, 1, "ng-template"); - } - if (rf & 2) { - $r3$.ɵɵadvance(1); - $r3$.ɵɵi18nExp(ctx.gender); - $r3$.ɵɵi18nApply(1); - } - } - `; - - verify(input, output); - }); - - it('should handle self-closing tags as content', () => { - const input = ` - - is my logo #1 - - - is my logo #2 - - `; - - const i18n_0 = i18nMsg( - '{$tagImg} is my logo #1 ', [['tagImg', String.raw`\uFFFD#2\uFFFD\uFFFD/#2\uFFFD`]]); - const i18n_1 = i18nMsg( - '{$tagImg} is my logo #2 ', [['tagImg', String.raw`\uFFFD#1\uFFFD\uFFFD/#1\uFFFD`]]); - - const output = String.raw` - function MyComponent_ng_template_3_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵi18nStart(0, 2); - $r3$.ɵɵelement(1, "img", 1); - $r3$.ɵɵi18nEnd(); - } - } - … - consts: function() { - ${i18n_0} - ${i18n_1} - return [ - $i18n_0$, - ["src", "logo.png", "title", "Logo"], - $i18n_1$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementContainerStart(0); - $r3$.ɵɵi18nStart(1, 0); - $r3$.ɵɵelement(2, "img", 1); - $r3$.ɵɵi18nEnd(); - $r3$.ɵɵelementContainerEnd(); - $r3$.ɵɵtemplate(3, MyComponent_ng_template_3_Template, 2, 0, "ng-template"); - } - } - `; - - verify(input, output); - }); - - it('should not emit duplicate i18n consts for nested s', () => { - const input = ` - - Root content - - Nested content - - - `; - - const output = - i18nMsg(' Root content {$startTagNgContainer} Nested content {$closeTagNgContainer}', [ - ['startTagNgContainer', String.raw`\uFFFD*1:1\uFFFD\uFFFD#1:1\uFFFD`], - ['closeTagNgContainer', String.raw`\uFFFD/#1:1\uFFFD\uFFFD/*1:1\uFFFD`] - ]); - - verify(input, output); - }); - - it('should not emit duplicate i18n consts for elements with the same content', () => { - const input = ` -
Test
-
Test
- `; - - // TODO(FW-635): currently we generate unique consts for each i18n block even though it - // might contain the same content. This should be optimized by translation statements caching, - // that can be implemented in the future. - const output = String.raw` - ${i18nMsg('Test')} - ${i18nMsg('Test')} - `; - - verify(input, output); - }); - - it('should generate a self-closing container instruction for ng-container inside i18n', () => { - const input = ` -
- Hello there -
- `; - - const i18n_0 = i18nMsg(' Hello {$startTagNgContainer}there{$closeTagNgContainer}', [ - ['startTagNgContainer', String.raw`\uFFFD#2\uFFFD`], - ['closeTagNgContainer', String.raw`\uFFFD/#2\uFFFD`] - ]); - - const output = String.raw` - decls: 3, - vars: 0, - consts: function() { - ${i18n_0} - return [ - $i18n_0$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18nStart(1, 0); - $r3$.ɵɵelementContainer(2); - $r3$.ɵɵi18nEnd(); - $r3$.ɵɵelementEnd(); - } - } - `; - - verify(input, output); - }); - - it('should not generate a self-closing container instruction for ng-container with non-text content inside i18n', - () => { - const input = ` -
- Hello there ! -
- `; - - const i18n_0 = i18nMsg( - ' Hello {$startTagNgContainer}there {$startTagStrong}!{$closeTagStrong}{$closeTagNgContainer}', - [ - ['startTagNgContainer', String.raw`\uFFFD#2\uFFFD`], - ['startTagStrong', String.raw`\uFFFD#3\uFFFD`], - ['closeTagStrong', String.raw`\uFFFD/#3\uFFFD`], - ['closeTagNgContainer', String.raw`\uFFFD/#2\uFFFD`] - ]); - - const output = String.raw` - decls: 4, - vars: 0, - consts: function() { - ${i18n_0} - return [ - $i18n_0$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18nStart(1, 0); - $r3$.ɵɵelementContainerStart(2); - $r3$.ɵɵelement(3, "strong"); - $r3$.ɵɵelementContainerEnd(); - $r3$.ɵɵi18nEnd(); - $r3$.ɵɵelementEnd(); - } - } - `; - - verify(input, output); - }); - - // Note: applying structural directives to is typically user error, - // but it is technically allowed, so we need to support it. - it('should handle structural directives', () => { - const input = ` - Content A - Content B - `; - - const i18n_0 = i18nMsg('Content A'); - const i18n_1 = i18nMsg('Content B'); - - const output = String.raw` - function MyComponent_0_ng_template_0_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵi18n(0, 1); - } - } - function MyComponent_0_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtemplate(0, MyComponent_0_ng_template_0_Template, 1, 0, "ng-template"); - } - } - … - function MyComponent_ng_container_1_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementContainerStart(0); - $r3$.ɵɵi18n(1, 2); - $r3$.ɵɵelementContainerEnd(); - } - } - … - decls: 2, - vars: 2, - consts: function() { - ${i18n_0} - ${i18n_1} - return [ - [${AttributeMarker.Template}, "ngIf"], - $i18n_0$, - $i18n_1$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtemplate(0, MyComponent_0_Template, 1, 0, undefined, 0); - $r3$.ɵɵtemplate(1, MyComponent_ng_container_1_Template, 2, 0, "ng-container", 0); - } - if (rf & 2) { - $r3$.ɵɵproperty("ngIf", ctx.someFlag); - $r3$.ɵɵadvance(1); - $r3$.ɵɵproperty("ngIf", ctx.someFlag); - } - } - `; - verify(input, output); - }); - }); - - describe('whitespace preserving mode', () => { - it('should keep inner content of i18n block as is', () => { - const input = ` -
- Some text - Text inside span -
- `; - - // Keeping raw content (avoiding `i18nMsg`) to illustrate message layout - // in case of whitespace preserving mode. - const i18n_0 = String.raw` - let $I18N_0$; - if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) { - const $MSG_EXTERNAL_963542717423364282$$APP_SPEC_TS_0$ = goog.getMsg("\n Some text\n {$startTagSpan}Text inside span{$closeTagSpan}\n ", { - "startTagSpan": "\uFFFD#3\uFFFD", - "closeTagSpan": "\uFFFD/#3\uFFFD" - }); - $I18N_0$ = $MSG_EXTERNAL_963542717423364282$$APP_SPEC_TS_0$; - } - else { - $I18N_0$ = $localize \` - Some text - $` + - String.raw`{"\uFFFD#3\uFFFD"}:START_TAG_SPAN:Text inside span$` + - String.raw`{"\uFFFD/#3\uFFFD"}:CLOSE_TAG_SPAN: - \`; - } - `; - - const output = String.raw` - consts: function() { - ${i18n_0} - return [ - $i18n_0$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtext(0, "\n "); - $r3$.ɵɵelementStart(1, "div"); - $r3$.ɵɵi18nStart(2, 0); - $r3$.ɵɵelement(3, "span"); - $r3$.ɵɵi18nEnd(); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵtext(4, "\n "); - } - } - `; - - verify(input, output, {inputArgs: {preserveWhitespaces: true}}); - }); - }); - - describe('icu logic', () => { - it('should handle single icus', () => { - const input = ` -
{gender, select, male {male} female {female} other {other}}
- `; - - const i18n_0 = i18nIcuMsg( - '{VAR_SELECT, select, male {male} female {female} other {other}}', - [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`]]); - - const output = String.raw` - decls: 2, - vars: 1, - consts: function() { - ${i18n_0} - return [ - $i18n_0$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18n(1, 0); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(1); - $r3$.ɵɵi18nExp(ctx.gender); - $r3$.ɵɵi18nApply(1); - } - } - `; - - verify(input, output); - }); - - it('should properly escape quotes in content', () => { - const input = ` -
{gender, select, single {'single quotes'} double {"double quotes"} other {other}}
- `; - - const output = String.raw` - let $I18N_0$; - if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) { - const $MSG_EXTERNAL_4166854826696768832$$APP_SPEC_TS_0$ = goog.getMsg("{VAR_SELECT, select, single {'single quotes'} double {\"double quotes\"} other {other}}"); - $I18N_0$ = $MSG_EXTERNAL_4166854826696768832$$APP_SPEC_TS_0$; - } - else { - $I18N_0$ = $localize \`{VAR_SELECT, select, single {'single quotes'} double {"double quotes"} other {other}}\`; - } - $I18N_0$ = $r3$.ɵɵi18nPostprocess($I18N_0$, { - "VAR_SELECT": "\uFFFD0\uFFFD" - }); - `; - - verify(input, output); - }); - - it('should support ICU-only templates', () => { - const input = ` - {age, select, 10 {ten} 20 {twenty} other {other}} - `; - - const i18n_0 = i18nIcuMsg( - '{VAR_SELECT, select, 10 {ten} 20 {twenty} other {other}}', - [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`]]); - - const output = String.raw` - decls: 1, - vars: 1, - consts: function() { - ${i18n_0} - return [ - $i18n_0$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵi18n(0, 0); - } - if (rf & 2) { - $r3$.ɵɵi18nExp(ctx.age); - $r3$.ɵɵi18nApply(0); - } - } - `; - - verify(input, output); - }); - - it('should generate i18n instructions for icus generated outside of i18n blocks', () => { - const input = ` -
{gender, select, male {male} female {female} other {other}}
-
- {age, select, 10 {ten} 20 {twenty} other {other}} -
-
- You have {count, select, 0 {no emails} 1 {one email} other {{{count}} emails}}. -
- `; - - const i18n_0 = i18nIcuMsg( - '{VAR_SELECT, select, male {male} female {female} other {other}}', - [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`]]); - const i18n_1 = i18nIcuMsg( - '{VAR_SELECT, select, 10 {ten} 20 {twenty} other {other}}', - [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`]]); - const i18n_2 = i18nIcuMsg( - '{VAR_SELECT, select, 0 {no emails} 1 {one email} other {{INTERPOLATION} emails}}', [ - ['VAR_SELECT', String.raw`\uFFFD0\uFFFD`], ['INTERPOLATION', String.raw`\uFFFD1\uFFFD`] - ]); - - const output = String.raw` - function MyComponent_div_2_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div", 3); - $r3$.ɵɵtext(1, " "); - $r3$.ɵɵi18n(2, 4); - $r3$.ɵɵtext(3, " "); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - const $ctx_r0$ = $r3$.ɵɵnextContext(); - $r3$.ɵɵadvance(2); - $r3$.ɵɵi18nExp($ctx_r0$.age); - $r3$.ɵɵi18nApply(2); - } - } - … - function MyComponent_div_3_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div", 5); - $r3$.ɵɵtext(1, " You have "); - $r3$.ɵɵi18n(2, 6); - $r3$.ɵɵtext(3, ". "); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - const $ctx_r1$ = $r3$.ɵɵnextContext(); - $r3$.ɵɵadvance(2); - $r3$.ɵɵi18nExp($ctx_r1$.count)($ctx_r1$.count); - $r3$.ɵɵi18nApply(2); - } - } - … - decls: 4, - vars: 3, - consts: function() { - ${i18n_0} - ${i18n_1} - ${i18n_2} - return [ - $i18n_0$, - ["title", "icu only", ${AttributeMarker.Template}, "ngIf"], - ["title", "icu and text", ${AttributeMarker.Template}, "ngIf"], - ["title", "icu only"], - $i18n_1$, - ["title", "icu and text"], - $i18n_2$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18n(1, 0); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵtemplate(2, MyComponent_div_2_Template, 4, 1, "div", 1); - $r3$.ɵɵtemplate(3, MyComponent_div_3_Template, 4, 2, "div", 2); - } - if (rf & 2) { - $r3$.ɵɵadvance(1); - $r3$.ɵɵi18nExp(ctx.gender); - $r3$.ɵɵi18nApply(1); - $r3$.ɵɵadvance(1); - $r3$.ɵɵproperty("ngIf", ctx.visible); - $r3$.ɵɵadvance(1); - $r3$.ɵɵproperty("ngIf", ctx.available); - } - } - `; - - verify(input, output); - }); - - it('should support interpolation with custom interpolation config', () => { - const input = ` -
{age, select, 10 {ten} 20 {twenty} other {{% other %}}}
- `; - - const i18n_0 = - i18nIcuMsg('{VAR_SELECT, select, 10 {ten} 20 {twenty} other {{INTERPOLATION}}}', [ - ['VAR_SELECT', String.raw`\uFFFD0\uFFFD`], ['INTERPOLATION', String.raw`\uFFFD1\uFFFD`] - ]); - - const output = String.raw` - consts: function() { - ${i18n_0} - return [ - $i18n_0$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18n(1, 0); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(1); - $r3$.ɵɵi18nExp(ctx.age)(ctx.other); - $r3$.ɵɵi18nApply(1); - } - } - `; - - verify(input, output, {inputArgs: {interpolation: ['{%', '%}']}}); - }); - - it('should handle icus with html', () => { - const input = ` -
- {gender, select, male {male - male} female {female female} other {
other
}} - Other content -
Another content
-
- `; - - const i18n_0 = i18nIcuMsg( - '{VAR_SELECT, select, male {male - {START_BOLD_TEXT}male{CLOSE_BOLD_TEXT}} female {female {START_BOLD_TEXT}female{CLOSE_BOLD_TEXT}} other {{START_TAG_DIV}{START_ITALIC_TEXT}other{CLOSE_ITALIC_TEXT}{CLOSE_TAG_DIV}}}', - [ - ['VAR_SELECT', String.raw`\uFFFD0\uFFFD`], - ['START_BOLD_TEXT', ''], - ['CLOSE_BOLD_TEXT', ''], - ['START_ITALIC_TEXT', ''], - ['CLOSE_ITALIC_TEXT', ''], - ['START_TAG_DIV', '
'], - ['CLOSE_TAG_DIV', '
'], - ]); - - const i18n_1 = i18nMsg( - ' {$icu} {$startBoldText}Other content{$closeBoldText}{$startTagDiv}{$startItalicText}Another content{$closeItalicText}{$closeTagDiv}', - [ - ['startBoldText', String.raw`\uFFFD#2\uFFFD`], - ['closeBoldText', String.raw`\uFFFD/#2\uFFFD`], - ['startTagDiv', String.raw`\uFFFD#3\uFFFD`], - ['startItalicText', String.raw`\uFFFD#4\uFFFD`], - ['closeItalicText', String.raw`\uFFFD/#4\uFFFD`], - ['closeTagDiv', String.raw`\uFFFD/#3\uFFFD`], - ['icu', '$I18N_0$'], - ]); - - const output = String.raw` - decls: 5, - vars: 1, - consts: function() { - ${i18n_0} - ${i18n_1} - return [ - $i18n_1$, - [${AttributeMarker.Classes}, "other"] - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18nStart(1, 0); - $r3$.ɵɵelement(2, "b"); - $r3$.ɵɵelementStart(3, "div", 1); - $r3$.ɵɵelement(4, "i"); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵi18nEnd(); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(4); - $r3$.ɵɵi18nExp(ctx.gender); - $r3$.ɵɵi18nApply(1); - } - } - `; - - verify(input, output); - }); - - it('should handle icus with expressions', () => { - const input = ` -
{gender, select, male {male of age: {{ ageA + ageB + ageC }}} female {female} other {other}}
- `; - - const i18n_0 = i18nIcuMsg( - '{VAR_SELECT, select, male {male of age: {INTERPOLATION}} female {female} other {other}}', - [ - ['VAR_SELECT', String.raw`\uFFFD0\uFFFD`], - ['INTERPOLATION', String.raw`\uFFFD1\uFFFD`], - ]); - - const output = String.raw` - decls: 2, - vars: 2, - consts: function() { - ${i18n_0} - return [ - $i18n_0$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18n(1, 0); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(1); - $r3$.ɵɵi18nExp(ctx.gender)(ctx.ageA + ctx.ageB + ctx.ageC); - $r3$.ɵɵi18nApply(1); - } - } - `; - - verify(input, output); - }); - - it('should handle multiple icus in one block', () => { - const input = ` -
- {gender, select, male {male} female {female} other {other}} - {age, select, 10 {ten} 20 {twenty} 30 {thirty} other {other}} -
- `; - - const i18n_0 = i18nIcuMsg( - '{VAR_SELECT, select, male {male} female {female} other {other}}', - [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`]]); - const i18n_1 = i18nIcuMsg( - '{VAR_SELECT, select, 10 {ten} 20 {twenty} 30 {thirty} other {other}}', - [['VAR_SELECT', String.raw`\uFFFD1\uFFFD`]]); - const i18n_2 = i18nMsg(' {$icu} {$icu_1} ', [ - ['icu', '$i18n_0$'], - ['icu_1', '$i18n_1$'], - ]); - - const output = String.raw` - decls: 2, - vars: 2, - consts: function() { - ${i18n_0} - ${i18n_1} - ${i18n_2} - return [ - $i18n_2$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18n(1, 0); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(1); - $r3$.ɵɵi18nExp(ctx.gender)(ctx.age); - $r3$.ɵɵi18nApply(1); - } - } - `; - - verify(input, output); - }); - - it('should handle multiple icus that share same placeholder', () => { - const input = ` -
- {gender, select, male {male} female {female} other {other}} -
- {gender, select, male {male} female {female} other {other}} -
-
- {gender, select, male {male} female {female} other {other}} -
-
- `; - - // Keeping raw content here to illustrate the difference in placeholders generated for - // goog.getMsg and $localize calls (see last i18n block). - const i18n_0 = String.raw` - let $I18N_1$; - if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) { - const $MSG_APP_SPEC_TS_1$ = goog.getMsg("{VAR_SELECT, select, male {male} female {female} other {other}}"); - $I18N_1$ = $MSG_APP_SPEC_TS_1$; - } - else { - $I18N_1$ = $localize \`{VAR_SELECT, select, male {male} female {female} other {other}}\`; - } - $I18N_1$ = $r3$.ɵɵi18nPostprocess($I18N_1$, { - "VAR_SELECT": "\uFFFD0\uFFFD" - }); - let $I18N_2$; - if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) { - const $MSG_APP_SPEC_TS_2$ = goog.getMsg("{VAR_SELECT, select, male {male} female {female} other {other}}"); - $I18N_2$ = $MSG_APP_SPEC_TS_2$; - } - else { - $I18N_2$ = $localize \`{VAR_SELECT, select, male {male} female {female} other {other}}\`; - } - $I18N_2$ = $r3$.ɵɵi18nPostprocess($I18N_2$, { - "VAR_SELECT": "\uFFFD1\uFFFD" - }); - let $I18N_4$; - if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) { - const $MSG_APP_SPEC_TS__4$ = goog.getMsg("{VAR_SELECT, select, male {male} female {female} other {other}}"); - $I18N_4$ = $MSG_APP_SPEC_TS__4$; - } - else { - $I18N_4$ = $localize \`{VAR_SELECT, select, male {male} female {female} other {other}}\`; - } - $I18N_4$ = $r3$.ɵɵi18nPostprocess($I18N_4$, { - "VAR_SELECT": "\uFFFD0:1\uFFFD" - }); - let $I18N_0$; - if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) { - const $MSG_APP_SPEC_TS_0$ = goog.getMsg(" {$icu} {$startTagDiv} {$icu} {$closeTagDiv}{$startTagDiv_1} {$icu} {$closeTagDiv}", { - "startTagDiv": "\uFFFD#2\uFFFD", - "closeTagDiv": "[\uFFFD/#2\uFFFD|\uFFFD/#1:1\uFFFD\uFFFD/*3:1\uFFFD]", - "startTagDiv_1": "\uFFFD*3:1\uFFFD\uFFFD#1:1\uFFFD", - "icu": "\uFFFDI18N_EXP_ICU\uFFFD" - }); - $I18N_0$ = $MSG_APP_SPEC_TS_0$; - } - else { - $I18N_0$ = $localize \` $` + - String.raw`{"\uFFFDI18N_EXP_ICU\uFFFD"}:ICU: $` + - String.raw`{"\uFFFD#2\uFFFD"}:START_TAG_DIV: $` + - String.raw`{"\uFFFDI18N_EXP_ICU\uFFFD"}:ICU: $` + String.raw - `{"[\uFFFD/#2\uFFFD|\uFFFD/#1:1\uFFFD\uFFFD/*3:1\uFFFD]"}:CLOSE_TAG_DIV:$` + - String.raw`{"\uFFFD*3:1\uFFFD\uFFFD#1:1\uFFFD"}:START_TAG_DIV_1: $` + - String.raw`{"\uFFFDI18N_EXP_ICU\uFFFD"}:ICU: $` + String.raw - `{"[\uFFFD/#2\uFFFD|\uFFFD/#1:1\uFFFD\uFFFD/*3:1\uFFFD]"}:CLOSE_TAG_DIV:\`; - } - $I18N_0$ = $r3$.ɵɵi18nPostprocess($I18N_0$, { - "ICU": [$I18N_1$, $I18N_2$, $I18N_4$] - }); - `; - - const output = String.raw` - function MyComponent_div_3_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵi18nStart(0, 0, 1); - $r3$.ɵɵelement(1, "div"); - $r3$.ɵɵi18nEnd(); - } - if (rf & 2) { - const $ctx_r0$ = $r3$.ɵɵnextContext(); - $r3$.ɵɵadvance(1); - $r3$.ɵɵi18nExp($ctx_r0$.gender); - $r3$.ɵɵi18nApply(0); - } - } - … - decls: 4, - vars: 3, - consts: function() { - ${i18n_0} - return [ - $i18n_0$, - [${AttributeMarker.Template}, "ngIf"] - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18nStart(1, 0); - $r3$.ɵɵelement(2, "div"); - $r3$.ɵɵtemplate(3, MyComponent_div_3_Template, 2, 1, "div", 1); - $r3$.ɵɵi18nEnd(); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(3); - $r3$.ɵɵproperty("ngIf", ctx.visible); - $r3$.ɵɵi18nExp(ctx.gender)(ctx.gender); - $r3$.ɵɵi18nApply(1); - } - } - `; - - // TODO(FW-635): this use-case is currently supported with - // file-based prefix for translation const names. Translation statements - // caching is required to support this use-case with id-based consts. - verify(input, output, {skipIdBasedCheck: true}); - }); - - it('should handle nested icus', () => { - const input = ` -
- {gender, select, - male {male of age: {age, select, 10 {ten} 20 {twenty} 30 {thirty} other {other}}} - female {female} - other {other} - } -
- `; - - const i18n_0 = i18nIcuMsg( - '{VAR_SELECT_1, select, male {male of age: {VAR_SELECT, select, 10 {ten} 20 {twenty} 30 {thirty} other {other}}} female {female} other {other}}', - [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`], ['VAR_SELECT_1', String.raw`\uFFFD1\uFFFD`]]); - const i18n_1 = i18nMsg(' {$icu} ', [['icu', '$i18n_0$']]); - - const output = String.raw` - decls: 2, - vars: 2, - consts: function() { - ${i18n_0} - ${i18n_1} - return [ - $i18n_1$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18n(1, 0); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(1); - $r3$.ɵɵi18nExp(ctx.age)(ctx.gender); - $r3$.ɵɵi18nApply(1); - } - } - `; - - const exceptions = { - '3052001905251380936': - 'Wrapper message generated by "ng extract-i18n" around ICU: " {$ICU} "' - }; - verify(input, output, {exceptions}); - }); - - it('nested with interpolations in "other" blocks', () => { - const input = ` -
{count, plural, - =0 {zero} - =2 {{{count}} {name, select, - cat {cats} - dog {dogs} - other {animals}} !} - other {other - {{count}}} - }
- `; - - const i18n_0 = i18nIcuMsg( - '{VAR_PLURAL, plural, =0 {zero} =2 {{INTERPOLATION} {VAR_SELECT, select, cat {cats} dog {dogs} other {animals}} !} other {other - {INTERPOLATION}}}', - [ - ['VAR_SELECT', String.raw`\uFFFD0\uFFFD`], - ['VAR_PLURAL', String.raw`\uFFFD1\uFFFD`], - ['INTERPOLATION', String.raw`\uFFFD2\uFFFD`], - ]); - - const output = String.raw` - decls: 2, - vars: 3, - consts: function() { - ${i18n_0} - return [ - $i18n_0$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18n(1, 0); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(1); - $r3$.ɵɵi18nExp(ctx.name)(ctx.count)(ctx.count); - $r3$.ɵɵi18nApply(1); - } - } - `; - - verify(input, output); - }); - - it('should handle icus in different contexts', () => { - const input = ` -
- {gender, select, male {male} female {female} other {other}} - - {age, select, 10 {ten} 20 {twenty} 30 {thirty} other {other}} - -
- `; - - const i18n_0 = i18nIcuMsg( - '{VAR_SELECT, select, male {male} female {female} other {other}}', - [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`]]); - const i18n_1 = i18nIcuMsg( - '{VAR_SELECT, select, 10 {ten} 20 {twenty} 30 {thirty} other {other}}', - [['VAR_SELECT', String.raw`\uFFFD0:1\uFFFD`]]); - const i18n_2 = i18nMsg(' {$icu} {$startTagSpan} {$icu_1} {$closeTagSpan}', [ - ['startTagSpan', String.raw`\uFFFD*2:1\uFFFD\uFFFD#1:1\uFFFD`], - ['closeTagSpan', String.raw`\uFFFD/#1:1\uFFFD\uFFFD/*2:1\uFFFD`], - ['icu', '$i18n_0$'], - ['icu_1', '$i18n_1$'], - ]); - - const output = String.raw` - function MyComponent_span_2_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵi18nStart(0, 0, 1); - $r3$.ɵɵelement(1, "span"); - $r3$.ɵɵi18nEnd(); - } - if (rf & 2) { - const $ctx_r0$ = $r3$.ɵɵnextContext(); - $r3$.ɵɵadvance(1); - $r3$.ɵɵi18nExp($ctx_r0$.age); - $r3$.ɵɵi18nApply(0); - } - } - … - decls: 3, - vars: 2, - consts: function() { - ${i18n_0} - ${i18n_1} - ${i18n_2} - return [ - $i18n_2$, - [${AttributeMarker.Template}, "ngIf"] - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18nStart(1, 0); - $r3$.ɵɵtemplate(2, MyComponent_span_2_Template, 2, 1, "span", 1); - $r3$.ɵɵi18nEnd(); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(2); - $r3$.ɵɵproperty("ngIf", ctx.ageVisible); - $r3$.ɵɵi18nExp(ctx.gender); - $r3$.ɵɵi18nApply(1); - } - } - `; - - verify(input, output); - }); - - it('should handle icus with interpolations', () => { - const input = ` -
- {gender, select, male {male {{ weight }}} female {female {{ height }}} other {other}} - - {age, select, 10 {ten} 20 {twenty} 30 {thirty} other {other: {{ otherAge }}}} - -
- `; - - const i18n_0 = i18nIcuMsg( - '{VAR_SELECT, select, male {male {INTERPOLATION}} female {female {INTERPOLATION_1}} other {other}}', - [ - ['VAR_SELECT', String.raw`\uFFFD0\uFFFD`], - ['INTERPOLATION', String.raw`\uFFFD1\uFFFD`], - ['INTERPOLATION_1', String.raw`\uFFFD2\uFFFD`], - ]); - const i18n_1 = i18nIcuMsg( - '{VAR_SELECT, select, 10 {ten} 20 {twenty} 30 {thirty} other {other: {INTERPOLATION}}}', [ - ['VAR_SELECT', String.raw`\uFFFD0:1\uFFFD`], - ['INTERPOLATION', String.raw`\uFFFD1:1\uFFFD`], - ]); - const i18n_2 = i18nMsg(' {$icu} {$startTagSpan} {$icu_1} {$closeTagSpan}', [ - ['startTagSpan', String.raw`\uFFFD*2:1\uFFFD\uFFFD#1:1\uFFFD`], - ['closeTagSpan', String.raw`\uFFFD/#1:1\uFFFD\uFFFD/*2:1\uFFFD`], - ['icu', '$i18n_0$'], - ['icu_1', '$i18n_1$'], - ]); - - const output = String.raw` - function MyComponent_span_2_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵi18nStart(0, 0, 1); - $r3$.ɵɵelement(1, "span"); - $r3$.ɵɵi18nEnd(); - } - if (rf & 2) { - const $ctx_r0$ = $r3$.ɵɵnextContext(); - $r3$.ɵɵadvance(1); - $r3$.ɵɵi18nExp($ctx_r0$.age)($ctx_r0$.otherAge); - $r3$.ɵɵi18nApply(0); - } - } - … - decls: 3, - vars: 4, - consts: function() { - ${i18n_0} - ${i18n_1} - ${i18n_2} - return [ - $i18n_2$, - [${AttributeMarker.Template}, "ngIf"] - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18nStart(1, 0); - $r3$.ɵɵtemplate(2, MyComponent_span_2_Template, 2, 2, "span", 1); - $r3$.ɵɵi18nEnd(); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(2); - $r3$.ɵɵproperty("ngIf", ctx.ageVisible); - $r3$.ɵɵi18nExp(ctx.gender)(ctx.weight)(ctx.height); - $r3$.ɵɵi18nApply(1); - } - } - `; - - verify(input, output); - }); - - it('should handle icus with named interpolations', () => { - const input = ` -
{ - gender, - select, - male {male {{ weight // i18n(ph="PH_A") }}} - female {female {{ height // i18n(ph="PH_B") }}} - other {other {{ age // i18n(ph="PH WITH SPACES") }}} - }
- `; - - const i18n_0 = i18nIcuMsg( - '{VAR_SELECT, select, male {male {PH_A}} female {female {PH_B}} other {other {PH_WITH_SPACES}}}', - [ - ['VAR_SELECT', String.raw`\uFFFD0\uFFFD`], - ['PH_A', String.raw`\uFFFD1\uFFFD`], - ['PH_B', String.raw`\uFFFD2\uFFFD`], - ['PH_WITH_SPACES', String.raw`\uFFFD3\uFFFD`], - ]); - - const output = String.raw` - decls: 2, - vars: 4, - consts: function() { - ${i18n_0} - return [ - $i18n_0$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵi18n(1, 0); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵadvance(1); - $r3$.ɵɵi18nExp(ctx.gender)(ctx.weight)(ctx.height)(ctx.age); - $r3$.ɵɵi18nApply(1); - } - } - `; - - verify(input, output); - }); - - it('should attach metadata in case an ICU represents the whole message', () => { - const input = ` -
{count, select, 1 {one} other {more than one}}
- `; - - const output = i18nMsgWithPostprocess( - '{VAR_SELECT, select, 1 {one} other {more than one}}', [], - {meaning: 'meaningA', desc: 'descA', id: 'idA'}, - [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`]]); - - verify(input, output); - }); - - it('should produce proper messages when `select` or `plural` keywords have spaces after them', - () => { - const input = ` -
- {count, select , 1 {one} other {more than one}} - {count, plural , =1 {one} other {more than one}} -
- `; - - const i18n_0 = i18nIcuMsg( - '{VAR_SELECT , select , 1 {one} other {more than one}}', - [['VAR_SELECT', String.raw`\uFFFD0\uFFFD`]]); - const i18n_1 = i18nIcuMsg( - '{VAR_PLURAL , plural , =1 {one} other {more than one}}', - [['VAR_PLURAL', String.raw`\uFFFD1\uFFFD`]]); - - const output = String.raw` - ${i18n_0} - ${i18n_1} - `; - - verify(input, output); - }); - }); - - describe('$localize legacy message ids', () => { - it('should add legacy message ids if `enableI18nLegacyMessageIdFormat` is true', () => { - const input = `
Some Message
`; - - const output = String.raw` - let $I18N_0$; - if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) { … } - else { - $I18N_0$ = $localize \`:␟ec93160d6d6a8822214060dd7938bf821c22b226␟6795333002533525253:Some Message\`; - } - … - `; - - verify(input, output, {compilerOptions: {enableI18nLegacyMessageIdFormat: true}}); - }); - - it('should add legacy message ids if `enableI18nLegacyMessageIdFormat` is undefined', () => { - const input = `
Some Message
`; - - const output = String.raw` - let $I18N_0$; - if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) { … } - else { - $I18N_0$ = $localize \`:␟ec93160d6d6a8822214060dd7938bf821c22b226␟6795333002533525253:Some Message\`; - } - … - `; - - verify(input, output, {compilerOptions: {enableI18nLegacyMessageIdFormat: undefined}}); - }); - }); - - describe('line ending normalization', () => { - [true, false].forEach( - templateUrl => describe(templateUrl ? '[templateUrl]' : '[inline template]', () => { - [true, false, undefined].forEach( - i18nNormalizeLineEndingsInICUs => describe( - `{i18nNormalizeLineEndingsInICUs: ${i18nNormalizeLineEndingsInICUs}}`, () => { - it('should normalize line endings in templates', () => { - const input = - `
\r\nSome Message\r\n{\r\n value,\r\n select,\r\n =0 {\r\n zero\r\n }\r\n}
`; - - const output = String.raw` - $I18N_0$ = $localize \`abc -def\`; - … - $I18N_4$ = $localize \`{VAR_SELECT, select, =0 {zero - }}\` - … - $I18N_3$ = $localize \` -Some Message -$` + String.raw`{$I18N_4$}:ICU:\`; - `; - - verify(input, output, { - inputArgs: {templateUrl}, - compilerOptions: {i18nNormalizeLineEndingsInICUs} - }); - }); - - it('should compute the correct message id for messages', () => { - const input = - `
\r\nSome Message\r\n{\r\n value,\r\n select,\r\n =0 {\r\n zero\r\n }\r\n}
`; - - // The ids generated by the compiler are different if the template is external - // and we are not explicitly normalizing the line endings. - const ICU_EXPRESSION_ID = - templateUrl && i18nNormalizeLineEndingsInICUs !== true ? - `␟70a685282be2d956e4db234fa3d985970672faa0` : - `␟b5fe162f4e47ab5b3e534491d30b715e0dff0f52`; - const ICU_ID = templateUrl && i18nNormalizeLineEndingsInICUs !== true ? - `␟6a55b51b9bcf8f84b1b868c585ae09949668a72b` : - `␟e31c7bc4db2f2e56dc40f005958055a02fd43a2e`; - - const output = - String.raw` - $I18N_0$ = $localize \`:␟4f9ce2c66b187afd9898b25f6336d1eb2be8b5dc␟7326958852138509669:abc -def\`; - … - $I18N_4$ = $localize \`:${ - ICU_EXPRESSION_ID}␟4863953183043480207:{VAR_SELECT, select, =0 {zero - }}\` - … - $I18N_3$ = $localize \`:${ICU_ID}␟2773178924738647105: -Some Message -$` + String.raw`{$I18N_4$}:ICU:\`; - `; - - verify(input, output, { - inputArgs: {templateUrl}, - compilerOptions: - {i18nNormalizeLineEndingsInICUs, enableI18nLegacyMessageIdFormat: true} - }); - }); - })); - })); - }); - - describe('es5 support', () => { - it('should generate ES5 compliant localized messages if the target is ES5', () => { - const input = ` -
Content A
- `; - - const output = String.raw` - var $I18N_0$; - … - $I18N_0$ = $localize(…__makeTemplateObject([":meaning:A|descA@@idA:Content A"], [":meaning\\:A|descA@@idA:Content A"])…); - `; - - verify( - input, output, {skipIdBasedCheck: true, compilerOptions: {target: ts.ScriptTarget.ES5}}); - }); - }); - - describe('namespaces', () => { - it('should handle namespaces inside i18n blocks', () => { - const input = ` - - - - Count: 5 - - - - `; - - const i18n_0 = String.raw` - let $I18N_0$; - if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) { - const $MSG_EXTERNAL_7128002169381370313$$APP_SPEC_TS_1$ = goog.getMsg("{$startTagXhtmlDiv} Count: {$startTagXhtmlSpan}5{$closeTagXhtmlSpan}{$closeTagXhtmlDiv}", { - "startTagXhtmlDiv": "\uFFFD#3\uFFFD", - "startTagXhtmlSpan": "\uFFFD#4\uFFFD", - "closeTagXhtmlSpan": "\uFFFD/#4\uFFFD", - "closeTagXhtmlDiv": "\uFFFD/#3\uFFFD" - }); - $I18N_0$ = $MSG_EXTERNAL_7128002169381370313$$APP_SPEC_TS_1$; - } - else { - $I18N_0$ = $localize \`$` + - String.raw`{"\uFFFD#3\uFFFD"}:START_TAG__XHTML_DIV: Count: $` + - String.raw`{"\uFFFD#4\uFFFD"}:START_TAG__XHTML_SPAN:5$` + - String.raw`{"\uFFFD/#4\uFFFD"}:CLOSE_TAG__XHTML_SPAN:$` + - String.raw`{"\uFFFD/#3\uFFFD"}:CLOSE_TAG__XHTML_DIV:\`; - } - `; - - const output = String.raw` - … - consts: function() { - ${i18n_0} - return [ - ["xmlns", "http://www.w3.org/2000/svg"], - $i18n_0$, - ["xmlns", "http://www.w3.org/1999/xhtml"] - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵnamespaceSVG(); - $r3$.ɵɵelementStart(0, "svg", 0); - $r3$.ɵɵelementStart(1, "foreignObject"); - $r3$.ɵɵi18nStart(2, 1); - $r3$.ɵɵnamespaceHTML(); - $r3$.ɵɵelementStart(3, "div", 2); - $r3$.ɵɵelement(4, "span"); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵi18nEnd(); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementEnd(); - } - } - `; - - verify(input, output); - }); - - it('should handle namespaces on i18n block containers', () => { - const input = ` - - - - Count: 5 - - - - `; - - const i18n_0 = String.raw` - let $I18N_0$; - if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) { - const $MSG_EXTERNAL_7428861019045796010$$APP_SPEC_TS_1$ = goog.getMsg(" Count: {$startTagXhtmlSpan}5{$closeTagXhtmlSpan}", { - "startTagXhtmlSpan": "\uFFFD#4\uFFFD", - "closeTagXhtmlSpan": "\uFFFD/#4\uFFFD" - }); - $I18N_0$ = $MSG_EXTERNAL_7428861019045796010$$APP_SPEC_TS_1$; - } - else { - $I18N_0$ = $localize \` Count: $` + - String.raw`{"\uFFFD#4\uFFFD"}:START_TAG__XHTML_SPAN:5$` + - String.raw`{"\uFFFD/#4\uFFFD"}:CLOSE_TAG__XHTML_SPAN:\`; - } - `; - - const output = String.raw` - consts: function() { - ${i18n_0} - return [ - ["xmlns", "http://www.w3.org/2000/svg"], - ["xmlns", "http://www.w3.org/1999/xhtml"], - $i18n_0$ - ]; - }, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵnamespaceSVG(); - $r3$.ɵɵelementStart(0, "svg", 0); - $r3$.ɵɵelementStart(1, "foreignObject"); - $r3$.ɵɵnamespaceHTML(); - $r3$.ɵɵelementStart(2, "div", 1); - $r3$.ɵɵi18nStart(3, 2); - $r3$.ɵɵelement(4, "span"); - $r3$.ɵɵi18nEnd(); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementEnd(); - } - } - `; - - verify(input, output); - }); - }); -}); diff --git a/packages/compiler-cli/test/compliance_old/r3_view_compiler_input_outputs_spec.ts b/packages/compiler-cli/test/compliance_old/r3_view_compiler_input_outputs_spec.ts deleted file mode 100644 index 8c62938582..0000000000 --- a/packages/compiler-cli/test/compliance_old/r3_view_compiler_input_outputs_spec.ts +++ /dev/null @@ -1,88 +0,0 @@ -/** - * @license - * 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 - */ - -import {MockDirectory, setup} from '@angular/compiler/test/aot/test_util'; -import {compile, expectEmit} from './mock_compile'; - -describe('compiler compliance: listen()', () => { - const angularFiles = setup({ - compileAngular: false, - compileFakeCore: true, - compileAnimations: false, - }); - - it('should declare inputs/outputs', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Directive, NgModule, Input, Output} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`\` - }) - export class MyComponent { - @Input() componentInput; - @Input('renamedComponentInput') originalComponentInput; - - @Output() componentOutput; - @Output('renamedComponentOutput') originalComponentOutput; - } - - @Directive({ - selector: '[my-directive]', - }) - export class MyDirective { - @Input() directiveInput; - @Input('renamedDirectiveInput') originalDirectiveInput; - - @Output() directiveOutput; - @Output('renamedDirectiveOutput') originalDirectiveOutput; - } - - @NgModule({declarations: [MyComponent, MyDirective]}) - export class MyModule {} - ` - } - }; - - const componentDef = ` - MyComponent.ɵcmp = /*@__PURE__*/ IDENT.ɵɵdefineComponent({ - … - inputs:{ - componentInput: "componentInput", - originalComponentInput: ["renamedComponentInput", "originalComponentInput"] - }, - outputs: { - componentOutput: "componentOutput", - originalComponentOutput: "renamedComponentOutput" - } - … - });`; - - const directiveDef = ` - MyDirective.ɵdir = /*@__PURE__*/ IDENT.ɵɵdefineDirective({ - … - inputs:{ - directiveInput: "directiveInput", - originalDirectiveInput: ["renamedDirectiveInput", "originalDirectiveInput"] - }, - outputs: { - directiveOutput: "directiveOutput", - originalDirectiveOutput: "renamedDirectiveOutput" - } - … - });`; - - - const result = compile(files, angularFiles); - - expectEmit(result.source, componentDef, 'Incorrect component definition'); - expectEmit(result.source, directiveDef, 'Incorrect directive definition'); - }); -}); diff --git a/packages/compiler-cli/test/compliance_old/r3_view_compiler_listener_spec.ts b/packages/compiler-cli/test/compliance_old/r3_view_compiler_listener_spec.ts deleted file mode 100644 index ae160dbdb7..0000000000 --- a/packages/compiler-cli/test/compliance_old/r3_view_compiler_listener_spec.ts +++ /dev/null @@ -1,583 +0,0 @@ -/** - * @license - * 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 - */ -import {AttributeMarker} from '@angular/compiler/src/core'; -import {setup} from '@angular/compiler/test/aot/test_util'; -import {compile, expectEmit} from './mock_compile'; - -/* These tests are codified version of the tests in compiler_canonical_spec.ts. Every - * test in compiler_canonical_spec.ts should have a corresponding test here. - */ -describe('compiler compliance: listen()', () => { - const angularFiles = setup({ - compileAngular: false, - compileFakeCore: true, - compileAnimations: false, - }); - - it('should create listener instruction on element', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`
\` - }) - export class MyComponent { - onClick(event: any) {} - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - // The template should look like this (where IDENT is a wild card for an identifier): - const template = ` - … - consts: [[${AttributeMarker.Bindings}, "click"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div", 0); - $r3$.ɵɵlistener("click", function MyComponent_Template_div_click_0_listener($event) { - ctx.onClick($event); - return 1 == 2; - }); - $r3$.ɵɵelementEnd(); - } - } - `; - - const result = compile(files, angularFiles); - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should create listener instruction on other components', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-app', - template: \`
My App
\` - }) - export class MyApp {} - - @Component({ - selector: 'my-component', - template: \`\` - }) - export class MyComponent { - onClick(event: any) {} - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - … - consts: [[${AttributeMarker.Bindings}, "click"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "my-app", 0); - $r3$.ɵɵlistener("click", function MyComponent_Template_my_app_click_0_listener($event) { - return ctx.onClick($event); - }); - $r3$.ɵɵelementEnd(); - } - } - `; - - const result = compile(files, angularFiles); - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should create multiple listener instructions that share a view snapshot', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \` -
-
- -
- - \` - }) - export class MyComponent { - onClick(name: any) {} - onClick2(name: any) {} - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - function MyComponent_div_0_Template(rf, ctx) { - if (rf & 1) { - const $s$ = $r3$.ɵɵgetCurrentView(); - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵelementStart(1, "div", 1); - $r3$.ɵɵlistener("click", function MyComponent_div_0_Template_div_click_1_listener() { - $r3$.ɵɵrestoreView($s$); - const $comp$ = $r3$.ɵɵnextContext(); - return $comp$.onClick($comp$.foo); - }); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementStart(2, "button", 1); - $r3$.ɵɵlistener("click", function MyComponent_div_0_Template_button_click_2_listener() { - $r3$.ɵɵrestoreView($s$); - const $comp2$ = $r3$.ɵɵnextContext(); - return $comp2$.onClick2($comp2$.bar); - }); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementEnd(); - } - } - // ... - consts: [[${AttributeMarker.Template}, "ngIf"], [${AttributeMarker.Bindings}, "click"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtemplate(0, MyComponent_div_0_Template, 3, 0, "div", 0); - } - if (rf & 2) { - $i0$.ɵɵproperty("ngIf", ctx.showing); - } - } - `; - - const result = compile(files, angularFiles); - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('local refs in listeners defined before the local refs', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \` - - - \` - }) - export class MyComponent {} - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const MyComponentDefinition = ` - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyComponent, - selectors: [["my-component"]], - decls: 4, - vars: 0, - consts: [[${AttributeMarker.Bindings}, "click"], ["user", ""]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - const $s$ = $r3$.ɵɵgetCurrentView(); - $r3$.ɵɵelementStart(0, "button", 0); - $r3$.ɵɵlistener("click", function MyComponent_Template_button_click_0_listener() { - $r3$.ɵɵrestoreView($s$); - const $user$ = $r3$.ɵɵreference(3); - return ctx.onClick($user$.value); - }); - $r3$.ɵɵtext(1, "Save"); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelement(2, "input", null, 1); - } - }, - encapsulation: 2 - }); - `; - - const MyComponentFactory = ` - MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); }; - `; - - const result = compile(files, angularFiles); - const source = result.source; - - expectEmit(source, MyComponentDefinition, 'Incorrect MyComponent.ɵcmp'); - expectEmit(source, MyComponentFactory, 'Incorrect MyComponent.ɵfac'); - }); - - it('should chain multiple listeners on the same element', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`
\` - }) - export class MyComponent { - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - … - consts: [[${AttributeMarker.Bindings}, "click", "change"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div", 0); - $r3$.ɵɵlistener("click", function MyComponent_Template_div_click_0_listener() { - return ctx.click(); - })("change", function MyComponent_Template_div_change_0_listener() { - return ctx.change(); - }); - $r3$.ɵɵelementEnd(); - } - } - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain multiple listeners across elements', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \` -
- - \` - }) - export class MyComponent { - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - … - consts: [[${AttributeMarker.Bindings}, "click", "change"], [${ - AttributeMarker.Bindings}, "update", "delete"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div", 0); - $r3$.ɵɵlistener("click", function MyComponent_Template_div_click_0_listener() { return ctx.click(); })("change", function MyComponent_Template_div_change_0_listener() { return ctx.change(); }); - $r3$.ɵɵelementEnd(); - $r3$.ɵɵelementStart(1, "some-comp", 1); - $r3$.ɵɵlistener("update", function MyComponent_Template_some_comp_update_1_listener() { return ctx.update(); })("delete", function MyComponent_Template_some_comp_delete_1_listener() { return ctx.delete(); }); - $r3$.ɵɵelementEnd(); - } - } - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain multiple listeners on the same template', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`\` - }) - export class MyComponent { - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - … - consts: [[${AttributeMarker.Bindings}, "click", "change"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtemplate(0, MyComponent_ng_template_0_Template, 0, 0, "ng-template", 0); - $r3$.ɵɵlistener("click", function MyComponent_Template_ng_template_click_0_listener() { return ctx.click(); })("change", function MyComponent_Template_ng_template_change_0_listener() { return ctx.change(); }); - } - } - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should not generate the $event argument if it is not being used in a template', () => { - const files = { - app: { - 'spec.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: \`
\` - }) - export class MyComponent { - onClick() {} - } - ` - } - }; - - const template = ` - … - consts: [[${AttributeMarker.Bindings}, "click"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div", 0); - $r3$.ɵɵlistener("click", function MyComponent_Template_div_click_0_listener() { - return ctx.onClick(); - }); - $r3$.ɵɵelementEnd(); - } - } - `; - - const result = compile(files, angularFiles); - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should not generate the $event argument if it is not being used in a host listener', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, HostListener} from '@angular/core'; - - @Component({ - template: '', - host: { - '(mousedown)': 'mousedown()' - } - }) - export class MyComponent { - mousedown() {} - - @HostListener('click') - click() {} - } - ` - } - }; - - const template = ` - … - hostBindings: function MyComponent_HostBindings(rf, ctx) { - if (rf & 1) { - i0.ɵɵlistener("mousedown", function MyComponent_mousedown_HostBindingHandler() { - return ctx.mousedown(); - })("click", function MyComponent_click_HostBindingHandler() { - return ctx.click(); - }); - } - } - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect host bindings'); - }); - - it('should generate the $event argument if it is being used in a host listener', () => { - const files = { - app: { - 'spec.ts': ` - import {Directive, HostListener} from '@angular/core'; - - @Directive() - export class MyComponent { - @HostListener('click', ['$event.target']) - click(t: EventTarget) {} - } - ` - } - }; - - const template = ` - … - hostBindings: function MyComponent_HostBindings(rf, ctx) { - if (rf & 1) { - i0.ɵɵlistener("click", function MyComponent_click_HostBindingHandler($event) { - return ctx.click($event.target); - }); - } - } - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect host bindings'); - }); - - it('should assume $event is referring to the event variable in a listener by default', () => { - const files = { - app: { - 'spec.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: '
' - }) - class Comp { - c(event: MouseEvent) {} - } - ` - } - }; - - const template = ` - … - i0.ɵɵlistener("click", function Comp_Template_div_click_0_listener($event) { return ctx.c($event); }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect event listener'); - }); - - it('should preserve accesses to $event if it is done through `this` in a listener', () => { - const files = { - app: { - 'spec.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: '
' - }) - class Comp { - $event = {}; - c(value: {}) {} - } - ` - } - }; - - const template = ` - … - i0.ɵɵlistener("click", function Comp_Template_div_click_0_listener() { return ctx.c(ctx.$event); }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect event listener'); - }); - - it('should not assume that $event is referring to an event object inside a property', () => { - const files = { - app: { - 'spec.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: '
' - }) - class Comp { - $event = 1; - } - ` - } - }; - - const template = ` - … - i0.ɵɵproperty("event", ctx.$event); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect property binding'); - }); - - it('should assume $event is referring to the event variable in a listener by default inside a host binding', - () => { - const files = { - app: { - 'spec.ts': ` - import {Directive} from '@angular/core'; - - @Directive({ - host: { - '(click)': 'c($event)' - } - }) - class Dir { - c(event: MouseEvent) {} - } - ` - } - }; - - const template = ` - … - i0.ɵɵlistener("click", function Dir_click_HostBindingHandler($event) { return ctx.c($event); }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect event listener'); - }); - - it('should preserve accesses to $event if it is done through `this` in a listener inside a host binding', - () => { - const files = { - app: { - 'spec.ts': ` - import {Directive} from '@angular/core'; - - @Directive({ - host: { - '(click)': 'c(this.$event)' - } - }) - class Dir { - $event = {}; - c(value: {}) {} - } - ` - } - }; - - const template = ` - … - i0.ɵɵlistener("click", function Dir_click_HostBindingHandler() { return ctx.c(ctx.$event); }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect event listener'); - }); -}); diff --git a/packages/compiler-cli/test/compliance_old/r3_view_compiler_providers_spec.ts b/packages/compiler-cli/test/compliance_old/r3_view_compiler_providers_spec.ts deleted file mode 100644 index f14e0ffe97..0000000000 --- a/packages/compiler-cli/test/compliance_old/r3_view_compiler_providers_spec.ts +++ /dev/null @@ -1,162 +0,0 @@ -/** - * @license - * 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 - */ - -import {setup} from '@angular/compiler/test/aot/test_util'; -import {compile, expectEmit} from './mock_compile'; - -describe('compiler compliance: providers', () => { - const angularFiles = setup({ - compileAngular: false, - compileFakeCore: true, - compileAnimations: false, - }); - - it('should emit the ProvidersFeature feature when providers and viewProviders', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - abstract class Greeter { abstract greet(): string; } - - class GreeterEN implements Greeter { - greet() { return 'Hi'; } - } - - @Component({ - selector: 'my-component', - template: '
', - providers: [GreeterEN, {provide: Greeter, useClass: GreeterEN}], - viewProviders: [GreeterEN] - }) - export class MyComponent { - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const result = compile(files, angularFiles); - expectEmit( - result.source, - 'features: [i0.ɵɵProvidersFeature([GreeterEN, {provide: Greeter, useClass: GreeterEN}], [GreeterEN])],', - 'Incorrect features'); - }); - - it('should emit the ProvidersFeature feature when providers only', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - abstract class Greeter { abstract greet(): string; } - - class GreeterEN implements Greeter { - greet() { return 'Hi'; } - } - - @Component({ - selector: 'my-component', - template: '
', - providers: [GreeterEN, {provide: Greeter, useClass: GreeterEN}] - }) - export class MyComponent { - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const result = compile(files, angularFiles); - expectEmit( - result.source, - 'features: [i0.ɵɵProvidersFeature([GreeterEN, {provide: Greeter, useClass: GreeterEN}])],', - 'Incorrect features'); - }); - - it('should emit the ProvidersFeature feature when viewProviders only', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - abstract class Greeter { abstract greet(): string; } - - class GreeterEN implements Greeter { - greet() { return 'Hi'; } - } - - @Component({ - selector: 'my-component', - template: '
', - viewProviders: [GreeterEN] - }) - export class MyComponent { - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const result = compile(files, angularFiles); - expectEmit( - result.source, 'features: [i0.ɵɵProvidersFeature([], [GreeterEN])],', 'Incorrect features'); - }); - - it('should not emit the ProvidersFeature feature when no providers', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - abstract class Greeter { abstract greet(): string; } - - class GreeterEN implements Greeter { - greet() { return 'Hi'; } - } - - @Component({ - selector: 'my-component', - template: '
' - }) - export class MyComponent { - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const result = compile(files, angularFiles); - expectEmit( - result.source, ` - export class MyComponent { - } - MyComponent.ɵfac = function MyComponent_Factory(t) { return new (t || MyComponent)(); }; - MyComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ - type: MyComponent, - selectors: [["my-component"]], - decls: 1, - vars: 0, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - i0.ɵɵelement(0, "div"); - } - }, - encapsulation: 2 - });`, - 'Incorrect features'); - }); -}); diff --git a/packages/compiler-cli/test/compliance_old/r3_view_compiler_spec.ts b/packages/compiler-cli/test/compliance_old/r3_view_compiler_spec.ts deleted file mode 100644 index bdfbd1762d..0000000000 --- a/packages/compiler-cli/test/compliance_old/r3_view_compiler_spec.ts +++ /dev/null @@ -1,247 +0,0 @@ -/** - * @license - * 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 - */ - -import {MockDirectory, setup} from '@angular/compiler/test/aot/test_util'; -import {compile, expectEmit} from './mock_compile'; - -describe('r3_view_compiler', () => { - const angularFiles = setup({ - compileAngular: false, - compileFakeCore: true, - compileAnimations: false, - }); - - describe('hello world', () => { - it('should be able to generate the hello world component', () => { - const files: MockDirectory = { - app: { - 'hello.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'hello-world', - template: 'Hello, world!' - }) - export class HelloWorldComponent { - - } - - @NgModule({ - declarations: [HelloWorldComponent] - }) - export class HelloWorldModule {} - ` - } - }; - compile(files, angularFiles); - }); - }); - - it('should be able to generate the example', () => { - const files: MockDirectory = { - app: { - 'example.ts': ` - import {Component, OnInit, OnDestroy, ElementRef, Input, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-app', - template: '' - }) - export class MyApp implements OnInit { - - list: any[] = []; - - constructor(public elementRef: ElementRef) {} - - ngOnInit(): void { - } - } - - @Component({ - selector: 'todo', - template: '
  • {{data}}
' - }) - export class TodoComponent implements OnInit, OnDestroy { - - @Input() - data: any[] = []; - - myTitle: string; - - constructor(public elementRef: ElementRef) {} - - ngOnInit(): void {} - - ngOnDestroy(): void {} - } - - @NgModule({ - declarations: [TodoComponent, MyApp], - }) - export class TodoModule{} - ` - } - }; - const result = compile(files, angularFiles); - expect(result.source).toContain('@angular/core'); - }); - - describe('interpolations', () => { - // Regression #21927 - it('should generate a correct call to textInterpolateV with more than 8 interpolations', () => { - const files: MockDirectory = { - app: { - 'example.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-app', - template: ' {{list[0]}} {{list[1]}} {{list[2]}} {{list[3]}} {{list[4]}} {{list[5]}} {{list[6]}} {{list[7]}} {{list[8]}} ' - }) - export class MyApp { - list: any[] = []; - } - - @NgModule({declarations: [MyApp]}) - export class MyModule {}` - } - }; - - const bV_call = ` - … - function MyApp_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵtext(0); - } - if (rf & 2) { - $i0$.ɵɵtextInterpolateV([" ", ctx.list[0], " ", ctx.list[1], " ", ctx.list[2], " ", ctx.list[3], " ", ctx.list[4], " ", ctx.list[5], " ", ctx.list[6], " ", ctx.list[7], " ", ctx.list[8], " "]); - } - } - … - `; - const result = compile(files, angularFiles); - expectEmit(result.source, bV_call, 'Incorrect bV call'); - }); - }); - - describe('animations', () => { - it('should not register any @attr attributes as static attributes', () => { - const files: MockDirectory = { - app: { - 'example.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-app', - template: '
' - }) - export class MyApp { - } - - @NgModule({declarations: [MyApp]}) - export class MyModule {}` - } - }; - - const template = ` - template: function MyApp_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵelement(0, "div"); - } - if (rf & 2) { - $i0$.ɵɵproperty("@attr", …)("@binding", …); - } - }`; - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect initialization attributes'); - }); - - it('should dedup multiple [@event] listeners', () => { - const files: MockDirectory = { - app: { - 'example.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-app', - template: '
' - }) - export class MyApp { - } - - @NgModule({declarations: [MyApp]}) - export class MyModule {}` - } - }; - - const template = ` - template: function MyApp_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵelementStart(0, "div"); - … - $i0$.ɵɵproperty("@mySelector", …); - } - }`; - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect initialization attributes'); - }); - }); - - describe('$any', () => { - it('should strip out $any wrappers', () => { - const files = { - app: { - 'spec.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: '
' - }) - class Comp { - } - ` - } - }; - - const template = ` - … - i0.ɵɵproperty("tabIndex", 10); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should preserve $any if it is accessed through `this`', () => { - const files = { - app: { - 'spec.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: '
' - }) - class Comp { - $any(value: null): any { - return value as any; - } - } - ` - } - }; - - const template = ` - … - i0.ɵɵproperty("tabIndex", ctx.$any(null)); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - }); -}); diff --git a/packages/compiler-cli/test/compliance_old/r3_view_compiler_styling_spec.ts b/packages/compiler-cli/test/compliance_old/r3_view_compiler_styling_spec.ts deleted file mode 100644 index a28ea3f2b4..0000000000 --- a/packages/compiler-cli/test/compliance_old/r3_view_compiler_styling_spec.ts +++ /dev/null @@ -1,2099 +0,0 @@ -/** - * @license - * 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 - */ - -import {AttributeMarker} from '@angular/compiler/src/core'; -import {setup} from '@angular/compiler/test/aot/test_util'; -import {compile, expectEmit} from './mock_compile'; - -describe('compiler compliance: styling', () => { - const angularFiles = setup({ - compileAngular: false, - compileFakeCore: true, - compileAnimations: false, - }); - - describe('@Component.styles', () => { - it('should pass in the component metadata styles into the component definition and shim them using style encapsulation', - () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: "my-component", - styles: ["div.foo { color: red; }", ":host p:nth-child(even) { --webkit-transition: 1s linear all; }"], - template: "..." - }) - export class MyComponent { - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = - 'styles: ["div.foo[_ngcontent-%COMP%] { color: red; }", "[_nghost-%COMP%] p[_ngcontent-%COMP%]:nth-child(even) { --webkit-transition: 1s linear all; }"]'; - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should pass in styles, but skip shimming the styles if the view encapsulation signals not to', - () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule, ViewEncapsulation} from '@angular/core'; - - @Component({ - selector: "my-component", - encapsulation: ViewEncapsulation.None, - styles: ["div.tall { height: 123px; }", ":host.small p { height:5px; }"], - template: "..." - }) - export class MyComponent { - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = 'div.tall { height: 123px; }", ":host.small p { height:5px; }'; - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should pass in the component metadata styles into the component definition but skip shimming when style encapsulation is set to shadow dom', - () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule, ViewEncapsulation} from '@angular/core'; - - @Component({ - encapsulation: ViewEncapsulation.ShadowDom, - selector: "my-component", - styles: ["div.cool { color: blue; }", ":host.nice p { color: gold; }"], - template: "..." - }) - export class MyComponent { - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - … - styles: ["div.cool { color: blue; }", ":host.nice p { color: gold; }"], - encapsulation: 3 - }) - `; - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - }); - - describe('@Component.animations', () => { - it('should pass in the component metadata animations into the component definition', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: "my-component", - animations: [{name: 'foo123'}, {name: 'trigger123'}], - template: "" - }) - export class MyComponent { - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyComponent, - selectors:[["my-component"]], - decls: 0, - vars: 0, - template: function MyComponent_Template(rf, $ctx$) { - }, - encapsulation: 2, - data: { - animation: [{name: 'foo123'}, {name: 'trigger123'}] - } - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should include animations even if the provided array is empty', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: "my-component", - animations: [], - template: "" - }) - export class MyComponent { - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyComponent, - selectors:[["my-component"]], - decls: 0, - vars: 0, - template: function MyComponent_Template(rf, $ctx$) { - }, - encapsulation: 2, - data: { - animation: [] - } - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should generate any animation triggers into the component template', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: "my-component", - template: \` -
-
-
\`, - }) - export class MyComponent { - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - … - decls: 3, - vars: 3, - template: function MyComponent_Template(rf, $ctx$) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div"); - $r3$.ɵɵelement(1, "div"); - $r3$.ɵɵelement(2, "div"); - } - if (rf & 2) { - $r3$.ɵɵproperty("@foo", ctx.exp); - $r3$.ɵɵadvance(1); - $r3$.ɵɵproperty("@bar", undefined); - $r3$.ɵɵadvance(1); - $r3$.ɵɵproperty("@baz", undefined); - } - }, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should generate animation listeners', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-cmp', - template: \` -
- \`, - animations: [trigger( - 'myAnimation', - [transition( - '* => state', - [style({'opacity': '0'}), animate(500, style({'opacity': '1'}))])])], - }) - class MyComponent { - exp: any; - startEvent: any; - doneEvent: any; - onStart(event: any) { this.startEvent = event; } - onDone(event: any) { this.doneEvent = event; } - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - … - decls: 1, - vars: 1, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵlistener("@myAnimation.start", function MyComponent_Template_div_animation_myAnimation_start_0_listener($event) { return ctx.onStart($event); })("@myAnimation.done", function MyComponent_Template_div_animation_myAnimation_done_0_listener($event) { return ctx.onDone($event); }); - $r3$.ɵɵelementEnd(); - } if (rf & 2) { - $r3$.ɵɵproperty("@myAnimation", ctx.exp); - } - }, - encapsulation: 2, - … - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should generate animation host binding and listener code for directives', () => { - const files = { - app: { - 'spec.ts': ` - import {Directive, Component, NgModule} from '@angular/core'; - - @Directive({ - selector: '[my-anim-dir]', - animations: [ - {name: 'myAnim'} - ], - host: { - '[@myAnim]': 'myAnimState', - '(@myAnim.start)': 'onStart()', - '(@myAnim.done)': 'onDone()' - } - }) - class MyAnimDir { - onStart() {} - onDone() {} - myAnimState = '123'; - } - - @Component({ - selector: 'my-cmp', - template: \` -
- \` - }) - class MyComponent { - } - - @NgModule({declarations: [MyComponent, MyAnimDir]}) - export class MyModule {} - ` - } - }; - - const template = ` - MyAnimDir.ɵdir = /*@__PURE__*/ $r3$.ɵɵdefineDirective({ - … - hostVars: 1, - hostBindings: function MyAnimDir_HostBindings(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵsyntheticHostListener("@myAnim.start", function MyAnimDir_animation_myAnim_start_HostBindingHandler() { return ctx.onStart(); })("@myAnim.done", function MyAnimDir_animation_myAnim_done_HostBindingHandler() { return ctx.onDone(); }); - } - if (rf & 2) { - $r3$.ɵɵsyntheticHostProperty("@myAnim", ctx.myAnimState); - } - } - … - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - }); - - describe('[style] and [style.prop]', () => { - it('should create style instructions on the element', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`
\` - }) - export class MyComponent { - myStyleExp = [{color:'red'}, {color:'blue', duration:1000}] - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - template: function MyComponent_Template(rf, $ctx$) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div"); - } - if (rf & 2) { - $r3$.ɵɵstyleMap($ctx$.myStyleExp); - } - } - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should correctly count the total slots required when style/class bindings include interpolation', - () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component-with-interpolation', - template: \` -
- \` - }) - export class MyComponentWithInterpolation { - fooId = '123'; - } - - @Component({ - selector: 'my-component-with-muchos-interpolation', - template: \` -
- \` - }) - export class MyComponentWithMuchosInterpolation { - fooId = '123'; - fooUsername = 'superfoo'; - } - - @Component({ - selector: 'my-component-without-interpolation', - template: \` -
- \` - }) - export class MyComponentWithoutInterpolation { - exp = 'bar'; - } - - @NgModule({declarations: [MyComponentWithInterpolation, MyComponentWithMuchosInterpolation, MyComponentWithoutInterpolation]}) - export class MyModule {} - ` - } - }; - - const template = ` - … - decls: 1, - vars: 3, - template: function MyComponentWithInterpolation_Template(rf, $ctx$) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div"); - } - if (rf & 2) { - $r3$.ɵɵclassMapInterpolate1("foo foo-", $ctx$.fooId, ""); - } - } - … - decls: 1, - vars: 4, - template: function MyComponentWithMuchosInterpolation_Template(rf, $ctx$) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div"); - } - if (rf & 2) { - $r3$.ɵɵclassMapInterpolate2("foo foo-", $ctx$.fooId, "-", $ctx$.fooUsername, ""); - } - } - … - decls: 1, - vars: 2, - template: function MyComponentWithoutInterpolation_Template(rf, $ctx$) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div"); - } - if (rf & 2) { - $r3$.ɵɵclassMap($ctx$.exp); - } - } - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should place initial, multi, singular and application followed by attribute style instructions in the template code in that order', - () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`
\` - }) - export class MyComponent { - myStyleExp = [{color:'red'}, {color:'blue', duration:1000}] - myWidth = '100px'; - myHeight = '100px'; - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyComponent, - selectors:[["my-component"]], - decls: 1, - vars: 7, - consts: [[${AttributeMarker.Styles}, "opacity", "1"]], - template: function MyComponent_Template(rf, $ctx$) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div", 0); - } - if (rf & 2) { - $r3$.ɵɵstyleMap($ctx$.myStyleExp); - $r3$.ɵɵstyleProp("width", $ctx$.myWidth)("height", $ctx$.myHeight); - $r3$.ɵɵattribute("style", "border-width: 10px", $r3$.ɵɵsanitizeStyle); - } - }, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should assign a sanitizer instance to the element style allocation instruction if any url-based properties are detected', - () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`
\` - }) - export class MyComponent { - myImage = 'url(foo.jpg)'; - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyComponent, - selectors: [["my-component"]], - decls: 1, - vars: 2, - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div"); - } - if (rf & 2) { - $r3$.ɵɵstyleProp("background-image", ctx.myImage); - } - }, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should support [style.foo.suffix] style bindings with a suffix', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`
\` - }) - export class MyComponent { - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div"); - } - if (rf & 2) { - $r3$.ɵɵstyleProp("font-size", 12, "px"); - } - } - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should not create instructions for empty style bindings', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`
\` - }) - export class MyComponent { - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const result = compile(files, angularFiles); - expect(result.source).not.toContain('styling'); - }); - }); - - describe('[class]', () => { - it('should create class styling instructions on the element', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`
\` - }) - export class MyComponent { - myClassExp = {'foo':true} - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - template: function MyComponent_Template(rf, $ctx$) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div"); - } - if (rf & 2) { - $r3$.ɵɵclassMap($ctx$.myClassExp); - } - } - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should place initial, multi, singular and application followed by attribute class instructions in the template code in that order', - () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`
\` - }) - export class MyComponent { - myClassExp = {a:true, b:true}; - yesToApple = true; - yesToOrange = true; - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyComponent, - selectors:[["my-component"]], - decls: 1, - vars: 7, - consts: [[${AttributeMarker.Classes}, "grape"]], - template: function MyComponent_Template(rf, $ctx$) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div", 0); - } - if (rf & 2) { - $r3$.ɵɵclassMap($ctx$.myClassExp); - $r3$.ɵɵclassProp("apple", $ctx$.yesToApple)("orange", $ctx$.yesToOrange); - $r3$.ɵɵattribute("class", "banana"); - } - }, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should not generate the styling apply instruction if there are only static style/class attributes', - () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`
\` - }) - export class MyComponent {} - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - type: MyComponent, - selectors:[["my-component"]], - decls: 1, - vars: 2, - consts: [[${AttributeMarker.Classes}, "foo", ${ - AttributeMarker.Styles}, "width", "100px"]], - template: function MyComponent_Template(rf, $ctx$) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div", 0); - } - if (rf & 2) { - $r3$.ɵɵattribute("class", "round")("style", "height:100px", $r3$.ɵɵsanitizeStyle); - } - }, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should not create instructions for empty class bindings', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`
\` - }) - export class MyComponent { - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const result = compile(files, angularFiles); - expect(result.source).not.toContain('styling'); - }); - }); - - describe('[style] mixed with [class]', () => { - it('should split [style] and [class] bindings into a separate instructions', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`
\` - }) - export class MyComponent { - myStyleExp = [{color:'red'}, {color:'blue', duration:1000}] - myClassExp = 'foo bar apple'; - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - template: function MyComponent_Template(rf, $ctx$) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div"); - } - if (rf & 2) { - $r3$.ɵɵstyleMap($ctx$.myStyleExp); - $r3$.ɵɵclassMap($ctx$.myClassExp); - } - } - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should stamp out pipe definitions in the creation block if used by styling bindings', - () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \`
\` - }) - export class MyComponent { - myStyleExp = [{color:'red'}, {color:'blue', duration:1000}] - myClassExp = 'foo bar apple'; - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - template: function MyComponent_Template(rf, $ctx$) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵpipe(1, "stylePipe"); - $r3$.ɵɵpipe(2, "classPipe"); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵstyleMap($r3$.ɵɵpipeBind1(1, 4, $ctx$.myStyleExp)); - $r3$.ɵɵclassMap($r3$.ɵɵpipeBind1(2, 6, $ctx$.myClassExp)); - } - } - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should properly offset multiple style pipe references for styling bindings', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \` -
- {{ item }}
\` - }) - export class MyComponent { - myStyleExp = {}; - fooExp = 'foo'; - barExp = 'bar'; - bazExp = 'baz'; - items = [1,2,3]; - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - template: function MyComponent_Template(rf, $ctx$) { - if (rf & 1) { - $r3$.ɵɵelementStart(0, "div"); - $r3$.ɵɵpipe(1, "pipe"); - $r3$.ɵɵpipe(2, "pipe"); - $r3$.ɵɵpipe(3, "pipe"); - $r3$.ɵɵpipe(4, "pipe"); - $r3$.ɵɵtext(5); - $r3$.ɵɵelementEnd(); - } - if (rf & 2) { - $r3$.ɵɵstyleMap($r3$.ɵɵpipeBind2(1, 11, $ctx$.myStyleExp, 1000)); - $r3$.ɵɵclassMap($r3$.ɵɵpureFunction0(23, _c0)); - $r3$.ɵɵstyleProp("bar", $r3$.ɵɵpipeBind2(2, 14, $ctx$.barExp, 3000))("baz", $r3$.ɵɵpipeBind2(3, 17, $ctx$.bazExp, 4000)); - $r3$.ɵɵclassProp("foo", $r3$.ɵɵpipeBind2(4, 20, $ctx$.fooExp, 2000)); - $r3$.ɵɵadvance(5); - $r3$.ɵɵtextInterpolate1(" ", $ctx$.item, ""); - } - } - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should always generate select() statements before any styling instructions', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \` -
-
-
-
- \` - }) - export class MyComponent { - w1 = '100px'; - h1 = '100px'; - a1 = true; - r1 = true; - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - … - template: function MyComponent_Template(rf, $ctx$) { - … - if (rf & 2) { - $r3$.ɵɵstyleProp("width", $ctx$.w1); - $r3$.ɵɵadvance(1); - $r3$.ɵɵstyleProp("height", $ctx$.h1); - $r3$.ɵɵadvance(1); - $r3$.ɵɵclassProp("active", $ctx$.a1); - $r3$.ɵɵadvance(1); - $r3$.ɵɵclassProp("removed", $ctx$.r1); - } - } - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - }); - - describe('@Component host styles/classes', () => { - it('should generate style/class instructions for a host component creation definition', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule, HostBinding} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: '', - host: { - 'style': 'width:200px; height:500px', - 'class': 'foo baz' - } - }) - export class MyComponent { - @HostBinding('style') - myStyle = {width:'100px'}; - - @HostBinding('class') - myClass = {bar:false}; - - @HostBinding('style.color') - myColorProp = 'red'; - - @HostBinding('class.foo') - myFooClass = 'red'; - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - hostAttrs: [${AttributeMarker.Classes}, "foo", "baz", ${ - AttributeMarker.Styles}, "width", "200px", "height", "500px"], - hostVars: 8, - hostBindings: function MyComponent_HostBindings(rf, ctx) { - if (rf & 2) { - $r3$.ɵɵstyleMap(ctx.myStyle); - $r3$.ɵɵclassMap(ctx.myClass); - $r3$.ɵɵstyleProp("color", ctx.myColorProp); - $r3$.ɵɵclassProp("foo", ctx.myFooClass); - } - }, - decls: 0, - vars: 0, - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should generate style/class instructions for multiple host binding definitions', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule, HostBinding} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: '', - host: { - '[style.height.pt]': 'myHeightProp', - '[class.bar]': 'myBarClass' - } - }) - export class MyComponent { - myHeightProp = 20; - myBarClass = true; - - @HostBinding('style') - myStyle = {}; - - @HostBinding('style.width') - myWidthProp = '500px'; - - @HostBinding('class.foo') - myFooClass = true; - - @HostBinding('class') - myClasses = {a:true, b:true}; - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - hostVars: 12, - hostBindings: function MyComponent_HostBindings(rf, ctx) { - if (rf & 2) { - $r3$.ɵɵstyleMap(ctx.myStyle); - $r3$.ɵɵclassMap(ctx.myClasses); - $r3$.ɵɵstyleProp("height", ctx.myHeightProp, "pt")("width", ctx.myWidthProp); - $r3$.ɵɵclassProp("bar", ctx.myBarClass)("foo", ctx.myFooClass); - } - }, - decls: 0, - vars: 0, - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should generate override instructions for only single-level styling bindings when !important is present', - () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule, HostBinding} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \` -
- \`, - host: { - '[style!important]': 'myStyleExp', - '[class!important]': 'myClassExp' - } - }) - export class MyComponent { - @HostBinding('class.foo!important') - myFooClassExp = true; - - @HostBinding('style.width!important') - myWidthExp = '100px'; - - myBarClassExp = true; - myHeightExp = '200px'; - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div"); - } - if (rf & 2) { - $r3$.ɵɵstyleMap(ctx.myStyleExp); - $r3$.ɵɵclassMap(ctx.myClassExp); - $r3$.ɵɵstyleProp("height", ctx.myHeightExp); - $r3$.ɵɵclassProp("bar", ctx.myBarClassExp); - } - }, - `; - - const hostBindings = ` - hostVars: 8, - hostBindings: function MyComponent_HostBindings(rf, ctx) { - if (rf & 2) { - $r3$.ɵɵstyleMap(ctx.myStyleExp); - $r3$.ɵɵclassMap(ctx.myClassExp); - $r3$.ɵɵstyleProp("width", ctx.myWidthExp); - $r3$.ɵɵclassProp("foo", ctx.myFooClassExp); - } - }, - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, hostBindings, 'Incorrect template'); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should support class interpolation', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule, HostBinding} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \` -
-
-
-
-
-
-
-
-
- \`, - }) - export class MyComponent { - p1 = 100; - p2 = 100; - p3 = 100; - p4 = 100; - p5 = 100; - p6 = 100; - p6 = 100; - p7 = 100; - p8 = 100; - p9 = 100; - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - function MyComponent_Template(rf, ctx) { - if (rf & 1) { - … - } - if (rf & 2) { - $r3$.ɵɵclassMapInterpolate1("A", ctx.p1, "B"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵclassMapInterpolate2("A", ctx.p1, "B", ctx.p2, "C"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵclassMapInterpolate3("A", ctx.p1, "B", ctx.p2, "C", ctx.p3, "D"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵclassMapInterpolate4("A", ctx.p1, "B", ctx.p2, "C", ctx.p3, "D", ctx.p4, "E"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵclassMapInterpolate5("A", ctx.p1, "B", ctx.p2, "C", ctx.p3, "D", ctx.p4, "E", ctx.p5, "F"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵclassMapInterpolate6("A", ctx.p1, "B", ctx.p2, "C", ctx.p3, "D", ctx.p4, "E", ctx.p5, "F", ctx.p6, "G"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵclassMapInterpolate7("A", ctx.p1, "B", ctx.p2, "C", ctx.p3, "D", ctx.p4, "E", ctx.p5, "F", ctx.p6, "G", ctx.p7, "H"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵclassMapInterpolate8("A", ctx.p1, "B", ctx.p2, "C", ctx.p3, "D", ctx.p4, "E", ctx.p5, "F", ctx.p6, "G", ctx.p7, "H", ctx.p8, "I"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵclassMapInterpolateV(["A", ctx.p1, "B", ctx.p2, "C", ctx.p3, "D", ctx.p4, "E", ctx.p5, "F", ctx.p6, "G", ctx.p7, "H", ctx.p8, "I", ctx.p9, "J"]); - } - }, - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should support style interpolation', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule, HostBinding} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \` -
-
-
-
-
-
-
-
-
- \`, - }) - export class MyComponent { - p1 = 100; - p2 = 100; - p3 = 100; - p4 = 100; - p5 = 100; - p6 = 100; - p6 = 100; - p7 = 100; - p8 = 100; - p9 = 100; - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - function MyComponent_Template(rf, ctx) { - if (rf & 1) { - … - } - if (rf & 2) { - $r3$.ɵɵstyleMapInterpolate1("p1:", ctx.p1, ";"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵstyleMapInterpolate2("p1:", ctx.p1, ";p2:", ctx.p2, ";"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵstyleMapInterpolate3("p1:", ctx.p1, ";p2:", ctx.p2, ";p3:", ctx.p3, ";"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵstyleMapInterpolate4("p1:", ctx.p1, ";p2:", ctx.p2, ";p3:", ctx.p3, ";p4:", ctx.p4, ";"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵstyleMapInterpolate5("p1:", ctx.p1, ";p2:", ctx.p2, ";p3:", ctx.p3, ";p4:", ctx.p4, ";p5:", ctx.p5, ";"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵstyleMapInterpolate6("p1:", ctx.p1, ";p2:", ctx.p2, ";p3:", ctx.p3, ";p4:", ctx.p4, ";p5:", ctx.p5, ";p6:", ctx.p6, ";"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵstyleMapInterpolate7("p1:", ctx.p1, ";p2:", ctx.p2, ";p3:", ctx.p3, ";p4:", ctx.p4, ";p5:", ctx.p5, ";p6:", ctx.p6, ";p7:", ctx.p7, ";"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵstyleMapInterpolate8("p1:", ctx.p1, ";p2:", ctx.p2, ";p3:", ctx.p3, ";p4:", ctx.p4, ";p5:", ctx.p5, ";p6:", ctx.p6, ";p7:", ctx.p7, ";p8:", ctx.p8, ";"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵstyleMapInterpolateV(["p1:", ctx.p1, ";p2:", ctx.p2, ";p3:", ctx.p3, ";p4:", ctx.p4, ";p5:", ctx.p5, ";p6:", ctx.p6, ";p7:", ctx.p7, ";p8:", ctx.p8, ";p9:", ctx.p9, ";"]); - } - }, - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should generate styling instructions for multiple directives that contain host binding definitions', - () => { - const files = { - app: { - 'spec.ts': ` - import {Directive, Component, NgModule, HostBinding} from '@angular/core'; - - @Directive({selector: '[myClassDir]'}) - export class ClassDirective { - @HostBinding('class') - myClassMap = {red: true}; - } - - @Directive({selector: '[myWidthDir]'}) - export class WidthDirective { - @HostBinding('style.width') - myWidth = 200; - - @HostBinding('class.foo') - myFooClass = true; - } - - @Directive({selector: '[myHeightDir]'}) - export class HeightDirective { - @HostBinding('style.height') - myHeight = 200; - - @HostBinding('class.bar') - myBarClass = true; - } - - @Component({ - selector: 'my-component', - template: '
', - }) - export class MyComponent { - } - - @NgModule({declarations: [MyComponent, WidthDirective, HeightDirective, ClassDirective]}) - export class MyModule {} - ` - } - }; - - // NOTE: IF YOU ARE CHANGING THIS COMPILER SPEC, YOU MAY NEED TO CHANGE THE DIRECTIVE - // DEF THAT'S HARD-CODED IN `ng_class.ts`. - const template = ` - … - hostVars: 2, - hostBindings: function ClassDirective_HostBindings(rf, ctx) { - if (rf & 2) { - $r3$.ɵɵclassMap(ctx.myClassMap); - } - } - … - hostVars: 4, - hostBindings: function WidthDirective_HostBindings(rf, ctx) { - if (rf & 2) { - $r3$.ɵɵstyleProp("width", ctx.myWidth); - $r3$.ɵɵclassProp("foo", ctx.myFooClass); - } - } - … - hostVars: 4, - hostBindings: function HeightDirective_HostBindings(rf, ctx) { - if (rf & 2) { - $r3$.ɵɵstyleProp("height", ctx.myHeight); - $r3$.ɵɵclassProp("bar", ctx.myBarClass); - } - } - … - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - }); - - describe('interpolations', () => { - it('should generate the proper update instructions for interpolated classes', () => { - const files = { - app: { - 'spec.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: \` -
-
-
-
-
-
-
-
-
-
- \` - }) - export class MyComponent { - } - ` - } - }; - - const template = ` - … - if (rf & 2) { - $r3$.ɵɵclassMapInterpolateV(["a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e", ctx.five, "f", ctx.six, "g", ctx.seven, "h", ctx.eight, "i", ctx.nine, "j"]); - $r3$.ɵɵadvance(1); - $r3$.ɵɵclassMapInterpolate8("a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e", ctx.five, "f", ctx.six, "g", ctx.seven, "h", ctx.eight, "i"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵclassMapInterpolate7("a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e", ctx.five, "f", ctx.six, "g", ctx.seven, "h"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵclassMapInterpolate6("a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e", ctx.five, "f", ctx.six, "g"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵclassMapInterpolate5("a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e", ctx.five, "f"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵclassMapInterpolate4("a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵclassMapInterpolate3("a", ctx.one, "b", ctx.two, "c", ctx.three, "d"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵclassMapInterpolate2("a", ctx.one, "b", ctx.two, "c"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵclassMapInterpolate1("a", ctx.one, "b"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵclassMap(ctx.one); - } - … - `; - const result = compile(files, angularFiles); - - expectEmit(result.source, template, 'Incorrect handling of interpolated classes'); - }); - - it('should throw for interpolations inside individual class bindings', () => { - const files = { - app: { - 'spec.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: '
' - }) - export class MyComponent { - } - ` - } - }; - - expect(() => compile(files, angularFiles)).toThrowError(/Unexpected interpolation/); - }); - - it('should generate the proper update instructions for interpolated style properties', () => { - const files = { - app: { - 'spec.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: \` -
-
-
-
-
-
-
-
-
-
- \` - }) - export class MyComponent { - } - ` - } - }; - - const template = ` - … - if (rf & 2) { - $r3$.ɵɵstylePropInterpolateV("color", ["a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e", ctx.five, "f", ctx.six, "g", ctx.seven, "h", ctx.eight, "i", ctx.nine, "j"]); - $r3$.ɵɵadvance(1); - $r3$.ɵɵstylePropInterpolate8("color", "a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e", ctx.five, "f", ctx.six, "g", ctx.seven, "h", ctx.eight, "i"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵstylePropInterpolate7("color", "a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e", ctx.five, "f", ctx.six, "g", ctx.seven, "h"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵstylePropInterpolate6("color", "a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e", ctx.five, "f", ctx.six, "g"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵstylePropInterpolate5("color", "a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e", ctx.five, "f"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵstylePropInterpolate4("color", "a", ctx.one, "b", ctx.two, "c", ctx.three, "d", ctx.four, "e"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵstylePropInterpolate3("color", "a", ctx.one, "b", ctx.two, "c", ctx.three, "d"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵstylePropInterpolate2("color", "a", ctx.one, "b", ctx.two, "c"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵstylePropInterpolate1("color", "a", ctx.one, "b"); - $r3$.ɵɵadvance(1); - $r3$.ɵɵstyleProp("color", ctx.one); - } - … - `; - const result = compile(files, angularFiles); - - expectEmit(result.source, template, 'Incorrect handling of interpolated style properties'); - }); - - it('should generate update instructions for interpolated style properties with a suffix', - () => { - const files = { - app: { - 'spec.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: \` -
- \` - }) - export class MyComponent { - } - ` - } - }; - - const template = ` - … - if (rf & 2) { - $r3$.ɵɵstylePropInterpolate2("width", "a", ctx.one, "b", ctx.two, "c", "px"); - } - … - `; - const result = compile(files, angularFiles); - - expectEmit(result.source, template, 'Incorrect handling of interpolated style properties'); - }); - - it('should generate update instructions for interpolated style properties with a sanitizer', - () => { - const files = { - app: { - 'spec.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: \` -
- \` - }) - export class MyComponent { - myUrl1 = '...'; - myUrl2 = '...'; - myBoxX = '0px'; - myBoxY = '0px'; - myBoxWidth = '100px'; - myRepeat = 'no-repeat'; - } - ` - } - }; - - const template = ` - … - if (rf & 2) { - $r3$.ɵɵstylePropInterpolate1("background", "url(", ctx.myUrl1, ")"); - $r3$.ɵɵstylePropInterpolate2("border-image", "url(", ctx.myUrl2, ") ", ctx.myRepeat, " auto"); - $r3$.ɵɵstylePropInterpolate3("box-shadow", "", ctx.myBoxX, " ", ctx.myBoxY, " ", ctx.myBoxWidth, " black"); - } - … - `; - const result = compile(files, angularFiles); - - expectEmit(result.source, template, 'Incorrect handling of interpolated style properties'); - }); - - it('should generate update instructions for interpolated style properties with !important', - () => { - const files = { - app: { - 'spec.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: \` -
- \` - }) - export class MyComponent { - } - ` - } - }; - - const template = ` - … - if (rf & 2) { - $r3$.ɵɵstylePropInterpolate2("width", "a", ctx.one, "b", ctx.two, "c"); - } - … - `; - const result = compile(files, angularFiles); - - expectEmit(result.source, template, 'Incorrect handling of interpolated style properties'); - }); - }); - - describe('instruction chaining', () => { - it('should chain classProp instruction calls', () => { - const files = { - app: { - 'spec.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: \`
\` - }) - export class MyComponent { - yesToApple = true; - yesToOrange = true; - tesToTomato = false; - } - ` - } - }; - - const template = ` - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - … - template: function MyComponent_Template(rf, $ctx$) { - … - if (rf & 2) { - $r3$.ɵɵclassProp("apple", $ctx$.yesToApple)("orange", $ctx$.yesToOrange)("tomato", $ctx$.yesToTomato); - } - }, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain styleProp instruction calls', () => { - const files = { - app: { - 'spec.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: \`
\` - }) - export class MyComponent { - color = 'red'; - border = '1px solid purple'; - transition = 'all 1337ms ease'; - } - ` - } - }; - - const template = ` - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - … - template: function MyComponent_Template(rf, $ctx$) { - … - if (rf & 2) { - $r3$.ɵɵstyleProp("color", $ctx$.color)("border", $ctx$.border)("transition", $ctx$.transition); - } - }, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain mixed styleProp and classProp calls', () => { - const files = { - app: { - 'spec.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: \`
\` - }) - export class MyComponent { - color = 'red'; - border = '1px solid purple'; - transition = 'all 1337ms ease'; - yesToApple = true; - yesToOrange = true; - tesToTomato = false; - } - ` - } - }; - - const template = ` - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - … - template: function MyComponent_Template(rf, $ctx$) { - … - if (rf & 2) { - $r3$.ɵɵstyleProp("color", $ctx$.color)("border", $ctx$.border)("transition", $ctx$.transition); - $r3$.ɵɵclassProp("apple", $ctx$.yesToApple)("orange", $ctx$.yesToOrange)("tomato", $ctx$.yesToTomato); - } - }, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain style interpolations of the same kind', () => { - const files = { - app: { - 'spec.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: \`
\` - }) - export class MyComponent { - } - ` - } - }; - - const template = ` - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - … - template: function MyComponent_Template(rf, $ctx$) { - … - if (rf & 2) { - $r3$.ɵɵstylePropInterpolate1("color", "a", ctx.one, "b")("border", "a", ctx.one, "b")("transition", "a", ctx.one, "b"); - } - }, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain style interpolations of multiple kinds', () => { - const files = { - app: { - 'spec.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: \`
\` - }) - export class MyComponent { - } - ` - } - }; - - const template = ` - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - … - template: function MyComponent_Template(rf, $ctx$) { - … - if (rf & 2) { - $r3$.ɵɵstylePropInterpolate1("color", "a", ctx.one, "b")("border", "a", ctx.one, "b"); - $r3$.ɵɵstylePropInterpolate2("transition", "a", ctx.one, "b", ctx.two, "c")("width", "a", ctx.one, "b", ctx.two, "c"); - $r3$.ɵɵstylePropInterpolate3("height", "a", ctx.one, "b", ctx.two, "c", ctx.three, "d")("top", "a", ctx.one, "b", ctx.two, "c", ctx.three, "d"); - } - }, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should break into multiple chains if there are other styling instructions in between', - () => { - const files = { - app: { - 'spec.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: \`
\` - }) - export class MyComponent { - transition = 'all 1337ms ease'; - width = '42px'; - yesToApple = true; - yesToOrange = true; - } - ` - } - }; - - const template = ` - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - … - template: function MyComponent_Template(rf, $ctx$) { - … - if (rf & 2) { - $r3$.ɵɵstylePropInterpolate1("color", "a", ctx.one, "b")("border", "a", ctx.one, "b"); - $r3$.ɵɵstyleProp("transition", ctx.transition)("width", ctx.width); - $r3$.ɵɵstylePropInterpolate1("height", "a", ctx.one, "b")("top", "a", ctx.one, "b"); - $r3$.ɵɵclassProp("apple", ctx.yesToApple)("orange", ctx.yesToOrange); - } - }, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should break into multiple chains if there are other styling interpolation instructions in between', - () => { - const files = { - app: { - 'spec.ts': ` - import {Component} from '@angular/core'; - - @Component({ - template: \`
\` - }) - export class MyComponent { - transition = 'all 1337ms ease'; - width = '42px'; - } - ` - } - }; - - const template = ` - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - … - template: function MyComponent_Template(rf, $ctx$) { - … - if (rf & 2) { - $r3$.ɵɵstylePropInterpolate1("color", "a", ctx.one, "b")("border", "a", ctx.one, "b"); - $r3$.ɵɵstylePropInterpolate2("transition", "a", ctx.one, "b", ctx.two, "c"); - $r3$.ɵɵstylePropInterpolate3("width", "a", ctx.one, "b", ctx.two, "c", ctx.three, "d"); - $r3$.ɵɵstylePropInterpolate1("height", "a", ctx.one, "b")("top", "a", ctx.one, "b"); - } - }, - encapsulation: 2 - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should chain styling instructions inside host bindings', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, HostBinding} from '@angular/core'; - - @Component({ - template: '', - host: { - '[class.apple]': 'yesToApple', - '[style.color]': 'color', - '[class.tomato]': 'yesToTomato', - '[style.transition]': 'transition' - } - }) - export class MyComponent { - color = 'red'; - transition = 'all 1337ms ease'; - yesToApple = true; - tesToTomato = false; - - @HostBinding('style.border') - border = '1px solid purple'; - - @HostBinding('class.orange') - yesToOrange = true; - } - ` - } - }; - - const template = ` - … - MyComponent.ɵcmp = /*@__PURE__*/ $r3$.ɵɵdefineComponent({ - … - hostBindings: function MyComponent_HostBindings(rf, $ctx$) { - … - if (rf & 2) { - $r3$.ɵɵstyleProp("color", $ctx$.color)("transition", $ctx$.transition)("border", $ctx$.border); - $r3$.ɵɵclassProp("apple", $ctx$.yesToApple)("tomato", $ctx$.yesToTomato)("orange", $ctx$.yesToOrange); - } - }, - … - }); - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - }); - - it('should count only non-style and non-class host bindings on Components', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule, HostBinding} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: '', - host: { - 'style': 'width:200px; height:500px', - 'class': 'foo baz', - 'title': 'foo title' - } - }) - export class MyComponent { - @HostBinding('style') - myStyle = {width:'100px'}; - - @HostBinding('class') - myClass = {bar:false}; - - @HostBinding('id') - id = 'some id'; - - @HostBinding('title') - title = 'some title'; - - @Input('name') - name = ''; - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - hostAttrs: ["title", "foo title", ${AttributeMarker.Classes}, "foo", "baz", ${ - AttributeMarker.Styles}, "width", "200px", "height", "500px"], - hostVars: 6, - hostBindings: function MyComponent_HostBindings(rf, ctx) { - if (rf & 2) { - $r3$.ɵɵhostProperty("id", ctx.id)("title", ctx.title); - $r3$.ɵɵstyleMap(ctx.myStyle); - $r3$.ɵɵclassMap(ctx.myClass); - } - } - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should count only non-style and non-class host bindings on Directives', () => { - const files = { - app: { - 'spec.ts': ` - import {Directive, Component, NgModule, HostBinding} from '@angular/core'; - - @Directive({selector: '[myWidthDir]'}) - export class WidthDirective { - @HostBinding('style.width') - myWidth = 200; - - @HostBinding('class.foo') - myFooClass = true; - - @HostBinding('id') - id = 'some id'; - - @HostBinding('title') - title = 'some title'; - } - ` - } - }; - - const template = ` - hostVars: 6, - hostBindings: function WidthDirective_HostBindings(rf, ctx) { - if (rf & 2) { - $r3$.ɵɵhostProperty("id", ctx.id)("title", ctx.title); - $r3$.ɵɵstyleProp("width", ctx.myWidth); - $r3$.ɵɵclassProp("foo", ctx.myFooClass); - } - } - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - - describe('new styling refactor', () => { - it('should generate the correct amount of host bindings when styling is present', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Directive, NgModule} from '@angular/core'; - - @Directive({ - selector: '[my-dir]', - host: { - '[title]': 'title', - '[class.foo]': 'foo', - '[@anim]': \`{ - value: _animValue, - params: { - param1: _animParam1, - param2: _animParam2 - } - }\` - } - }) - export class MyDir { - title = ''; - foo = true; - _animValue = null; - _animParam1 = null; - _animParam2 = null; - } - - @Component({ - selector: 'my-app', - template: \` -
- \` - }) - export class MyAppComp {} - - @NgModule({declarations: [MyAppComp, MyDir]}) - export class MyModule {} - ` - } - }; - - const template = ` - hostVars: 10, - hostBindings: function MyDir_HostBindings(rf, ctx) { - if (rf & 2) { - $r3$.ɵɵhostProperty("title", ctx.title); - $r3$.ɵɵsyntheticHostProperty("@anim", - $r3$.ɵɵpureFunction2(7, _c1, ctx._animValue, - $r3$.ɵɵpureFunction2(4, _c0, ctx._animParam1, ctx._animParam2))); - $r3$.ɵɵclassProp("foo", ctx.foo); - } - } - `; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); - }); -}); diff --git a/packages/compiler-cli/test/compliance_old/r3_view_compiler_template_spec.ts b/packages/compiler-cli/test/compliance_old/r3_view_compiler_template_spec.ts deleted file mode 100644 index 26fd0703e4..0000000000 --- a/packages/compiler-cli/test/compliance_old/r3_view_compiler_template_spec.ts +++ /dev/null @@ -1,874 +0,0 @@ -/** - * @license - * 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 - */ -import {AttributeMarker} from '@angular/compiler/src/core'; -import {setup} from '@angular/compiler/test/aot/test_util'; -import {compile, expectEmit} from './mock_compile'; - -describe('compiler compliance: template', () => { - const angularFiles = setup({ - compileAngular: false, - compileFakeCore: true, - compileAnimations: false, - }); - - it('should correctly bind to context in nested template', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \` -
    -
  • -
    - {{format(outer, middle, inner, component)}} -
    -
  • -
\` - }) - export class MyComponent { - component = this; - format(outer: any, middle: any, inner: any) { } - onClick(outer: any, middle: any, inner: any) { } - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - // The template should look like this (where IDENT is a wild card for an identifier): - const template = ` - function MyComponent_ul_0_li_1_div_1_Template(rf, ctx) { - if (rf & 1) { - const $s$ = $i0$.ɵɵgetCurrentView(); - $i0$.ɵɵelementStart(0, "div", 2); - $i0$.ɵɵlistener("click", function MyComponent_ul_0_li_1_div_1_Template_div_click_0_listener(){ - const $sr$ = $i0$.ɵɵrestoreView($s$); - const $inner$ = $sr$.$implicit; - const $middle$ = $i0$.ɵɵnextContext().$implicit; - const $outer$ = $i0$.ɵɵnextContext().$implicit; - const $myComp$ = $i0$.ɵɵnextContext(); - return $myComp$.onClick($outer$, $middle$, $inner$); - }); - $i0$.ɵɵtext(1); - $i0$.ɵɵelementEnd(); - } - - if (rf & 2) { - const $inner1$ = ctx.$implicit; - const $middle1$ = $i0$.ɵɵnextContext().$implicit; - const $outer1$ = $i0$.ɵɵnextContext().$implicit; - const $myComp1$ = $i0$.ɵɵnextContext(); - $i0$.ɵɵproperty("title", $myComp1$.format($outer1$, $middle1$, $inner1$, $myComp1$.component)); - $r3$.ɵɵadvance(1); - $i0$.ɵɵtextInterpolate1(" ", $myComp1$.format($outer1$, $middle1$, $inner1$, $myComp1$.component), " "); - } - } - - function MyComponent_ul_0_li_1_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵelementStart(0, "li"); - $i0$.ɵɵtemplate(1, MyComponent_ul_0_li_1_div_1_Template, 2, 2, "div", 1); - $i0$.ɵɵelementEnd(); - } - if (rf & 2) { - const $myComp2$ = $i0$.ɵɵnextContext(2); - $r3$.ɵɵadvance(1); - $i0$.ɵɵproperty("ngForOf", $myComp2$.items); - } - } - - function MyComponent_ul_0_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵelementStart(0, "ul"); - $i0$.ɵɵtemplate(1, MyComponent_ul_0_li_1_Template, 2, 1, "li", 0); - $i0$.ɵɵelementEnd(); - } - if (rf & 2) { - const $outer2$ = ctx.$implicit; - $r3$.ɵɵadvance(1); - $i0$.ɵɵproperty("ngForOf", $outer2$.items); - } - } - // ... - consts: [[${AttributeMarker.Template}, "ngFor", "ngForOf"], [${ - AttributeMarker.Bindings}, "title", "click", ${ - AttributeMarker.Template}, "ngFor", "ngForOf"], [${ - AttributeMarker.Bindings}, "title", "click"]], - template:function MyComponent_Template(rf, ctx){ - if (rf & 1) { - $i0$.ɵɵtemplate(0, MyComponent_ul_0_Template, 2, 1, "ul", 0); - } - if (rf & 2) { - $i0$.ɵɵproperty("ngForOf", ctx.items); - } - }`; - - const result = compile(files, angularFiles); - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should correctly bind to context in nested template with many bindings', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \` -
- \` - }) - export class MyComponent { - _data = [1,2,3]; - _handleClick(d: any, i: any) {} - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - function MyComponent_div_0_Template(rf, ctx) { - if (rf & 1) { - const $s$ = $r3$.ɵɵgetCurrentView(); - $r3$.ɵɵelementStart(0, "div", 1); - $r3$.ɵɵlistener("click", function MyComponent_div_0_Template_div_click_0_listener() { - const $sr$ = $r3$.ɵɵrestoreView($s$); - const $d$ = $sr$.$implicit; - const $i$ = $sr$.index; - const $comp$ = $r3$.ɵɵnextContext(); - return $comp$._handleClick($d$, $i$); - }); - $r3$.ɵɵelementEnd(); - } - } - // ... - consts: [[${AttributeMarker.Bindings}, "click", ${ - AttributeMarker.Template}, "ngFor", "ngForOf"], [${AttributeMarker.Bindings}, "click"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵtemplate(0, MyComponent_div_0_Template, 1, 0, "div", 0); - } - if (rf & 2) { - $r3$.ɵɵproperty("ngForOf", ctx._data); - } - } - `; - - const result = compile(files, angularFiles); - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should correctly bind to implicit receiver in template', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \` -
-
- \` - }) - export class MyComponent { - greet(val: any) {} - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - function MyComponent_div_0_Template(rf, ctx) { - if (rf & 1) { - const $_r2$ = i0.ɵɵgetCurrentView(); - $r3$.ɵɵelementStart(0, "div", 2); - $r3$.ɵɵlistener("click", function MyComponent_div_0_Template_div_click_0_listener() { - i0.ɵɵrestoreView($_r2$); - const $ctx_r1$ = i0.ɵɵnextContext(); - return $ctx_r1$.greet($ctx_r1$); - }); - $r3$.ɵɵelementEnd(); - } - } - // ... - function MyComponent_div_1_Template(rf, ctx) { - if (rf & 1) { - $r3$.ɵɵelement(0, "div", 3); - } if (rf & 2) { - const $ctx_0$ = i0.ɵɵnextContext(); - $r3$.ɵɵproperty("id", $ctx_0$); - } - } - `; - - const result = compile(files, angularFiles); - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should support ngFor context variables', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \` - - {{ i }} - {{ item }} - \` - }) - export class MyComponent {} - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - function MyComponent_span_0_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵelementStart(0, "span"); - $i0$.ɵɵtext(1); - $i0$.ɵɵelementEnd(); - } - if (rf & 2) { - const $item$ = ctx.$implicit; - const $i$ = ctx.index; - $r3$.ɵɵadvance(1); - $i0$.ɵɵtextInterpolate2(" ", $i$, " - ", $item$, " "); - } - } - // ... - consts: [[${AttributeMarker.Template}, "ngFor", "ngForOf"]], - template:function MyComponent_Template(rf, ctx){ - if (rf & 1) { - $i0$.ɵɵtemplate(0, MyComponent_span_0_Template, 2, 2, "span", 0); - } - if (rf & 2) { - $i0$.ɵɵproperty("ngForOf", ctx.items); - } - }`; - - const result = compile(files, angularFiles); - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should support ngFor context variables in parent views', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \` -
- - {{ i }} - {{ item }} - -
\` - }) - export class MyComponent {} - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - function MyComponent_div_0_span_1_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵelementStart(0, "span"); - $i0$.ɵɵtext(1); - $i0$.ɵɵelementEnd(); - } - if (rf & 2) { - const $div$ = $i0$.ɵɵnextContext(); - const $i$ = $div$.index; - const $item$ = $div$.$implicit; - $r3$.ɵɵadvance(1); - $i0$.ɵɵtextInterpolate2(" ", $i$, " - ", $item$, " "); - } - } - - function MyComponent_div_0_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵelementStart(0, "div"); - $i0$.ɵɵtemplate(1, MyComponent_div_0_span_1_Template, 2, 2, "span", 1); - $i0$.ɵɵelementEnd(); - } - if (rf & 2) { - const $app$ = $i0$.ɵɵnextContext(); - $r3$.ɵɵadvance(1); - $i0$.ɵɵproperty("ngIf", $app$.showing); - } - } - - // ... - consts: [[${AttributeMarker.Template}, "ngFor", "ngForOf"], [${ - AttributeMarker.Template}, "ngIf"]], - template:function MyComponent_Template(rf, ctx){ - if (rf & 1) { - $i0$.ɵɵtemplate(0, MyComponent_div_0_Template, 2, 1, "div", 0); - } - if (rf & 2) { - $i0$.ɵɵproperty("ngForOf", ctx.items); - } - }`; - - const result = compile(files, angularFiles); - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should correctly skip contexts as needed', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \` -
-
-
- {{ middle.value }} - {{ name }} -
-
-
\` - }) - export class MyComponent {} - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - // The template should look like this (where IDENT is a wild card for an identifier): - const template = ` - function MyComponent_div_0_div_1_div_1_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵelementStart(0, "div"); - $i0$.ɵɵtext(1); - $i0$.ɵɵelementEnd(); - } - if (rf & 2) { - const $middle$ = $i0$.ɵɵnextContext().$implicit; - const $myComp$ = $i0$.ɵɵnextContext(2); - $r3$.ɵɵadvance(1); - $i0$.ɵɵtextInterpolate2(" ", $middle$.value, " - ", $myComp$.name, " "); - } - } - - function MyComponent_div_0_div_1_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵelementStart(0, "div"); - $i0$.ɵɵtemplate(1, MyComponent_div_0_div_1_div_1_Template, 2, 2, "div", 0); - $i0$.ɵɵelementEnd(); - } - if (rf & 2) { - const $middle$ = ctx.$implicit; - $r3$.ɵɵadvance(1); - $i0$.ɵɵproperty("ngForOf", $middle$.items); - } - } - - function MyComponent_div_0_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵelementStart(0, "div"); - $i0$.ɵɵtemplate(1, MyComponent_div_0_div_1_Template, 2, 1, "div", 0); - $i0$.ɵɵelementEnd(); - } - if (rf & 2) { - const $outer$ = ctx.$implicit; - $r3$.ɵɵadvance(1); - $i0$.ɵɵproperty("ngForOf", $outer$.items); - } - } - // ... - consts: [[${AttributeMarker.Template}, "ngFor", "ngForOf"]], - template:function MyComponent_Template(rf, ctx){ - if (rf & 1) { - $i0$.ɵɵtemplate(0, MyComponent_div_0_Template, 2, 1, "div", 0); - } - if (rf & 2) { - $i0$.ɵɵproperty("ngForOf", ctx.items); - } - }`; - - const result = compile(files, angularFiles); - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should support ', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \` - - some-content - \` - }) - export class MyComponent {} - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - function MyComponent_ng_template_0_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵtext(0, " some-content "); - } - } - - // ... - - consts: [["attr", "l", ${AttributeMarker.Bindings}, "boundAttr"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵtemplate(0, MyComponent_ng_template_0_Template, 1, 0, "ng-template", 0); - } - if (rf & 2) { - $i0$.ɵɵproperty("boundAttr", ctx.b); - } - }`; - - const result = compile(files, angularFiles); - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should support local refs on ', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: 'some-content', - }) - export class MyComponent {} - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - function MyComponent_ng_template_0_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵtext(0, "some-content"); - } - } - - // ... - consts: [["foo", ""]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵtemplate(0, MyComponent_ng_template_0_Template, 1, 0, "ng-template", null, 0, $i0$.ɵɵtemplateRefExtractor); - } - }`; - - const result = compile(files, angularFiles); - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should support directive outputs on ', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: '', - }) - export class MyComponent {} - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - function MyComponent_ng_template_0_Template(rf, ctx) { } - - // ... - - consts: [[${AttributeMarker.Bindings}, "outDirective"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵtemplate(0, MyComponent_ng_template_0_Template, 0, 0, "ng-template", 0); - $i0$.ɵɵlistener("outDirective", function MyComponent_Template_ng_template_outDirective_0_listener($event) { return $event.doSth(); }); - } - }`; - - const result = compile(files, angularFiles); - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should allow directive inputs as an interpolated prop on ', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Directive, Input} from '@angular/core'; - - @Directive({selector: '[dir]'}) - class WithInput { - @Input() dir: string = ''; - } - - @Component({ - selector: 'my-app', - template: '', - }) - export class TestComp { - message = 'Hello'; - } - ` - } - }; - const result = compile(files, angularFiles); - const expectedTemplate = ` - consts: [[${AttributeMarker.Bindings}, "dir"]], - template: function TestComp_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵtemplate(0, $TestComp_ng_template_0_Template$, 0, 0, "ng-template", 0); - } - if (rf & 2) { - $i0$.ɵɵpropertyInterpolate("dir", ctx.message); - } - }, - `; - expectEmit(result.source, expectedTemplate, 'Incorrect template'); - }); - - it('should allow directive inputs as an interpolated prop on (with structural directives)', - () => { - const files = { - app: { - 'spec.ts': ` - import {Component, Directive, Input} from '@angular/core'; - - @Directive({selector: '[dir]'}) - class WithInput { - @Input() dir: string = ''; - } - - @Component({ - selector: 'my-app', - template: '', - }) - export class TestComp { - message = 'Hello'; - } - ` - } - }; - const result = compile(files, angularFiles); - - // Expect that `ɵɵpropertyInterpolate` is generated in the inner template function. - const expectedInnerTemplate = ` - function $TestComp_0_Template$(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵtemplate(0, $TestComp_0_ng_template_0_Template$, 0, 0, "ng-template", 1); - } - if (rf & 2) { - const $ctx_r0$ = i0.ɵɵnextContext(); - $i0$.ɵɵpropertyInterpolate("dir", $ctx_r0$.message); - } - } - `; - expectEmit(result.source, expectedInnerTemplate, 'Incorrect template'); - - // Main template should just contain *ngIf property. - const expectedMainTemplate = ` - consts: [[4, "ngIf"], [3, "dir"]], - template: function TestComp_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵtemplate(0, $TestComp_0_Template$, 1, 1, undefined, 0); - } - if (rf & 2) { - $i0$.ɵɵproperty("ngIf", true); - } - }, - `; - expectEmit(result.source, expectedMainTemplate, 'Incorrect template'); - }); - - it('should create unique template function names even for similar nested template structures', - () => { - const files = { - app: { - 'spec1.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'a-component', - template: \` -
-

less than 10

-

less than 10

-
-
-

more than 10

-
- \`, - }) - export class AComponent { - items = [4, 2]; - } - - @NgModule({declarations: [AComponent]}) - export class AModule {} - `, - 'spec2.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'b-component', - template: \` -
- -

less than 10

-

less than 10

-
- -

less than 10

-
-
-
- -

more than 10

-
-
- \`, - }) - export class BComponent { - items = [ - {subitems: [1, 3]}, - {subitems: [3, 7]}, - ]; - } - - @NgModule({declarations: [BComponent]}) - export class BModule {} - `, - }, - }; - - const result = compile(files, angularFiles); - - const allTemplateFunctionsNames = (result.source.match(/function ([^\s(]+)/g) || []) - .map(x => x.slice(9)) - .filter(x => x.includes('Template')) - .sort(); - const uniqueTemplateFunctionNames = Array.from(new Set(allTemplateFunctionsNames)); - - // Expected template function: - // - 5 for AComponent's template. - // - 9 for BComponent's template. - // - 2 for the two components. - expect(allTemplateFunctionsNames.length).toBe(5 + 9 + 2); - expect(allTemplateFunctionsNames).toEqual(uniqueTemplateFunctionNames); - }); - - it('should create unique template function names for ng-content templates', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'a-component', - template: \` - - \`, - }) - export class AComponent { - show = true; - } - - @Component({ - selector: 'b-component', - template: \` - - \`, - }) - export class BComponent { - show = true; - } - - @NgModule({declarations: [AComponent, BComponent]}) - export class AModule {} - ` - }, - }; - - const result = compile(files, angularFiles); - - const allTemplateFunctionsNames = (result.source.match(/function ([^\s(]+)/g) || []) - .map(x => x.slice(9)) - .filter(x => x.includes('Template')) - .sort(); - const uniqueTemplateFunctionNames = Array.from(new Set(allTemplateFunctionsNames)); - - // Expected template function: - // - 1 for AComponent's template. - // - 1 for BComponent's template. - // - 2 for the two components. - expect(allTemplateFunctionsNames.length).toBe(1 + 1 + 2); - expect(allTemplateFunctionsNames).toEqual(uniqueTemplateFunctionNames); - }); - - it('should create unique listener function names even for similar nested template structures', - () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \` -
-

{{ item }}

-

{{ item }}

-
-
-

{{ item }}

-
- \`, - }) - export class MyComponent { - items = [4, 2]; - } - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - `, - }, - }; - - const result = compile(files, angularFiles); - - const allListenerFunctionsNames = (result.source.match(/function ([^\s(]+)/g) || []) - .map(x => x.slice(9)) - .filter(x => x.includes('listener')) - .sort(); - const uniqueListenerFunctionNames = Array.from(new Set(allListenerFunctionsNames)); - - expect(allListenerFunctionsNames.length).toBe(3); - expect(allListenerFunctionsNames).toEqual(uniqueListenerFunctionNames); - }); - - it('should support pipes in template bindings', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \` -
\` - }) - export class MyComponent {} - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = ` - function MyComponent_div_0_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵelement(0, "div"); - } - } - - // ... - consts: [[${AttributeMarker.Template}, "ngIf"]], - template: function MyComponent_Template(rf, ctx) { - if (rf & 1) { - $i0$.ɵɵtemplate(0, MyComponent_div_0_Template, 1, 0, "div", 0); - $i0$.ɵɵpipe(1, "pipe"); - } if (rf & 2) { - $i0$.ɵɵproperty("ngIf", $i0$.ɵɵpipeBind1(1, 1, ctx.val)); - } - }`; - - const result = compile(files, angularFiles); - - expectEmit(result.source, template, 'Incorrect template'); - }); - - it('should safely nest ternary operations', () => { - const files = { - app: { - 'spec.ts': ` - import {Component, NgModule} from '@angular/core'; - - @Component({ - selector: 'my-component', - template: \` - {{a?.b ? 1 : 2 }}\` - }) - export class MyComponent {} - - @NgModule({declarations: [MyComponent]}) - export class MyModule {} - ` - } - }; - - const template = `i0.ɵɵtextInterpolate1(" ", (ctx.a == null ? null : ctx.a.b) ? 1 : 2, "")`; - - const result = compile(files, angularFiles); - expectEmit(result.source, template, 'Incorrect template'); - }); -}); diff --git a/packages/compiler-cli/test/metadata/typescript.mocks.ts b/packages/compiler-cli/test/metadata/typescript.mocks.ts index 7b9e1e1434..657ac8ec60 100644 --- a/packages/compiler-cli/test/metadata/typescript.mocks.ts +++ b/packages/compiler-cli/test/metadata/typescript.mocks.ts @@ -149,9 +149,6 @@ export class MockNode implements ts.Node { export class MockIdentifier extends MockNode implements ts.Identifier { originalKeywordKind?: ts.SyntaxKind; isInJSDocNamespace?: boolean; - decorators?: ts.NodeArray; - modifiers?: ts.NodeArray; - parent!: ts.Node; public text: string; // TODO(issue/24571): remove '!'. public escapedText!: ts.__String; @@ -167,7 +164,8 @@ export class MockIdentifier extends MockNode implements ts.Identifier { // tslint:enable constructor( - public name: string, public kind: ts.SyntaxKind.Identifier = ts.SyntaxKind.Identifier, + public name: string, + public override kind: ts.SyntaxKind.Identifier = ts.SyntaxKind.Identifier, flags: ts.NodeFlags = 0, pos: number = 0, end: number = 0) { super(kind, flags, pos, end); this.text = name; @@ -175,18 +173,16 @@ export class MockIdentifier extends MockNode implements ts.Identifier { } export class MockVariableDeclaration extends MockNode implements ts.VariableDeclaration { - parent!: ts.VariableDeclarationList|ts.CatchClause; + override parent!: ts.VariableDeclarationList|ts.CatchClause; exclamationToken?: ts.Token; type?: ts.TypeNode; initializer?: ts.Expression; - decorators?: ts.NodeArray; - modifiers?: ts.NodeArray; // tslint:disable-next-line public _declarationBrand: any; constructor( public name: ts.Identifier, - public kind: ts.SyntaxKind.VariableDeclaration = ts.SyntaxKind.VariableDeclaration, + public override kind: ts.SyntaxKind.VariableDeclaration = ts.SyntaxKind.VariableDeclaration, flags: ts.NodeFlags = 0, pos: number = 0, end: number = 0) { super(kind, flags, pos, end); } diff --git a/packages/compiler-cli/test/ngc_spec.ts b/packages/compiler-cli/test/ngc_spec.ts index 0f8cd65c1a..ed8b9a9f15 100644 --- a/packages/compiler-cli/test/ngc_spec.ts +++ b/packages/compiler-cli/test/ngc_spec.ts @@ -330,6 +330,34 @@ describe('ngc transformer command-line', () => { }); }); + it('should give a specific error when an Angular Ivy NgModule is imported', () => { + writeConfig(`{ + "extends": "./tsconfig-base.json", + "files": ["mymodule.ts"] + }`); + write('node_modules/test/index.d.ts', ` + export declare class FooModule { + static ɵmod = null; + } + `); + write('mymodule.ts', ` + import {NgModule} from '@angular/core'; + import {FooModule} from 'test'; + + @NgModule({ + imports: [FooModule], + }) + export class TestModule {} + `); + + const exitCode = main(['-p', basePath], errorSpy); + expect(errorSpy).toHaveBeenCalledTimes(1); + const message = errorSpy.calls.mostRecent().args[0]; + + // The error message should mention Ivy specifically. + expect(message).toContain('Angular Ivy'); + }); + describe('compile ngfactory files', () => { it('should compile ngfactory files that are not referenced by root files', () => { writeConfig(`{ @@ -2152,7 +2180,7 @@ describe('ngc transformer command-line', () => { }); }); - it('compiles a basic InjectableDef', () => { + it('compiles a basic Injectable definition', () => { const source = compileService(` import {Injectable} from '@angular/core'; import {Module} from './module'; @@ -2187,7 +2215,7 @@ describe('ngc transformer command-line', () => { expect(source).toMatch(/\/\*\* @nocollapse \*\/ Service\.ɵprov =/); }); - it('compiles a useValue InjectableDef', () => { + it('compiles a useValue Injectable definition', () => { const source = compileService(` import {Injectable} from '@angular/core'; import {Module} from './module'; @@ -2203,7 +2231,7 @@ describe('ngc transformer command-line', () => { expect(source).toMatch(/ɵprov.*return CONST_SERVICE/); }); - it('compiles a useExisting InjectableDef', () => { + it('compiles a useExisting Injectable definition', () => { const source = compileService(` import {Injectable} from '@angular/core'; import {Module} from './module'; @@ -2220,7 +2248,7 @@ describe('ngc transformer command-line', () => { expect(source).toMatch(/ɵprov.*return ..\.ɵɵinject\(Existing\)/); }); - it('compiles a useFactory InjectableDef with optional dep', () => { + it('compiles a useFactory Injectable definition with optional dep', () => { const source = compileService(` import {Injectable, Optional} from '@angular/core'; import {Module} from './module'; @@ -2240,7 +2268,7 @@ describe('ngc transformer command-line', () => { expect(source).toMatch(/ɵprov.*return ..\(..\.ɵɵinject\(Existing, 8\)/); }); - it('compiles a useFactory InjectableDef with skip-self dep', () => { + it('compiles a useFactory Injectable definition with skip-self dep', () => { const source = compileService(` import {Injectable, SkipSelf} from '@angular/core'; import {Module} from './module'; @@ -2303,6 +2331,22 @@ describe('ngc transformer command-line', () => { `); expect(source).toMatch(/new Service\(i0\.ɵɵinject\(exports\.TOKEN\)\);/); }); + + it('compiles an injectable using `forwardRef` inside `providedIn`', () => { + const source = compileService(` + import {Injectable, forwardRef} from '@angular/core'; + import {Module} from './module'; + + @Injectable({ + providedIn: forwardRef(() => Module), + }) + export class Service {} + `); + + expect(source).toMatch(/ɵprov = .+\.ɵɵdefineInjectable\(/); + expect(source).toMatch(/ɵprov.*token: Service/); + expect(source).toMatch(/ɵprov.*providedIn: .+\.Module/); + }); }); it('libraries should not break strictMetadataEmit', () => { diff --git a/packages/compiler-cli/test/ngtsc/BUILD.bazel b/packages/compiler-cli/test/ngtsc/BUILD.bazel index b9c68a775d..328c699f6b 100644 --- a/packages/compiler-cli/test/ngtsc/BUILD.bazel +++ b/packages/compiler-cli/test/ngtsc/BUILD.bazel @@ -26,6 +26,7 @@ jasmine_node_test( timeout = "long", bootstrap = ["//tools/testing:node_no_angular_es5"], data = [ + "//packages/compiler-cli/src/ngtsc/testing/fake_common:npm_package", "//packages/compiler-cli/src/ngtsc/testing/fake_core:npm_package", ], shard_count = 4, diff --git a/packages/compiler-cli/test/ngtsc/env.ts b/packages/compiler-cli/test/ngtsc/env.ts index 4c68621b65..d1f4271642 100644 --- a/packages/compiler-cli/test/ngtsc/env.ts +++ b/packages/compiler-cli/test/ngtsc/env.ts @@ -11,6 +11,7 @@ import * as api from '@angular/compiler-cli/src/transformers/api'; import * as ts from 'typescript'; import {createCompilerHost, createProgram} from '../../index'; +import {mainXi18n} from '../../src/extract_i18n'; import {main, mainDiagnosticsForTest, readNgcCommandLineAndConfiguration} from '../../src/main'; import {absoluteFrom, AbsoluteFsPath, FileSystem, getFileSystem, relativeFrom} from '../../src/ngtsc/file_system'; import {Folder, MockFileSystem} from '../../src/ngtsc/file_system/testing'; @@ -30,6 +31,7 @@ export class NgtscTestEnvironment { private multiCompileHostExt: MultiCompileHostExt|null = null; private oldProgram: Program|null = null; private changedResources: Set|null = null; + private commandLineArgs = ['-p', this.basePath]; private constructor( private fs: FileSystem, readonly outDir: AbsoluteFsPath, readonly basePath: AbsoluteFsPath) {} @@ -52,7 +54,7 @@ export class NgtscTestEnvironment { env.write(absoluteFrom('/tsconfig-base.json'), `{ "compilerOptions": { - "emitDecoratorMetadata": true, + "emitDecoratorMetadata": false, "experimentalDecorators": true, "skipLibCheck": true, "noImplicitAny": true, @@ -114,6 +116,10 @@ export class NgtscTestEnvironment { setWrapHostForTest(makeWrapHost(new ResourceLoadingCompileHost(this.fs))); } + addCommandLineArgs(...args: string[]): void { + this.commandLineArgs.push(...args); + } + flushWrittenFileTracking(): void { if (this.multiCompileHostExt === null) { throw new Error(`Not tracking written files - call enableMultipleCompilations()`); @@ -214,7 +220,7 @@ export class NgtscTestEnvironment { }; } const exitCode = main( - ['-p', this.basePath], errorSpy, undefined, customTransformers, reuseProgram, + this.commandLineArgs, errorSpy, undefined, customTransformers, reuseProgram, this.changedResources); expect(errorSpy).not.toHaveBeenCalled(); expect(exitCode).toBe(0); @@ -236,7 +242,7 @@ export class NgtscTestEnvironment { } const diags = mainDiagnosticsForTest( - ['-p', this.basePath], undefined, reuseProgram, this.changedResources); + this.commandLineArgs, undefined, reuseProgram, this.changedResources); if (this.multiCompileHostExt !== null) { @@ -248,7 +254,7 @@ export class NgtscTestEnvironment { } async driveDiagnosticsAsync(): Promise> { - const {rootNames, options} = readNgcCommandLineAndConfiguration(['-p', this.basePath]); + const {rootNames, options} = readNgcCommandLineAndConfiguration(this.commandLineArgs); const host = createCompilerHost({options}); const program = createProgram({rootNames, host, options}); await program.loadNgStructureAsync(); @@ -258,18 +264,33 @@ export class NgtscTestEnvironment { } driveRoutes(entryPoint?: string): LazyRoute[] { - const {rootNames, options} = readNgcCommandLineAndConfiguration(['-p', this.basePath]); + const {rootNames, options} = readNgcCommandLineAndConfiguration(this.commandLineArgs); const host = createCompilerHost({options}); const program = createProgram({rootNames, host, options}); return program.listLazyRoutes(entryPoint); } driveIndexer(): Map { - const {rootNames, options} = readNgcCommandLineAndConfiguration(['-p', this.basePath]); + const {rootNames, options} = readNgcCommandLineAndConfiguration(this.commandLineArgs); const host = createCompilerHost({options}); const program = createProgram({rootNames, host, options}); return (program as NgtscProgram).getIndexedComponents(); } + + driveXi18n(format: string, outputFileName: string, locale: string|null = null): void { + const errorSpy = jasmine.createSpy('consoleError').and.callFake(console.error); + const args = [ + ...this.commandLineArgs, + `--i18nFormat=${format}`, + `--outFile=${outputFileName}`, + ]; + if (locale !== null) { + args.push(`--locale=${locale}`); + } + const exitCode = mainXi18n(args, errorSpy); + expect(errorSpy).not.toHaveBeenCalled(); + expect(exitCode).toEqual(0); + } } class AugmentedCompilerHost extends NgtscTestCompilerHost { @@ -308,7 +329,7 @@ class MultiCompileHostExt extends AugmentedCompilerHost implements Partial(); private writtenFiles = new Set(); - getSourceFile( + override getSourceFile( fileName: string, languageVersion: ts.ScriptTarget, onError?: (message: string) => void, shouldCreateNewSourceFile?: boolean): ts.SourceFile|undefined { if (this.cache.has(fileName)) { @@ -325,7 +346,7 @@ class MultiCompileHostExt extends AugmentedCompilerHost implements Partial void)|undefined, sourceFiles?: ReadonlyArray): void { diff --git a/packages/compiler-cli/test/ngtsc/incremental_semantic_changes_spec.ts b/packages/compiler-cli/test/ngtsc/incremental_semantic_changes_spec.ts index 345ed61911..42db9c4c66 100644 --- a/packages/compiler-cli/test/ngtsc/incremental_semantic_changes_spec.ts +++ b/packages/compiler-cli/test/ngtsc/incremental_semantic_changes_spec.ts @@ -1217,7 +1217,7 @@ runInEachFileSystem(() => { selector: 'cmp-dep', template: 'Dep', }) - export class CmpDep {} + class CmpDep {} `); env.write('module.ts', ` import {NgModule} from '@angular/core'; @@ -1246,7 +1246,7 @@ runInEachFileSystem(() => { selector: 'cmp-dep', template: 'Dep', }) - export class CmpDep {} + class CmpDep {} `); env.write('module.ts', ` import {NgModule} from '@angular/core'; @@ -1361,7 +1361,9 @@ runInEachFileSystem(() => { @Pipe({ name: 'dep', }) - export class DepB {} + export class DepB { + transform() {} + } `); env.write('module.ts', ` import {NgModule} from '@angular/core'; @@ -1385,7 +1387,9 @@ runInEachFileSystem(() => { @Pipe({ name: 'dep', }) - export class DepA {} + export class DepA { + transform() {} + } @Directive({ selector: 'dep', diff --git a/packages/compiler-cli/test/ngtsc/incremental_spec.ts b/packages/compiler-cli/test/ngtsc/incremental_spec.ts index 06c65d53cb..8e2827ae90 100644 --- a/packages/compiler-cli/test/ngtsc/incremental_spec.ts +++ b/packages/compiler-cli/test/ngtsc/incremental_spec.ts @@ -200,7 +200,9 @@ runInEachFileSystem(() => { import {Pipe} from '@angular/core'; @Pipe({name: 'myPipe'}) - export class MyPipe {} + export class MyPipe { + transform() {} + } `); env.write('module.ts', ` import {NgModule, NO_ERRORS_SCHEMA} from '@angular/core'; @@ -238,7 +240,9 @@ runInEachFileSystem(() => { import {Pipe} from '@angular/core'; @Pipe({name: 'foo_changed'}) - export class FooPipe {} + export class FooPipe { + transform() {} + } `); env.driveMain(); const written = env.getFilesWrittenSinceLastFlush(); @@ -524,6 +528,58 @@ runInEachFileSystem(() => { env.driveMain(); }); + it('should allow incremental compilation with redirected source files', () => { + env.tsconfig({fullTemplateTypeCheck: true}); + + // This file structure has an identical version of "a" under the root node_modules and inside + // of "b". Because their package.json file indicates it is the exact same version of "a", + // TypeScript will transform the source file of "node_modules/b/node_modules/a/index.d.ts" + // into a redirect to "node_modules/a/index.d.ts". During incremental compilations, the + // redirected "node_modules/b/node_modules/a/index.d.ts" source file should be considered as + // its unredirected source file to avoid a change in declaration files. + env.write('node_modules/a/index.js', `export class ServiceA {}`); + env.write('node_modules/a/index.d.ts', `export declare class ServiceA {}`); + env.write('node_modules/a/package.json', `{"name": "a", "version": "1.0"}`); + env.write('node_modules/b/node_modules/a/index.js', `export class ServiceA {}`); + env.write('node_modules/b/node_modules/a/index.d.ts', `export declare class ServiceA {}`); + env.write('node_modules/b/node_modules/a/package.json', `{"name": "a", "version": "1.0"}`); + env.write('node_modules/b/index.js', `export {ServiceA as ServiceB} from 'a';`); + env.write('node_modules/b/index.d.ts', `export {ServiceA as ServiceB} from 'a';`); + env.write('component1.ts', ` + import {Component} from '@angular/core'; + import {ServiceA} from 'a'; + import {ServiceB} from 'b'; + + @Component({selector: 'cmp', template: 'cmp'}) + export class Cmp1 {} + `); + env.write('component2.ts', ` + import {Component} from '@angular/core'; + import {ServiceA} from 'a'; + import {ServiceB} from 'b'; + + @Component({selector: 'cmp2', template: 'cmp'}) + export class Cmp2 {} + `); + env.driveMain(); + env.flushWrittenFileTracking(); + + // Now update `component1.ts` and change its imports to avoid complete structure reuse, which + // forces recreation of source file redirects. + env.write('component1.ts', ` + import {Component} from '@angular/core'; + import {ServiceA} from 'a'; + + @Component({selector: 'cmp', template: 'cmp'}) + export class Cmp1 {} + `); + env.driveMain(); + + const written = env.getFilesWrittenSinceLastFlush(); + expect(written).toContain('/component1.js'); + expect(written).not.toContain('/component2.js'); + }); + describe('template type-checking', () => { beforeEach(() => { env.tsconfig({strictTemplates: true}); @@ -605,6 +661,67 @@ runInEachFileSystem(() => { expect(env.driveDiagnostics().length).toBe(1); }); + it('should retain default imports that have been converted into a value expression', () => { + // This test defines the component `TestCmp` that has a default-imported class as + // constructor parameter, and uses `TestDir` in its template. An incremental compilation + // updates `TestDir` and changes its inputs, thereby triggering re-emit of `TestCmp` without + // performing re-analysis of `TestCmp`. The output of the re-emitted file for `TestCmp` + // should continue to have retained the default import. + env.write('service.ts', ` + import {Injectable} from '@angular/core'; + + @Injectable({ providedIn: 'root' }) + export default class DefaultService {} + `); + env.write('cmp.ts', ` + import {Component, Directive} from '@angular/core'; + import DefaultService from './service'; + + @Component({ + template: '
', + }) + export class TestCmp { + constructor(service: DefaultService) {} + } + `); + env.write('dir.ts', ` + import {Directive} from '@angular/core'; + + @Directive({ selector: '[dir]' }) + export class TestDir {} + `); + env.write('mod.ts', ` + import {NgModule} from '@angular/core'; + import {TestDir} from './dir'; + import {TestCmp} from './cmp'; + + @NgModule({ declarations: [TestDir, TestCmp] }) + export class TestMod {} + `); + + env.driveMain(); + env.flushWrittenFileTracking(); + + // Update `TestDir` to change its inputs, triggering a re-emit of `TestCmp` that uses + // `TestDir`. + env.write('dir.ts', ` + import {Directive} from '@angular/core'; + + @Directive({ selector: '[dir]', inputs: ['added'] }) + export class TestDir {} + `); + env.driveMain(); + + // Verify that `TestCmp` was indeed re-emitted. + const written = env.getFilesWrittenSinceLastFlush(); + expect(written).toContain('/dir.js'); + expect(written).toContain('/cmp.js'); + + // Verify that the default import is still present. + const content = env.getContents('cmp.js'); + expect(content).toContain(`import DefaultService from './service';`); + }); + it('should recompile when a remote change happens to a scope', () => { // The premise of this test is that the component Cmp has a template error (a binding to an // unknown property). Cmp is in ModuleA, which imports ModuleB, which declares Dir that has @@ -778,6 +895,53 @@ runInEachFileSystem(() => { expect(diags[0].messageText) .toContain(`Type '"gamma"' is not assignable to type 'keyof Keys'.`); }); + + it('should not re-emit files that need inline type constructors', () => { + // Setup a directive that requires an inline type constructor, as it has a generic type + // parameter that refer an interface that has not been exported. The inline operation + // causes an updated dir.ts to be used in the type-check program, which should not + // confuse the incremental engine in undesirably considering dir.ts as affected in + // incremental rebuilds. + env.write('dir.ts', ` + import {Directive, Input} from '@angular/core'; + interface Keys { + alpha: string; + beta: string; + } + @Directive({ + selector: '[dir]' + }) + export class Dir { + @Input() dir: T; + } + `); + + env.write('cmp.ts', ` + import {Component, NgModule} from '@angular/core'; + import {Dir} from './dir'; + @Component({ + selector: 'test-cmp', + template: '
', + }) + export class Cmp {} + @NgModule({ + declarations: [Cmp, Dir], + }) + export class Module {} + `); + env.driveMain(); + + // Trigger a recompile by changing cmp.ts. + env.invalidateCachedFile('cmp.ts'); + + env.flushWrittenFileTracking(); + env.driveMain(); + + // Verify that only cmp.ts was emitted, but not dir.ts as it was not affected. + const written = env.getFilesWrittenSinceLastFlush(); + expect(written).toContain('/cmp.js'); + expect(written).not.toContain('/dir.js'); + }); }); }); }); @@ -797,7 +961,9 @@ runInEachFileSystem(() => { import {Pipe} from '@angular/core'; @Pipe({name: 'foo'}) - export class FooPipe {} + export class FooPipe { + transform() {} + } `); env.write('foo_module.ts', ` import {NgModule} from '@angular/core'; @@ -827,7 +993,9 @@ runInEachFileSystem(() => { import {Pipe} from '@angular/core'; @Pipe({name: 'foo'}) - export class BarPipe {} + export class BarPipe { + transform() {} + } `); env.write('bar_module.ts', ` import {NgModule} from '@angular/core'; diff --git a/packages/compiler-cli/test/ngtsc/modulewithproviders_spec.ts b/packages/compiler-cli/test/ngtsc/modulewithproviders_spec.ts deleted file mode 100644 index fa292f7edf..0000000000 --- a/packages/compiler-cli/test/ngtsc/modulewithproviders_spec.ts +++ /dev/null @@ -1,298 +0,0 @@ -/** - * @license - * 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 - */ - -import {runInEachFileSystem} from '../../src/ngtsc/file_system/testing'; -import {loadStandardTestFiles} from '../../src/ngtsc/testing'; - -import {NgtscTestEnvironment} from './env'; - -const trim = (input: string): string => input.replace(/\s+/g, ' ').trim(); - -const testFiles = loadStandardTestFiles(); - -runInEachFileSystem(() => { - describe('ModuleWithProviders generic type transform', () => { - let env!: NgtscTestEnvironment; - - beforeEach(() => { - env = NgtscTestEnvironment.setup(testFiles); - env.tsconfig(); - }); - - it('should add a generic type for static methods on exported classes', () => { - env.write('test.ts', ` - import {NgModule} from '@angular/core'; - - @NgModule() - export class TestModule { - static forRoot() { - return { - ngModule: TestModule, - }; - } - } - `); - - env.driveMain(); - - const dtsContents = trim(env.getContents('test.d.ts')); - expect(dtsContents).toContain('import * as i0 from "@angular/core";'); - expect(dtsContents).toContain('static forRoot(): i0.ModuleWithProviders;'); - }); - - it('should not add a generic type for non-static methods', () => { - env.write('test.ts', ` - import {NgModule} from '@angular/core'; - - @NgModule() - export class TestModule { - forRoot() { - return { - ngModule: TestModule, - }; - } - } - `); - - env.driveMain(); - - const dtsContents = trim(env.getContents('test.d.ts')); - expect(dtsContents).toContain('import * as i0 from "@angular/core";'); - expect(dtsContents).toContain('forRoot(): { ngModule: typeof TestModule; };'); - expect(dtsContents).not.toContain('static forRoot()'); - }); - - it('should add a generic type for exported functions', () => { - env.write('test.ts', ` - import {NgModule} from '@angular/core'; - - export function forRoot() { - return { - ngModule: TestModule, - }; - } - - @NgModule() - export class TestModule {} - `); - - env.driveMain(); - - const dtsContents = trim(env.getContents('test.d.ts')); - expect(dtsContents).toContain('import * as i0 from "@angular/core";'); - expect(dtsContents) - .toContain('export declare function forRoot(): i0.ModuleWithProviders;'); - }); - - it('should not add a generic type when already present', () => { - env.write('test.ts', ` - import {NgModule, ModuleWithProviders} from '@angular/core'; - - export class TestModule { - forRoot(): ModuleWithProviders { - return { - ngModule: TestModule, - }; - } - } - - @NgModule() - export class InternalTestModule {} - `); - - env.driveMain(); - - const dtsContents = trim(env.getContents('test.d.ts')); - expect(dtsContents).toContain('forRoot(): ModuleWithProviders;'); - }); - - it('should add a generic type when missing the generic type parameter', () => { - env.write('test.ts', ` - import {NgModule, ModuleWithProviders} from '@angular/core'; - - @NgModule() - export class TestModule { - static forRoot(): ModuleWithProviders { - return { - ngModule: TestModule, - }; - } - } - `); - - env.driveMain(); - - const dtsContents = trim(env.getContents('test.d.ts')); - expect(dtsContents).toContain('static forRoot(): i0.ModuleWithProviders;'); - }); - - it('should add a generic type when missing the generic type parameter (qualified name)', () => { - env.write('test.ts', ` - import * as ng from '@angular/core'; - - @ng.NgModule() - export class TestModule { - static forRoot(): ng.ModuleWithProviders { - return { - ngModule: TestModule, - }; - } - } - `); - - env.driveMain(); - - const dtsContents = trim(env.getContents('test.d.ts')); - expect(dtsContents).toContain('static forRoot(): i0.ModuleWithProviders;'); - }); - - it('should add a generic type and add an import for external references', () => { - env.write('test.ts', ` - import {ModuleWithProviders} from '@angular/core'; - import {InternalTestModule} from './internal'; - - export class TestModule { - static forRoot(): ModuleWithProviders { - return { - ngModule: InternalTestModule, - }; - } - } - `); - env.write('internal.ts', ` - import {NgModule} from '@angular/core'; - - @NgModule() - export class InternalTestModule {} - `); - - env.driveMain(); - - const dtsContents = trim(env.getContents('test.d.ts')); - expect(dtsContents).toContain('import * as i1 from "./internal";'); - expect(dtsContents) - .toContain('static forRoot(): i0.ModuleWithProviders;'); - }); - - it('should not add a generic type if the return type is not ModuleWithProviders', () => { - env.write('test.ts', ` - import {NgModule} from '@angular/core'; - - @NgModule() - export class TestModule { - static forRoot(): { ngModule: typeof TestModule } { - return { - ngModule: TestModule, - }; - } - } - `); - - env.driveMain(); - - const dtsContents = trim(env.getContents('test.d.ts')); - expect(dtsContents).toContain('static forRoot(): { ngModule: typeof TestModule; };'); - }); - - it('should not add a generic type if the return type is not ModuleWithProviders from @angular/core', - () => { - env.write('test.ts', ` - import {NgModule} from '@angular/core'; - import {ModuleWithProviders} from './mwp'; - - @NgModule() - export class TestModule { - static forRoot(): ModuleWithProviders { - return { - ngModule: TestModule, - }; - } - } - `); - env.write('mwp.ts', ` - export type ModuleWithProviders = { ngModule: any }; - `); - - env.driveMain(); - - const dtsContents = trim(env.getContents('test.d.ts')); - expect(dtsContents).toContain('static forRoot(): ModuleWithProviders;'); - }); - - it('should not add a generic type when the "ngModule" property is not a reference', () => { - env.write('test.ts', ` - import {NgModule} from '@angular/core'; - - @NgModule() - export class TestModule { - static forRoot() { - return { - ngModule: 'test', - }; - } - } - `); - - env.driveMain(); - - const dtsContents = trim(env.getContents('test.d.ts')); - expect(dtsContents).toContain('static forRoot(): { ngModule: string; };'); - }); - - it('should not add a generic type when the class is not exported', () => { - env.write('test.ts', ` - import {NgModule} from '@angular/core'; - - @NgModule() - class TestModule { - static forRoot() { - return { - ngModule: TestModule, - }; - } - } - `); - - env.driveMain(); - - // The TestModule class is not exported so doesn't even show up in the declaration file - const dtsContents = trim(env.getContents('test.d.ts')); - expect(dtsContents).not.toContain('static forRoot()'); - }); - - it('should add a generic type only when ngModule/providers are present', () => { - env.write('test.ts', ` - import {NgModule, ModuleWithProviders} from '@angular/core'; - - @NgModule() - export class TestModule { - static hasNgModuleAndProviders() { - return { - ngModule: TestModule, - providers: [], - }; - } - static hasNgModuleAndFoo() { - return { - ngModule: TestModule, - foo: 'test', - }; - } - } - `); - - env.driveMain(); - - const dtsContents = trim(env.getContents('test.d.ts')); - expect(dtsContents) - .toContain('static hasNgModuleAndProviders(): i0.ModuleWithProviders;'); - expect(dtsContents) - .toContain('static hasNgModuleAndFoo(): { ngModule: typeof TestModule; foo: string; };'); - }); - }); -}); diff --git a/packages/compiler-cli/test/ngtsc/ngtsc_spec.ts b/packages/compiler-cli/test/ngtsc/ngtsc_spec.ts index 34da420eff..64cd47c6a3 100644 --- a/packages/compiler-cli/test/ngtsc/ngtsc_spec.ts +++ b/packages/compiler-cli/test/ngtsc/ngtsc_spec.ts @@ -54,6 +54,25 @@ function allTests(os: string) { env.tsconfig(); }); + it('should accept relative file paths as command line argument', () => { + env.addCommandLineArgs('--rootDir', './rootDir'); + env.write('rootDir/test.html', '

Hello World

'); + env.write('rootDir/test.ts', ` + import {Component} from '@angular/core'; + + @Component({ + selector: 'test-cmp', + templateUrl: 'test.html', + }) + export class TestCmp {} + `); + + env.driveMain(); + + const jsContents = env.getContents('test.js'); + expect(jsContents).toContain('Hello World'); + }); + it('should compile Injectables without errors', () => { env.write('test.ts', ` import {Injectable} from '@angular/core'; @@ -74,8 +93,8 @@ function allTests(os: string) { expect(jsContents).toContain('Service.ɵprov ='); expect(jsContents).not.toContain('__decorate'); const dtsContents = env.getContents('test.d.ts'); - expect(dtsContents).toContain('static ɵprov: i0.ɵɵInjectableDef;'); - expect(dtsContents).toContain('static ɵprov: i0.ɵɵInjectableDef;'); + expect(dtsContents).toContain('static ɵprov: i0.ɵɵInjectableDeclaration;'); + expect(dtsContents).toContain('static ɵprov: i0.ɵɵInjectableDeclaration;'); expect(dtsContents).toContain('static ɵfac: i0.ɵɵFactoryDeclaration;'); expect(dtsContents).toContain('static ɵfac: i0.ɵɵFactoryDeclaration;'); }); @@ -95,7 +114,7 @@ function allTests(os: string) { expect(jsContents).toContain('Store.ɵprov ='); const dtsContents = env.getContents('test.d.ts'); expect(dtsContents).toContain('static ɵfac: i0.ɵɵFactoryDeclaration, never>;'); - expect(dtsContents).toContain('static ɵprov: i0.ɵɵInjectableDef>;'); + expect(dtsContents).toContain('static ɵprov: i0.ɵɵInjectableDeclaration>;'); }); it('should compile Injectables with providedIn without errors', () => { @@ -123,8 +142,8 @@ function allTests(os: string) { expect(jsContents).toContain('providedIn: \'root\' })'); expect(jsContents).not.toContain('__decorate'); const dtsContents = env.getContents('test.d.ts'); - expect(dtsContents).toContain('static ɵprov: i0.ɵɵInjectableDef;'); - expect(dtsContents).toContain('static ɵprov: i0.ɵɵInjectableDef;'); + expect(dtsContents).toContain('static ɵprov: i0.ɵɵInjectableDeclaration;'); + expect(dtsContents).toContain('static ɵprov: i0.ɵɵInjectableDeclaration;'); expect(dtsContents).toContain('static ɵfac: i0.ɵɵFactoryDeclaration;'); expect(dtsContents).toContain('static ɵfac: i0.ɵɵFactoryDeclaration;'); }); @@ -150,7 +169,7 @@ function allTests(os: string) { expect(jsContents).toContain(', providedIn: \'root\' });'); expect(jsContents).not.toContain('__decorate'); const dtsContents = env.getContents('test.d.ts'); - expect(dtsContents).toContain('static ɵprov: i0.ɵɵInjectableDef;'); + expect(dtsContents).toContain('static ɵprov: i0.ɵɵInjectableDeclaration;'); expect(dtsContents).toContain('static ɵfac: i0.ɵɵFactoryDeclaration;'); }); @@ -179,10 +198,45 @@ function allTests(os: string) { expect(jsContents).toContain('return r; }, providedIn: \'root\' });'); expect(jsContents).not.toContain('__decorate'); const dtsContents = env.getContents('test.d.ts'); - expect(dtsContents).toContain('static ɵprov: i0.ɵɵInjectableDef;'); + expect(dtsContents).toContain('static ɵprov: i0.ɵɵInjectableDeclaration;'); expect(dtsContents).toContain('static ɵfac: i0.ɵɵFactoryDeclaration;'); }); + it('should compile Injectables with providedIn using forwardRef without errors', () => { + env.write('test.ts', ` + import {Injectable, NgModule, forwardRef} from '@angular/core'; + + @Injectable() + export class Dep {} + + @Injectable({ providedIn: forwardRef(() => Mod) }) + export class Service { + constructor(dep: Dep) {} + } + + @NgModule() + export class Mod {} + `); + + env.driveMain(); + + const jsContents = env.getContents('test.js'); + expect(jsContents).toContain('Dep.ɵprov ='); + expect(jsContents).toContain('Service.ɵprov ='); + expect(jsContents).toContain('Mod.ɵmod ='); + expect(jsContents) + .toContain( + 'Service.ɵfac = function Service_Factory(t) { return new (t || Service)(i0.ɵɵinject(Dep)); };'); + expect(jsContents).toContain('providedIn: i0.forwardRef(function () { return Mod; }) })'); + expect(jsContents).not.toContain('__decorate'); + const dtsContents = env.getContents('test.d.ts'); + expect(dtsContents).toContain('static ɵprov: i0.ɵɵInjectableDeclaration;'); + expect(dtsContents).toContain('static ɵprov: i0.ɵɵInjectableDeclaration;'); + expect(dtsContents).toContain('static ɵfac: i0.ɵɵFactoryDeclaration;'); + expect(dtsContents).toContain('static ɵfac: i0.ɵɵFactoryDeclaration;'); + expect(dtsContents).toContain('i0.ɵɵFactoryDeclaration;'); + }); + it('should compile @Injectable with an @Optional dependency', () => { env.write('test.ts', ` import {Injectable, Optional as Opt} from '@angular/core'; @@ -703,7 +757,9 @@ function allTests(os: string) { // ModuleA classes @Pipe({name: 'number'}) - class PipeA {} + class PipeA { + transform() {} + } @NgModule({ declarations: [PipeA], @@ -714,7 +770,9 @@ function allTests(os: string) { // ModuleB classes @Pipe({name: 'number'}) - class PipeB {} + class PipeB { + transform() {} + } @Component({ selector: 'app', @@ -746,7 +804,9 @@ function allTests(os: string) { // ModuleA classes @Pipe({name: 'number'}) - class PipeA {} + class PipeA { + transform() {} + } @NgModule({ declarations: [PipeA], @@ -757,7 +817,9 @@ function allTests(os: string) { // ModuleB classes @Pipe({name: 'number'}) - class PipeB {} + class PipeB { + transform() {} + } @NgModule({ declarations: [PipeB], @@ -1496,6 +1558,60 @@ function allTests(os: string) { expect(jsContents).toContain('exports: function () { return [BarModule]; }'); }); + it('should use relative import for forward references that were resolved from a relative file', + () => { + env.write('dir.ts', ` + import {Directive, forwardRef} from '@angular/core'; + + export const useFoo = forwardRef(() => Foo); + + @Directive({selector: 'foo'}) + export class Foo {} + `); + env.write('test.ts', ` + import {NgModule} from '@angular/core'; + import {useFoo} from './dir'; + + @NgModule({ + declarations: [useFoo], + }) + export class FooModule {} + `); + + env.driveMain(); + + const jsContents = env.getContents('test.js'); + expect(jsContents).toContain('import * as i1 from "./dir";'); + expect(jsContents).toContain('declarations: [i1.Foo]'); + }); + + it('should use absolute import for forward references that were resolved from an absolute file', + () => { + env.write('dir.ts', ` + import {Directive, forwardRef} from '@angular/core'; + + export const useFoo = forwardRef(() => Foo); + + @Directive({selector: 'foo'}) + export class Foo {} + `); + env.write('test.ts', ` + import {forwardRef, NgModule} from '@angular/core'; + import {useFoo} from 'dir'; + + @NgModule({ + declarations: [useFoo], + }) + export class FooModule {} + `); + + env.driveMain(); + + const jsContents = env.getContents('test.js'); + expect(jsContents).toContain('import * as i1 from "dir";'); + expect(jsContents).toContain('declarations: [i1.Foo]'); + }); + it('should compile Pipes without errors', () => { env.write('test.ts', ` import {Pipe} from '@angular/core'; @@ -1593,7 +1709,9 @@ function allTests(os: string) { import {Component, NgModule, Pipe} from '@angular/core'; @Pipe({name: 'test'}) - export class TestPipe {} + export class TestPipe { + transform() {} + } @Component({selector: 'test-cmp', template: '{{value | test}}'}) export class TestCmp { @@ -2140,10 +2258,10 @@ function allTests(os: string) { // Validate that each class's .d.ts declaration also has an injectable // definition. - expect(dtsContents).toContain('InjectableDef { @@ -4594,7 +4712,7 @@ function allTests(os: string) { env.driveMain(); const jsContents = trim(env.getContents('test.js')); - expect(jsContents).toContain(`import { KeyCodes } from './keycodes';`); + expect(jsContents).toContain(`import * as i1 from "./keycodes";`); expect(jsContents).toMatch(setClassMetadataRegExp('type: i1.KeyCodes')); }); @@ -4782,6 +4900,41 @@ function allTests(os: string) { expect(jsContents).not.toContain('setComponentScope'); }); + it('should not consider type-only imports during cycle detection', () => { + env.write('test.ts', ` + import {NgModule} from '@angular/core'; + import {ACmp} from './a'; + import {BCmp} from './b'; + + @NgModule({declarations: [ACmp, BCmp]}) + export class Module {} + `); + env.write('a.ts', ` + import {Component} from '@angular/core'; + + @Component({ + selector: 'a-cmp', + template: '', + }) + export class ACmp {} + `); + env.write('b.ts', ` + import {Component} from '@angular/core'; + import type {ACmp} from './a'; + + @Component({ + selector: 'b-cmp', + template: 'does not use a-cmp', + }) + export class BCmp { + a: ACmp; + } + `); + env.driveMain(); + const jsContents = env.getContents('test.js'); + expect(jsContents).not.toContain('setComponentScope'); + }); + it('should only pass components actually used to setComponentScope', () => { env.write('test.ts', ` import {Component, NgModule} from '@angular/core'; @@ -7341,6 +7494,24 @@ export const Foo = Foo__PRE_R3__; expect(jsContents).not.toContain('defineNgModule('); expect(jsContents).toContain('NgModule({'); }); + + it('should still compile a class that is indirectly exported', () => { + env.write('test.ts', ` + import {Component} from '@angular/core'; + + @Component({ + selector: 'test-cmp', + template: 'Test Cmp', + }) + class TestCmp {} + + export {TestCmp}; + `); + env.driveMain(); + const jsContents = env.getContents('test.js'); + + expect(jsContents).toContain('defineComponent'); + }); }); describe('undecorated providers', () => { @@ -7747,6 +7918,111 @@ export const Foo = Foo__PRE_R3__; }); }); + describe('shadow DOM selector diagnostics', () => { + it('should emit a diagnostic when a selector does not include a hyphen', () => { + env.write('test.ts', ` + import {Component, ViewEncapsulation} from '@angular/core'; + @Component({ + template: '', + selector: 'cmp', + encapsulation: ViewEncapsulation.ShadowDom + }) + export class TestCmp {} + `); + const diags = env.driveDiagnostics(); + + expect(diags.length).toBe(1); + expect(diags[0].messageText) + .toBe( + 'Selector of a component that uses ViewEncapsulation.ShadowDom must contain a hyphen.'); + expect(getDiagnosticSourceCode(diags[0])).toBe(`'cmp'`); + }); + + it('should emit a diagnostic when a selector includes uppercase letters', () => { + env.write('test.ts', ` + import {Component, ViewEncapsulation} from '@angular/core'; + @Component({ + template: '', + selector: 'my-Comp', + encapsulation: ViewEncapsulation.ShadowDom + }) + export class TestCmp {} + `); + const diags = env.driveDiagnostics(); + + expect(diags.length).toBe(1); + expect(diags[0].messageText) + .toBe('Selector of a ShadowDom-encapsulated component must all be in lower case.'); + expect(getDiagnosticSourceCode(diags[0])).toBe(`'my-Comp'`); + }); + + it('should emit a diagnostic when a selector starts with a digit', () => { + env.write('test.ts', ` + import {Component, ViewEncapsulation} from '@angular/core'; + @Component({ + template: '', + selector: '123-comp', + encapsulation: ViewEncapsulation.ShadowDom + }) + export class TestCmp {} + `); + const diags = env.driveDiagnostics(); + + expect(diags.length).toBe(1); + expect(diags[0].messageText) + .toBe( + 'Selector of a ShadowDom-encapsulated component must start with a lower case letter.'); + expect(getDiagnosticSourceCode(diags[0])).toBe(`'123-comp'`); + }); + + it('should emit a diagnostic when a selector starts with a hyphen', () => { + env.write('test.ts', ` + import {Component, ViewEncapsulation} from '@angular/core'; + @Component({ + template: '', + selector: '-comp', + encapsulation: ViewEncapsulation.ShadowDom + }) + export class TestCmp {} + `); + const diags = env.driveDiagnostics(); + + expect(diags.length).toBe(1); + expect(diags[0].messageText) + .toBe( + 'Selector of a ShadowDom-encapsulated component must start with a lower case letter.'); + expect(getDiagnosticSourceCode(diags[0])).toBe(`'-comp'`); + }); + + it('should not emit a diagnostic for a component using an attribute selector', () => { + env.write('test.ts', ` + import {Component, ViewEncapsulation} from '@angular/core'; + @Component({ + template: '', + selector: '[button]', + encapsulation: ViewEncapsulation.ShadowDom + }) + export class TestCmp {} + `); + const diags = env.driveDiagnostics(); + expect(diags.length).toBe(0); + }); + + it('should not emit a diagnostic for a component using a class selector', () => { + env.write('test.ts', ` + import {Component, ViewEncapsulation} from '@angular/core'; + @Component({ + template: '', + selector: '.button', + encapsulation: ViewEncapsulation.ShadowDom + }) + export class TestCmp {} + `); + const diags = env.driveDiagnostics(); + expect(diags.length).toBe(0); + }); + }); + describe('i18n errors', () => { it('reports a diagnostics on nested i18n sections', () => { env.write('test.ts', ` diff --git a/packages/compiler-cli/test/ngtsc/template_mapping_spec.ts b/packages/compiler-cli/test/ngtsc/template_mapping_spec.ts index 8c22ab7aeb..4eb0e9b473 100644 --- a/packages/compiler-cli/test/ngtsc/template_mapping_spec.ts +++ b/packages/compiler-cli/test/ngtsc/template_mapping_spec.ts @@ -11,7 +11,6 @@ import {inspect} from 'util'; import {runInEachFileSystem} from '../../src/ngtsc/file_system/testing'; import {loadStandardTestFiles} from '../../src/ngtsc/testing'; -import {tsSourceMapBug29300Fixed} from '../../src/ngtsc/util/src/ts_source_map_bug_29300'; import {NgtscTestEnvironment} from './env'; import {getMappedSegments, SegmentMapping} from './sourcemap_utils'; @@ -603,91 +602,90 @@ runInEachFileSystem((os) => { }); }); - if (tsSourceMapBug29300Fixed()) { - describe('External templates (where TS supports source-mapping)', () => { - it('should create external template source-mapping', () => { - const mappings = - compileAndMap('
this is a test
{{ 1 + 2 }}
', './dir/test.html'); + describe('External templates (where TS supports source-mapping)', () => { + it('should create external template source-mapping', () => { + const mappings = + compileAndMap('
this is a test
{{ 1 + 2 }}
', './dir/test.html'); - // Creation mode - expectMapping(mappings, { - generated: 'i0.ɵɵelementStart(0, "div")', - source: '
', - sourceUrl: '../dir/test.html' - }); - expectMapping(mappings, { - generated: 'i0.ɵɵtext(1, "this is a test")', - source: 'this is a test', - sourceUrl: '../dir/test.html' - }); - expectMapping( - mappings, - {generated: 'i0.ɵɵelementEnd()', source: '
', sourceUrl: '../dir/test.html'}); - expectMapping(mappings, { - generated: 'i0.ɵɵelementStart(2, "div")', - source: '
', - sourceUrl: '../dir/test.html' - }); - expectMapping( - mappings, - {generated: 'i0.ɵɵtext(3)', source: '{{ 1 + 2 }}', sourceUrl: '../dir/test.html'}); - expectMapping( - mappings, - {generated: 'i0.ɵɵelementEnd()', source: '
', sourceUrl: '../dir/test.html'}); - - // Update mode - expectMapping(mappings, { - generated: 'i0.ɵɵtextInterpolate(1 + 2)', - source: '{{ 1 + 2 }}', - sourceUrl: '../dir/test.html' - }); + // Creation mode + expectMapping(mappings, { + generated: 'i0.ɵɵelementStart(0, "div")', + source: '
', + sourceUrl: '../dir/test.html' }); + expectMapping(mappings, { + generated: 'i0.ɵɵtext(1, "this is a test")', + source: 'this is a test', + sourceUrl: '../dir/test.html' + }); + expectMapping( + mappings, + {generated: 'i0.ɵɵelementEnd()', source: '
', sourceUrl: '../dir/test.html'}); + expectMapping(mappings, { + generated: 'i0.ɵɵelementStart(2, "div")', + source: '
', + sourceUrl: '../dir/test.html' + }); + expectMapping( + mappings, + {generated: 'i0.ɵɵtext(3)', source: '{{ 1 + 2 }}', sourceUrl: '../dir/test.html'}); + expectMapping( + mappings, + {generated: 'i0.ɵɵelementEnd()', source: '
', sourceUrl: '../dir/test.html'}); - it('should create correct mappings when templateUrl is in a different rootDir', () => { - const mappings = compileAndMap( - '
this is a test
{{ 1 + 2 }}
', 'extraRootDir/test.html'); - - // Creation mode - expectMapping(mappings, { - generated: 'i0.ɵɵelementStart(0, "div")', - source: '
', - sourceUrl: '../extraRootDir/test.html' - }); - expectMapping(mappings, { - generated: 'i0.ɵɵtext(1, "this is a test")', - source: 'this is a test', - sourceUrl: '../extraRootDir/test.html' - }); - expectMapping(mappings, { - generated: 'i0.ɵɵelementEnd()', - source: '
', - sourceUrl: '../extraRootDir/test.html' - }); - expectMapping(mappings, { - generated: 'i0.ɵɵelementStart(2, "div")', - source: '
', - sourceUrl: '../extraRootDir/test.html' - }); - expectMapping(mappings, { - generated: 'i0.ɵɵtext(3)', - source: '{{ 1 + 2 }}', - sourceUrl: '../extraRootDir/test.html' - }); - expectMapping(mappings, { - generated: 'i0.ɵɵelementEnd()', - source: '
', - sourceUrl: '../extraRootDir/test.html' - }); - - // Update mode - expectMapping(mappings, { - generated: 'i0.ɵɵtextInterpolate(1 + 2)', - source: '{{ 1 + 2 }}', - sourceUrl: '../extraRootDir/test.html' - }); + // Update mode + expectMapping(mappings, { + generated: 'i0.ɵɵtextInterpolate(1 + 2)', + source: '{{ 1 + 2 }}', + sourceUrl: '../dir/test.html' }); }); - } + + it('should create correct mappings when templateUrl is in a different rootDir', () => { + const mappings = compileAndMap( + '
this is a test
{{ 1 + 2 }}
', 'extraRootDir/test.html'); + + // Creation mode + expectMapping(mappings, { + generated: 'i0.ɵɵelementStart(0, "div")', + source: '
', + sourceUrl: '../extraRootDir/test.html' + }); + expectMapping(mappings, { + generated: 'i0.ɵɵtext(1, "this is a test")', + source: 'this is a test', + sourceUrl: '../extraRootDir/test.html' + }); + expectMapping(mappings, { + generated: 'i0.ɵɵelementEnd()', + source: '
', + sourceUrl: '../extraRootDir/test.html' + }); + expectMapping(mappings, { + generated: 'i0.ɵɵelementStart(2, "div")', + source: '
', + sourceUrl: '../extraRootDir/test.html' + }); + expectMapping(mappings, { + generated: 'i0.ɵɵtext(3)', + source: '{{ 1 + 2 }}', + sourceUrl: '../extraRootDir/test.html' + }); + expectMapping(mappings, { + generated: 'i0.ɵɵelementEnd()', + source: '
', + sourceUrl: '../extraRootDir/test.html' + }); + + // Update mode + expectMapping(mappings, { + generated: 'i0.ɵɵtextInterpolate(1 + 2)', + source: '{{ 1 + 2 }}', + sourceUrl: '../extraRootDir/test.html' + }); + }); + }); + function compileAndMap(template: string, templateUrl: string|null = null) { const templateConfig = templateUrl ? `templateUrl: '${templateUrl}'` : diff --git a/packages/compiler-cli/test/ngtsc/template_typecheck_spec.ts b/packages/compiler-cli/test/ngtsc/template_typecheck_spec.ts index 83306ea997..a6c5d44954 100644 --- a/packages/compiler-cli/test/ngtsc/template_typecheck_spec.ts +++ b/packages/compiler-cli/test/ngtsc/template_typecheck_spec.ts @@ -11,11 +11,11 @@ import * as ts from 'typescript'; import {ErrorCode, ngErrorCode} from '../../src/ngtsc/diagnostics'; import {absoluteFrom as _, getFileSystem, getSourceFileOrError} from '../../src/ngtsc/file_system'; import {runInEachFileSystem} from '../../src/ngtsc/file_system/testing'; -import {expectCompleteReuse, loadStandardTestFiles} from '../../src/ngtsc/testing'; +import {expectCompleteReuse, getSourceCodeForDiagnostic, loadStandardTestFiles} from '../../src/ngtsc/testing'; import {NgtscTestEnvironment} from './env'; -const testFiles = loadStandardTestFiles(); +const testFiles = loadStandardTestFiles({fakeCore: true, fakeCommon: true}); runInEachFileSystem(() => { describe('ngtsc type checking', () => { @@ -24,66 +24,6 @@ runInEachFileSystem(() => { beforeEach(() => { env = NgtscTestEnvironment.setup(testFiles); env.tsconfig({fullTemplateTypeCheck: true}); - env.write('node_modules/@angular/common/index.d.ts', ` -import * as i0 from '@angular/core'; - -export declare class NgForOfContext = i0.NgIterable> { - $implicit: T; - count: number; - readonly even: boolean; - readonly first: boolean; - index: number; - readonly last: boolean; - ngForOf: U; - readonly odd: boolean; - constructor($implicit: T, ngForOf: U, index: number, count: number); -} - -export declare class IndexPipe { - transform(value: T[], index: number): T; - - static ɵpipe: i0.ɵPipeDeclaration; -} - -export declare class SlicePipe { - transform(value: ReadonlyArray, start: number, end?: number): Array; - transform(value: string, start: number, end?: number): string; - transform(value: null, start: number, end?: number): null; - transform(value: undefined, start: number, end?: number): undefined; - transform(value: any, start: number, end?: number): any; - - static ɵpipe: i0.ɵPipeDeclaration; -} - -export declare class NgForOf = i0.NgIterable> implements DoCheck { - ngForOf: (U & i0.NgIterable) | undefined | null; - ngForTemplate: TemplateRef>; - ngForTrackBy: TrackByFunction; - constructor(_viewContainer: ViewContainerRef, _template: TemplateRef>, _differs: IterableDiffers); - ngDoCheck(): void; - static ngTemplateContextGuard>(dir: NgForOf, ctx: any): ctx is NgForOfContext; - static ɵdir: i0.ɵɵDirectiveDeclaration, '[ngFor][ngForOf]', never, {'ngForOf': 'ngForOf'}, {}, never>; -} - -export declare class NgIf { - ngIf: T; - ngIfElse: TemplateRef> | null; - ngIfThen: TemplateRef> | null; - constructor(_viewContainer: ViewContainerRef, templateRef: TemplateRef>); - static ngTemplateGuard_ngIf: 'binding'; - static ngTemplateContextGuard(dir: NgIf, ctx: any): ctx is NgIfContext>; - static ɵdir: i0.ɵɵDirectiveDeclaration, '[ngIf]', never, {'ngIf': 'ngIf'}, {}, never>; -} - -export declare class NgIfContext { - $implicit: T; - ngIf: T; -} - -export declare class CommonModule { - static ɵmod: i0.ɵɵNgModuleDeclaration; -} -`); env.write('node_modules/@angular/animations/index.d.ts', ` export declare class AnimationEvent { element: any; @@ -368,6 +308,115 @@ export declare class AnimationEvent { expect(diags.length).toBe(0); }); + // https://devblogs.microsoft.com/typescript/announcing-typescript-4-3-beta/#separate-write-types-on-properties + it('should support separate write types on inputs', () => { + env.tsconfig({strictTemplates: true}); + env.write('test.ts', ` + import {Component, NgModule, Input} from '@angular/core'; + + @Component({ + selector: 'test', + template: '', + }) + export class TestCmp {} + + @Component({template: '', selector: 'target-cmp'}) + export class TargetCmp { + @Input() + get disabled(): boolean { return this._disabled; } + set disabled(value: string|boolean) { this._disabled = value === '' || !!value; } + private _disabled = false; + } + + @NgModule({ + declarations: [TestCmp, TargetCmp], + }) + export class Module {} + `); + const diags = env.driveDiagnostics(); + console.error(diags); + expect(diags.length).toBe(0); + }); + + it('should check split two way binding', () => { + env.tsconfig({strictTemplates: true}); + env.write('test.ts', ` + import {Component, Input, NgModule} from '@angular/core'; + + @Component({ + selector: 'test', + template: '', + }) + + export class TestCmp { + counterValue = 0; + } + + @Component({ + selector: 'child-cmp', + template: '', + }) + + export class ChildCmp { + @Input() value = 0; + } + + @NgModule({ + declarations: [TestCmp, ChildCmp], + }) + export class Module {} + `); + const diags = env.driveDiagnostics(); + expect(diags.length).toBe(1); + expect(diags[0].code).toBe(ngErrorCode(ErrorCode.SPLIT_TWO_WAY_BINDING)); + expect(getSourceCodeForDiagnostic(diags[0])).toBe('value'); + expect(diags[0].relatedInformation!.length).toBe(2); + expect(getSourceCodeForDiagnostic(diags[0].relatedInformation![0])).toBe('ChildCmp'); + expect(getSourceCodeForDiagnostic(diags[0].relatedInformation![1])).toBe('child-cmp'); + }); + + it('when input and output go to different directives', () => { + env.tsconfig({strictTemplates: true}); + env.write('test.ts', ` + import {Component, Input, NgModule, Output, Directive} from '@angular/core'; + + @Component({ + selector: 'test', + template: '', + }) + export class TestCmp { + counterValue = 0; + } + + @Directive({ + selector: 'child-cmp' + }) + export class ChildCmpDir { + @Output() valueChange: any; + } + + @Component({ + selector: 'child-cmp', + template: '', + }) + export class ChildCmp { + @Input() value = 0; + } + + @NgModule({ + declarations: [TestCmp, ChildCmp, ChildCmpDir], + }) + export class Module {} + `); + const diags = env.driveDiagnostics(); + expect(diags.length).toBe(1); + expect(diags[0].code).toBe(ngErrorCode(ErrorCode.SPLIT_TWO_WAY_BINDING)); + expect(getSourceCodeForDiagnostic(diags[0])).toBe('value'); + expect(diags[0].relatedInformation!.length).toBe(2); + expect(getSourceCodeForDiagnostic(diags[0].relatedInformation![0])).toBe('ChildCmp'); + expect(getSourceCodeForDiagnostic(diags[0].relatedInformation![1])).toBe('ChildCmpDir'); + }); + describe('strictInputTypes', () => { beforeEach(() => { env.write('test.ts', ` @@ -1000,6 +1049,115 @@ export declare class AnimationEvent { env.driveMain(); }); + // https://github.com/angular/angular/issues/40125 + it('should accept NgFor iteration when trackBy is used with a wider type', () => { + env.tsconfig({strictTemplates: true}); + env.write('test.ts', ` + import {CommonModule} from '@angular/common'; + import {Component, NgModule} from '@angular/core'; + + interface Base { + id: string; + } + + interface Derived extends Base { + name: string; + } + + @Component({ + selector: 'test', + template: '
{{derived.name}}
', + }) + class TestCmp { + derivedList!: Derived[]; + + trackByBase(index: number, item: Base): string { + return item.id; + } + } + + @NgModule({ + declarations: [TestCmp], + imports: [CommonModule], + }) + class Module {} + `); + + env.driveMain(); + }); + + // https://github.com/angular/angular/issues/42609 + it('should accept NgFor iteration when trackBy is used with an `any` array', () => { + env.tsconfig({strictTemplates: true}); + env.write('test.ts', ` + import {CommonModule} from '@angular/common'; + import {Component, NgModule} from '@angular/core'; + + interface ItemType { + id: string; + } + + @Component({ + selector: 'test', + template: '
{{item.name}}
', + }) + class TestCmp { + anyList!: any[]; + + trackByBase(index: number, item: ItemType): string { + return item.id; + } + } + + @NgModule({ + declarations: [TestCmp], + imports: [CommonModule], + }) + class Module {} + `); + + env.driveMain(); + }); + + it('should reject NgFor iteration when trackBy is incompatible with item type', () => { + env.tsconfig({strictTemplates: true}); + env.write('test.ts', ` + import {CommonModule} from '@angular/common'; + import {Component, NgModule} from '@angular/core'; + + interface ItemType { + id: string; + } + + interface UnrelatedType { + name: string; + } + + @Component({ + selector: 'test', + template: '
{{item.name}}
', + }) + class TestCmp { + unrelatedList!: UnrelatedType[]; + + trackByBase(index: number, item: ItemType): string { + return item.id; + } + } + + @NgModule({ + declarations: [TestCmp], + imports: [CommonModule], + }) + class Module {} + `); + + const diags = env.driveDiagnostics(); + expect(diags.length).toBe(1); + expect(diags[0].messageText) + .toContain(`is not assignable to type 'TrackByFunction'.`); + }); + it('should infer the context of NgFor', () => { env.tsconfig({strictTemplates: true}); env.write('test.ts', ` @@ -2348,8 +2506,3 @@ export declare class AnimationEvent { }); }); }); - -function getSourceCodeForDiagnostic(diag: ts.Diagnostic): string { - const text = diag.file!.text; - return text.substr(diag.start!, diag.length!); -} diff --git a/packages/compiler-cli/test/ngtsc/xi18n_spec.ts b/packages/compiler-cli/test/ngtsc/xi18n_spec.ts new file mode 100644 index 0000000000..2fa94355bf --- /dev/null +++ b/packages/compiler-cli/test/ngtsc/xi18n_spec.ts @@ -0,0 +1,334 @@ +/** + * @license + * 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 + */ + +import {runInEachFileSystem} from '@angular/compiler-cli/src/ngtsc/file_system/testing'; +import {loadStandardTestFiles} from '@angular/compiler-cli/src/ngtsc/testing'; +import {platform} from 'os'; + +import {NgtscTestEnvironment} from './env'; + +const testFiles = loadStandardTestFiles({fakeCore: true, fakeCommon: true}); + +runInEachFileSystem(os => { + let env!: NgtscTestEnvironment; + + if (os === 'Windows' || platform() === 'win32') { + // xi18n tests are skipped on Windows as the paths in the expected message files are platform- + // sensitive. These tests will be deleted when xi18n is removed, so it's not a major priority + // to make them work with Windows. + return; + } + + describe('ngtsc xi18n', () => { + beforeEach(() => { + env = NgtscTestEnvironment.setup(testFiles); + env.tsconfig(); + writeTestCode(env); + }); + + it('should extract xmb', () => { + env.driveXi18n('xmb', 'messages.xmb'); + expect(env.getContents('messages.xmb')).toEqual(EXPECTED_XMB); + }); + + it('should extract xlf', () => { + // Note that only in XLF mode do we pass a locale into the extraction. + env.driveXi18n('xlf', 'messages.xlf', 'fr'); + expect(env.getContents('messages.xlf')).toEqual(EXPECTED_XLIFF); + }); + + it('should extract xlf', () => { + env.driveXi18n('xlf2', 'messages.xliff2.xlf'); + expect(env.getContents('messages.xliff2.xlf')).toEqual(EXPECTED_XLIFF2); + }); + + it('should not emit js', () => { + env.driveXi18n('xlf2', 'messages.xliff2.xlf'); + env.assertDoesNotExist('src/module.js'); + }); + }); +}); + +const EXPECTED_XMB = ` + + + + + + + + + + + + + + + + + + + +]> + + src/basic.html:1src/comp2.ts:1src/basic.html:1translate me + src/basic.html:3,4src/comp2.ts:3,4src/comp2.ts:2,3src/basic.html:3,4 + Welcome + src/icu.html:1,3src/icu.html:5{VAR_PLURAL, plural, =1 {book} other {books} } + src/icu.html:4,6 + foo { count, plural, =1 {...} other {...}}{ count, plural, =1 {...} other {...}} + + src/placeholders.html:1,3Name: <b><b>{{ + name // i18n(ph="name") + }}{{ + name // i18n(ph="name") + }}</b></b> + +`; + +const EXPECTED_XLIFF = ` + + + + + translate me + + src/basic.html + 1 + + + src/comp2.ts + 1 + + + src/basic.html + 1 + + desc + meaning + + + + Welcome + + src/basic.html + 3 + + + src/comp2.ts + 3 + + + src/comp2.ts + 2 + + + src/basic.html + 3 + + + + {VAR_PLURAL, plural, =1 {book} other {books} } + + src/icu.html + 1 + + with ICU + + + + foo + + + src/icu.html + 4 + + with ICU and other things + + + {VAR_PLURAL, plural, =1 {book} other {books} } + + src/icu.html + 5 + + + + Name: + + src/placeholders.html + 1 + + with placeholders + + + + +`; + +const EXPECTED_XLIFF2 = ` + + + + + desc + meaning + src/basic.html:1 + src/comp2.ts:1 + src/basic.html:1 + + + translate me + + + + + src/basic.html:3,4 + src/comp2.ts:3,4 + src/comp2.ts:2,3 + src/basic.html:3,4 + + + + Welcome + + + + + with ICU + src/icu.html:1,3 + src/icu.html:5 + + + {VAR_PLURAL, plural, =1 {book} other {books} } + + + + + with ICU and other things + src/icu.html:4,6 + + + + foo + + + + + + with placeholders + src/placeholders.html:1,3 + + + Name: + + + + +`; + +/** + * Note: the indentation here is load-bearing. + */ +function writeTestCode(env: NgtscTestEnvironment): void { + const welcomeMessage = ` + + Welcome + `; + env.write('src/basic.html', `
+

${welcomeMessage}

`); + + env.write('src/comp1.ts', ` + import {Component} from '@angular/core'; + + @Component({ + selector: 'basic', + templateUrl: './basic.html', + }) + export class BasicCmp1 {}`); + + env.write('src/comp2.ts', ` + import {Component} from '@angular/core'; + + @Component({ + selector: 'basic2', + template: \`
+

${welcomeMessage}

\`, + }) + export class BasicCmp2 {} + @Component({ + selector: 'basic4', + template: \`

${welcomeMessage}

\`, + }) + export class BasicCmp4 {}`); + + env.write('src/comp3.ts', ` + import {Component} from '@angular/core'; + + @Component({ + selector: 'basic3', + templateUrl: './basic.html', + }) + export class BasicCmp3 {}`); + + env.write('src/placeholders.html', `
Name: {{ + name // i18n(ph="name") + }}
`); + + env.write('src/placeholder_cmp.ts', ` + import {Component} from '@angular/core'; + + @Component({ + selector: 'placeholders', + templateUrl: './placeholders.html', + }) + export class PlaceholderCmp { name = 'whatever'; }`); + + env.write('src/icu.html', `
{ + count, plural, =1 {book} other {books} + }
+
+ foo { count, plural, =1 {book} other {books} } +
`); + + env.write('src/icu_cmp.ts', ` + import {Component} from '@angular/core'; + + @Component({ + selector: 'icu', + templateUrl: './icu.html', + }) + export class IcuCmp { count = 3; }`); + + env.write('src/module.ts', ` + import {NgModule} from '@angular/core'; + import {CommonModule} from '@angular/common'; + import {BasicCmp1} from './comp1'; + import {BasicCmp2, BasicCmp4} from './comp2'; + import {BasicCmp3} from './comp3'; + import {PlaceholderCmp} from './placeholder_cmp'; + import {IcuCmp} from './icu_cmp'; + + @NgModule({ + declarations: [ + BasicCmp1, + BasicCmp2, + BasicCmp3, + BasicCmp4, + PlaceholderCmp, + IcuCmp, + ], + imports: [CommonModule], + }) + export class I18nModule {} + `); +} diff --git a/packages/compiler-cli/test/perform_compile_spec.ts b/packages/compiler-cli/test/perform_compile_spec.ts index c140f487e9..1fbce64926 100644 --- a/packages/compiler-cli/test/perform_compile_spec.ts +++ b/packages/compiler-cli/test/perform_compile_spec.ts @@ -103,7 +103,7 @@ describe('perform_compile', () => { })); }); - it('should merge tsconfig "angularCompilerOptions" when extends point to node package', () => { + it('should merge tsconfig "angularCompilerOptions" when extends points to node package', () => { support.writeFiles({ 'tsconfig-level-1.json': `{ "extends": "@angular-ru/tsconfig", @@ -136,4 +136,62 @@ describe('perform_compile', () => { enableIvy: false, })); }); + + it('should merge tsconfig "angularCompilerOptions" when extends points to an extension less non rooted file', + () => { + support.writeFiles({ + 'tsconfig-level-1.json': `{ + "extends": "@1stg/tsconfig/angular", + "angularCompilerOptions": { + "enableIvy": false + } + }`, + 'node_modules/@1stg/tsconfig/angular.json': `{ + "compilerOptions": { + "strict": true + }, + "angularCompilerOptions": { + "skipMetadataEmit": true + } + }`, + 'node_modules/@1stg/tsconfig/package.json': `{ + "name": "@1stg/tsconfig", + "version": "0.0.0" + }`, + }); + + const {options} = readConfiguration(path.resolve(basePath, 'tsconfig-level-1.json')); + expect(options).toEqual(jasmine.objectContaining({ + strict: true, + skipMetadataEmit: true, + enableIvy: false, + })); + }); + + it('should merge tsconfig "angularCompilerOptions" when extends points to a non rooted file without json extension', + () => { + support.writeFiles({ + 'tsconfig-level-1.json': `{ + "extends": "./tsconfig.app", + "angularCompilerOptions": { + "enableIvy": false + } + }`, + 'tsconfig.app.json': `{ + "compilerOptions": { + "strict": true + }, + "angularCompilerOptions": { + "skipMetadataEmit": true + } + }`, + }); + + const {options} = readConfiguration(path.resolve(basePath, 'tsconfig-level-1.json')); + expect(options).toEqual(jasmine.objectContaining({ + strict: true, + skipMetadataEmit: true, + enableIvy: false, + })); + }); }); diff --git a/packages/compiler/design/architecture.md b/packages/compiler/design/architecture.md index 68cabad86b..5dfc2a13b1 100644 --- a/packages/compiler/design/architecture.md +++ b/packages/compiler/design/architecture.md @@ -296,7 +296,7 @@ Type guards require determining which directives apply to an element to determin Correctly typing an expression that includes a pipe requires determining the result type of the `transform` method of the type. -Additionally, more advanced type-checking as described in [Type Checking Templates](https://goo.gl/Q3tSgP) also requires determining the types of the directives that apply to an element as well as how the attributes map to the properties of the directives. +Additionally, more advanced type-checking also requires determining the types of the directives that apply to an element as well as how the attributes map to the properties of the directives. The types of directives can be found using a selector scope as described for reference inversion. Once a selector scope is produced, the component and directives that apply to an element can be determined from the selector scope. The `.d.ts` changes described above also includes the attribute to property maps. The `TypeGuard`s are recorded as static fields that are included in the `.d.ts` file of the directive. @@ -352,7 +352,7 @@ So the Angular transformer will run after the Tsickle transforms, but before the ##### Watch mode -`ngtsc` will support TypeScript's `--watch` mode for incremental compilation. Interally, watch mode is implemented via reuse of a `ts.Program` from the previous compile. When a `ts.Program` is reused, TypeScript determines which source files need to be re-typechecked and re-emitted, and performs those operations. +`ngtsc` will support TypeScript's `--watch` mode for incremental compilation. Internally, watch mode is implemented via reuse of a `ts.Program` from the previous compile. When a `ts.Program` is reused, TypeScript determines which source files need to be re-typechecked and re-emitted, and performs those operations. This mode works for the Angular transformer and most of the decorator compilers, because they operate only using the metadata from one particular file. The exception is the `@Component` decorator, which requires the selector scope for the module in which the component is declared in. Effectively, this means that all components within a selector scope must be recompiled together, as any changes to the component selectors or type names, for example, will invalidate the compilation of all templates of all components in the scope. Since TypeScript will not track these changes, it's the responsibility of `ngtsc` to ensure the re-compilation of the right set of files. diff --git a/packages/compiler/package.json b/packages/compiler/package.json index 2c9256deba..1d10bf2786 100644 --- a/packages/compiler/package.json +++ b/packages/compiler/package.json @@ -4,8 +4,11 @@ "description": "Angular - the compiler library", "author": "angular", "license": "MIT", + "engines": { + "node": "^12.14.1 || >=14.0.0" + }, "dependencies": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" }, "repository": { "type": "git", @@ -15,8 +18,5 @@ "ng-update": { "packageGroup": "NG_UPDATE_PACKAGE_GROUP" }, - "sideEffects": true, - "publishConfig":{ - "registry":"https://wombat-dressing-room.appspot.com" - } + "sideEffects": true } diff --git a/packages/compiler/src/aot/static_reflector.ts b/packages/compiler/src/aot/static_reflector.ts index 9964474086..c6b8e98503 100644 --- a/packages/compiler/src/aot/static_reflector.ts +++ b/packages/compiler/src/aot/static_reflector.ts @@ -672,6 +672,8 @@ export class StaticReflector implements CompileReflector { return left / right; case '%': return left % right; + case '??': + return left ?? right; } return null; case 'if': @@ -1054,7 +1056,7 @@ class PopulatedScope extends BindingScope { super(); } - resolve(name: string): any { + override resolve(name: string): any { return this.bindings.has(name) ? this.bindings.get(name) : BindingScope.missing; } } diff --git a/packages/compiler/src/aot/static_symbol_resolver.ts b/packages/compiler/src/aot/static_symbol_resolver.ts index 9b06465c2c..4389e6c293 100644 --- a/packages/compiler/src/aot/static_symbol_resolver.ts +++ b/packages/compiler/src/aot/static_symbol_resolver.ts @@ -396,7 +396,7 @@ export class StaticSymbolResolver { const self = this; class ReferenceTransformer extends ValueTransformer { - visitStringMap(map: {[key: string]: any}, functionParams: string[]): any { + override visitStringMap(map: {[key: string]: any}, functionParams: string[]): any { const symbolic = map['__symbolic']; if (symbolic === 'function') { const oldLen = functionParams.length; diff --git a/packages/compiler/src/aot/summary_serializer.ts b/packages/compiler/src/aot/summary_serializer.ts index 956910f311..fb7523da5e 100644 --- a/packages/compiler/src/aot/summary_serializer.ts +++ b/packages/compiler/src/aot/summary_serializer.ts @@ -234,7 +234,7 @@ class ToJsonSerializer extends ValueTransformer { return visitValue(value, this, flags); } - visitOther(value: any, context: any): any { + override visitOther(value: any, context: any): any { if (value instanceof StaticSymbol) { let baseSymbol = this.symbolResolver.getStaticSymbol(value.filePath, value.name); const index = this.visitStaticSymbol(baseSymbol, context); @@ -249,7 +249,7 @@ class ToJsonSerializer extends ValueTransformer { * TODO: find out a way to have line and character numbers in errors without * excessive recompilation in bazel. */ - visitStringMap(map: {[key: string]: any}, context: any): any { + override visitStringMap(map: {[key: string]: any}, context: any): any { if (map['__symbolic'] === 'resolved') { return visitValue(map['symbol'], this, context); } @@ -481,7 +481,7 @@ class FromJsonDeserializer extends ValueTransformer { return {moduleName: data.moduleName, summaries, importAs: allImportAs}; } - visitStringMap(map: {[key: string]: any}, context: any): any { + override visitStringMap(map: {[key: string]: any}, context: any): any { if ('__symbol' in map) { const baseSymbol = this.symbols[map['__symbol']]; const members = map['members']; diff --git a/packages/compiler/src/compile_metadata.ts b/packages/compiler/src/compile_metadata.ts index e194e6183e..b111371da6 100644 --- a/packages/compiler/src/compile_metadata.ts +++ b/packages/compiler/src/compile_metadata.ts @@ -36,6 +36,11 @@ export function identifierName(compileIdentifier: CompileIdentifierMetadata|null if (ref['__anonymousType']) { return ref['__anonymousType']; } + if (ref['__forward_ref__']) { + // We do not want to try to stringify a `forwardRef()` function because that would cause the + // inner function to be evaluated too early, defeating the whole point of the `forwardRef`. + return '__forward_ref__'; + } let identifier = stringify(ref); if (identifier.indexOf('(') >= 0) { // case: anonymous functions! diff --git a/packages/compiler/src/compiler.ts b/packages/compiler/src/compiler.ts index 9f1bc70dc6..af28935d55 100644 --- a/packages/compiler/src/compiler.ts +++ b/packages/compiler/src/compiler.ts @@ -97,6 +97,7 @@ export {BoundAttribute as TmplAstBoundAttribute, BoundEvent as TmplAstBoundEvent export * from './render3/view/t2_api'; export * from './render3/view/t2_binder'; export {Identifiers as R3Identifiers} from './render3/r3_identifiers'; +export {R3ClassMetadata, CompileClassMetadataFn, compileClassMetadata} from './render3/r3_class_metadata_compiler'; export {compileFactoryFunction, R3DependencyMetadata, R3FactoryMetadata, FactoryTarget} from './render3/r3_factory'; export {compileNgModule, R3NgModuleMetadata} from './render3/r3_module_compiler'; export {compileInjector, R3InjectorMetadata} from './render3/r3_injector_compiler'; @@ -104,9 +105,11 @@ export {compilePipeFromMetadata, R3PipeMetadata} from './render3/r3_pipe_compile export {makeBindingParser, ParsedTemplate, parseTemplate, ParseTemplateOptions} from './render3/view/template'; export {R3CompiledExpression, R3Reference, devOnlyGuardedExpression, getSafePropertyAccessString} from './render3/util'; export {compileComponentFromMetadata, compileDirectiveFromMetadata, parseHostBindings, ParsedHostBindings, verifyHostBindings} from './render3/view/compiler'; -export {compileDeclareComponentFromMetadata} from './render3/partial/component'; +export {compileDeclareClassMetadata} from './render3/partial/class_metadata'; +export {compileDeclareComponentFromMetadata, DeclareComponentTemplateInfo} from './render3/partial/component'; export {compileDeclareDirectiveFromMetadata} from './render3/partial/directive'; export {compileDeclareFactoryFunction} from './render3/partial/factory'; +export {compileDeclareInjectableFromMetadata} from './render3/partial/injectable'; export {compileDeclareInjectorFromMetadata} from './render3/partial/injector'; export {compileDeclareNgModuleFromMetadata} from './render3/partial/ng_module'; export {compileDeclarePipeFromMetadata} from './render3/partial/pipe'; diff --git a/packages/compiler/src/compiler_facade_interface.ts b/packages/compiler/src/compiler_facade_interface.ts index 5343e4583c..14ac1a341b 100644 --- a/packages/compiler/src/compiler_facade_interface.ts +++ b/packages/compiler/src/compiler_facade_interface.ts @@ -33,6 +33,8 @@ export interface CompilerFacade { angularCoreEnv: CoreEnvironment, sourceMapUrl: string, declaration: R3DeclarePipeFacade): any; compileInjectable( angularCoreEnv: CoreEnvironment, sourceMapUrl: string, meta: R3InjectableMetadataFacade): any; + compileInjectableDeclaration( + angularCoreEnv: CoreEnvironment, sourceMapUrl: string, meta: R3DeclareInjectableFacade): any; compileInjector( angularCoreEnv: CoreEnvironment, sourceMapUrl: string, meta: R3InjectorMetadataFacade): any; compileInjectorDeclaration( @@ -61,7 +63,9 @@ export interface CompilerFacade { createParseSourceSpan(kind: string, typeName: string, sourceUrl: string): ParseSourceSpan; FactoryTarget: typeof FactoryTarget; - ResourceLoader: {new(): ResourceLoader}; + // Note that we do not use `{new(): ResourceLoader}` here because + // the resource loader class is abstract and not constructable. + ResourceLoader: Function&{prototype: ResourceLoader}; } export interface CoreEnvironment { @@ -80,7 +84,9 @@ export type StringMapWithRename = { [key: string]: string|[string, string]; }; -export type Provider = any; +export type Provider = unknown; +export type Type = Function; +export type OpaqueValue = unknown; export enum FactoryTarget { Directive = 0, @@ -91,7 +97,7 @@ export enum FactoryTarget { } export interface R3DependencyMetadataFacade { - token: unknown; + token: OpaqueValue; attribute: string|null; host: boolean; optional: boolean; @@ -100,7 +106,7 @@ export interface R3DependencyMetadataFacade { } export interface R3DeclareDependencyMetadataFacade { - token: unknown; + token: OpaqueValue; attribute?: boolean; host?: boolean; optional?: boolean; @@ -110,25 +116,25 @@ export interface R3DeclareDependencyMetadataFacade { export interface R3PipeMetadataFacade { name: string; - type: any; + type: Type; pipeName: string; pure: boolean; } export interface R3InjectableMetadataFacade { name: string; - type: any; + type: Type; typeArgumentCount: number; - providedIn: any; - useClass?: any; - useFactory?: any; - useExisting?: any; - useValue?: any; - userDeps?: R3DependencyMetadataFacade[]; + providedIn?: Type|'root'|'platform'|'any'|null; + useClass?: OpaqueValue; + useFactory?: OpaqueValue; + useExisting?: OpaqueValue; + useValue?: OpaqueValue; + deps?: R3DependencyMetadataFacade[]; } export interface R3NgModuleMetadataFacade { - type: any; + type: Type; bootstrap: Function[]; declarations: Function[]; imports: Function[]; @@ -139,19 +145,19 @@ export interface R3NgModuleMetadataFacade { export interface R3InjectorMetadataFacade { name: string; - type: any; - providers: any[]; - imports: any[]; + type: Type; + providers: Provider[]; + imports: OpaqueValue[]; } export interface R3DirectiveMetadataFacade { name: string; - type: any; + type: Type; typeSourceSpan: ParseSourceSpan; selector: string|null; queries: R3QueryMetadataFacade[]; host: {[key: string]: string}; - propMetadata: {[key: string]: any[]}; + propMetadata: {[key: string]: OpaqueValue[]}; lifecycle: {usesOnChanges: boolean;}; inputs: string[]; outputs: string[]; @@ -164,7 +170,7 @@ export interface R3DirectiveMetadataFacade { export interface R3ComponentMetadataFacade extends R3DirectiveMetadataFacade { template: string; preserveWhitespaces: boolean; - animations: any[]|undefined; + animations: OpaqueValue[]|undefined; pipes: Map; directives: R3UsedDirectiveMetadata[]; styles: string[]; @@ -174,11 +180,9 @@ export interface R3ComponentMetadataFacade extends R3DirectiveMetadataFacade { changeDetection?: ChangeDetectionStrategy; } -export type OpaqueValue = unknown; - export interface R3DeclareDirectiveFacade { selector?: string; - type: Function; + type: Type; inputs?: {[classPropertyName: string]: string|[string, string]}; outputs?: {[classPropertyName: string]: string}; host?: { @@ -229,18 +233,28 @@ export interface R3UsedDirectiveMetadata { export interface R3FactoryDefMetadataFacade { name: string; - type: any; + type: Type; typeArgumentCount: number; deps: R3DependencyMetadataFacade[]|null; target: FactoryTarget; } export interface R3DeclareFactoryFacade { - type: Function; + type: Type; deps: R3DeclareDependencyMetadataFacade[]|null; target: FactoryTarget; } +export interface R3DeclareInjectableFacade { + type: Type; + providedIn?: Type|'root'|'platform'|'any'|null; + useClass?: OpaqueValue; + useFactory?: OpaqueValue; + useExisting?: OpaqueValue; + useValue?: OpaqueValue; + deps?: R3DeclareDependencyMetadataFacade[]; +} + export enum ViewEncapsulation { Emulated = 0, // Historically the 1 value was for `Native` encapsulation which has been removed as of v11. @@ -253,10 +267,10 @@ export type ChangeDetectionStrategy = number; export interface R3QueryMetadataFacade { propertyName: string; first: boolean; - predicate: any|string[]; + predicate: OpaqueValue|string[]; descendants: boolean; emitDistinctChangesOnly: boolean; - read: any|null; + read: OpaqueValue|null; static: boolean; } @@ -271,13 +285,13 @@ export interface R3DeclareQueryMetadataFacade { } export interface R3DeclareInjectorFacade { - type: Function; + type: Type; imports?: OpaqueValue[]; providers?: OpaqueValue[]; } export interface R3DeclareNgModuleFacade { - type: Function; + type: Type; bootstrap?: OpaqueValue[]|(() => OpaqueValue[]); declarations?: OpaqueValue[]|(() => OpaqueValue[]); imports?: OpaqueValue[]|(() => OpaqueValue[]); @@ -287,7 +301,7 @@ export interface R3DeclareNgModuleFacade { } export interface R3DeclarePipeFacade { - type: Function; + type: Type; name: string; pure?: boolean; } diff --git a/packages/compiler/src/compiler_util/expression_converter.ts b/packages/compiler/src/compiler_util/expression_converter.ts index ecda7aa218..1571068807 100644 --- a/packages/compiler/src/compiler_util/expression_converter.ts +++ b/packages/compiler/src/compiler_util/expression_converter.ts @@ -19,6 +19,7 @@ export interface LocalResolver { getLocal(name: string): o.Expression|null; notifyImplicitReceiverUse(): void; globals?: Set; + maybeRestoreView(): void; } export class ConvertActionBindingResult { @@ -259,8 +260,8 @@ function temporaryName(bindingId: string, temporaryNumber: number): string { return `tmp_${bindingId}_${temporaryNumber}`; } -export function temporaryDeclaration(bindingId: string, temporaryNumber: number): o.Statement { - return new o.DeclareVarStmt(temporaryName(bindingId, temporaryNumber), o.NULL_EXPR); +function temporaryDeclaration(bindingId: string, temporaryNumber: number): o.Statement { + return new o.DeclareVarStmt(temporaryName(bindingId, temporaryNumber)); } function prependTemporaryDecls( @@ -299,19 +300,19 @@ class _BuiltinAstConverter extends cdAst.AstTransformer { constructor(private _converterFactory: BuiltinConverterFactory) { super(); } - visitPipe(ast: cdAst.BindingPipe, context: any): any { + override visitPipe(ast: cdAst.BindingPipe, context: any): any { const args = [ast.exp, ...ast.args].map(ast => ast.visit(this, context)); return new BuiltinFunctionCall( ast.span, ast.sourceSpan, args, this._converterFactory.createPipeConverter(ast.name, args.length)); } - visitLiteralArray(ast: cdAst.LiteralArray, context: any): any { + override visitLiteralArray(ast: cdAst.LiteralArray, context: any): any { const args = ast.expressions.map(ast => ast.visit(this, context)); return new BuiltinFunctionCall( ast.span, ast.sourceSpan, args, this._converterFactory.createLiteralArrayConverter(ast.expressions.length)); } - visitLiteralMap(ast: cdAst.LiteralMap, context: any): any { + override visitLiteralMap(ast: cdAst.LiteralMap, context: any): any { const args = ast.values.map(ast => ast.visit(this, context)); return new BuiltinFunctionCall( @@ -399,6 +400,8 @@ class _AstToIrVisitor implements cdAst.AstVisitor { case '>=': op = o.BinaryOperator.BiggerEquals; break; + case '??': + return this.convertNullishCoalesce(ast, mode); default: throw new Error(`Unsupported operation ${ast.operation}`); } @@ -476,14 +479,20 @@ class _AstToIrVisitor implements cdAst.AstVisitor { return this.convertSafeAccess(ast, leftMostSafe, mode); } else { return convertToStatementIfNeeded( - mode, this._visit(ast.obj, _Mode.Expression).key(this._visit(ast.key, _Mode.Expression))); + mode, + this._visit(ast.receiver, _Mode.Expression).key(this._visit(ast.key, _Mode.Expression))); } } visitKeyedWrite(ast: cdAst.KeyedWrite, mode: _Mode): any { - const obj: o.Expression = this._visit(ast.obj, _Mode.Expression); + const obj: o.Expression = this._visit(ast.receiver, _Mode.Expression); const key: o.Expression = this._visit(ast.key, _Mode.Expression); const value: o.Expression = this._visit(ast.value, _Mode.Expression); + + if (obj === this._implicitReceiver) { + this._localResolver.maybeRestoreView(); + } + return convertToStatementIfNeeded(mode, obj.key(key).set(value)); } @@ -625,6 +634,10 @@ class _AstToIrVisitor implements cdAst.AstVisitor { return this.convertSafeAccess(ast, this.leftMostSafeNode(ast), mode); } + visitSafeKeyedRead(ast: cdAst.SafeKeyedRead, mode: _Mode): any { + return this.convertSafeAccess(ast, this.leftMostSafeNode(ast), mode); + } + visitAll(asts: cdAst.AST[], mode: _Mode): any { return asts.map(ast => this._visit(ast, mode)); } @@ -641,7 +654,8 @@ class _AstToIrVisitor implements cdAst.AstVisitor { } private convertSafeAccess( - ast: cdAst.AST, leftMostSafe: cdAst.SafeMethodCall|cdAst.SafePropertyRead, mode: _Mode): any { + ast: cdAst.AST, leftMostSafe: cdAst.SafeMethodCall|cdAst.SafePropertyRead|cdAst.SafeKeyedRead, + mode: _Mode): any { // If the expression contains a safe access node on the left it needs to be converted to // an expression that guards the access to the member by checking the receiver for blank. As // execution proceeds from left to right, the left most part of the expression must be guarded @@ -683,7 +697,7 @@ class _AstToIrVisitor implements cdAst.AstVisitor { let guardedExpression = this._visit(leftMostSafe.receiver, _Mode.Expression); let temporary: o.ReadVarExpr = undefined!; - if (this.needsTemporary(leftMostSafe.receiver)) { + if (this.needsTemporaryInSafeAccess(leftMostSafe.receiver)) { // If the expression has method calls or pipes then we need to save the result into a // temporary variable to avoid calling stateful or impure code more than once. temporary = this.allocateTemporary(); @@ -703,7 +717,13 @@ class _AstToIrVisitor implements cdAst.AstVisitor { leftMostSafe, new cdAst.MethodCall( leftMostSafe.span, leftMostSafe.sourceSpan, leftMostSafe.nameSpan, - leftMostSafe.receiver, leftMostSafe.name, leftMostSafe.args)); + leftMostSafe.receiver, leftMostSafe.name, leftMostSafe.args, + leftMostSafe.argumentSpan)); + } else if (leftMostSafe instanceof cdAst.SafeKeyedRead) { + this._nodeMap.set( + leftMostSafe, + new cdAst.KeyedRead( + leftMostSafe.span, leftMostSafe.sourceSpan, leftMostSafe.receiver, leftMostSafe.key)); } else { this._nodeMap.set( leftMostSafe, @@ -725,7 +745,25 @@ class _AstToIrVisitor implements cdAst.AstVisitor { } // Produce the conditional - return convertToStatementIfNeeded(mode, condition.conditional(o.literal(null), access)); + return convertToStatementIfNeeded(mode, condition.conditional(o.NULL_EXPR, access)); + } + + private convertNullishCoalesce(ast: cdAst.Binary, mode: _Mode): any { + const left: o.Expression = this._visit(ast.left, _Mode.Expression); + const right: o.Expression = this._visit(ast.right, _Mode.Expression); + const temporary = this.allocateTemporary(); + this.releaseTemporary(temporary); + + // Generate the following expression. It is identical to how TS + // transpiles binary expressions with a nullish coalescing operator. + // let temp; + // (temp = a) !== null && temp !== undefined ? temp : b; + return convertToStatementIfNeeded( + mode, + temporary.set(left) + .notIdentical(o.NULL_EXPR) + .and(temporary.notIdentical(o.literal(undefined))) + .conditional(temporary, right)); } // Given an expression of the form a?.b.c?.d.e then the left most safe node is @@ -735,7 +773,8 @@ class _AstToIrVisitor implements cdAst.AstVisitor { // a == null ? null : a.c.b.c?.d.e // then to: // a == null ? null : a.b.c == null ? null : a.b.c.d.e - private leftMostSafeNode(ast: cdAst.AST): cdAst.SafePropertyRead|cdAst.SafeMethodCall { + private leftMostSafeNode(ast: cdAst.AST): cdAst.SafePropertyRead|cdAst.SafeMethodCall + |cdAst.SafeKeyedRead { const visit = (visitor: cdAst.AstVisitor, ast: cdAst.AST): any => { return (this._nodeMap.get(ast) || ast).visit(visitor); }; @@ -765,7 +804,7 @@ class _AstToIrVisitor implements cdAst.AstVisitor { return null; }, visitKeyedRead(ast: cdAst.KeyedRead) { - return visit(this, ast.obj); + return visit(this, ast.receiver); }, visitKeyedWrite(ast: cdAst.KeyedWrite) { return null; @@ -805,6 +844,9 @@ class _AstToIrVisitor implements cdAst.AstVisitor { }, visitSafePropertyRead(ast: cdAst.SafePropertyRead) { return visit(this, ast.receiver) || ast; + }, + visitSafeKeyedRead(ast: cdAst.SafeKeyedRead) { + return visit(this, ast.receiver) || ast; } }); } @@ -812,7 +854,7 @@ class _AstToIrVisitor implements cdAst.AstVisitor { // Returns true of the AST includes a method or a pipe indicating that, if the // expression is used as the target of a safe property or method access then // the expression should be stored into a temporary variable. - private needsTemporary(ast: cdAst.AST): boolean { + private needsTemporaryInSafeAccess(ast: cdAst.AST): boolean { const visit = (visitor: cdAst.AstVisitor, ast: cdAst.AST): boolean => { return ast && (this._nodeMap.get(ast) || ast).visit(visitor); }; @@ -885,6 +927,9 @@ class _AstToIrVisitor implements cdAst.AstVisitor { }, visitSafePropertyRead(ast: cdAst.SafePropertyRead) { return false; + }, + visitSafeKeyedRead(ast: cdAst.SafeKeyedRead) { + return false; } }); } @@ -943,6 +988,7 @@ function flattenStatements(arg: any, output: o.Statement[]) { class DefaultLocalResolver implements LocalResolver { constructor(public globals?: Set) {} notifyImplicitReceiverUse(): void {} + maybeRestoreView(): void {} getLocal(name: string): o.Expression|null { if (name === EventHandlerVars.event.name) { return EventHandlerVars.event; @@ -970,7 +1016,7 @@ function convertStmtIntoExpression(stmt: o.Statement): o.Expression|null { export class BuiltinFunctionCall extends cdAst.FunctionCall { constructor( - span: cdAst.ParseSpan, sourceSpan: cdAst.AbsoluteSourceSpan, public args: cdAst.AST[], + span: cdAst.ParseSpan, sourceSpan: cdAst.AbsoluteSourceSpan, args: cdAst.AST[], public converter: BuiltinConverter) { super(span, sourceSpan, null, args); } diff --git a/packages/compiler/src/constant_pool.ts b/packages/compiler/src/constant_pool.ts index 8b119f0094..a380c29807 100644 --- a/packages/compiler/src/constant_pool.ts +++ b/packages/compiler/src/constant_pool.ts @@ -62,7 +62,7 @@ class FixupExpression extends o.Expression { this.original = resolved; } - visitExpression(visitor: o.ExpressionVisitor, context: any): any { + override visitExpression(visitor: o.ExpressionVisitor, context: any): any { if (context === KEY_CONTEXT) { // When producing a key we want to traverse the constant not the // variable used to refer to it. @@ -72,11 +72,11 @@ class FixupExpression extends o.Expression { } } - isEquivalent(e: o.Expression): boolean { + override isEquivalent(e: o.Expression): boolean { return e instanceof FixupExpression && this.resolved.isEquivalent(e.resolved); } - isConstant() { + override isConstant() { return true; } diff --git a/packages/compiler/src/expression_parser/ast.ts b/packages/compiler/src/expression_parser/ast.ts index 327311a1dd..3f06462024 100644 --- a/packages/compiler/src/expression_parser/ast.ts +++ b/packages/compiler/src/expression_parser/ast.ts @@ -24,16 +24,16 @@ export class ParseSpan { } } -export class AST { +export abstract class AST { constructor( public span: ParseSpan, /** * Absolute location of the expression AST in a source code file. */ public sourceSpan: AbsoluteSourceSpan) {} - visit(visitor: AstVisitor, context: any = null): any { - return null; - } + + abstract visit(visitor: AstVisitor, context?: any): any; + toString(): string { return 'AST'; } @@ -65,22 +65,22 @@ export class Quote extends AST { public uninterpretedExpression: string, public location: any) { super(span, sourceSpan); } - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { return visitor.visitQuote(this, context); } - toString(): string { + override toString(): string { return 'Quote'; } } export class EmptyExpr extends AST { - visit(visitor: AstVisitor, context: any = null) { + override visit(visitor: AstVisitor, context: any = null) { // do nothing } } export class ImplicitReceiver extends AST { - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { return visitor.visitImplicitReceiver(this, context); } } @@ -94,7 +94,7 @@ export class ImplicitReceiver extends AST { * TODO: we should find a way for this class not to extend from `ImplicitReceiver` in the future. */ export class ThisReceiver extends ImplicitReceiver { - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { return visitor.visitThisReceiver?.(this, context); } } @@ -106,7 +106,7 @@ export class Chain extends AST { constructor(span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public expressions: any[]) { super(span, sourceSpan); } - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { return visitor.visitChain(this, context); } } @@ -117,7 +117,7 @@ export class Conditional extends AST { public falseExp: AST) { super(span, sourceSpan); } - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { return visitor.visitConditional(this, context); } } @@ -128,7 +128,7 @@ export class PropertyRead extends ASTWithName { public receiver: AST, public name: string) { super(span, sourceSpan, nameSpan); } - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { return visitor.visitPropertyRead(this, context); } } @@ -139,7 +139,7 @@ export class PropertyWrite extends ASTWithName { public receiver: AST, public name: string, public value: AST) { super(span, sourceSpan, nameSpan); } - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { return visitor.visitPropertyWrite(this, context); } } @@ -150,27 +150,38 @@ export class SafePropertyRead extends ASTWithName { public receiver: AST, public name: string) { super(span, sourceSpan, nameSpan); } - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { return visitor.visitSafePropertyRead(this, context); } } export class KeyedRead extends AST { - constructor(span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public obj: AST, public key: AST) { + constructor( + span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public receiver: AST, public key: AST) { super(span, sourceSpan); } - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { return visitor.visitKeyedRead(this, context); } } +export class SafeKeyedRead extends AST { + constructor( + span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public receiver: AST, public key: AST) { + super(span, sourceSpan); + } + override visit(visitor: AstVisitor, context: any = null): any { + return visitor.visitSafeKeyedRead(this, context); + } +} + export class KeyedWrite extends AST { constructor( - span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public obj: AST, public key: AST, + span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public receiver: AST, public key: AST, public value: AST) { super(span, sourceSpan); } - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { return visitor.visitKeyedWrite(this, context); } } @@ -181,7 +192,7 @@ export class BindingPipe extends ASTWithName { public args: any[], nameSpan: AbsoluteSourceSpan) { super(span, sourceSpan, nameSpan); } - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { return visitor.visitPipe(this, context); } } @@ -190,7 +201,7 @@ export class LiteralPrimitive extends AST { constructor(span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public value: any) { super(span, sourceSpan); } - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { return visitor.visitLiteralPrimitive(this, context); } } @@ -199,7 +210,7 @@ export class LiteralArray extends AST { constructor(span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public expressions: any[]) { super(span, sourceSpan); } - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { return visitor.visitLiteralArray(this, context); } } @@ -214,7 +225,7 @@ export class LiteralMap extends AST { public values: any[]) { super(span, sourceSpan); } - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { return visitor.visitLiteralMap(this, context); } } @@ -225,7 +236,7 @@ export class Interpolation extends AST { public expressions: any[]) { super(span, sourceSpan); } - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { return visitor.visitInterpolation(this, context); } } @@ -236,7 +247,7 @@ export class Binary extends AST { public right: AST) { super(span, sourceSpan); } - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { return visitor.visitBinary(this, context); } } @@ -249,9 +260,9 @@ export class Binary extends AST { export class Unary extends Binary { // Redeclare the properties that are inherited from `Binary` as `never`, as consumers should not // depend on these fields when operating on `Unary`. - left: never; - right: never; - operation: never; + override left: never; + override right: never; + override operation: never; /** * Creates a unary minus expression "-x", represented as `Binary` using "0 - x". @@ -279,7 +290,7 @@ export class Unary extends Binary { super(span, sourceSpan, binaryOp, binaryLeft, binaryRight); } - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { if (visitor.visitUnary !== undefined) { return visitor.visitUnary(this, context); } @@ -291,7 +302,7 @@ export class PrefixNot extends AST { constructor(span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public expression: AST) { super(span, sourceSpan); } - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { return visitor.visitPrefixNot(this, context); } } @@ -300,7 +311,7 @@ export class NonNullAssert extends AST { constructor(span: ParseSpan, sourceSpan: AbsoluteSourceSpan, public expression: AST) { super(span, sourceSpan); } - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { return visitor.visitNonNullAssert(this, context); } } @@ -308,10 +319,11 @@ export class NonNullAssert extends AST { export class MethodCall extends ASTWithName { constructor( span: ParseSpan, sourceSpan: AbsoluteSourceSpan, nameSpan: AbsoluteSourceSpan, - public receiver: AST, public name: string, public args: any[]) { + public receiver: AST, public name: string, public args: any[], + public argumentSpan: AbsoluteSourceSpan) { super(span, sourceSpan, nameSpan); } - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { return visitor.visitMethodCall(this, context); } } @@ -319,10 +331,11 @@ export class MethodCall extends ASTWithName { export class SafeMethodCall extends ASTWithName { constructor( span: ParseSpan, sourceSpan: AbsoluteSourceSpan, nameSpan: AbsoluteSourceSpan, - public receiver: AST, public name: string, public args: any[]) { + public receiver: AST, public name: string, public args: any[], + public argumentSpan: AbsoluteSourceSpan) { super(span, sourceSpan, nameSpan); } - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { return visitor.visitSafeMethodCall(this, context); } } @@ -333,7 +346,7 @@ export class FunctionCall extends AST { public args: any[]) { super(span, sourceSpan); } - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { return visitor.visitFunctionCall(this, context); } } @@ -355,13 +368,13 @@ export class ASTWithSource extends AST { new AbsoluteSourceSpan( absoluteOffset, source === null ? absoluteOffset : absoluteOffset + source.length)); } - visit(visitor: AstVisitor, context: any = null): any { + override visit(visitor: AstVisitor, context: any = null): any { if (visitor.visitASTWithSource) { return visitor.visitASTWithSource(this, context); } return this.ast.visit(visitor, context); } - toString(): string { + override toString(): string { return `${this.source} in ${this.location}`; } } @@ -451,6 +464,7 @@ export interface AstVisitor { visitQuote(ast: Quote, context: any): any; visitSafeMethodCall(ast: SafeMethodCall, context: any): any; visitSafePropertyRead(ast: SafePropertyRead, context: any): any; + visitSafeKeyedRead(ast: SafeKeyedRead, context: any): any; visitASTWithSource?(ast: ASTWithSource, context: any): any; /** * This function is optionally defined to allow classes that implement this @@ -499,11 +513,11 @@ export class RecursiveAstVisitor implements AstVisitor { this.visitAll(ast.expressions, context); } visitKeyedRead(ast: KeyedRead, context: any): any { - this.visit(ast.obj, context); + this.visit(ast.receiver, context); this.visit(ast.key, context); } visitKeyedWrite(ast: KeyedWrite, context: any): any { - this.visit(ast.obj, context); + this.visit(ast.receiver, context); this.visit(ast.key, context); this.visit(ast.value, context); } @@ -538,6 +552,10 @@ export class RecursiveAstVisitor implements AstVisitor { this.visit(ast.receiver, context); this.visitAll(ast.args, context); } + visitSafeKeyedRead(ast: SafeKeyedRead, context: any): any { + this.visit(ast.receiver, context); + this.visit(ast.key, context); + } visitQuote(ast: Quote, context: any): any {} // This is not part of the AstVisitor interface, just a helper method visitAll(asts: AST[], context: any): any { @@ -583,13 +601,13 @@ export class AstTransformer implements AstVisitor { visitMethodCall(ast: MethodCall, context: any): AST { return new MethodCall( ast.span, ast.sourceSpan, ast.nameSpan, ast.receiver.visit(this), ast.name, - this.visitAll(ast.args)); + this.visitAll(ast.args), ast.argumentSpan); } visitSafeMethodCall(ast: SafeMethodCall, context: any): AST { return new SafeMethodCall( ast.span, ast.sourceSpan, ast.nameSpan, ast.receiver.visit(this), ast.name, - this.visitAll(ast.args)); + this.visitAll(ast.args), ast.argumentSpan); } visitFunctionCall(ast: FunctionCall, context: any): AST { @@ -642,12 +660,13 @@ export class AstTransformer implements AstVisitor { } visitKeyedRead(ast: KeyedRead, context: any): AST { - return new KeyedRead(ast.span, ast.sourceSpan, ast.obj.visit(this), ast.key.visit(this)); + return new KeyedRead(ast.span, ast.sourceSpan, ast.receiver.visit(this), ast.key.visit(this)); } visitKeyedWrite(ast: KeyedWrite, context: any): AST { return new KeyedWrite( - ast.span, ast.sourceSpan, ast.obj.visit(this), ast.key.visit(this), ast.value.visit(this)); + ast.span, ast.sourceSpan, ast.receiver.visit(this), ast.key.visit(this), + ast.value.visit(this)); } visitAll(asts: any[]): any[] { @@ -666,6 +685,11 @@ export class AstTransformer implements AstVisitor { return new Quote( ast.span, ast.sourceSpan, ast.prefix, ast.uninterpretedExpression, ast.location); } + + visitSafeKeyedRead(ast: SafeKeyedRead, context: any): AST { + return new SafeKeyedRead( + ast.span, ast.sourceSpan, ast.receiver.visit(this), ast.key.visit(this)); + } } // A transformer that only creates new nodes if the transformer makes a change or @@ -719,7 +743,8 @@ export class AstMemoryEfficientTransformer implements AstVisitor { const receiver = ast.receiver.visit(this); const args = this.visitAll(ast.args); if (receiver !== ast.receiver || args !== ast.args) { - return new MethodCall(ast.span, ast.sourceSpan, ast.nameSpan, receiver, ast.name, args); + return new MethodCall( + ast.span, ast.sourceSpan, ast.nameSpan, receiver, ast.name, args, ast.argumentSpan); } return ast; } @@ -728,7 +753,8 @@ export class AstMemoryEfficientTransformer implements AstVisitor { const receiver = ast.receiver.visit(this); const args = this.visitAll(ast.args); if (receiver !== ast.receiver || args !== ast.args) { - return new SafeMethodCall(ast.span, ast.sourceSpan, ast.nameSpan, receiver, ast.name, args); + return new SafeMethodCall( + ast.span, ast.sourceSpan, ast.nameSpan, receiver, ast.name, args, ast.argumentSpan); } return ast; } @@ -818,19 +844,19 @@ export class AstMemoryEfficientTransformer implements AstVisitor { } visitKeyedRead(ast: KeyedRead, context: any): AST { - const obj = ast.obj.visit(this); + const obj = ast.receiver.visit(this); const key = ast.key.visit(this); - if (obj !== ast.obj || key !== ast.key) { + if (obj !== ast.receiver || key !== ast.key) { return new KeyedRead(ast.span, ast.sourceSpan, obj, key); } return ast; } visitKeyedWrite(ast: KeyedWrite, context: any): AST { - const obj = ast.obj.visit(this); + const obj = ast.receiver.visit(this); const key = ast.key.visit(this); const value = ast.value.visit(this); - if (obj !== ast.obj || key !== ast.key || value !== ast.value) { + if (obj !== ast.receiver || key !== ast.key || value !== ast.value) { return new KeyedWrite(ast.span, ast.sourceSpan, obj, key, value); } return ast; @@ -859,6 +885,15 @@ export class AstMemoryEfficientTransformer implements AstVisitor { visitQuote(ast: Quote, context: any): AST { return ast; } + + visitSafeKeyedRead(ast: SafeKeyedRead, context: any): AST { + const obj = ast.receiver.visit(this); + const key = ast.key.visit(this); + if (obj !== ast.receiver || key !== ast.key) { + return new SafeKeyedRead(ast.span, ast.sourceSpan, obj, key); + } + return ast; + } } // Bindings diff --git a/packages/compiler/src/expression_parser/lexer.ts b/packages/compiler/src/expression_parser/lexer.ts index cc1614218b..39372a4b07 100644 --- a/packages/compiler/src/expression_parser/lexer.ts +++ b/packages/compiler/src/expression_parser/lexer.ts @@ -11,6 +11,7 @@ import * as chars from '../chars'; export enum TokenType { Character, Identifier, + PrivateIdentifier, Keyword, String, Operator, @@ -58,6 +59,10 @@ export class Token { return this.type == TokenType.Identifier; } + isPrivateIdentifier(): boolean { + return this.type == TokenType.PrivateIdentifier; + } + isKeyword(): boolean { return this.type == TokenType.Keyword; } @@ -104,6 +109,7 @@ export class Token { case TokenType.Identifier: case TokenType.Keyword: case TokenType.Operator: + case TokenType.PrivateIdentifier: case TokenType.String: case TokenType.Error: return this.strValue; @@ -123,6 +129,10 @@ function newIdentifierToken(index: number, end: number, text: string): Token { return new Token(index, end, TokenType.Identifier, 0, text); } +function newPrivateIdentifierToken(index: number, end: number, text: string): Token { + return new Token(index, end, TokenType.PrivateIdentifier, 0, text); +} + function newKeywordToken(index: number, end: number, text: string): Token { return new Token(index, end, TokenType.Keyword, 0, text); } @@ -204,6 +214,7 @@ class _Scanner { case chars.$DQ: return this.scanString(); case chars.$HASH: + return this.scanPrivateIdentifier(); case chars.$PLUS: case chars.$MINUS: case chars.$STAR: @@ -212,7 +223,7 @@ class _Scanner { case chars.$CARET: return this.scanOperator(start, String.fromCharCode(peek)); case chars.$QUESTION: - return this.scanComplexOperator(start, '?', chars.$PERIOD, '.'); + return this.scanQuestion(start); case chars.$LT: case chars.$GT: return this.scanComplexOperator(start, String.fromCharCode(peek), chars.$EQ, '='); @@ -279,13 +290,37 @@ class _Scanner { newIdentifierToken(start, this.index, str); } + /** Scans an ECMAScript private identifier. */ + scanPrivateIdentifier(): Token { + const start: number = this.index; + this.advance(); + if (!isIdentifierStart(this.peek)) { + return this.error('Invalid character [#]', -1); + } + while (isIdentifierPart(this.peek)) this.advance(); + const identifierName: string = this.input.substring(start, this.index); + return newPrivateIdentifierToken(start, this.index, identifierName); + } + scanNumber(start: number): Token { - let simple: boolean = (this.index === start); + let simple = (this.index === start); + let hasSeparators = false; this.advance(); // Skip initial digit. while (true) { if (chars.isDigit(this.peek)) { // Do nothing. - } else if (this.peek == chars.$PERIOD) { + } else if (this.peek === chars.$_) { + // Separators are only valid when they're surrounded by digits. E.g. `1_0_1` is + // valid while `_101` and `101_` are not. The separator can't be next to the decimal + // point or another separator either. Note that it's unlikely that we'll hit a case where + // the underscore is at the start, because that's a valid identifier and it will be picked + // up earlier in the parsing. We validate for it anyway just in case. + if (!chars.isDigit(this.input.charCodeAt(this.index - 1)) || + !chars.isDigit(this.input.charCodeAt(this.index + 1))) { + return this.error('Invalid numeric separator', 0); + } + hasSeparators = true; + } else if (this.peek === chars.$PERIOD) { simple = false; } else if (isExponentStart(this.peek)) { this.advance(); @@ -297,8 +332,12 @@ class _Scanner { } this.advance(); } - const str: string = this.input.substring(start, this.index); - const value: number = simple ? parseIntAutoRadix(str) : parseFloat(str); + + let str = this.input.substring(start, this.index); + if (hasSeparators) { + str = str.replace(/_/g, ''); + } + const value = simple ? parseIntAutoRadix(str) : parseFloat(str); return newNumberToken(start, this.index, value); } @@ -348,6 +387,17 @@ class _Scanner { return newStringToken(start, this.index, buffer + last); } + scanQuestion(start: number): Token { + this.advance(); + let str: string = '?'; + // Either `a ?? b` or 'a?.b'. + if (this.peek === chars.$QUESTION || this.peek === chars.$PERIOD) { + str += this.peek === chars.$PERIOD ? '.' : '?'; + this.advance(); + } + return newOperatorToken(start, this.index, str); + } + error(message: string, offset: number): Token { const position: number = this.index + offset; return newErrorToken( diff --git a/packages/compiler/src/expression_parser/parser.ts b/packages/compiler/src/expression_parser/parser.ts index a20d1057ae..7fc84c14ae 100644 --- a/packages/compiler/src/expression_parser/parser.ts +++ b/packages/compiler/src/expression_parser/parser.ts @@ -9,7 +9,7 @@ import * as chars from '../chars'; import {DEFAULT_INTERPOLATION_CONFIG, InterpolationConfig} from '../ml_parser/interpolation_config'; -import {AbsoluteSourceSpan, AST, AstVisitor, ASTWithSource, Binary, BindingPipe, Chain, Conditional, EmptyExpr, ExpressionBinding, FunctionCall, ImplicitReceiver, Interpolation, KeyedRead, KeyedWrite, LiteralArray, LiteralMap, LiteralMapKey, LiteralPrimitive, MethodCall, NonNullAssert, ParserError, ParseSpan, PrefixNot, PropertyRead, PropertyWrite, Quote, RecursiveAstVisitor, SafeMethodCall, SafePropertyRead, TemplateBinding, TemplateBindingIdentifier, ThisReceiver, Unary, VariableBinding} from './ast'; +import {AbsoluteSourceSpan, AST, AstVisitor, ASTWithSource, Binary, BindingPipe, Chain, Conditional, EmptyExpr, ExpressionBinding, FunctionCall, ImplicitReceiver, Interpolation, KeyedRead, KeyedWrite, LiteralArray, LiteralMap, LiteralMapKey, LiteralPrimitive, MethodCall, NonNullAssert, ParserError, ParseSpan, PrefixNot, PropertyRead, PropertyWrite, Quote, RecursiveAstVisitor, SafeKeyedRead, SafeMethodCall, SafePropertyRead, TemplateBinding, TemplateBindingIdentifier, ThisReceiver, Unary, VariableBinding} from './ast'; import {EOF, isIdentifier, isQuote, Lexer, Token, TokenType} from './lexer'; export interface InterpolationPiece { @@ -367,7 +367,7 @@ export class Parser { } export class IvyParser extends Parser { - simpleExpressionChecker = IvySimpleExpressionChecker; + override simpleExpressionChecker = IvySimpleExpressionChecker; } /** Describes a stateful context an expression parser is in. */ @@ -461,6 +461,19 @@ export class _ParseAST { if (artificialEndIndex !== undefined && artificialEndIndex > this.currentEndIndex) { endIndex = artificialEndIndex; } + + // In some unusual parsing scenarios (like when certain tokens are missing and an `EmptyExpr` is + // being created), the current token may already be advanced beyond the `currentEndIndex`. This + // appears to be a deep-seated parser bug. + // + // As a workaround for now, swap the start and end indices to ensure a valid `ParseSpan`. + // TODO(alxhub): fix the bug upstream in the parser state, and remove this workaround. + if (start > endIndex) { + const tmp = endIndex; + endIndex = start; + start = tmp; + } + return new ParseSpan(start, endIndex); } @@ -535,7 +548,11 @@ export class _ParseAST { expectIdentifierOrKeyword(): string|null { const n = this.next; if (!n.isIdentifier() && !n.isKeyword()) { - this.error(`Unexpected ${this.prettyPrintToken(n)}, expected identifier or keyword`); + if (n.isPrivateIdentifier()) { + this._reportErrorForPrivateIdentifier(n, 'expected identifier or keyword'); + } else { + this.error(`Unexpected ${this.prettyPrintToken(n)}, expected identifier or keyword`); + } return null; } this.advance(); @@ -545,7 +562,12 @@ export class _ParseAST { expectIdentifierOrKeywordOrString(): string { const n = this.next; if (!n.isIdentifier() && !n.isKeyword() && !n.isString()) { - this.error(`Unexpected ${this.prettyPrintToken(n)}, expected identifier, keyword, or string`); + if (n.isPrivateIdentifier()) { + this._reportErrorForPrivateIdentifier(n, 'expected identifier, keyword or string'); + } else { + this.error( + `Unexpected ${this.prettyPrintToken(n)}, expected identifier, keyword, or string`); + } return ''; } this.advance(); @@ -669,14 +691,25 @@ export class _ParseAST { parseLogicalAnd(): AST { // '&&' const start = this.inputIndex; - let result = this.parseEquality(); + let result = this.parseNullishCoalescing(); while (this.consumeOptionalOperator('&&')) { - const right = this.parseEquality(); + const right = this.parseNullishCoalescing(); result = new Binary(this.span(start), this.sourceSpan(start), '&&', result, right); } return result; } + parseNullishCoalescing(): AST { + // '??' + const start = this.inputIndex; + let result = this.parseEquality(); + while (this.consumeOptionalOperator('??')) { + const right = this.parseEquality(); + result = new Binary(this.span(start), this.sourceSpan(start), '??', result, right); + } + return result; + } + parseEquality(): AST { // '==','!=','===','!==' const start = this.inputIndex; @@ -789,24 +822,11 @@ export class _ParseAST { result = this.parseAccessMemberOrMethodCall(result, start, false); } else if (this.consumeOptionalOperator('?.')) { - result = this.parseAccessMemberOrMethodCall(result, start, true); - + result = this.consumeOptionalCharacter(chars.$LBRACKET) ? + this.parseKeyedReadOrWrite(result, start, true) : + this.parseAccessMemberOrMethodCall(result, start, true); } else if (this.consumeOptionalCharacter(chars.$LBRACKET)) { - this.withContext(ParseContextFlags.Writable, () => { - this.rbracketsExpected++; - const key = this.parsePipe(); - if (key instanceof EmptyExpr) { - this.error(`Key access cannot be empty`); - } - this.rbracketsExpected--; - this.expectCharacter(chars.$RBRACKET); - if (this.consumeOptionalOperator('=')) { - const value = this.parseConditional(); - result = new KeyedWrite(this.span(start), this.sourceSpan(start), result, key, value); - } else { - result = new KeyedRead(this.span(start), this.sourceSpan(start), result, key); - } - }); + result = this.parseKeyedReadOrWrite(result, start, false); } else if (this.consumeOptionalCharacter(chars.$LPAREN)) { this.rparensExpected++; const args = this.parseCallArguments(); @@ -875,6 +895,10 @@ export class _ParseAST { this.advance(); return new LiteralPrimitive(this.span(start), this.sourceSpan(start), literalValue); + } else if (this.next.isPrivateIdentifier()) { + this._reportErrorForPrivateIdentifier(this.next, null); + return new EmptyExpr(this.span(start), this.sourceSpan(start)); + } else if (this.index >= this.tokens.length) { this.error(`Unexpected end of expression: ${this.input}`); return new EmptyExpr(this.span(start), this.sourceSpan(start)); @@ -905,11 +929,23 @@ export class _ParseAST { if (!this.consumeOptionalCharacter(chars.$RBRACE)) { this.rbracesExpected++; do { + const keyStart = this.inputIndex; const quoted = this.next.isString(); const key = this.expectIdentifierOrKeywordOrString(); keys.push({key, quoted}); - this.expectCharacter(chars.$COLON); - values.push(this.parsePipe()); + + // Properties with quoted keys can't use the shorthand syntax. + if (quoted) { + this.expectCharacter(chars.$COLON); + values.push(this.parsePipe()); + } else if (this.consumeOptionalCharacter(chars.$COLON)) { + values.push(this.parsePipe()); + } else { + const span = this.span(keyStart); + const sourceSpan = this.sourceSpan(keyStart); + values.push(new PropertyRead( + span, sourceSpan, sourceSpan, new ImplicitReceiver(span, sourceSpan), key)); + } } while (this.consumeOptionalCharacter(chars.$COMMA)); this.rbracesExpected--; this.expectCharacter(chars.$RBRACE); @@ -917,7 +953,7 @@ export class _ParseAST { return new LiteralMap(this.span(start), this.sourceSpan(start), keys, values); } - parseAccessMemberOrMethodCall(receiver: AST, start: number, isSafe: boolean = false): AST { + parseAccessMemberOrMethodCall(receiver: AST, start: number, isSafe: boolean): AST { const nameStart = this.inputIndex; const id = this.withContext(ParseContextFlags.Writable, () => { const id = this.expectIdentifierOrKeyword() ?? ''; @@ -929,14 +965,19 @@ export class _ParseAST { const nameSpan = this.sourceSpan(nameStart); if (this.consumeOptionalCharacter(chars.$LPAREN)) { + const argumentStart = this.inputIndex; this.rparensExpected++; const args = this.parseCallArguments(); + const argumentSpan = + this.span(argumentStart, this.inputIndex).toAbsolute(this.absoluteOffset); + this.expectCharacter(chars.$RPAREN); this.rparensExpected--; const span = this.span(start); const sourceSpan = this.sourceSpan(start); - return isSafe ? new SafeMethodCall(span, sourceSpan, nameSpan, receiver, id, args) : - new MethodCall(span, sourceSpan, nameSpan, receiver, id, args); + return isSafe ? + new SafeMethodCall(span, sourceSpan, nameSpan, receiver, id, args, argumentSpan) : + new MethodCall(span, sourceSpan, nameSpan, receiver, id, args, argumentSpan); } else { if (isSafe) { @@ -1053,6 +1094,31 @@ export class _ParseAST { return new TemplateBindingParseResult(bindings, [] /* warnings */, this.errors); } + parseKeyedReadOrWrite(receiver: AST, start: number, isSafe: boolean): AST { + return this.withContext(ParseContextFlags.Writable, () => { + this.rbracketsExpected++; + const key = this.parsePipe(); + if (key instanceof EmptyExpr) { + this.error(`Key access cannot be empty`); + } + this.rbracketsExpected--; + this.expectCharacter(chars.$RBRACKET); + if (this.consumeOptionalOperator('=')) { + if (isSafe) { + this.error('The \'?.\' operator cannot be used in the assignment'); + } else { + const value = this.parseConditional(); + return new KeyedWrite(this.span(start), this.sourceSpan(start), receiver, key, value); + } + } else { + return isSafe ? new SafeKeyedRead(this.span(start), this.sourceSpan(start), receiver, key) : + new KeyedRead(this.span(start), this.sourceSpan(start), receiver, key); + } + + return new EmptyExpr(this.span(start), this.sourceSpan(start)); + }); + } + /** * Parse a directive keyword, followed by a mandatory expression. * For example, "of items", "trackBy: func". @@ -1180,6 +1246,20 @@ export class _ParseAST { `at the end of the expression`; } + /** + * Records an error for an unexpected private identifier being discovered. + * @param token Token representing a private identifier. + * @param extraMessage Optional additional message being appended to the error. + */ + private _reportErrorForPrivateIdentifier(token: Token, extraMessage: string|null) { + let errorMessage = + `Private identifiers are not supported. Unexpected private identifier: ${token}`; + if (extraMessage !== null) { + errorMessage += `, ${extraMessage}`; + } + this.error(errorMessage); + } + /** * Error recovery should skip tokens until it encounters a recovery point. * @@ -1277,6 +1357,8 @@ class SimpleExpressionChecker implements AstVisitor { visitChain(ast: Chain, context: any) {} visitQuote(ast: Quote, context: any) {} + + visitSafeKeyedRead(ast: SafeKeyedRead, context: any) {} } /** @@ -1289,7 +1371,7 @@ class SimpleExpressionChecker implements AstVisitor { class IvySimpleExpressionChecker extends RecursiveAstVisitor implements SimpleExpressionChecker { errors: string[] = []; - visitPipe() { + override visitPipe() { this.errors.push('pipes'); } } diff --git a/packages/compiler/src/i18n/digest.ts b/packages/compiler/src/i18n/digest.ts index 64afb7adaa..5134fe749c 100644 --- a/packages/compiler/src/i18n/digest.ts +++ b/packages/compiler/src/i18n/digest.ts @@ -93,7 +93,7 @@ export function serializeNodes(nodes: i18n.Node[]): string[] { * @internal */ class _SerializerIgnoreIcuExpVisitor extends _SerializerVisitor { - visitIcu(icu: i18n.Icu, context: any): any { + override visitIcu(icu: i18n.Icu, context: any): any { let strCases = Object.keys(icu.cases).map((k: string) => `${k} {${icu.cases[k].visit(this)}}`); // Do not take the expression into account return `{${icu.type}, ${strCases.join(', ')}}`; diff --git a/packages/compiler/src/i18n/message_bundle.ts b/packages/compiler/src/i18n/message_bundle.ts index b3fa589538..3bf6d90a98 100644 --- a/packages/compiler/src/i18n/message_bundle.ts +++ b/packages/compiler/src/i18n/message_bundle.ts @@ -89,7 +89,8 @@ class MapPlaceholderNames extends i18n.CloneVisitor { return mapper ? nodes.map(n => n.visit(this, mapper)) : nodes; } - visitTagPlaceholder(ph: i18n.TagPlaceholder, mapper: PlaceholderMapper): i18n.TagPlaceholder { + override visitTagPlaceholder(ph: i18n.TagPlaceholder, mapper: PlaceholderMapper): + i18n.TagPlaceholder { const startName = mapper.toPublicName(ph.startName)!; const closeName = ph.closeName ? mapper.toPublicName(ph.closeName)! : ph.closeName; const children = ph.children.map(n => n.visit(this, mapper)); @@ -98,11 +99,12 @@ class MapPlaceholderNames extends i18n.CloneVisitor { ph.startSourceSpan, ph.endSourceSpan); } - visitPlaceholder(ph: i18n.Placeholder, mapper: PlaceholderMapper): i18n.Placeholder { + override visitPlaceholder(ph: i18n.Placeholder, mapper: PlaceholderMapper): i18n.Placeholder { return new i18n.Placeholder(ph.value, mapper.toPublicName(ph.name)!, ph.sourceSpan); } - visitIcuPlaceholder(ph: i18n.IcuPlaceholder, mapper: PlaceholderMapper): i18n.IcuPlaceholder { + override visitIcuPlaceholder(ph: i18n.IcuPlaceholder, mapper: PlaceholderMapper): + i18n.IcuPlaceholder { return new i18n.IcuPlaceholder(ph.value, mapper.toPublicName(ph.name)!, ph.sourceSpan); } } diff --git a/packages/compiler/src/i18n/serializers/serializer.ts b/packages/compiler/src/i18n/serializers/serializer.ts index d8c02f607a..effcfa6091 100644 --- a/packages/compiler/src/i18n/serializers/serializer.ts +++ b/packages/compiler/src/i18n/serializers/serializer.ts @@ -63,21 +63,21 @@ export class SimplePlaceholderMapper extends i18n.RecurseVisitor implements Plac null; } - visitText(text: i18n.Text, context?: any): any { + override visitText(text: i18n.Text, context?: any): any { return null; } - visitTagPlaceholder(ph: i18n.TagPlaceholder, context?: any): any { + override visitTagPlaceholder(ph: i18n.TagPlaceholder, context?: any): any { this.visitPlaceholderName(ph.startName); super.visitTagPlaceholder(ph, context); this.visitPlaceholderName(ph.closeName); } - visitPlaceholder(ph: i18n.Placeholder, context?: any): any { + override visitPlaceholder(ph: i18n.Placeholder, context?: any): any { this.visitPlaceholderName(ph.name); } - visitIcuPlaceholder(ph: i18n.IcuPlaceholder, context?: any): any { + override visitIcuPlaceholder(ph: i18n.IcuPlaceholder, context?: any): any { this.visitPlaceholderName(ph.name); } diff --git a/packages/compiler/src/i18n/serializers/xliff.ts b/packages/compiler/src/i18n/serializers/xliff.ts index 260221ba08..608eff8f59 100644 --- a/packages/compiler/src/i18n/serializers/xliff.ts +++ b/packages/compiler/src/i18n/serializers/xliff.ts @@ -34,7 +34,7 @@ const _CONTEXT_TAG = 'context'; // https://docs.oasis-open.org/xliff/v1.2/os/xliff-core.html // https://docs.oasis-open.org/xliff/v1.2/xliff-profile-html/xliff-profile-html-1.2.html export class Xliff extends Serializer { - write(messages: i18n.Message[], locale: string|null): string { + override write(messages: i18n.Message[], locale: string|null): string { const visitor = new _WriteVisitor(); const transUnits: xml.Node[] = []; @@ -92,7 +92,7 @@ export class Xliff extends Serializer { ]); } - load(content: string, url: string): + override load(content: string, url: string): {locale: string, i18nNodesByMsgId: {[msgId: string]: i18n.Node[]}} { // xliff to xml nodes const xliffParser = new XliffParser(); @@ -115,7 +115,7 @@ export class Xliff extends Serializer { return {locale: locale!, i18nNodesByMsgId}; } - digest(message: i18n.Message): string { + override digest(message: i18n.Message): string { return digest(message); } } diff --git a/packages/compiler/src/i18n/serializers/xliff2.ts b/packages/compiler/src/i18n/serializers/xliff2.ts index 624143dff2..f65ce94f4e 100644 --- a/packages/compiler/src/i18n/serializers/xliff2.ts +++ b/packages/compiler/src/i18n/serializers/xliff2.ts @@ -30,7 +30,7 @@ const _UNIT_TAG = 'unit'; // https://docs.oasis-open.org/xliff/xliff-core/v2.0/os/xliff-core-v2.0-os.html export class Xliff2 extends Serializer { - write(messages: i18n.Message[], locale: string|null): string { + override write(messages: i18n.Message[], locale: string|null): string { const visitor = new _WriteVisitor(); const units: xml.Node[] = []; @@ -85,7 +85,7 @@ export class Xliff2 extends Serializer { ]); } - load(content: string, url: string): + override load(content: string, url: string): {locale: string, i18nNodesByMsgId: {[msgId: string]: i18n.Node[]}} { // xliff to xml nodes const xliff2Parser = new Xliff2Parser(); @@ -108,7 +108,7 @@ export class Xliff2 extends Serializer { return {locale: locale!, i18nNodesByMsgId}; } - digest(message: i18n.Message): string { + override digest(message: i18n.Message): string { return decimalDigest(message); } } diff --git a/packages/compiler/src/i18n/serializers/xmb.ts b/packages/compiler/src/i18n/serializers/xmb.ts index 591bdbf8a6..3688454d30 100644 --- a/packages/compiler/src/i18n/serializers/xmb.ts +++ b/packages/compiler/src/i18n/serializers/xmb.ts @@ -39,7 +39,7 @@ const _DOCTYPE = ` `; export class Xmb extends Serializer { - write(messages: i18n.Message[], locale: string|null): string { + override write(messages: i18n.Message[], locale: string|null): string { const exampleVisitor = new ExampleVisitor(); const visitor = new _Visitor(); let rootNode = new xml.Tag(_MESSAGES_TAG); @@ -80,17 +80,17 @@ export class Xmb extends Serializer { ]); } - load(content: string, url: string): + override load(content: string, url: string): {locale: string, i18nNodesByMsgId: {[msgId: string]: i18n.Node[]}} { throw new Error('Unsupported'); } - digest(message: i18n.Message): string { + override digest(message: i18n.Message): string { return digest(message); } - createNameMapper(message: i18n.Message): PlaceholderMapper { + override createNameMapper(message: i18n.Message): PlaceholderMapper { return new SimplePlaceholderMapper(message, toPublicName); } } diff --git a/packages/compiler/src/i18n/serializers/xtb.ts b/packages/compiler/src/i18n/serializers/xtb.ts index ed7eab95f1..eb19ad64bd 100644 --- a/packages/compiler/src/i18n/serializers/xtb.ts +++ b/packages/compiler/src/i18n/serializers/xtb.ts @@ -19,11 +19,11 @@ const _TRANSLATION_TAG = 'translation'; const _PLACEHOLDER_TAG = 'ph'; export class Xtb extends Serializer { - write(messages: i18n.Message[], locale: string|null): string { + override write(messages: i18n.Message[], locale: string|null): string { throw new Error('Unsupported'); } - load(content: string, url: string): + override load(content: string, url: string): {locale: string, i18nNodesByMsgId: {[msgId: string]: i18n.Node[]}} { // xtb to xml nodes const xtbParser = new XtbParser(); @@ -54,11 +54,11 @@ export class Xtb extends Serializer { return {locale: locale!, i18nNodesByMsgId}; } - digest(message: i18n.Message): string { + override digest(message: i18n.Message): string { return digest(message); } - createNameMapper(message: i18n.Message): PlaceholderMapper { + override createNameMapper(message: i18n.Message): PlaceholderMapper { return new SimplePlaceholderMapper(message, toPublicName); } } diff --git a/packages/compiler/src/identifiers.ts b/packages/compiler/src/identifiers.ts index 15dca640cb..f233db1c48 100644 --- a/packages/compiler/src/identifiers.ts +++ b/packages/compiler/src/identifiers.ts @@ -66,8 +66,6 @@ export class Identifiers { static directiveInject: o.ExternalReference = {name: 'ɵɵdirectiveInject', moduleName: CORE}; static INJECTOR: o.ExternalReference = {name: 'INJECTOR', moduleName: CORE}; static Injector: o.ExternalReference = {name: 'Injector', moduleName: CORE}; - static ɵɵdefineInjectable: o.ExternalReference = {name: 'ɵɵdefineInjectable', moduleName: CORE}; - static InjectableDef: o.ExternalReference = {name: 'ɵɵInjectableDef', moduleName: CORE}; static ViewEncapsulation: o.ExternalReference = { name: 'ViewEncapsulation', moduleName: CORE, @@ -124,7 +122,6 @@ export class Identifiers { moduleName: CORE, }; static createComponentFactory: o.ExternalReference = {name: 'ɵccf', moduleName: CORE}; - static setClassMetadata: o.ExternalReference = {name: 'ɵsetClassMetadata', moduleName: CORE}; } export function createTokenForReference(reference: any): CompileTokenMetadata { diff --git a/packages/compiler/src/injectable_compiler.ts b/packages/compiler/src/injectable_compiler.ts index 272a4306c8..533577a6dd 100644 --- a/packages/compiler/src/injectable_compiler.ts +++ b/packages/compiler/src/injectable_compiler.ts @@ -7,16 +7,14 @@ */ import {StaticSymbol} from './aot/static_symbol'; -import {CompileInjectableMetadata, CompileNgModuleMetadata, CompileProviderMetadata, identifierName} from './compile_metadata'; +import {CompileInjectableMetadata, identifierName} from './compile_metadata'; import {CompileReflector} from './compile_reflector'; -import {InjectFlags, NodeFlags} from './core'; +import {InjectFlags} from './core'; import {Identifiers} from './identifiers'; import * as o from './output/output_ast'; import {convertValueToOutputAst} from './output/value_util'; -import {typeSourceSpan} from './parse_util'; -import {NgModuleProviderAnalyzer} from './provider_analyzer'; +import {Identifiers as R3} from './render3/r3_identifiers'; import {OutputContext} from './util'; -import {componentFactoryResolverProviderDef, depDef, providerDef} from './view_compiler/provider_compiler'; type MapEntry = { key: string, @@ -116,8 +114,7 @@ export class InjectableCompiler { mapEntry('token', ctx.importExpr(injectable.type.reference)), mapEntry('providedIn', providedIn), ]; - return o.importExpr(Identifiers.ɵɵdefineInjectable) - .callFn([o.literalMap(def)], undefined, true); + return o.importExpr(R3.ɵɵdefineInjectable).callFn([o.literalMap(def)], undefined, true); } compile(injectable: CompileInjectableMetadata, ctx: OutputContext): void { diff --git a/packages/compiler/src/injectable_compiler_2.ts b/packages/compiler/src/injectable_compiler_2.ts index 68b7fdb737..d845e7e56f 100644 --- a/packages/compiler/src/injectable_compiler_2.ts +++ b/packages/compiler/src/injectable_compiler_2.ts @@ -6,32 +6,62 @@ * found in the LICENSE file at https://angular.io/license */ -import {Identifiers} from './identifiers'; import * as o from './output/output_ast'; +import {generateForwardRef} from './render3/partial/util'; import {compileFactoryFunction, FactoryTarget, R3DependencyMetadata, R3FactoryDelegateType, R3FactoryMetadata} from './render3/r3_factory'; -import {R3Reference, typeWithParameters} from './render3/util'; +import {Identifiers} from './render3/r3_identifiers'; +import {R3CompiledExpression, R3Reference, typeWithParameters} from './render3/util'; import {DefinitionMap} from './render3/view/util'; -export interface InjectableDef { - expression: o.Expression; - type: o.Type; - statements: o.Statement[]; -} - export interface R3InjectableMetadata { name: string; type: R3Reference; internalType: o.Expression; typeArgumentCount: number; - providedIn: o.Expression; - useClass?: o.Expression; + providedIn: R3ProviderExpression; + useClass?: R3ProviderExpression; useFactory?: o.Expression; - useExisting?: o.Expression; - useValue?: o.Expression; - userDeps?: R3DependencyMetadata[]; + useExisting?: R3ProviderExpression; + useValue?: R3ProviderExpression; + deps?: R3DependencyMetadata[]; } -export function compileInjectable(meta: R3InjectableMetadata): InjectableDef { +/** + * An expression used when instantiating an injectable. + * + * This is the type of the `useClass`, `useExisting` and `useValue` properties of + * `R3InjectableMetadata` since those can refer to types that may eagerly reference types that have + * not yet been defined. + */ +export interface R3ProviderExpression { + /** + * The expression that is used to instantiate the Injectable. + */ + expression: T; + /** + * If true, then the `expression` contains a reference to something that has not yet been + * defined. + * + * This means that the expression must not be eagerly evaluated. Instead it must be wrapped in a + * function closure that will be evaluated lazily to allow the definition of the expression to be + * evaluated first. + * + * In some cases the expression will naturally be placed inside such a function closure, such as + * in a fully compiled factory function. In those case nothing more needs to be done. + * + * But in other cases, such as partial-compilation the expression will be located in top level + * code so will need to be wrapped in a function that is passed to a `forwardRef()` call. + */ + isForwardRef: boolean; +} + +export function createR3ProviderExpression( + expression: T, isForwardRef: boolean): R3ProviderExpression { + return {expression, isForwardRef}; +} + +export function compileInjectable( + meta: R3InjectableMetadata, resolveForwardRefs: boolean): R3CompiledExpression { let result: {expression: o.Expression, statements: o.Statement[]}|null = null; const factoryMeta: R3FactoryMetadata = { @@ -51,32 +81,36 @@ export function compileInjectable(meta: R3InjectableMetadata): InjectableDef { // A special case exists for useClass: Type where Type is the injectable type itself and no // deps are specified, in which case 'useClass' is effectively ignored. - const useClassOnSelf = meta.useClass.isEquivalent(meta.internalType); + const useClassOnSelf = meta.useClass.expression.isEquivalent(meta.internalType); let deps: R3DependencyMetadata[]|undefined = undefined; - if (meta.userDeps !== undefined) { - deps = meta.userDeps; + if (meta.deps !== undefined) { + deps = meta.deps; } if (deps !== undefined) { // factory: () => new meta.useClass(...deps) result = compileFactoryFunction({ ...factoryMeta, - delegate: meta.useClass, + delegate: meta.useClass.expression, delegateDeps: deps, delegateType: R3FactoryDelegateType.Class, }); } else if (useClassOnSelf) { result = compileFactoryFunction(factoryMeta); } else { - result = delegateToFactory( - meta.type.value as o.WrappedNodeExpr, meta.useClass as o.WrappedNodeExpr); + result = { + statements: [], + expression: delegateToFactory( + meta.type.value as o.WrappedNodeExpr, + meta.useClass.expression as o.WrappedNodeExpr, resolveForwardRefs) + }; } } else if (meta.useFactory !== undefined) { - if (meta.userDeps !== undefined) { + if (meta.deps !== undefined) { result = compileFactoryFunction({ ...factoryMeta, delegate: meta.useFactory, - delegateDeps: meta.userDeps || [], + delegateDeps: meta.deps || [], delegateType: R3FactoryDelegateType.Function, }); } else { @@ -91,17 +125,21 @@ export function compileInjectable(meta: R3InjectableMetadata): InjectableDef { // value is undefined. result = compileFactoryFunction({ ...factoryMeta, - expression: meta.useValue, + expression: meta.useValue.expression, }); } else if (meta.useExisting !== undefined) { // useExisting is an `inject` call on the existing token. result = compileFactoryFunction({ ...factoryMeta, - expression: o.importExpr(Identifiers.inject).callFn([meta.useExisting]), + expression: o.importExpr(Identifiers.inject).callFn([meta.useExisting.expression]), }); } else { - result = delegateToFactory( - meta.type.value as o.WrappedNodeExpr, meta.internalType as o.WrappedNodeExpr); + result = { + statements: [], + expression: delegateToFactory( + meta.type.value as o.WrappedNodeExpr, meta.internalType as o.WrappedNodeExpr, + resolveForwardRefs) + }; } const token = meta.internalType; @@ -112,31 +150,59 @@ export function compileInjectable(meta: R3InjectableMetadata): InjectableDef { injectableProps.set('factory', result.expression); // Only generate providedIn property if it has a non-null value - if ((meta.providedIn as o.LiteralExpr).value !== null) { - injectableProps.set('providedIn', meta.providedIn); + if ((meta.providedIn.expression as o.LiteralExpr).value !== null) { + injectableProps.set( + 'providedIn', + meta.providedIn.isForwardRef ? generateForwardRef(meta.providedIn.expression) : + meta.providedIn.expression); } const expression = o.importExpr(Identifiers.ɵɵdefineInjectable) .callFn([injectableProps.toLiteralMap()], undefined, true); - const type = new o.ExpressionType(o.importExpr( - Identifiers.InjectableDef, [typeWithParameters(meta.type.type, meta.typeArgumentCount)])); - return { expression, - type, + type: createInjectableType(meta), statements: result.statements, }; } -function delegateToFactory(type: o.WrappedNodeExpr, internalType: o.WrappedNodeExpr) { - return { - statements: [], - // If types are the same, we can generate `factory: type.ɵfac` - // If types are different, we have to generate a wrapper function to ensure - // the internal type has been resolved (`factory: function(t) { return type.ɵfac(t); }`) - expression: type.node === internalType.node ? - internalType.prop('ɵfac') : - o.fn([new o.FnParam('t', o.DYNAMIC_TYPE)], [new o.ReturnStatement(internalType.callMethod( - 'ɵfac', [o.variable('t')]))]) - }; +export function createInjectableType(meta: R3InjectableMetadata) { + return new o.ExpressionType(o.importExpr( + Identifiers.InjectableDeclaration, + [typeWithParameters(meta.type.type, meta.typeArgumentCount)])); +} + +function delegateToFactory( + type: o.WrappedNodeExpr, internalType: o.WrappedNodeExpr, + unwrapForwardRefs: boolean): o.Expression { + if (type.node === internalType.node) { + // The types are the same, so we can simply delegate directly to the type's factory. + // ``` + // factory: type.ɵfac + // ``` + return internalType.prop('ɵfac'); + } + + if (!unwrapForwardRefs) { + // The type is not wrapped in a `forwardRef()`, so we create a simple factory function that + // accepts a sub-type as an argument. + // ``` + // factory: function(t) { return internalType.ɵfac(t); } + // ``` + return createFactoryFunction(internalType); + } + + // The internalType is actually wrapped in a `forwardRef()` so we need to resolve that before + // calling its factory. + // ``` + // factory: function(t) { return core.resolveForwardRef(type).ɵfac(t); } + // ``` + const unwrappedType = o.importExpr(Identifiers.resolveForwardRef).callFn([internalType]); + return createFactoryFunction(unwrappedType); +} + +function createFactoryFunction(type: o.Expression): o.FunctionExpr { + return o.fn( + [new o.FnParam('t', o.DYNAMIC_TYPE)], + [new o.ReturnStatement(type.callMethod('ɵfac', [o.variable('t')]))]); } diff --git a/packages/compiler/src/jit_compiler_facade.ts b/packages/compiler/src/jit_compiler_facade.ts index 32496f8789..9e4033cffe 100644 --- a/packages/compiler/src/jit_compiler_facade.ts +++ b/packages/compiler/src/jit_compiler_facade.ts @@ -7,10 +7,10 @@ */ -import {CompilerFacade, CoreEnvironment, ExportedCompilerFacade, OpaqueValue, R3ComponentMetadataFacade, R3DeclareComponentFacade, R3DeclareDependencyMetadataFacade, R3DeclareDirectiveFacade, R3DeclareFactoryFacade, R3DeclareInjectorFacade, R3DeclareNgModuleFacade, R3DeclarePipeFacade, R3DeclareQueryMetadataFacade, R3DeclareUsedDirectiveFacade, R3DependencyMetadataFacade, R3DirectiveMetadataFacade, R3FactoryDefMetadataFacade, R3InjectableMetadataFacade, R3InjectorMetadataFacade, R3NgModuleMetadataFacade, R3PipeMetadataFacade, R3QueryMetadataFacade, StringMap, StringMapWithRename} from './compiler_facade_interface'; +import {CompilerFacade, CoreEnvironment, ExportedCompilerFacade, OpaqueValue, R3ComponentMetadataFacade, R3DeclareComponentFacade, R3DeclareDependencyMetadataFacade, R3DeclareDirectiveFacade, R3DeclareFactoryFacade, R3DeclareInjectableFacade, R3DeclareInjectorFacade, R3DeclareNgModuleFacade, R3DeclarePipeFacade, R3DeclareQueryMetadataFacade, R3DeclareUsedDirectiveFacade, R3DependencyMetadataFacade, R3DirectiveMetadataFacade, R3FactoryDefMetadataFacade, R3InjectableMetadataFacade, R3InjectorMetadataFacade, R3NgModuleMetadataFacade, R3PipeMetadataFacade, R3QueryMetadataFacade, StringMap, StringMapWithRename} from './compiler_facade_interface'; import {ConstantPool} from './constant_pool'; -import {ChangeDetectionStrategy, HostBinding, HostListener, Input, Output, Type, ViewEncapsulation} from './core'; -import {compileInjectable} from './injectable_compiler_2'; +import {ChangeDetectionStrategy, HostBinding, HostListener, Input, Output, ViewEncapsulation} from './core'; +import {compileInjectable, createR3ProviderExpression, R3ProviderExpression} from './injectable_compiler_2'; import {DEFAULT_INTERPOLATION_CONFIG, InterpolationConfig} from './ml_parser/interpolation_config'; import {DeclareVarStmt, Expression, literal, LiteralExpr, Statement, StmtModifier, WrappedNodeExpr} from './output/output_ast'; import {JitEvaluator} from './output/output_jit'; @@ -60,18 +60,41 @@ export class CompilerFacadeImpl implements CompilerFacade { compileInjectable( angularCoreEnv: CoreEnvironment, sourceMapUrl: string, facade: R3InjectableMetadataFacade): any { - const {expression, statements} = compileInjectable({ - name: facade.name, - type: wrapReference(facade.type), - internalType: new WrappedNodeExpr(facade.type), - typeArgumentCount: facade.typeArgumentCount, - providedIn: computeProvidedIn(facade.providedIn), - useClass: wrapExpression(facade, USE_CLASS), - useFactory: wrapExpression(facade, USE_FACTORY), - useValue: wrapExpression(facade, USE_VALUE), - useExisting: wrapExpression(facade, USE_EXISTING), - userDeps: convertR3DependencyMetadataArray(facade.userDeps) || undefined, - }); + const {expression, statements} = compileInjectable( + { + name: facade.name, + type: wrapReference(facade.type), + internalType: new WrappedNodeExpr(facade.type), + typeArgumentCount: facade.typeArgumentCount, + providedIn: computeProvidedIn(facade.providedIn), + useClass: convertToProviderExpression(facade, USE_CLASS), + useFactory: wrapExpression(facade, USE_FACTORY), + useValue: convertToProviderExpression(facade, USE_VALUE), + useExisting: convertToProviderExpression(facade, USE_EXISTING), + deps: facade.deps?.map(convertR3DependencyMetadata), + }, + /* resolveForwardRefs */ true); + + return this.jitExpression(expression, angularCoreEnv, sourceMapUrl, statements); + } + + compileInjectableDeclaration( + angularCoreEnv: CoreEnvironment, sourceMapUrl: string, + facade: R3DeclareInjectableFacade): any { + const {expression, statements} = compileInjectable( + { + name: facade.type.name, + type: wrapReference(facade.type), + internalType: new WrappedNodeExpr(facade.type), + typeArgumentCount: 0, + providedIn: computeProvidedIn(facade.providedIn), + useClass: convertToProviderExpression(facade, USE_CLASS), + useFactory: wrapExpression(facade, USE_FACTORY), + useValue: convertToProviderExpression(facade, USE_VALUE), + useExisting: convertToProviderExpression(facade, USE_EXISTING), + deps: facade.deps?.map(convertR3DeclareDependencyMetadata), + }, + /* resolveForwardRefs */ true); return this.jitExpression(expression, angularCoreEnv, sourceMapUrl, statements); } @@ -446,6 +469,22 @@ function parseJitTemplate( type R3DirectiveMetadataFacadeNoPropAndWhitespace = Pick>; +/** + * Convert the expression, if present to an `R3ProviderExpression`. + * + * In JIT mode we do not want the compiler to wrap the expression in a `forwardRef()` call because, + * if it is referencing a type that has not yet been defined, it will have already been wrapped in + * a `forwardRef()` - either by the application developer or during partial-compilation. Thus we can + * set `isForwardRef` to `false`. + */ +function convertToProviderExpression(obj: any, property: string): R3ProviderExpression|undefined { + if (obj.hasOwnProperty(property)) { + return createR3ProviderExpression(new WrappedNodeExpr(obj[property]), /* isForwardRef */ false); + } else { + return undefined; + } +} + function wrapExpression(obj: any, property: string): WrappedNodeExpr|undefined { if (obj.hasOwnProperty(property)) { return new WrappedNodeExpr(obj[property]); @@ -454,12 +493,12 @@ function wrapExpression(obj: any, property: string): WrappedNodeExpr|undefi } } -function computeProvidedIn(providedIn: Type|string|null|undefined): Expression { - if (providedIn == null || typeof providedIn === 'string') { - return new LiteralExpr(providedIn); - } else { - return new WrappedNodeExpr(providedIn); - } +function computeProvidedIn(providedIn: Function|string|null|undefined): R3ProviderExpression { + const expression = (providedIn == null || typeof providedIn === 'string') ? + new LiteralExpr(providedIn ?? null) : + new WrappedNodeExpr(providedIn); + // See `convertToProviderExpression()` for why `isForwardRef` is false. + return createR3ProviderExpression(expression, /* isForwardRef */ false); } function convertR3DependencyMetadataArray(facades: R3DependencyMetadataFacade[]|null| diff --git a/packages/compiler/src/metadata_resolver.ts b/packages/compiler/src/metadata_resolver.ts index c1d1e51314..0bf9de3709 100644 --- a/packages/compiler/src/metadata_resolver.ts +++ b/packages/compiler/src/metadata_resolver.ts @@ -29,6 +29,18 @@ export type ErrorCollector = (error: any, type?: any) => void; export const ERROR_COMPONENT_TYPE = 'ngComponentType'; +const MISSING_NG_MODULE_METADATA_ERROR_DATA = 'ngMissingNgModuleMetadataErrorData'; +export interface MissingNgModuleMetadataErrorData { + fileName: string; + className: string; +} + + +export function getMissingNgModuleMetadataErrorData(error: any): MissingNgModuleMetadataErrorData| + null { + return error[MISSING_NG_MODULE_METADATA_ERROR_DATA] ?? null; +} + // Design notes: // - don't lazily create metadata: // For some metadata, we need to do async work sometimes, @@ -563,11 +575,18 @@ export class CompileMetadataResolver { this.getNgModuleSummary(importedModuleType, alreadyCollecting); alreadyCollecting.delete(importedModuleType); if (!importedModuleSummary) { - this._reportError( - syntaxError(`Unexpected ${this._getTypeDescriptor(importedType)} '${ - stringifyType(importedType)}' imported by the module '${ - stringifyType(moduleType)}'. Please add a @NgModule annotation.`), - moduleType); + const err = syntaxError(`Unexpected ${this._getTypeDescriptor(importedType)} '${ + stringifyType(importedType)}' imported by the module '${ + stringifyType(moduleType)}'. Please add a @NgModule annotation.`); + // If possible, record additional context for this error to enable more useful + // diagnostics on the compiler side. + if (importedType instanceof StaticSymbol) { + (err as any)[MISSING_NG_MODULE_METADATA_ERROR_DATA] = { + fileName: importedType.filePath, + className: importedType.name, + } as MissingNgModuleMetadataErrorData; + } + this._reportError(err, moduleType); return; } importedModules.push(importedModuleSummary); @@ -1249,7 +1268,7 @@ function extractIdentifiers(value: any, targetIdentifiers: cpl.CompileIdentifier } class _CompileValueConverter extends ValueTransformer { - visitOther(value: any, targetIdentifiers: cpl.CompileIdentifierMetadata[]): any { + override visitOther(value: any, targetIdentifiers: cpl.CompileIdentifierMetadata[]): any { targetIdentifiers.push({reference: value}); } } diff --git a/packages/compiler/src/ml_parser/ast.ts b/packages/compiler/src/ml_parser/ast.ts index c962e04a9d..7b71ffe9af 100644 --- a/packages/compiler/src/ml_parser/ast.ts +++ b/packages/compiler/src/ml_parser/ast.ts @@ -10,12 +10,14 @@ import {AstPath} from '../ast_path'; import {I18nMeta} from '../i18n/i18n_ast'; import {ParseSourceSpan} from '../parse_util'; -export interface Node { +interface BaseNode { sourceSpan: ParseSourceSpan; visit(visitor: Visitor, context: any): any; } -export abstract class NodeWithI18n implements Node { +export type Node = Attribute|Comment|Element|Expansion|ExpansionCase|Text; + +export abstract class NodeWithI18n implements BaseNode { constructor(public sourceSpan: ParseSourceSpan, public i18n?: I18nMeta) {} abstract visit(visitor: Visitor, context: any): any; } @@ -24,7 +26,7 @@ export class Text extends NodeWithI18n { constructor(public value: string, sourceSpan: ParseSourceSpan, i18n?: I18nMeta) { super(sourceSpan, i18n); } - visit(visitor: Visitor, context: any): any { + override visit(visitor: Visitor, context: any): any { return visitor.visitText(this, context); } } @@ -35,12 +37,12 @@ export class Expansion extends NodeWithI18n { sourceSpan: ParseSourceSpan, public switchValueSourceSpan: ParseSourceSpan, i18n?: I18nMeta) { super(sourceSpan, i18n); } - visit(visitor: Visitor, context: any): any { + override visit(visitor: Visitor, context: any): any { return visitor.visitExpansion(this, context); } } -export class ExpansionCase implements Node { +export class ExpansionCase implements BaseNode { constructor( public value: string, public expression: Node[], public sourceSpan: ParseSourceSpan, public valueSourceSpan: ParseSourceSpan, public expSourceSpan: ParseSourceSpan) {} @@ -57,7 +59,7 @@ export class Attribute extends NodeWithI18n { i18n?: I18nMeta) { super(sourceSpan, i18n); } - visit(visitor: Visitor, context: any): any { + override visit(visitor: Visitor, context: any): any { return visitor.visitAttribute(this, context); } } @@ -69,12 +71,12 @@ export class Element extends NodeWithI18n { public endSourceSpan: ParseSourceSpan|null = null, i18n?: I18nMeta) { super(sourceSpan, i18n); } - visit(visitor: Visitor, context: any): any { + override visit(visitor: Visitor, context: any): any { return visitor.visitElement(this, context); } } -export class Comment implements Node { +export class Comment implements BaseNode { constructor(public value: string|null, public sourceSpan: ParseSourceSpan) {} visit(visitor: Visitor, context: any): any { return visitor.visitComment(this, context); diff --git a/packages/compiler/src/ml_parser/entities.ts b/packages/compiler/src/ml_parser/entities.ts new file mode 100644 index 0000000000..816c795d5e --- /dev/null +++ b/packages/compiler/src/ml_parser/entities.ts @@ -0,0 +1,2146 @@ +/** + * @license + * 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 + */ + +// Mapping between all HTML entity names and their unicode representation. +// Generated from https://html.spec.whatwg.org/multipage/entities.json by stripping +// the `&` and `;` from the keys and removing the duplicates. +// see https://www.w3.org/TR/html51/syntax.html#named-character-references +export const NAMED_ENTITIES: Record = { + 'AElig': '\u00C6', + 'AMP': '\u0026', + 'amp': '\u0026', + 'Aacute': '\u00C1', + 'Abreve': '\u0102', + 'Acirc': '\u00C2', + 'Acy': '\u0410', + 'Afr': '\uD835\uDD04', + 'Agrave': '\u00C0', + 'Alpha': '\u0391', + 'Amacr': '\u0100', + 'And': '\u2A53', + 'Aogon': '\u0104', + 'Aopf': '\uD835\uDD38', + 'ApplyFunction': '\u2061', + 'af': '\u2061', + 'Aring': '\u00C5', + 'angst': '\u00C5', + 'Ascr': '\uD835\uDC9C', + 'Assign': '\u2254', + 'colone': '\u2254', + 'coloneq': '\u2254', + 'Atilde': '\u00C3', + 'Auml': '\u00C4', + 'Backslash': '\u2216', + 'setminus': '\u2216', + 'setmn': '\u2216', + 'smallsetminus': '\u2216', + 'ssetmn': '\u2216', + 'Barv': '\u2AE7', + 'Barwed': '\u2306', + 'doublebarwedge': '\u2306', + 'Bcy': '\u0411', + 'Because': '\u2235', + 'becaus': '\u2235', + 'because': '\u2235', + 'Bernoullis': '\u212C', + 'Bscr': '\u212C', + 'bernou': '\u212C', + 'Beta': '\u0392', + 'Bfr': '\uD835\uDD05', + 'Bopf': '\uD835\uDD39', + 'Breve': '\u02D8', + 'breve': '\u02D8', + 'Bumpeq': '\u224E', + 'HumpDownHump': '\u224E', + 'bump': '\u224E', + 'CHcy': '\u0427', + 'COPY': '\u00A9', + 'copy': '\u00A9', + 'Cacute': '\u0106', + 'Cap': '\u22D2', + 'CapitalDifferentialD': '\u2145', + 'DD': '\u2145', + 'Cayleys': '\u212D', + 'Cfr': '\u212D', + 'Ccaron': '\u010C', + 'Ccedil': '\u00C7', + 'Ccirc': '\u0108', + 'Cconint': '\u2230', + 'Cdot': '\u010A', + 'Cedilla': '\u00B8', + 'cedil': '\u00B8', + 'CenterDot': '\u00B7', + 'centerdot': '\u00B7', + 'middot': '\u00B7', + 'Chi': '\u03A7', + 'CircleDot': '\u2299', + 'odot': '\u2299', + 'CircleMinus': '\u2296', + 'ominus': '\u2296', + 'CirclePlus': '\u2295', + 'oplus': '\u2295', + 'CircleTimes': '\u2297', + 'otimes': '\u2297', + 'ClockwiseContourIntegral': '\u2232', + 'cwconint': '\u2232', + 'CloseCurlyDoubleQuote': '\u201D', + 'rdquo': '\u201D', + 'rdquor': '\u201D', + 'CloseCurlyQuote': '\u2019', + 'rsquo': '\u2019', + 'rsquor': '\u2019', + 'Colon': '\u2237', + 'Proportion': '\u2237', + 'Colone': '\u2A74', + 'Congruent': '\u2261', + 'equiv': '\u2261', + 'Conint': '\u222F', + 'DoubleContourIntegral': '\u222F', + 'ContourIntegral': '\u222E', + 'conint': '\u222E', + 'oint': '\u222E', + 'Copf': '\u2102', + 'complexes': '\u2102', + 'Coproduct': '\u2210', + 'coprod': '\u2210', + 'CounterClockwiseContourIntegral': '\u2233', + 'awconint': '\u2233', + 'Cross': '\u2A2F', + 'Cscr': '\uD835\uDC9E', + 'Cup': '\u22D3', + 'CupCap': '\u224D', + 'asympeq': '\u224D', + 'DDotrahd': '\u2911', + 'DJcy': '\u0402', + 'DScy': '\u0405', + 'DZcy': '\u040F', + 'Dagger': '\u2021', + 'ddagger': '\u2021', + 'Darr': '\u21A1', + 'Dashv': '\u2AE4', + 'DoubleLeftTee': '\u2AE4', + 'Dcaron': '\u010E', + 'Dcy': '\u0414', + 'Del': '\u2207', + 'nabla': '\u2207', + 'Delta': '\u0394', + 'Dfr': '\uD835\uDD07', + 'DiacriticalAcute': '\u00B4', + 'acute': '\u00B4', + 'DiacriticalDot': '\u02D9', + 'dot': '\u02D9', + 'DiacriticalDoubleAcute': '\u02DD', + 'dblac': '\u02DD', + 'DiacriticalGrave': '\u0060', + 'grave': '\u0060', + 'DiacriticalTilde': '\u02DC', + 'tilde': '\u02DC', + 'Diamond': '\u22C4', + 'diam': '\u22C4', + 'diamond': '\u22C4', + 'DifferentialD': '\u2146', + 'dd': '\u2146', + 'Dopf': '\uD835\uDD3B', + 'Dot': '\u00A8', + 'DoubleDot': '\u00A8', + 'die': '\u00A8', + 'uml': '\u00A8', + 'DotDot': '\u20DC', + 'DotEqual': '\u2250', + 'doteq': '\u2250', + 'esdot': '\u2250', + 'DoubleDownArrow': '\u21D3', + 'Downarrow': '\u21D3', + 'dArr': '\u21D3', + 'DoubleLeftArrow': '\u21D0', + 'Leftarrow': '\u21D0', + 'lArr': '\u21D0', + 'DoubleLeftRightArrow': '\u21D4', + 'Leftrightarrow': '\u21D4', + 'hArr': '\u21D4', + 'iff': '\u21D4', + 'DoubleLongLeftArrow': '\u27F8', + 'Longleftarrow': '\u27F8', + 'xlArr': '\u27F8', + 'DoubleLongLeftRightArrow': '\u27FA', + 'Longleftrightarrow': '\u27FA', + 'xhArr': '\u27FA', + 'DoubleLongRightArrow': '\u27F9', + 'Longrightarrow': '\u27F9', + 'xrArr': '\u27F9', + 'DoubleRightArrow': '\u21D2', + 'Implies': '\u21D2', + 'Rightarrow': '\u21D2', + 'rArr': '\u21D2', + 'DoubleRightTee': '\u22A8', + 'vDash': '\u22A8', + 'DoubleUpArrow': '\u21D1', + 'Uparrow': '\u21D1', + 'uArr': '\u21D1', + 'DoubleUpDownArrow': '\u21D5', + 'Updownarrow': '\u21D5', + 'vArr': '\u21D5', + 'DoubleVerticalBar': '\u2225', + 'par': '\u2225', + 'parallel': '\u2225', + 'shortparallel': '\u2225', + 'spar': '\u2225', + 'DownArrow': '\u2193', + 'ShortDownArrow': '\u2193', + 'darr': '\u2193', + 'downarrow': '\u2193', + 'DownArrowBar': '\u2913', + 'DownArrowUpArrow': '\u21F5', + 'duarr': '\u21F5', + 'DownBreve': '\u0311', + 'DownLeftRightVector': '\u2950', + 'DownLeftTeeVector': '\u295E', + 'DownLeftVector': '\u21BD', + 'leftharpoondown': '\u21BD', + 'lhard': '\u21BD', + 'DownLeftVectorBar': '\u2956', + 'DownRightTeeVector': '\u295F', + 'DownRightVector': '\u21C1', + 'rhard': '\u21C1', + 'rightharpoondown': '\u21C1', + 'DownRightVectorBar': '\u2957', + 'DownTee': '\u22A4', + 'top': '\u22A4', + 'DownTeeArrow': '\u21A7', + 'mapstodown': '\u21A7', + 'Dscr': '\uD835\uDC9F', + 'Dstrok': '\u0110', + 'ENG': '\u014A', + 'ETH': '\u00D0', + 'Eacute': '\u00C9', + 'Ecaron': '\u011A', + 'Ecirc': '\u00CA', + 'Ecy': '\u042D', + 'Edot': '\u0116', + 'Efr': '\uD835\uDD08', + 'Egrave': '\u00C8', + 'Element': '\u2208', + 'in': '\u2208', + 'isin': '\u2208', + 'isinv': '\u2208', + 'Emacr': '\u0112', + 'EmptySmallSquare': '\u25FB', + 'EmptyVerySmallSquare': '\u25AB', + 'Eogon': '\u0118', + 'Eopf': '\uD835\uDD3C', + 'Epsilon': '\u0395', + 'Equal': '\u2A75', + 'EqualTilde': '\u2242', + 'eqsim': '\u2242', + 'esim': '\u2242', + 'Equilibrium': '\u21CC', + 'rightleftharpoons': '\u21CC', + 'rlhar': '\u21CC', + 'Escr': '\u2130', + 'expectation': '\u2130', + 'Esim': '\u2A73', + 'Eta': '\u0397', + 'Euml': '\u00CB', + 'Exists': '\u2203', + 'exist': '\u2203', + 'ExponentialE': '\u2147', + 'ee': '\u2147', + 'exponentiale': '\u2147', + 'Fcy': '\u0424', + 'Ffr': '\uD835\uDD09', + 'FilledSmallSquare': '\u25FC', + 'FilledVerySmallSquare': '\u25AA', + 'blacksquare': '\u25AA', + 'squarf': '\u25AA', + 'squf': '\u25AA', + 'Fopf': '\uD835\uDD3D', + 'ForAll': '\u2200', + 'forall': '\u2200', + 'Fouriertrf': '\u2131', + 'Fscr': '\u2131', + 'GJcy': '\u0403', + 'GT': '\u003E', + 'gt': '\u003E', + 'Gamma': '\u0393', + 'Gammad': '\u03DC', + 'Gbreve': '\u011E', + 'Gcedil': '\u0122', + 'Gcirc': '\u011C', + 'Gcy': '\u0413', + 'Gdot': '\u0120', + 'Gfr': '\uD835\uDD0A', + 'Gg': '\u22D9', + 'ggg': '\u22D9', + 'Gopf': '\uD835\uDD3E', + 'GreaterEqual': '\u2265', + 'ge': '\u2265', + 'geq': '\u2265', + 'GreaterEqualLess': '\u22DB', + 'gel': '\u22DB', + 'gtreqless': '\u22DB', + 'GreaterFullEqual': '\u2267', + 'gE': '\u2267', + 'geqq': '\u2267', + 'GreaterGreater': '\u2AA2', + 'GreaterLess': '\u2277', + 'gl': '\u2277', + 'gtrless': '\u2277', + 'GreaterSlantEqual': '\u2A7E', + 'geqslant': '\u2A7E', + 'ges': '\u2A7E', + 'GreaterTilde': '\u2273', + 'gsim': '\u2273', + 'gtrsim': '\u2273', + 'Gscr': '\uD835\uDCA2', + 'Gt': '\u226B', + 'NestedGreaterGreater': '\u226B', + 'gg': '\u226B', + 'HARDcy': '\u042A', + 'Hacek': '\u02C7', + 'caron': '\u02C7', + 'Hat': '\u005E', + 'Hcirc': '\u0124', + 'Hfr': '\u210C', + 'Poincareplane': '\u210C', + 'HilbertSpace': '\u210B', + 'Hscr': '\u210B', + 'hamilt': '\u210B', + 'Hopf': '\u210D', + 'quaternions': '\u210D', + 'HorizontalLine': '\u2500', + 'boxh': '\u2500', + 'Hstrok': '\u0126', + 'HumpEqual': '\u224F', + 'bumpe': '\u224F', + 'bumpeq': '\u224F', + 'IEcy': '\u0415', + 'IJlig': '\u0132', + 'IOcy': '\u0401', + 'Iacute': '\u00CD', + 'Icirc': '\u00CE', + 'Icy': '\u0418', + 'Idot': '\u0130', + 'Ifr': '\u2111', + 'Im': '\u2111', + 'image': '\u2111', + 'imagpart': '\u2111', + 'Igrave': '\u00CC', + 'Imacr': '\u012A', + 'ImaginaryI': '\u2148', + 'ii': '\u2148', + 'Int': '\u222C', + 'Integral': '\u222B', + 'int': '\u222B', + 'Intersection': '\u22C2', + 'bigcap': '\u22C2', + 'xcap': '\u22C2', + 'InvisibleComma': '\u2063', + 'ic': '\u2063', + 'InvisibleTimes': '\u2062', + 'it': '\u2062', + 'Iogon': '\u012E', + 'Iopf': '\uD835\uDD40', + 'Iota': '\u0399', + 'Iscr': '\u2110', + 'imagline': '\u2110', + 'Itilde': '\u0128', + 'Iukcy': '\u0406', + 'Iuml': '\u00CF', + 'Jcirc': '\u0134', + 'Jcy': '\u0419', + 'Jfr': '\uD835\uDD0D', + 'Jopf': '\uD835\uDD41', + 'Jscr': '\uD835\uDCA5', + 'Jsercy': '\u0408', + 'Jukcy': '\u0404', + 'KHcy': '\u0425', + 'KJcy': '\u040C', + 'Kappa': '\u039A', + 'Kcedil': '\u0136', + 'Kcy': '\u041A', + 'Kfr': '\uD835\uDD0E', + 'Kopf': '\uD835\uDD42', + 'Kscr': '\uD835\uDCA6', + 'LJcy': '\u0409', + 'LT': '\u003C', + 'lt': '\u003C', + 'Lacute': '\u0139', + 'Lambda': '\u039B', + 'Lang': '\u27EA', + 'Laplacetrf': '\u2112', + 'Lscr': '\u2112', + 'lagran': '\u2112', + 'Larr': '\u219E', + 'twoheadleftarrow': '\u219E', + 'Lcaron': '\u013D', + 'Lcedil': '\u013B', + 'Lcy': '\u041B', + 'LeftAngleBracket': '\u27E8', + 'lang': '\u27E8', + 'langle': '\u27E8', + 'LeftArrow': '\u2190', + 'ShortLeftArrow': '\u2190', + 'larr': '\u2190', + 'leftarrow': '\u2190', + 'slarr': '\u2190', + 'LeftArrowBar': '\u21E4', + 'larrb': '\u21E4', + 'LeftArrowRightArrow': '\u21C6', + 'leftrightarrows': '\u21C6', + 'lrarr': '\u21C6', + 'LeftCeiling': '\u2308', + 'lceil': '\u2308', + 'LeftDoubleBracket': '\u27E6', + 'lobrk': '\u27E6', + 'LeftDownTeeVector': '\u2961', + 'LeftDownVector': '\u21C3', + 'dharl': '\u21C3', + 'downharpoonleft': '\u21C3', + 'LeftDownVectorBar': '\u2959', + 'LeftFloor': '\u230A', + 'lfloor': '\u230A', + 'LeftRightArrow': '\u2194', + 'harr': '\u2194', + 'leftrightarrow': '\u2194', + 'LeftRightVector': '\u294E', + 'LeftTee': '\u22A3', + 'dashv': '\u22A3', + 'LeftTeeArrow': '\u21A4', + 'mapstoleft': '\u21A4', + 'LeftTeeVector': '\u295A', + 'LeftTriangle': '\u22B2', + 'vartriangleleft': '\u22B2', + 'vltri': '\u22B2', + 'LeftTriangleBar': '\u29CF', + 'LeftTriangleEqual': '\u22B4', + 'ltrie': '\u22B4', + 'trianglelefteq': '\u22B4', + 'LeftUpDownVector': '\u2951', + 'LeftUpTeeVector': '\u2960', + 'LeftUpVector': '\u21BF', + 'uharl': '\u21BF', + 'upharpoonleft': '\u21BF', + 'LeftUpVectorBar': '\u2958', + 'LeftVector': '\u21BC', + 'leftharpoonup': '\u21BC', + 'lharu': '\u21BC', + 'LeftVectorBar': '\u2952', + 'LessEqualGreater': '\u22DA', + 'leg': '\u22DA', + 'lesseqgtr': '\u22DA', + 'LessFullEqual': '\u2266', + 'lE': '\u2266', + 'leqq': '\u2266', + 'LessGreater': '\u2276', + 'lessgtr': '\u2276', + 'lg': '\u2276', + 'LessLess': '\u2AA1', + 'LessSlantEqual': '\u2A7D', + 'leqslant': '\u2A7D', + 'les': '\u2A7D', + 'LessTilde': '\u2272', + 'lesssim': '\u2272', + 'lsim': '\u2272', + 'Lfr': '\uD835\uDD0F', + 'Ll': '\u22D8', + 'Lleftarrow': '\u21DA', + 'lAarr': '\u21DA', + 'Lmidot': '\u013F', + 'LongLeftArrow': '\u27F5', + 'longleftarrow': '\u27F5', + 'xlarr': '\u27F5', + 'LongLeftRightArrow': '\u27F7', + 'longleftrightarrow': '\u27F7', + 'xharr': '\u27F7', + 'LongRightArrow': '\u27F6', + 'longrightarrow': '\u27F6', + 'xrarr': '\u27F6', + 'Lopf': '\uD835\uDD43', + 'LowerLeftArrow': '\u2199', + 'swarr': '\u2199', + 'swarrow': '\u2199', + 'LowerRightArrow': '\u2198', + 'searr': '\u2198', + 'searrow': '\u2198', + 'Lsh': '\u21B0', + 'lsh': '\u21B0', + 'Lstrok': '\u0141', + 'Lt': '\u226A', + 'NestedLessLess': '\u226A', + 'll': '\u226A', + 'Map': '\u2905', + 'Mcy': '\u041C', + 'MediumSpace': '\u205F', + 'Mellintrf': '\u2133', + 'Mscr': '\u2133', + 'phmmat': '\u2133', + 'Mfr': '\uD835\uDD10', + 'MinusPlus': '\u2213', + 'mnplus': '\u2213', + 'mp': '\u2213', + 'Mopf': '\uD835\uDD44', + 'Mu': '\u039C', + 'NJcy': '\u040A', + 'Nacute': '\u0143', + 'Ncaron': '\u0147', + 'Ncedil': '\u0145', + 'Ncy': '\u041D', + 'NegativeMediumSpace': '\u200B', + 'NegativeThickSpace': '\u200B', + 'NegativeThinSpace': '\u200B', + 'NegativeVeryThinSpace': '\u200B', + 'ZeroWidthSpace': '\u200B', + 'NewLine': '\u000A', + 'Nfr': '\uD835\uDD11', + 'NoBreak': '\u2060', + 'NonBreakingSpace': '\u00A0', + 'nbsp': '\u00A0', + 'Nopf': '\u2115', + 'naturals': '\u2115', + 'Not': '\u2AEC', + 'NotCongruent': '\u2262', + 'nequiv': '\u2262', + 'NotCupCap': '\u226D', + 'NotDoubleVerticalBar': '\u2226', + 'npar': '\u2226', + 'nparallel': '\u2226', + 'nshortparallel': '\u2226', + 'nspar': '\u2226', + 'NotElement': '\u2209', + 'notin': '\u2209', + 'notinva': '\u2209', + 'NotEqual': '\u2260', + 'ne': '\u2260', + 'NotEqualTilde': '\u2242\u0338', + 'nesim': '\u2242\u0338', + 'NotExists': '\u2204', + 'nexist': '\u2204', + 'nexists': '\u2204', + 'NotGreater': '\u226F', + 'ngt': '\u226F', + 'ngtr': '\u226F', + 'NotGreaterEqual': '\u2271', + 'nge': '\u2271', + 'ngeq': '\u2271', + 'NotGreaterFullEqual': '\u2267\u0338', + 'ngE': '\u2267\u0338', + 'ngeqq': '\u2267\u0338', + 'NotGreaterGreater': '\u226B\u0338', + 'nGtv': '\u226B\u0338', + 'NotGreaterLess': '\u2279', + 'ntgl': '\u2279', + 'NotGreaterSlantEqual': '\u2A7E\u0338', + 'ngeqslant': '\u2A7E\u0338', + 'nges': '\u2A7E\u0338', + 'NotGreaterTilde': '\u2275', + 'ngsim': '\u2275', + 'NotHumpDownHump': '\u224E\u0338', + 'nbump': '\u224E\u0338', + 'NotHumpEqual': '\u224F\u0338', + 'nbumpe': '\u224F\u0338', + 'NotLeftTriangle': '\u22EA', + 'nltri': '\u22EA', + 'ntriangleleft': '\u22EA', + 'NotLeftTriangleBar': '\u29CF\u0338', + 'NotLeftTriangleEqual': '\u22EC', + 'nltrie': '\u22EC', + 'ntrianglelefteq': '\u22EC', + 'NotLess': '\u226E', + 'nless': '\u226E', + 'nlt': '\u226E', + 'NotLessEqual': '\u2270', + 'nle': '\u2270', + 'nleq': '\u2270', + 'NotLessGreater': '\u2278', + 'ntlg': '\u2278', + 'NotLessLess': '\u226A\u0338', + 'nLtv': '\u226A\u0338', + 'NotLessSlantEqual': '\u2A7D\u0338', + 'nleqslant': '\u2A7D\u0338', + 'nles': '\u2A7D\u0338', + 'NotLessTilde': '\u2274', + 'nlsim': '\u2274', + 'NotNestedGreaterGreater': '\u2AA2\u0338', + 'NotNestedLessLess': '\u2AA1\u0338', + 'NotPrecedes': '\u2280', + 'npr': '\u2280', + 'nprec': '\u2280', + 'NotPrecedesEqual': '\u2AAF\u0338', + 'npre': '\u2AAF\u0338', + 'npreceq': '\u2AAF\u0338', + 'NotPrecedesSlantEqual': '\u22E0', + 'nprcue': '\u22E0', + 'NotReverseElement': '\u220C', + 'notni': '\u220C', + 'notniva': '\u220C', + 'NotRightTriangle': '\u22EB', + 'nrtri': '\u22EB', + 'ntriangleright': '\u22EB', + 'NotRightTriangleBar': '\u29D0\u0338', + 'NotRightTriangleEqual': '\u22ED', + 'nrtrie': '\u22ED', + 'ntrianglerighteq': '\u22ED', + 'NotSquareSubset': '\u228F\u0338', + 'NotSquareSubsetEqual': '\u22E2', + 'nsqsube': '\u22E2', + 'NotSquareSuperset': '\u2290\u0338', + 'NotSquareSupersetEqual': '\u22E3', + 'nsqsupe': '\u22E3', + 'NotSubset': '\u2282\u20D2', + 'nsubset': '\u2282\u20D2', + 'vnsub': '\u2282\u20D2', + 'NotSubsetEqual': '\u2288', + 'nsube': '\u2288', + 'nsubseteq': '\u2288', + 'NotSucceeds': '\u2281', + 'nsc': '\u2281', + 'nsucc': '\u2281', + 'NotSucceedsEqual': '\u2AB0\u0338', + 'nsce': '\u2AB0\u0338', + 'nsucceq': '\u2AB0\u0338', + 'NotSucceedsSlantEqual': '\u22E1', + 'nsccue': '\u22E1', + 'NotSucceedsTilde': '\u227F\u0338', + 'NotSuperset': '\u2283\u20D2', + 'nsupset': '\u2283\u20D2', + 'vnsup': '\u2283\u20D2', + 'NotSupersetEqual': '\u2289', + 'nsupe': '\u2289', + 'nsupseteq': '\u2289', + 'NotTilde': '\u2241', + 'nsim': '\u2241', + 'NotTildeEqual': '\u2244', + 'nsime': '\u2244', + 'nsimeq': '\u2244', + 'NotTildeFullEqual': '\u2247', + 'ncong': '\u2247', + 'NotTildeTilde': '\u2249', + 'nap': '\u2249', + 'napprox': '\u2249', + 'NotVerticalBar': '\u2224', + 'nmid': '\u2224', + 'nshortmid': '\u2224', + 'nsmid': '\u2224', + 'Nscr': '\uD835\uDCA9', + 'Ntilde': '\u00D1', + 'Nu': '\u039D', + 'OElig': '\u0152', + 'Oacute': '\u00D3', + 'Ocirc': '\u00D4', + 'Ocy': '\u041E', + 'Odblac': '\u0150', + 'Ofr': '\uD835\uDD12', + 'Ograve': '\u00D2', + 'Omacr': '\u014C', + 'Omega': '\u03A9', + 'ohm': '\u03A9', + 'Omicron': '\u039F', + 'Oopf': '\uD835\uDD46', + 'OpenCurlyDoubleQuote': '\u201C', + 'ldquo': '\u201C', + 'OpenCurlyQuote': '\u2018', + 'lsquo': '\u2018', + 'Or': '\u2A54', + 'Oscr': '\uD835\uDCAA', + 'Oslash': '\u00D8', + 'Otilde': '\u00D5', + 'Otimes': '\u2A37', + 'Ouml': '\u00D6', + 'OverBar': '\u203E', + 'oline': '\u203E', + 'OverBrace': '\u23DE', + 'OverBracket': '\u23B4', + 'tbrk': '\u23B4', + 'OverParenthesis': '\u23DC', + 'PartialD': '\u2202', + 'part': '\u2202', + 'Pcy': '\u041F', + 'Pfr': '\uD835\uDD13', + 'Phi': '\u03A6', + 'Pi': '\u03A0', + 'PlusMinus': '\u00B1', + 'plusmn': '\u00B1', + 'pm': '\u00B1', + 'Popf': '\u2119', + 'primes': '\u2119', + 'Pr': '\u2ABB', + 'Precedes': '\u227A', + 'pr': '\u227A', + 'prec': '\u227A', + 'PrecedesEqual': '\u2AAF', + 'pre': '\u2AAF', + 'preceq': '\u2AAF', + 'PrecedesSlantEqual': '\u227C', + 'prcue': '\u227C', + 'preccurlyeq': '\u227C', + 'PrecedesTilde': '\u227E', + 'precsim': '\u227E', + 'prsim': '\u227E', + 'Prime': '\u2033', + 'Product': '\u220F', + 'prod': '\u220F', + 'Proportional': '\u221D', + 'prop': '\u221D', + 'propto': '\u221D', + 'varpropto': '\u221D', + 'vprop': '\u221D', + 'Pscr': '\uD835\uDCAB', + 'Psi': '\u03A8', + 'QUOT': '\u0022', + 'quot': '\u0022', + 'Qfr': '\uD835\uDD14', + 'Qopf': '\u211A', + 'rationals': '\u211A', + 'Qscr': '\uD835\uDCAC', + 'RBarr': '\u2910', + 'drbkarow': '\u2910', + 'REG': '\u00AE', + 'circledR': '\u00AE', + 'reg': '\u00AE', + 'Racute': '\u0154', + 'Rang': '\u27EB', + 'Rarr': '\u21A0', + 'twoheadrightarrow': '\u21A0', + 'Rarrtl': '\u2916', + 'Rcaron': '\u0158', + 'Rcedil': '\u0156', + 'Rcy': '\u0420', + 'Re': '\u211C', + 'Rfr': '\u211C', + 'real': '\u211C', + 'realpart': '\u211C', + 'ReverseElement': '\u220B', + 'SuchThat': '\u220B', + 'ni': '\u220B', + 'niv': '\u220B', + 'ReverseEquilibrium': '\u21CB', + 'leftrightharpoons': '\u21CB', + 'lrhar': '\u21CB', + 'ReverseUpEquilibrium': '\u296F', + 'duhar': '\u296F', + 'Rho': '\u03A1', + 'RightAngleBracket': '\u27E9', + 'rang': '\u27E9', + 'rangle': '\u27E9', + 'RightArrow': '\u2192', + 'ShortRightArrow': '\u2192', + 'rarr': '\u2192', + 'rightarrow': '\u2192', + 'srarr': '\u2192', + 'RightArrowBar': '\u21E5', + 'rarrb': '\u21E5', + 'RightArrowLeftArrow': '\u21C4', + 'rightleftarrows': '\u21C4', + 'rlarr': '\u21C4', + 'RightCeiling': '\u2309', + 'rceil': '\u2309', + 'RightDoubleBracket': '\u27E7', + 'robrk': '\u27E7', + 'RightDownTeeVector': '\u295D', + 'RightDownVector': '\u21C2', + 'dharr': '\u21C2', + 'downharpoonright': '\u21C2', + 'RightDownVectorBar': '\u2955', + 'RightFloor': '\u230B', + 'rfloor': '\u230B', + 'RightTee': '\u22A2', + 'vdash': '\u22A2', + 'RightTeeArrow': '\u21A6', + 'map': '\u21A6', + 'mapsto': '\u21A6', + 'RightTeeVector': '\u295B', + 'RightTriangle': '\u22B3', + 'vartriangleright': '\u22B3', + 'vrtri': '\u22B3', + 'RightTriangleBar': '\u29D0', + 'RightTriangleEqual': '\u22B5', + 'rtrie': '\u22B5', + 'trianglerighteq': '\u22B5', + 'RightUpDownVector': '\u294F', + 'RightUpTeeVector': '\u295C', + 'RightUpVector': '\u21BE', + 'uharr': '\u21BE', + 'upharpoonright': '\u21BE', + 'RightUpVectorBar': '\u2954', + 'RightVector': '\u21C0', + 'rharu': '\u21C0', + 'rightharpoonup': '\u21C0', + 'RightVectorBar': '\u2953', + 'Ropf': '\u211D', + 'reals': '\u211D', + 'RoundImplies': '\u2970', + 'Rrightarrow': '\u21DB', + 'rAarr': '\u21DB', + 'Rscr': '\u211B', + 'realine': '\u211B', + 'Rsh': '\u21B1', + 'rsh': '\u21B1', + 'RuleDelayed': '\u29F4', + 'SHCHcy': '\u0429', + 'SHcy': '\u0428', + 'SOFTcy': '\u042C', + 'Sacute': '\u015A', + 'Sc': '\u2ABC', + 'Scaron': '\u0160', + 'Scedil': '\u015E', + 'Scirc': '\u015C', + 'Scy': '\u0421', + 'Sfr': '\uD835\uDD16', + 'ShortUpArrow': '\u2191', + 'UpArrow': '\u2191', + 'uarr': '\u2191', + 'uparrow': '\u2191', + 'Sigma': '\u03A3', + 'SmallCircle': '\u2218', + 'compfn': '\u2218', + 'Sopf': '\uD835\uDD4A', + 'Sqrt': '\u221A', + 'radic': '\u221A', + 'Square': '\u25A1', + 'squ': '\u25A1', + 'square': '\u25A1', + 'SquareIntersection': '\u2293', + 'sqcap': '\u2293', + 'SquareSubset': '\u228F', + 'sqsub': '\u228F', + 'sqsubset': '\u228F', + 'SquareSubsetEqual': '\u2291', + 'sqsube': '\u2291', + 'sqsubseteq': '\u2291', + 'SquareSuperset': '\u2290', + 'sqsup': '\u2290', + 'sqsupset': '\u2290', + 'SquareSupersetEqual': '\u2292', + 'sqsupe': '\u2292', + 'sqsupseteq': '\u2292', + 'SquareUnion': '\u2294', + 'sqcup': '\u2294', + 'Sscr': '\uD835\uDCAE', + 'Star': '\u22C6', + 'sstarf': '\u22C6', + 'Sub': '\u22D0', + 'Subset': '\u22D0', + 'SubsetEqual': '\u2286', + 'sube': '\u2286', + 'subseteq': '\u2286', + 'Succeeds': '\u227B', + 'sc': '\u227B', + 'succ': '\u227B', + 'SucceedsEqual': '\u2AB0', + 'sce': '\u2AB0', + 'succeq': '\u2AB0', + 'SucceedsSlantEqual': '\u227D', + 'sccue': '\u227D', + 'succcurlyeq': '\u227D', + 'SucceedsTilde': '\u227F', + 'scsim': '\u227F', + 'succsim': '\u227F', + 'Sum': '\u2211', + 'sum': '\u2211', + 'Sup': '\u22D1', + 'Supset': '\u22D1', + 'Superset': '\u2283', + 'sup': '\u2283', + 'supset': '\u2283', + 'SupersetEqual': '\u2287', + 'supe': '\u2287', + 'supseteq': '\u2287', + 'THORN': '\u00DE', + 'TRADE': '\u2122', + 'trade': '\u2122', + 'TSHcy': '\u040B', + 'TScy': '\u0426', + 'Tab': '\u0009', + 'Tau': '\u03A4', + 'Tcaron': '\u0164', + 'Tcedil': '\u0162', + 'Tcy': '\u0422', + 'Tfr': '\uD835\uDD17', + 'Therefore': '\u2234', + 'there4': '\u2234', + 'therefore': '\u2234', + 'Theta': '\u0398', + 'ThickSpace': '\u205F\u200A', + 'ThinSpace': '\u2009', + 'thinsp': '\u2009', + 'Tilde': '\u223C', + 'sim': '\u223C', + 'thicksim': '\u223C', + 'thksim': '\u223C', + 'TildeEqual': '\u2243', + 'sime': '\u2243', + 'simeq': '\u2243', + 'TildeFullEqual': '\u2245', + 'cong': '\u2245', + 'TildeTilde': '\u2248', + 'ap': '\u2248', + 'approx': '\u2248', + 'asymp': '\u2248', + 'thickapprox': '\u2248', + 'thkap': '\u2248', + 'Topf': '\uD835\uDD4B', + 'TripleDot': '\u20DB', + 'tdot': '\u20DB', + 'Tscr': '\uD835\uDCAF', + 'Tstrok': '\u0166', + 'Uacute': '\u00DA', + 'Uarr': '\u219F', + 'Uarrocir': '\u2949', + 'Ubrcy': '\u040E', + 'Ubreve': '\u016C', + 'Ucirc': '\u00DB', + 'Ucy': '\u0423', + 'Udblac': '\u0170', + 'Ufr': '\uD835\uDD18', + 'Ugrave': '\u00D9', + 'Umacr': '\u016A', + 'UnderBar': '\u005F', + 'lowbar': '\u005F', + 'UnderBrace': '\u23DF', + 'UnderBracket': '\u23B5', + 'bbrk': '\u23B5', + 'UnderParenthesis': '\u23DD', + 'Union': '\u22C3', + 'bigcup': '\u22C3', + 'xcup': '\u22C3', + 'UnionPlus': '\u228E', + 'uplus': '\u228E', + 'Uogon': '\u0172', + 'Uopf': '\uD835\uDD4C', + 'UpArrowBar': '\u2912', + 'UpArrowDownArrow': '\u21C5', + 'udarr': '\u21C5', + 'UpDownArrow': '\u2195', + 'updownarrow': '\u2195', + 'varr': '\u2195', + 'UpEquilibrium': '\u296E', + 'udhar': '\u296E', + 'UpTee': '\u22A5', + 'bot': '\u22A5', + 'bottom': '\u22A5', + 'perp': '\u22A5', + 'UpTeeArrow': '\u21A5', + 'mapstoup': '\u21A5', + 'UpperLeftArrow': '\u2196', + 'nwarr': '\u2196', + 'nwarrow': '\u2196', + 'UpperRightArrow': '\u2197', + 'nearr': '\u2197', + 'nearrow': '\u2197', + 'Upsi': '\u03D2', + 'upsih': '\u03D2', + 'Upsilon': '\u03A5', + 'Uring': '\u016E', + 'Uscr': '\uD835\uDCB0', + 'Utilde': '\u0168', + 'Uuml': '\u00DC', + 'VDash': '\u22AB', + 'Vbar': '\u2AEB', + 'Vcy': '\u0412', + 'Vdash': '\u22A9', + 'Vdashl': '\u2AE6', + 'Vee': '\u22C1', + 'bigvee': '\u22C1', + 'xvee': '\u22C1', + 'Verbar': '\u2016', + 'Vert': '\u2016', + 'VerticalBar': '\u2223', + 'mid': '\u2223', + 'shortmid': '\u2223', + 'smid': '\u2223', + 'VerticalLine': '\u007C', + 'verbar': '\u007C', + 'vert': '\u007C', + 'VerticalSeparator': '\u2758', + 'VerticalTilde': '\u2240', + 'wr': '\u2240', + 'wreath': '\u2240', + 'VeryThinSpace': '\u200A', + 'hairsp': '\u200A', + 'Vfr': '\uD835\uDD19', + 'Vopf': '\uD835\uDD4D', + 'Vscr': '\uD835\uDCB1', + 'Vvdash': '\u22AA', + 'Wcirc': '\u0174', + 'Wedge': '\u22C0', + 'bigwedge': '\u22C0', + 'xwedge': '\u22C0', + 'Wfr': '\uD835\uDD1A', + 'Wopf': '\uD835\uDD4E', + 'Wscr': '\uD835\uDCB2', + 'Xfr': '\uD835\uDD1B', + 'Xi': '\u039E', + 'Xopf': '\uD835\uDD4F', + 'Xscr': '\uD835\uDCB3', + 'YAcy': '\u042F', + 'YIcy': '\u0407', + 'YUcy': '\u042E', + 'Yacute': '\u00DD', + 'Ycirc': '\u0176', + 'Ycy': '\u042B', + 'Yfr': '\uD835\uDD1C', + 'Yopf': '\uD835\uDD50', + 'Yscr': '\uD835\uDCB4', + 'Yuml': '\u0178', + 'ZHcy': '\u0416', + 'Zacute': '\u0179', + 'Zcaron': '\u017D', + 'Zcy': '\u0417', + 'Zdot': '\u017B', + 'Zeta': '\u0396', + 'Zfr': '\u2128', + 'zeetrf': '\u2128', + 'Zopf': '\u2124', + 'integers': '\u2124', + 'Zscr': '\uD835\uDCB5', + 'aacute': '\u00E1', + 'abreve': '\u0103', + 'ac': '\u223E', + 'mstpos': '\u223E', + 'acE': '\u223E\u0333', + 'acd': '\u223F', + 'acirc': '\u00E2', + 'acy': '\u0430', + 'aelig': '\u00E6', + 'afr': '\uD835\uDD1E', + 'agrave': '\u00E0', + 'alefsym': '\u2135', + 'aleph': '\u2135', + 'alpha': '\u03B1', + 'amacr': '\u0101', + 'amalg': '\u2A3F', + 'and': '\u2227', + 'wedge': '\u2227', + 'andand': '\u2A55', + 'andd': '\u2A5C', + 'andslope': '\u2A58', + 'andv': '\u2A5A', + 'ang': '\u2220', + 'angle': '\u2220', + 'ange': '\u29A4', + 'angmsd': '\u2221', + 'measuredangle': '\u2221', + 'angmsdaa': '\u29A8', + 'angmsdab': '\u29A9', + 'angmsdac': '\u29AA', + 'angmsdad': '\u29AB', + 'angmsdae': '\u29AC', + 'angmsdaf': '\u29AD', + 'angmsdag': '\u29AE', + 'angmsdah': '\u29AF', + 'angrt': '\u221F', + 'angrtvb': '\u22BE', + 'angrtvbd': '\u299D', + 'angsph': '\u2222', + 'angzarr': '\u237C', + 'aogon': '\u0105', + 'aopf': '\uD835\uDD52', + 'apE': '\u2A70', + 'apacir': '\u2A6F', + 'ape': '\u224A', + 'approxeq': '\u224A', + 'apid': '\u224B', + 'apos': '\u0027', + 'aring': '\u00E5', + 'ascr': '\uD835\uDCB6', + 'ast': '\u002A', + 'midast': '\u002A', + 'atilde': '\u00E3', + 'auml': '\u00E4', + 'awint': '\u2A11', + 'bNot': '\u2AED', + 'backcong': '\u224C', + 'bcong': '\u224C', + 'backepsilon': '\u03F6', + 'bepsi': '\u03F6', + 'backprime': '\u2035', + 'bprime': '\u2035', + 'backsim': '\u223D', + 'bsim': '\u223D', + 'backsimeq': '\u22CD', + 'bsime': '\u22CD', + 'barvee': '\u22BD', + 'barwed': '\u2305', + 'barwedge': '\u2305', + 'bbrktbrk': '\u23B6', + 'bcy': '\u0431', + 'bdquo': '\u201E', + 'ldquor': '\u201E', + 'bemptyv': '\u29B0', + 'beta': '\u03B2', + 'beth': '\u2136', + 'between': '\u226C', + 'twixt': '\u226C', + 'bfr': '\uD835\uDD1F', + 'bigcirc': '\u25EF', + 'xcirc': '\u25EF', + 'bigodot': '\u2A00', + 'xodot': '\u2A00', + 'bigoplus': '\u2A01', + 'xoplus': '\u2A01', + 'bigotimes': '\u2A02', + 'xotime': '\u2A02', + 'bigsqcup': '\u2A06', + 'xsqcup': '\u2A06', + 'bigstar': '\u2605', + 'starf': '\u2605', + 'bigtriangledown': '\u25BD', + 'xdtri': '\u25BD', + 'bigtriangleup': '\u25B3', + 'xutri': '\u25B3', + 'biguplus': '\u2A04', + 'xuplus': '\u2A04', + 'bkarow': '\u290D', + 'rbarr': '\u290D', + 'blacklozenge': '\u29EB', + 'lozf': '\u29EB', + 'blacktriangle': '\u25B4', + 'utrif': '\u25B4', + 'blacktriangledown': '\u25BE', + 'dtrif': '\u25BE', + 'blacktriangleleft': '\u25C2', + 'ltrif': '\u25C2', + 'blacktriangleright': '\u25B8', + 'rtrif': '\u25B8', + 'blank': '\u2423', + 'blk12': '\u2592', + 'blk14': '\u2591', + 'blk34': '\u2593', + 'block': '\u2588', + 'bne': '\u003D\u20E5', + 'bnequiv': '\u2261\u20E5', + 'bnot': '\u2310', + 'bopf': '\uD835\uDD53', + 'bowtie': '\u22C8', + 'boxDL': '\u2557', + 'boxDR': '\u2554', + 'boxDl': '\u2556', + 'boxDr': '\u2553', + 'boxH': '\u2550', + 'boxHD': '\u2566', + 'boxHU': '\u2569', + 'boxHd': '\u2564', + 'boxHu': '\u2567', + 'boxUL': '\u255D', + 'boxUR': '\u255A', + 'boxUl': '\u255C', + 'boxUr': '\u2559', + 'boxV': '\u2551', + 'boxVH': '\u256C', + 'boxVL': '\u2563', + 'boxVR': '\u2560', + 'boxVh': '\u256B', + 'boxVl': '\u2562', + 'boxVr': '\u255F', + 'boxbox': '\u29C9', + 'boxdL': '\u2555', + 'boxdR': '\u2552', + 'boxdl': '\u2510', + 'boxdr': '\u250C', + 'boxhD': '\u2565', + 'boxhU': '\u2568', + 'boxhd': '\u252C', + 'boxhu': '\u2534', + 'boxminus': '\u229F', + 'minusb': '\u229F', + 'boxplus': '\u229E', + 'plusb': '\u229E', + 'boxtimes': '\u22A0', + 'timesb': '\u22A0', + 'boxuL': '\u255B', + 'boxuR': '\u2558', + 'boxul': '\u2518', + 'boxur': '\u2514', + 'boxv': '\u2502', + 'boxvH': '\u256A', + 'boxvL': '\u2561', + 'boxvR': '\u255E', + 'boxvh': '\u253C', + 'boxvl': '\u2524', + 'boxvr': '\u251C', + 'brvbar': '\u00A6', + 'bscr': '\uD835\uDCB7', + 'bsemi': '\u204F', + 'bsol': '\u005C', + 'bsolb': '\u29C5', + 'bsolhsub': '\u27C8', + 'bull': '\u2022', + 'bullet': '\u2022', + 'bumpE': '\u2AAE', + 'cacute': '\u0107', + 'cap': '\u2229', + 'capand': '\u2A44', + 'capbrcup': '\u2A49', + 'capcap': '\u2A4B', + 'capcup': '\u2A47', + 'capdot': '\u2A40', + 'caps': '\u2229\uFE00', + 'caret': '\u2041', + 'ccaps': '\u2A4D', + 'ccaron': '\u010D', + 'ccedil': '\u00E7', + 'ccirc': '\u0109', + 'ccups': '\u2A4C', + 'ccupssm': '\u2A50', + 'cdot': '\u010B', + 'cemptyv': '\u29B2', + 'cent': '\u00A2', + 'cfr': '\uD835\uDD20', + 'chcy': '\u0447', + 'check': '\u2713', + 'checkmark': '\u2713', + 'chi': '\u03C7', + 'cir': '\u25CB', + 'cirE': '\u29C3', + 'circ': '\u02C6', + 'circeq': '\u2257', + 'cire': '\u2257', + 'circlearrowleft': '\u21BA', + 'olarr': '\u21BA', + 'circlearrowright': '\u21BB', + 'orarr': '\u21BB', + 'circledS': '\u24C8', + 'oS': '\u24C8', + 'circledast': '\u229B', + 'oast': '\u229B', + 'circledcirc': '\u229A', + 'ocir': '\u229A', + 'circleddash': '\u229D', + 'odash': '\u229D', + 'cirfnint': '\u2A10', + 'cirmid': '\u2AEF', + 'cirscir': '\u29C2', + 'clubs': '\u2663', + 'clubsuit': '\u2663', + 'colon': '\u003A', + 'comma': '\u002C', + 'commat': '\u0040', + 'comp': '\u2201', + 'complement': '\u2201', + 'congdot': '\u2A6D', + 'copf': '\uD835\uDD54', + 'copysr': '\u2117', + 'crarr': '\u21B5', + 'cross': '\u2717', + 'cscr': '\uD835\uDCB8', + 'csub': '\u2ACF', + 'csube': '\u2AD1', + 'csup': '\u2AD0', + 'csupe': '\u2AD2', + 'ctdot': '\u22EF', + 'cudarrl': '\u2938', + 'cudarrr': '\u2935', + 'cuepr': '\u22DE', + 'curlyeqprec': '\u22DE', + 'cuesc': '\u22DF', + 'curlyeqsucc': '\u22DF', + 'cularr': '\u21B6', + 'curvearrowleft': '\u21B6', + 'cularrp': '\u293D', + 'cup': '\u222A', + 'cupbrcap': '\u2A48', + 'cupcap': '\u2A46', + 'cupcup': '\u2A4A', + 'cupdot': '\u228D', + 'cupor': '\u2A45', + 'cups': '\u222A\uFE00', + 'curarr': '\u21B7', + 'curvearrowright': '\u21B7', + 'curarrm': '\u293C', + 'curlyvee': '\u22CE', + 'cuvee': '\u22CE', + 'curlywedge': '\u22CF', + 'cuwed': '\u22CF', + 'curren': '\u00A4', + 'cwint': '\u2231', + 'cylcty': '\u232D', + 'dHar': '\u2965', + 'dagger': '\u2020', + 'daleth': '\u2138', + 'dash': '\u2010', + 'hyphen': '\u2010', + 'dbkarow': '\u290F', + 'rBarr': '\u290F', + 'dcaron': '\u010F', + 'dcy': '\u0434', + 'ddarr': '\u21CA', + 'downdownarrows': '\u21CA', + 'ddotseq': '\u2A77', + 'eDDot': '\u2A77', + 'deg': '\u00B0', + 'delta': '\u03B4', + 'demptyv': '\u29B1', + 'dfisht': '\u297F', + 'dfr': '\uD835\uDD21', + 'diamondsuit': '\u2666', + 'diams': '\u2666', + 'digamma': '\u03DD', + 'gammad': '\u03DD', + 'disin': '\u22F2', + 'div': '\u00F7', + 'divide': '\u00F7', + 'divideontimes': '\u22C7', + 'divonx': '\u22C7', + 'djcy': '\u0452', + 'dlcorn': '\u231E', + 'llcorner': '\u231E', + 'dlcrop': '\u230D', + 'dollar': '\u0024', + 'dopf': '\uD835\uDD55', + 'doteqdot': '\u2251', + 'eDot': '\u2251', + 'dotminus': '\u2238', + 'minusd': '\u2238', + 'dotplus': '\u2214', + 'plusdo': '\u2214', + 'dotsquare': '\u22A1', + 'sdotb': '\u22A1', + 'drcorn': '\u231F', + 'lrcorner': '\u231F', + 'drcrop': '\u230C', + 'dscr': '\uD835\uDCB9', + 'dscy': '\u0455', + 'dsol': '\u29F6', + 'dstrok': '\u0111', + 'dtdot': '\u22F1', + 'dtri': '\u25BF', + 'triangledown': '\u25BF', + 'dwangle': '\u29A6', + 'dzcy': '\u045F', + 'dzigrarr': '\u27FF', + 'eacute': '\u00E9', + 'easter': '\u2A6E', + 'ecaron': '\u011B', + 'ecir': '\u2256', + 'eqcirc': '\u2256', + 'ecirc': '\u00EA', + 'ecolon': '\u2255', + 'eqcolon': '\u2255', + 'ecy': '\u044D', + 'edot': '\u0117', + 'efDot': '\u2252', + 'fallingdotseq': '\u2252', + 'efr': '\uD835\uDD22', + 'eg': '\u2A9A', + 'egrave': '\u00E8', + 'egs': '\u2A96', + 'eqslantgtr': '\u2A96', + 'egsdot': '\u2A98', + 'el': '\u2A99', + 'elinters': '\u23E7', + 'ell': '\u2113', + 'els': '\u2A95', + 'eqslantless': '\u2A95', + 'elsdot': '\u2A97', + 'emacr': '\u0113', + 'empty': '\u2205', + 'emptyset': '\u2205', + 'emptyv': '\u2205', + 'varnothing': '\u2205', + 'emsp13': '\u2004', + 'emsp14': '\u2005', + 'emsp': '\u2003', + 'eng': '\u014B', + 'ensp': '\u2002', + 'eogon': '\u0119', + 'eopf': '\uD835\uDD56', + 'epar': '\u22D5', + 'eparsl': '\u29E3', + 'eplus': '\u2A71', + 'epsi': '\u03B5', + 'epsilon': '\u03B5', + 'epsiv': '\u03F5', + 'straightepsilon': '\u03F5', + 'varepsilon': '\u03F5', + 'equals': '\u003D', + 'equest': '\u225F', + 'questeq': '\u225F', + 'equivDD': '\u2A78', + 'eqvparsl': '\u29E5', + 'erDot': '\u2253', + 'risingdotseq': '\u2253', + 'erarr': '\u2971', + 'escr': '\u212F', + 'eta': '\u03B7', + 'eth': '\u00F0', + 'euml': '\u00EB', + 'euro': '\u20AC', + 'excl': '\u0021', + 'fcy': '\u0444', + 'female': '\u2640', + 'ffilig': '\uFB03', + 'fflig': '\uFB00', + 'ffllig': '\uFB04', + 'ffr': '\uD835\uDD23', + 'filig': '\uFB01', + 'fjlig': '\u0066\u006A', + 'flat': '\u266D', + 'fllig': '\uFB02', + 'fltns': '\u25B1', + 'fnof': '\u0192', + 'fopf': '\uD835\uDD57', + 'fork': '\u22D4', + 'pitchfork': '\u22D4', + 'forkv': '\u2AD9', + 'fpartint': '\u2A0D', + 'frac12': '\u00BD', + 'half': '\u00BD', + 'frac13': '\u2153', + 'frac14': '\u00BC', + 'frac15': '\u2155', + 'frac16': '\u2159', + 'frac18': '\u215B', + 'frac23': '\u2154', + 'frac25': '\u2156', + 'frac34': '\u00BE', + 'frac35': '\u2157', + 'frac38': '\u215C', + 'frac45': '\u2158', + 'frac56': '\u215A', + 'frac58': '\u215D', + 'frac78': '\u215E', + 'frasl': '\u2044', + 'frown': '\u2322', + 'sfrown': '\u2322', + 'fscr': '\uD835\uDCBB', + 'gEl': '\u2A8C', + 'gtreqqless': '\u2A8C', + 'gacute': '\u01F5', + 'gamma': '\u03B3', + 'gap': '\u2A86', + 'gtrapprox': '\u2A86', + 'gbreve': '\u011F', + 'gcirc': '\u011D', + 'gcy': '\u0433', + 'gdot': '\u0121', + 'gescc': '\u2AA9', + 'gesdot': '\u2A80', + 'gesdoto': '\u2A82', + 'gesdotol': '\u2A84', + 'gesl': '\u22DB\uFE00', + 'gesles': '\u2A94', + 'gfr': '\uD835\uDD24', + 'gimel': '\u2137', + 'gjcy': '\u0453', + 'glE': '\u2A92', + 'gla': '\u2AA5', + 'glj': '\u2AA4', + 'gnE': '\u2269', + 'gneqq': '\u2269', + 'gnap': '\u2A8A', + 'gnapprox': '\u2A8A', + 'gne': '\u2A88', + 'gneq': '\u2A88', + 'gnsim': '\u22E7', + 'gopf': '\uD835\uDD58', + 'gscr': '\u210A', + 'gsime': '\u2A8E', + 'gsiml': '\u2A90', + 'gtcc': '\u2AA7', + 'gtcir': '\u2A7A', + 'gtdot': '\u22D7', + 'gtrdot': '\u22D7', + 'gtlPar': '\u2995', + 'gtquest': '\u2A7C', + 'gtrarr': '\u2978', + 'gvertneqq': '\u2269\uFE00', + 'gvnE': '\u2269\uFE00', + 'hardcy': '\u044A', + 'harrcir': '\u2948', + 'harrw': '\u21AD', + 'leftrightsquigarrow': '\u21AD', + 'hbar': '\u210F', + 'hslash': '\u210F', + 'planck': '\u210F', + 'plankv': '\u210F', + 'hcirc': '\u0125', + 'hearts': '\u2665', + 'heartsuit': '\u2665', + 'hellip': '\u2026', + 'mldr': '\u2026', + 'hercon': '\u22B9', + 'hfr': '\uD835\uDD25', + 'hksearow': '\u2925', + 'searhk': '\u2925', + 'hkswarow': '\u2926', + 'swarhk': '\u2926', + 'hoarr': '\u21FF', + 'homtht': '\u223B', + 'hookleftarrow': '\u21A9', + 'larrhk': '\u21A9', + 'hookrightarrow': '\u21AA', + 'rarrhk': '\u21AA', + 'hopf': '\uD835\uDD59', + 'horbar': '\u2015', + 'hscr': '\uD835\uDCBD', + 'hstrok': '\u0127', + 'hybull': '\u2043', + 'iacute': '\u00ED', + 'icirc': '\u00EE', + 'icy': '\u0438', + 'iecy': '\u0435', + 'iexcl': '\u00A1', + 'ifr': '\uD835\uDD26', + 'igrave': '\u00EC', + 'iiiint': '\u2A0C', + 'qint': '\u2A0C', + 'iiint': '\u222D', + 'tint': '\u222D', + 'iinfin': '\u29DC', + 'iiota': '\u2129', + 'ijlig': '\u0133', + 'imacr': '\u012B', + 'imath': '\u0131', + 'inodot': '\u0131', + 'imof': '\u22B7', + 'imped': '\u01B5', + 'incare': '\u2105', + 'infin': '\u221E', + 'infintie': '\u29DD', + 'intcal': '\u22BA', + 'intercal': '\u22BA', + 'intlarhk': '\u2A17', + 'intprod': '\u2A3C', + 'iprod': '\u2A3C', + 'iocy': '\u0451', + 'iogon': '\u012F', + 'iopf': '\uD835\uDD5A', + 'iota': '\u03B9', + 'iquest': '\u00BF', + 'iscr': '\uD835\uDCBE', + 'isinE': '\u22F9', + 'isindot': '\u22F5', + 'isins': '\u22F4', + 'isinsv': '\u22F3', + 'itilde': '\u0129', + 'iukcy': '\u0456', + 'iuml': '\u00EF', + 'jcirc': '\u0135', + 'jcy': '\u0439', + 'jfr': '\uD835\uDD27', + 'jmath': '\u0237', + 'jopf': '\uD835\uDD5B', + 'jscr': '\uD835\uDCBF', + 'jsercy': '\u0458', + 'jukcy': '\u0454', + 'kappa': '\u03BA', + 'kappav': '\u03F0', + 'varkappa': '\u03F0', + 'kcedil': '\u0137', + 'kcy': '\u043A', + 'kfr': '\uD835\uDD28', + 'kgreen': '\u0138', + 'khcy': '\u0445', + 'kjcy': '\u045C', + 'kopf': '\uD835\uDD5C', + 'kscr': '\uD835\uDCC0', + 'lAtail': '\u291B', + 'lBarr': '\u290E', + 'lEg': '\u2A8B', + 'lesseqqgtr': '\u2A8B', + 'lHar': '\u2962', + 'lacute': '\u013A', + 'laemptyv': '\u29B4', + 'lambda': '\u03BB', + 'langd': '\u2991', + 'lap': '\u2A85', + 'lessapprox': '\u2A85', + 'laquo': '\u00AB', + 'larrbfs': '\u291F', + 'larrfs': '\u291D', + 'larrlp': '\u21AB', + 'looparrowleft': '\u21AB', + 'larrpl': '\u2939', + 'larrsim': '\u2973', + 'larrtl': '\u21A2', + 'leftarrowtail': '\u21A2', + 'lat': '\u2AAB', + 'latail': '\u2919', + 'late': '\u2AAD', + 'lates': '\u2AAD\uFE00', + 'lbarr': '\u290C', + 'lbbrk': '\u2772', + 'lbrace': '\u007B', + 'lcub': '\u007B', + 'lbrack': '\u005B', + 'lsqb': '\u005B', + 'lbrke': '\u298B', + 'lbrksld': '\u298F', + 'lbrkslu': '\u298D', + 'lcaron': '\u013E', + 'lcedil': '\u013C', + 'lcy': '\u043B', + 'ldca': '\u2936', + 'ldrdhar': '\u2967', + 'ldrushar': '\u294B', + 'ldsh': '\u21B2', + 'le': '\u2264', + 'leq': '\u2264', + 'leftleftarrows': '\u21C7', + 'llarr': '\u21C7', + 'leftthreetimes': '\u22CB', + 'lthree': '\u22CB', + 'lescc': '\u2AA8', + 'lesdot': '\u2A7F', + 'lesdoto': '\u2A81', + 'lesdotor': '\u2A83', + 'lesg': '\u22DA\uFE00', + 'lesges': '\u2A93', + 'lessdot': '\u22D6', + 'ltdot': '\u22D6', + 'lfisht': '\u297C', + 'lfr': '\uD835\uDD29', + 'lgE': '\u2A91', + 'lharul': '\u296A', + 'lhblk': '\u2584', + 'ljcy': '\u0459', + 'llhard': '\u296B', + 'lltri': '\u25FA', + 'lmidot': '\u0140', + 'lmoust': '\u23B0', + 'lmoustache': '\u23B0', + 'lnE': '\u2268', + 'lneqq': '\u2268', + 'lnap': '\u2A89', + 'lnapprox': '\u2A89', + 'lne': '\u2A87', + 'lneq': '\u2A87', + 'lnsim': '\u22E6', + 'loang': '\u27EC', + 'loarr': '\u21FD', + 'longmapsto': '\u27FC', + 'xmap': '\u27FC', + 'looparrowright': '\u21AC', + 'rarrlp': '\u21AC', + 'lopar': '\u2985', + 'lopf': '\uD835\uDD5D', + 'loplus': '\u2A2D', + 'lotimes': '\u2A34', + 'lowast': '\u2217', + 'loz': '\u25CA', + 'lozenge': '\u25CA', + 'lpar': '\u0028', + 'lparlt': '\u2993', + 'lrhard': '\u296D', + 'lrm': '\u200E', + 'lrtri': '\u22BF', + 'lsaquo': '\u2039', + 'lscr': '\uD835\uDCC1', + 'lsime': '\u2A8D', + 'lsimg': '\u2A8F', + 'lsquor': '\u201A', + 'sbquo': '\u201A', + 'lstrok': '\u0142', + 'ltcc': '\u2AA6', + 'ltcir': '\u2A79', + 'ltimes': '\u22C9', + 'ltlarr': '\u2976', + 'ltquest': '\u2A7B', + 'ltrPar': '\u2996', + 'ltri': '\u25C3', + 'triangleleft': '\u25C3', + 'lurdshar': '\u294A', + 'luruhar': '\u2966', + 'lvertneqq': '\u2268\uFE00', + 'lvnE': '\u2268\uFE00', + 'mDDot': '\u223A', + 'macr': '\u00AF', + 'strns': '\u00AF', + 'male': '\u2642', + 'malt': '\u2720', + 'maltese': '\u2720', + 'marker': '\u25AE', + 'mcomma': '\u2A29', + 'mcy': '\u043C', + 'mdash': '\u2014', + 'mfr': '\uD835\uDD2A', + 'mho': '\u2127', + 'micro': '\u00B5', + 'midcir': '\u2AF0', + 'minus': '\u2212', + 'minusdu': '\u2A2A', + 'mlcp': '\u2ADB', + 'models': '\u22A7', + 'mopf': '\uD835\uDD5E', + 'mscr': '\uD835\uDCC2', + 'mu': '\u03BC', + 'multimap': '\u22B8', + 'mumap': '\u22B8', + 'nGg': '\u22D9\u0338', + 'nGt': '\u226B\u20D2', + 'nLeftarrow': '\u21CD', + 'nlArr': '\u21CD', + 'nLeftrightarrow': '\u21CE', + 'nhArr': '\u21CE', + 'nLl': '\u22D8\u0338', + 'nLt': '\u226A\u20D2', + 'nRightarrow': '\u21CF', + 'nrArr': '\u21CF', + 'nVDash': '\u22AF', + 'nVdash': '\u22AE', + 'nacute': '\u0144', + 'nang': '\u2220\u20D2', + 'napE': '\u2A70\u0338', + 'napid': '\u224B\u0338', + 'napos': '\u0149', + 'natur': '\u266E', + 'natural': '\u266E', + 'ncap': '\u2A43', + 'ncaron': '\u0148', + 'ncedil': '\u0146', + 'ncongdot': '\u2A6D\u0338', + 'ncup': '\u2A42', + 'ncy': '\u043D', + 'ndash': '\u2013', + 'neArr': '\u21D7', + 'nearhk': '\u2924', + 'nedot': '\u2250\u0338', + 'nesear': '\u2928', + 'toea': '\u2928', + 'nfr': '\uD835\uDD2B', + 'nharr': '\u21AE', + 'nleftrightarrow': '\u21AE', + 'nhpar': '\u2AF2', + 'nis': '\u22FC', + 'nisd': '\u22FA', + 'njcy': '\u045A', + 'nlE': '\u2266\u0338', + 'nleqq': '\u2266\u0338', + 'nlarr': '\u219A', + 'nleftarrow': '\u219A', + 'nldr': '\u2025', + 'nopf': '\uD835\uDD5F', + 'not': '\u00AC', + 'notinE': '\u22F9\u0338', + 'notindot': '\u22F5\u0338', + 'notinvb': '\u22F7', + 'notinvc': '\u22F6', + 'notnivb': '\u22FE', + 'notnivc': '\u22FD', + 'nparsl': '\u2AFD\u20E5', + 'npart': '\u2202\u0338', + 'npolint': '\u2A14', + 'nrarr': '\u219B', + 'nrightarrow': '\u219B', + 'nrarrc': '\u2933\u0338', + 'nrarrw': '\u219D\u0338', + 'nscr': '\uD835\uDCC3', + 'nsub': '\u2284', + 'nsubE': '\u2AC5\u0338', + 'nsubseteqq': '\u2AC5\u0338', + 'nsup': '\u2285', + 'nsupE': '\u2AC6\u0338', + 'nsupseteqq': '\u2AC6\u0338', + 'ntilde': '\u00F1', + 'nu': '\u03BD', + 'num': '\u0023', + 'numero': '\u2116', + 'numsp': '\u2007', + 'nvDash': '\u22AD', + 'nvHarr': '\u2904', + 'nvap': '\u224D\u20D2', + 'nvdash': '\u22AC', + 'nvge': '\u2265\u20D2', + 'nvgt': '\u003E\u20D2', + 'nvinfin': '\u29DE', + 'nvlArr': '\u2902', + 'nvle': '\u2264\u20D2', + 'nvlt': '\u003C\u20D2', + 'nvltrie': '\u22B4\u20D2', + 'nvrArr': '\u2903', + 'nvrtrie': '\u22B5\u20D2', + 'nvsim': '\u223C\u20D2', + 'nwArr': '\u21D6', + 'nwarhk': '\u2923', + 'nwnear': '\u2927', + 'oacute': '\u00F3', + 'ocirc': '\u00F4', + 'ocy': '\u043E', + 'odblac': '\u0151', + 'odiv': '\u2A38', + 'odsold': '\u29BC', + 'oelig': '\u0153', + 'ofcir': '\u29BF', + 'ofr': '\uD835\uDD2C', + 'ogon': '\u02DB', + 'ograve': '\u00F2', + 'ogt': '\u29C1', + 'ohbar': '\u29B5', + 'olcir': '\u29BE', + 'olcross': '\u29BB', + 'olt': '\u29C0', + 'omacr': '\u014D', + 'omega': '\u03C9', + 'omicron': '\u03BF', + 'omid': '\u29B6', + 'oopf': '\uD835\uDD60', + 'opar': '\u29B7', + 'operp': '\u29B9', + 'or': '\u2228', + 'vee': '\u2228', + 'ord': '\u2A5D', + 'order': '\u2134', + 'orderof': '\u2134', + 'oscr': '\u2134', + 'ordf': '\u00AA', + 'ordm': '\u00BA', + 'origof': '\u22B6', + 'oror': '\u2A56', + 'orslope': '\u2A57', + 'orv': '\u2A5B', + 'oslash': '\u00F8', + 'osol': '\u2298', + 'otilde': '\u00F5', + 'otimesas': '\u2A36', + 'ouml': '\u00F6', + 'ovbar': '\u233D', + 'para': '\u00B6', + 'parsim': '\u2AF3', + 'parsl': '\u2AFD', + 'pcy': '\u043F', + 'percnt': '\u0025', + 'period': '\u002E', + 'permil': '\u2030', + 'pertenk': '\u2031', + 'pfr': '\uD835\uDD2D', + 'phi': '\u03C6', + 'phiv': '\u03D5', + 'straightphi': '\u03D5', + 'varphi': '\u03D5', + 'phone': '\u260E', + 'pi': '\u03C0', + 'piv': '\u03D6', + 'varpi': '\u03D6', + 'planckh': '\u210E', + 'plus': '\u002B', + 'plusacir': '\u2A23', + 'pluscir': '\u2A22', + 'plusdu': '\u2A25', + 'pluse': '\u2A72', + 'plussim': '\u2A26', + 'plustwo': '\u2A27', + 'pointint': '\u2A15', + 'popf': '\uD835\uDD61', + 'pound': '\u00A3', + 'prE': '\u2AB3', + 'prap': '\u2AB7', + 'precapprox': '\u2AB7', + 'precnapprox': '\u2AB9', + 'prnap': '\u2AB9', + 'precneqq': '\u2AB5', + 'prnE': '\u2AB5', + 'precnsim': '\u22E8', + 'prnsim': '\u22E8', + 'prime': '\u2032', + 'profalar': '\u232E', + 'profline': '\u2312', + 'profsurf': '\u2313', + 'prurel': '\u22B0', + 'pscr': '\uD835\uDCC5', + 'psi': '\u03C8', + 'puncsp': '\u2008', + 'qfr': '\uD835\uDD2E', + 'qopf': '\uD835\uDD62', + 'qprime': '\u2057', + 'qscr': '\uD835\uDCC6', + 'quatint': '\u2A16', + 'quest': '\u003F', + 'rAtail': '\u291C', + 'rHar': '\u2964', + 'race': '\u223D\u0331', + 'racute': '\u0155', + 'raemptyv': '\u29B3', + 'rangd': '\u2992', + 'range': '\u29A5', + 'raquo': '\u00BB', + 'rarrap': '\u2975', + 'rarrbfs': '\u2920', + 'rarrc': '\u2933', + 'rarrfs': '\u291E', + 'rarrpl': '\u2945', + 'rarrsim': '\u2974', + 'rarrtl': '\u21A3', + 'rightarrowtail': '\u21A3', + 'rarrw': '\u219D', + 'rightsquigarrow': '\u219D', + 'ratail': '\u291A', + 'ratio': '\u2236', + 'rbbrk': '\u2773', + 'rbrace': '\u007D', + 'rcub': '\u007D', + 'rbrack': '\u005D', + 'rsqb': '\u005D', + 'rbrke': '\u298C', + 'rbrksld': '\u298E', + 'rbrkslu': '\u2990', + 'rcaron': '\u0159', + 'rcedil': '\u0157', + 'rcy': '\u0440', + 'rdca': '\u2937', + 'rdldhar': '\u2969', + 'rdsh': '\u21B3', + 'rect': '\u25AD', + 'rfisht': '\u297D', + 'rfr': '\uD835\uDD2F', + 'rharul': '\u296C', + 'rho': '\u03C1', + 'rhov': '\u03F1', + 'varrho': '\u03F1', + 'rightrightarrows': '\u21C9', + 'rrarr': '\u21C9', + 'rightthreetimes': '\u22CC', + 'rthree': '\u22CC', + 'ring': '\u02DA', + 'rlm': '\u200F', + 'rmoust': '\u23B1', + 'rmoustache': '\u23B1', + 'rnmid': '\u2AEE', + 'roang': '\u27ED', + 'roarr': '\u21FE', + 'ropar': '\u2986', + 'ropf': '\uD835\uDD63', + 'roplus': '\u2A2E', + 'rotimes': '\u2A35', + 'rpar': '\u0029', + 'rpargt': '\u2994', + 'rppolint': '\u2A12', + 'rsaquo': '\u203A', + 'rscr': '\uD835\uDCC7', + 'rtimes': '\u22CA', + 'rtri': '\u25B9', + 'triangleright': '\u25B9', + 'rtriltri': '\u29CE', + 'ruluhar': '\u2968', + 'rx': '\u211E', + 'sacute': '\u015B', + 'scE': '\u2AB4', + 'scap': '\u2AB8', + 'succapprox': '\u2AB8', + 'scaron': '\u0161', + 'scedil': '\u015F', + 'scirc': '\u015D', + 'scnE': '\u2AB6', + 'succneqq': '\u2AB6', + 'scnap': '\u2ABA', + 'succnapprox': '\u2ABA', + 'scnsim': '\u22E9', + 'succnsim': '\u22E9', + 'scpolint': '\u2A13', + 'scy': '\u0441', + 'sdot': '\u22C5', + 'sdote': '\u2A66', + 'seArr': '\u21D8', + 'sect': '\u00A7', + 'semi': '\u003B', + 'seswar': '\u2929', + 'tosa': '\u2929', + 'sext': '\u2736', + 'sfr': '\uD835\uDD30', + 'sharp': '\u266F', + 'shchcy': '\u0449', + 'shcy': '\u0448', + 'shy': '\u00AD', + 'sigma': '\u03C3', + 'sigmaf': '\u03C2', + 'sigmav': '\u03C2', + 'varsigma': '\u03C2', + 'simdot': '\u2A6A', + 'simg': '\u2A9E', + 'simgE': '\u2AA0', + 'siml': '\u2A9D', + 'simlE': '\u2A9F', + 'simne': '\u2246', + 'simplus': '\u2A24', + 'simrarr': '\u2972', + 'smashp': '\u2A33', + 'smeparsl': '\u29E4', + 'smile': '\u2323', + 'ssmile': '\u2323', + 'smt': '\u2AAA', + 'smte': '\u2AAC', + 'smtes': '\u2AAC\uFE00', + 'softcy': '\u044C', + 'sol': '\u002F', + 'solb': '\u29C4', + 'solbar': '\u233F', + 'sopf': '\uD835\uDD64', + 'spades': '\u2660', + 'spadesuit': '\u2660', + 'sqcaps': '\u2293\uFE00', + 'sqcups': '\u2294\uFE00', + 'sscr': '\uD835\uDCC8', + 'star': '\u2606', + 'sub': '\u2282', + 'subset': '\u2282', + 'subE': '\u2AC5', + 'subseteqq': '\u2AC5', + 'subdot': '\u2ABD', + 'subedot': '\u2AC3', + 'submult': '\u2AC1', + 'subnE': '\u2ACB', + 'subsetneqq': '\u2ACB', + 'subne': '\u228A', + 'subsetneq': '\u228A', + 'subplus': '\u2ABF', + 'subrarr': '\u2979', + 'subsim': '\u2AC7', + 'subsub': '\u2AD5', + 'subsup': '\u2AD3', + 'sung': '\u266A', + 'sup1': '\u00B9', + 'sup2': '\u00B2', + 'sup3': '\u00B3', + 'supE': '\u2AC6', + 'supseteqq': '\u2AC6', + 'supdot': '\u2ABE', + 'supdsub': '\u2AD8', + 'supedot': '\u2AC4', + 'suphsol': '\u27C9', + 'suphsub': '\u2AD7', + 'suplarr': '\u297B', + 'supmult': '\u2AC2', + 'supnE': '\u2ACC', + 'supsetneqq': '\u2ACC', + 'supne': '\u228B', + 'supsetneq': '\u228B', + 'supplus': '\u2AC0', + 'supsim': '\u2AC8', + 'supsub': '\u2AD4', + 'supsup': '\u2AD6', + 'swArr': '\u21D9', + 'swnwar': '\u292A', + 'szlig': '\u00DF', + 'target': '\u2316', + 'tau': '\u03C4', + 'tcaron': '\u0165', + 'tcedil': '\u0163', + 'tcy': '\u0442', + 'telrec': '\u2315', + 'tfr': '\uD835\uDD31', + 'theta': '\u03B8', + 'thetasym': '\u03D1', + 'thetav': '\u03D1', + 'vartheta': '\u03D1', + 'thorn': '\u00FE', + 'times': '\u00D7', + 'timesbar': '\u2A31', + 'timesd': '\u2A30', + 'topbot': '\u2336', + 'topcir': '\u2AF1', + 'topf': '\uD835\uDD65', + 'topfork': '\u2ADA', + 'tprime': '\u2034', + 'triangle': '\u25B5', + 'utri': '\u25B5', + 'triangleq': '\u225C', + 'trie': '\u225C', + 'tridot': '\u25EC', + 'triminus': '\u2A3A', + 'triplus': '\u2A39', + 'trisb': '\u29CD', + 'tritime': '\u2A3B', + 'trpezium': '\u23E2', + 'tscr': '\uD835\uDCC9', + 'tscy': '\u0446', + 'tshcy': '\u045B', + 'tstrok': '\u0167', + 'uHar': '\u2963', + 'uacute': '\u00FA', + 'ubrcy': '\u045E', + 'ubreve': '\u016D', + 'ucirc': '\u00FB', + 'ucy': '\u0443', + 'udblac': '\u0171', + 'ufisht': '\u297E', + 'ufr': '\uD835\uDD32', + 'ugrave': '\u00F9', + 'uhblk': '\u2580', + 'ulcorn': '\u231C', + 'ulcorner': '\u231C', + 'ulcrop': '\u230F', + 'ultri': '\u25F8', + 'umacr': '\u016B', + 'uogon': '\u0173', + 'uopf': '\uD835\uDD66', + 'upsi': '\u03C5', + 'upsilon': '\u03C5', + 'upuparrows': '\u21C8', + 'uuarr': '\u21C8', + 'urcorn': '\u231D', + 'urcorner': '\u231D', + 'urcrop': '\u230E', + 'uring': '\u016F', + 'urtri': '\u25F9', + 'uscr': '\uD835\uDCCA', + 'utdot': '\u22F0', + 'utilde': '\u0169', + 'uuml': '\u00FC', + 'uwangle': '\u29A7', + 'vBar': '\u2AE8', + 'vBarv': '\u2AE9', + 'vangrt': '\u299C', + 'varsubsetneq': '\u228A\uFE00', + 'vsubne': '\u228A\uFE00', + 'varsubsetneqq': '\u2ACB\uFE00', + 'vsubnE': '\u2ACB\uFE00', + 'varsupsetneq': '\u228B\uFE00', + 'vsupne': '\u228B\uFE00', + 'varsupsetneqq': '\u2ACC\uFE00', + 'vsupnE': '\u2ACC\uFE00', + 'vcy': '\u0432', + 'veebar': '\u22BB', + 'veeeq': '\u225A', + 'vellip': '\u22EE', + 'vfr': '\uD835\uDD33', + 'vopf': '\uD835\uDD67', + 'vscr': '\uD835\uDCCB', + 'vzigzag': '\u299A', + 'wcirc': '\u0175', + 'wedbar': '\u2A5F', + 'wedgeq': '\u2259', + 'weierp': '\u2118', + 'wp': '\u2118', + 'wfr': '\uD835\uDD34', + 'wopf': '\uD835\uDD68', + 'wscr': '\uD835\uDCCC', + 'xfr': '\uD835\uDD35', + 'xi': '\u03BE', + 'xnis': '\u22FB', + 'xopf': '\uD835\uDD69', + 'xscr': '\uD835\uDCCD', + 'yacute': '\u00FD', + 'yacy': '\u044F', + 'ycirc': '\u0177', + 'ycy': '\u044B', + 'yen': '\u00A5', + 'yfr': '\uD835\uDD36', + 'yicy': '\u0457', + 'yopf': '\uD835\uDD6A', + 'yscr': '\uD835\uDCCE', + 'yucy': '\u044E', + 'yuml': '\u00FF', + 'zacute': '\u017A', + 'zcaron': '\u017E', + 'zcy': '\u0437', + 'zdot': '\u017C', + 'zeta': '\u03B6', + 'zfr': '\uD835\uDD37', + 'zhcy': '\u0436', + 'zigrarr': '\u21DD', + 'zopf': '\uD835\uDD6B', + 'zscr': '\uD835\uDCCF', + 'zwj': '\u200D', + 'zwnj': '\u200C' +}; + + +// The &ngsp; pseudo-entity is denoting a space. see: +// https://github.com/dart-lang/angular/blob/0bb611387d29d65b5af7f9d2515ab571fd3fbee4/_tests/test/compiler/preserve_whitespace_test.dart +export const NGSP_UNICODE = '\uE500'; + +NAMED_ENTITIES['ngsp'] = NGSP_UNICODE; diff --git a/packages/compiler/src/ml_parser/html_parser.ts b/packages/compiler/src/ml_parser/html_parser.ts index 9a9d507545..5589d6d1c4 100644 --- a/packages/compiler/src/ml_parser/html_parser.ts +++ b/packages/compiler/src/ml_parser/html_parser.ts @@ -17,7 +17,7 @@ export class HtmlParser extends Parser { super(getHtmlTagDefinition); } - parse(source: string, url: string, options?: TokenizeOptions): ParseTreeResult { + override parse(source: string, url: string, options?: TokenizeOptions): ParseTreeResult { return super.parse(source, url, options); } } diff --git a/packages/compiler/src/ml_parser/html_whitespaces.ts b/packages/compiler/src/ml_parser/html_whitespaces.ts index 0bce9fa093..f416523476 100644 --- a/packages/compiler/src/ml_parser/html_whitespaces.ts +++ b/packages/compiler/src/ml_parser/html_whitespaces.ts @@ -7,8 +7,8 @@ */ import * as html from './ast'; +import {NGSP_UNICODE} from './entities'; import {ParseTreeResult} from './parser'; -import {NGSP_UNICODE} from './tags'; export const PRESERVE_WS_ATTR_NAME = 'ngPreserveWhitespaces'; diff --git a/packages/compiler/src/ml_parser/lexer.ts b/packages/compiler/src/ml_parser/lexer.ts index 6864d5a550..f0fb361232 100644 --- a/packages/compiler/src/ml_parser/lexer.ts +++ b/packages/compiler/src/ml_parser/lexer.ts @@ -8,9 +8,10 @@ import * as chars from '../chars'; import {ParseError, ParseLocation, ParseSourceFile, ParseSourceSpan} from '../parse_util'; +import {NAMED_ENTITIES} from './entities'; import {DEFAULT_INTERPOLATION_CONFIG, InterpolationConfig} from './interpolation_config'; -import {NAMED_ENTITIES, TagContentType, TagDefinition} from './tags'; +import {TagContentType, TagDefinition} from './tags'; export enum TokenType { TAG_OPEN_START, @@ -713,11 +714,15 @@ class _Tokenizer { } } while (!this._isTextEnd()); + // It is possible that an interpolation was started but not ended inside this text token. + // Make sure that we reset the state of the lexer correctly. + this._inInterpolation = false; + this._endToken([this._processCarriageReturns(parts.join(''))]); } private _isTextEnd(): boolean { - if (this._cursor.peek() === chars.$LT || this._cursor.peek() === chars.$EOF) { + if (this._isTagStart() || this._cursor.peek() === chars.$EOF) { return true; } @@ -736,6 +741,25 @@ class _Tokenizer { return false; } + /** + * Returns true if the current cursor is pointing to the start of a tag + * (opening/closing/comments/cdata/etc). + */ + private _isTagStart(): boolean { + if (this._cursor.peek() === chars.$LT) { + // We assume that `<` followed by whitespace is not the start of an HTML element. + const tmp = this._cursor.clone(); + tmp.advance(); + // If the next character is alphabetic, ! nor / then it is a tag start + const code = tmp.peek(); + if ((chars.$a <= code && code <= chars.$z) || (chars.$A <= code && code <= chars.$Z) || + code === chars.$SLASH || code === chars.$BANG) { + return true; + } + } + return false; + } + private _readUntil(char: number): string { const start = this._cursor.clone(); this._attemptUntilChar(char); @@ -983,22 +1007,22 @@ class EscapedCharacterCursor extends PlainCharacterCursor { } } - advance(): void { + override advance(): void { this.state = this.internalState; super.advance(); this.processEscapeSequence(); } - init(): void { + override init(): void { super.init(); this.processEscapeSequence(); } - clone(): EscapedCharacterCursor { + override clone(): EscapedCharacterCursor { return new EscapedCharacterCursor(this); } - getChars(start: this): string { + override getChars(start: this): string { const cursor = start.clone(); let chars = ''; while (cursor.internalState.offset < this.internalState.offset) { diff --git a/packages/compiler/src/ml_parser/parser.ts b/packages/compiler/src/ml_parser/parser.ts index 905c25d583..24465f8e97 100644 --- a/packages/compiler/src/ml_parser/parser.ts +++ b/packages/compiler/src/ml_parser/parser.ts @@ -313,6 +313,7 @@ class _TreeBuilder { * opening tag is recovered). */ private _popElement(fullName: string, endSourceSpan: ParseSourceSpan|null): boolean { + let unexpectedCloseTagDetected = false; for (let stackIndex = this._elementStack.length - 1; stackIndex >= 0; stackIndex--) { const el = this._elementStack[stackIndex]; if (el.name == fullName) { @@ -323,11 +324,14 @@ class _TreeBuilder { el.sourceSpan.end = endSourceSpan !== null ? endSourceSpan.end : el.sourceSpan.end; this._elementStack.splice(stackIndex, this._elementStack.length - stackIndex); - return true; + return !unexpectedCloseTagDetected; } if (!this.getTagDefinition(el.name).closedByParent) { - return false; + // Note that we encountered an unexpected close tag but continue processing the element + // stack so we can assign an `endSourceSpan` if there is a corresponding start tag for this + // end tag in the stack. + unexpectedCloseTagDetected = true; } } return false; diff --git a/packages/compiler/src/ml_parser/tags.ts b/packages/compiler/src/ml_parser/tags.ts index 8c2f4a65fc..19b95ec712 100644 --- a/packages/compiler/src/ml_parser/tags.ts +++ b/packages/compiler/src/ml_parser/tags.ts @@ -62,269 +62,3 @@ export function getNsPrefix(fullName: string|null): string|null { export function mergeNsAndName(prefix: string, localName: string): string { return prefix ? `:${prefix}:${localName}` : localName; } - -// see https://www.w3.org/TR/html51/syntax.html#named-character-references -// see https://html.spec.whatwg.org/multipage/entities.json -// This list is not exhaustive to keep the compiler footprint low. -// The `{` / `ƫ` syntax should be used when the named character reference does not -// exist. -export const NAMED_ENTITIES: {[k: string]: string} = { - 'Aacute': '\u00C1', - 'aacute': '\u00E1', - 'Acirc': '\u00C2', - 'acirc': '\u00E2', - 'acute': '\u00B4', - 'AElig': '\u00C6', - 'aelig': '\u00E6', - 'Agrave': '\u00C0', - 'agrave': '\u00E0', - 'alefsym': '\u2135', - 'Alpha': '\u0391', - 'alpha': '\u03B1', - 'amp': '&', - 'and': '\u2227', - 'ang': '\u2220', - 'apos': '\u0027', - 'Aring': '\u00C5', - 'aring': '\u00E5', - 'asymp': '\u2248', - 'Atilde': '\u00C3', - 'atilde': '\u00E3', - 'Auml': '\u00C4', - 'auml': '\u00E4', - 'bdquo': '\u201E', - 'Beta': '\u0392', - 'beta': '\u03B2', - 'brvbar': '\u00A6', - 'bull': '\u2022', - 'cap': '\u2229', - 'Ccedil': '\u00C7', - 'ccedil': '\u00E7', - 'cedil': '\u00B8', - 'cent': '\u00A2', - 'Chi': '\u03A7', - 'chi': '\u03C7', - 'circ': '\u02C6', - 'clubs': '\u2663', - 'cong': '\u2245', - 'copy': '\u00A9', - 'crarr': '\u21B5', - 'cup': '\u222A', - 'curren': '\u00A4', - 'dagger': '\u2020', - 'Dagger': '\u2021', - 'darr': '\u2193', - 'dArr': '\u21D3', - 'deg': '\u00B0', - 'Delta': '\u0394', - 'delta': '\u03B4', - 'diams': '\u2666', - 'divide': '\u00F7', - 'Eacute': '\u00C9', - 'eacute': '\u00E9', - 'Ecirc': '\u00CA', - 'ecirc': '\u00EA', - 'Egrave': '\u00C8', - 'egrave': '\u00E8', - 'empty': '\u2205', - 'emsp': '\u2003', - 'ensp': '\u2002', - 'Epsilon': '\u0395', - 'epsilon': '\u03B5', - 'equiv': '\u2261', - 'Eta': '\u0397', - 'eta': '\u03B7', - 'ETH': '\u00D0', - 'eth': '\u00F0', - 'Euml': '\u00CB', - 'euml': '\u00EB', - 'euro': '\u20AC', - 'exist': '\u2203', - 'fnof': '\u0192', - 'forall': '\u2200', - 'frac12': '\u00BD', - 'frac14': '\u00BC', - 'frac34': '\u00BE', - 'frasl': '\u2044', - 'Gamma': '\u0393', - 'gamma': '\u03B3', - 'ge': '\u2265', - 'gt': '>', - 'harr': '\u2194', - 'hArr': '\u21D4', - 'hearts': '\u2665', - 'hellip': '\u2026', - 'Iacute': '\u00CD', - 'iacute': '\u00ED', - 'Icirc': '\u00CE', - 'icirc': '\u00EE', - 'iexcl': '\u00A1', - 'Igrave': '\u00CC', - 'igrave': '\u00EC', - 'image': '\u2111', - 'infin': '\u221E', - 'int': '\u222B', - 'Iota': '\u0399', - 'iota': '\u03B9', - 'iquest': '\u00BF', - 'isin': '\u2208', - 'Iuml': '\u00CF', - 'iuml': '\u00EF', - 'Kappa': '\u039A', - 'kappa': '\u03BA', - 'Lambda': '\u039B', - 'lambda': '\u03BB', - 'lang': '\u27E8', - 'laquo': '\u00AB', - 'larr': '\u2190', - 'lArr': '\u21D0', - 'lceil': '\u2308', - 'ldquo': '\u201C', - 'le': '\u2264', - 'lfloor': '\u230A', - 'lowast': '\u2217', - 'loz': '\u25CA', - 'lrm': '\u200E', - 'lsaquo': '\u2039', - 'lsquo': '\u2018', - 'lt': '<', - 'macr': '\u00AF', - 'mdash': '\u2014', - 'micro': '\u00B5', - 'middot': '\u00B7', - 'minus': '\u2212', - 'Mu': '\u039C', - 'mu': '\u03BC', - 'nabla': '\u2207', - 'nbsp': '\u00A0', - 'ndash': '\u2013', - 'ne': '\u2260', - 'ni': '\u220B', - 'not': '\u00AC', - 'notin': '\u2209', - 'nsub': '\u2284', - 'Ntilde': '\u00D1', - 'ntilde': '\u00F1', - 'Nu': '\u039D', - 'nu': '\u03BD', - 'Oacute': '\u00D3', - 'oacute': '\u00F3', - 'Ocirc': '\u00D4', - 'ocirc': '\u00F4', - 'OElig': '\u0152', - 'oelig': '\u0153', - 'Ograve': '\u00D2', - 'ograve': '\u00F2', - 'oline': '\u203E', - 'Omega': '\u03A9', - 'omega': '\u03C9', - 'Omicron': '\u039F', - 'omicron': '\u03BF', - 'oplus': '\u2295', - 'or': '\u2228', - 'ordf': '\u00AA', - 'ordm': '\u00BA', - 'Oslash': '\u00D8', - 'oslash': '\u00F8', - 'Otilde': '\u00D5', - 'otilde': '\u00F5', - 'otimes': '\u2297', - 'Ouml': '\u00D6', - 'ouml': '\u00F6', - 'para': '\u00B6', - 'permil': '\u2030', - 'perp': '\u22A5', - 'Phi': '\u03A6', - 'phi': '\u03C6', - 'Pi': '\u03A0', - 'pi': '\u03C0', - 'piv': '\u03D6', - 'plusmn': '\u00B1', - 'pound': '\u00A3', - 'prime': '\u2032', - 'Prime': '\u2033', - 'prod': '\u220F', - 'prop': '\u221D', - 'Psi': '\u03A8', - 'psi': '\u03C8', - 'quot': '\u0022', - 'radic': '\u221A', - 'rang': '\u27E9', - 'raquo': '\u00BB', - 'rarr': '\u2192', - 'rArr': '\u21D2', - 'rceil': '\u2309', - 'rdquo': '\u201D', - 'real': '\u211C', - 'reg': '\u00AE', - 'rfloor': '\u230B', - 'Rho': '\u03A1', - 'rho': '\u03C1', - 'rlm': '\u200F', - 'rsaquo': '\u203A', - 'rsquo': '\u2019', - 'sbquo': '\u201A', - 'Scaron': '\u0160', - 'scaron': '\u0161', - 'sdot': '\u22C5', - 'sect': '\u00A7', - 'shy': '\u00AD', - 'Sigma': '\u03A3', - 'sigma': '\u03C3', - 'sigmaf': '\u03C2', - 'sim': '\u223C', - 'spades': '\u2660', - 'sub': '\u2282', - 'sube': '\u2286', - 'sum': '\u2211', - 'sup': '\u2283', - 'sup1': '\u00B9', - 'sup2': '\u00B2', - 'sup3': '\u00B3', - 'supe': '\u2287', - 'szlig': '\u00DF', - 'Tau': '\u03A4', - 'tau': '\u03C4', - 'there4': '\u2234', - 'Theta': '\u0398', - 'theta': '\u03B8', - 'thetasym': '\u03D1', - 'thinsp': '\u2009', - 'THORN': '\u00DE', - 'thorn': '\u00FE', - 'tilde': '\u02DC', - 'times': '\u00D7', - 'trade': '\u2122', - 'Uacute': '\u00DA', - 'uacute': '\u00FA', - 'uarr': '\u2191', - 'uArr': '\u21D1', - 'Ucirc': '\u00DB', - 'ucirc': '\u00FB', - 'Ugrave': '\u00D9', - 'ugrave': '\u00F9', - 'uml': '\u00A8', - 'upsih': '\u03D2', - 'Upsilon': '\u03A5', - 'upsilon': '\u03C5', - 'Uuml': '\u00DC', - 'uuml': '\u00FC', - 'weierp': '\u2118', - 'Xi': '\u039E', - 'xi': '\u03BE', - 'Yacute': '\u00DD', - 'yacute': '\u00FD', - 'yen': '\u00A5', - 'yuml': '\u00FF', - 'Yuml': '\u0178', - 'Zeta': '\u0396', - 'zeta': '\u03B6', - 'zwj': '\u200D', - 'zwnj': '\u200C', -}; - -// The &ngsp; pseudo-entity is denoting a space. see: -// https://github.com/dart-lang/angular/blob/0bb611387d29d65b5af7f9d2515ab571fd3fbee4/_tests/test/compiler/preserve_whitespace_test.dart -export const NGSP_UNICODE = '\uE500'; - -NAMED_ENTITIES['ngsp'] = NGSP_UNICODE; diff --git a/packages/compiler/src/ml_parser/xml_parser.ts b/packages/compiler/src/ml_parser/xml_parser.ts index d87ac19ee2..78f40ab727 100644 --- a/packages/compiler/src/ml_parser/xml_parser.ts +++ b/packages/compiler/src/ml_parser/xml_parser.ts @@ -17,7 +17,7 @@ export class XmlParser extends Parser { super(getXmlTagDefinition); } - parse(source: string, url: string, options?: TokenizeOptions): ParseTreeResult { + override parse(source: string, url: string, options?: TokenizeOptions): ParseTreeResult { return super.parse(source, url, options); } } diff --git a/packages/compiler/src/output/abstract_emitter.ts b/packages/compiler/src/output/abstract_emitter.ts index 388cb3e8aa..727c276c73 100644 --- a/packages/compiler/src/output/abstract_emitter.ts +++ b/packages/compiler/src/output/abstract_emitter.ts @@ -510,6 +510,9 @@ export abstract class AbstractEmitterVisitor implements o.StatementVisitor, o.Ex case o.BinaryOperator.BiggerEquals: opStr = '>='; break; + case o.BinaryOperator.NullishCoalesce: + opStr = '??'; + break; default: throw new Error(`Unknown operator ${ast.operator}`); } diff --git a/packages/compiler/src/output/abstract_js_emitter.ts b/packages/compiler/src/output/abstract_js_emitter.ts index b0054f02db..953ad11186 100644 --- a/packages/compiler/src/output/abstract_js_emitter.ts +++ b/packages/compiler/src/output/abstract_js_emitter.ts @@ -29,7 +29,7 @@ export abstract class AbstractJsEmitterVisitor extends AbstractEmitterVisitor { constructor() { super(false); } - visitDeclareClassStmt(stmt: o.ClassStmt, ctx: EmitterVisitorContext): any { + override visitDeclareClassStmt(stmt: o.ClassStmt, ctx: EmitterVisitorContext): any { ctx.pushClass(stmt); this._visitClassConstructor(stmt, ctx); @@ -87,11 +87,11 @@ export abstract class AbstractJsEmitterVisitor extends AbstractEmitterVisitor { ctx.println(stmt, `};`); } - visitWrappedNodeExpr(ast: o.WrappedNodeExpr, ctx: EmitterVisitorContext): any { + override visitWrappedNodeExpr(ast: o.WrappedNodeExpr, ctx: EmitterVisitorContext): any { throw new Error('Cannot emit a WrappedNodeExpr in Javascript.'); } - visitReadVarExpr(ast: o.ReadVarExpr, ctx: EmitterVisitorContext): string|null { + override visitReadVarExpr(ast: o.ReadVarExpr, ctx: EmitterVisitorContext): string|null { if (ast.builtin === o.BuiltinVar.This) { ctx.print(ast, 'self'); } else if (ast.builtin === o.BuiltinVar.Super) { @@ -102,7 +102,7 @@ export abstract class AbstractJsEmitterVisitor extends AbstractEmitterVisitor { } return null; } - visitDeclareVarStmt(stmt: o.DeclareVarStmt, ctx: EmitterVisitorContext): any { + override visitDeclareVarStmt(stmt: o.DeclareVarStmt, ctx: EmitterVisitorContext): any { ctx.print(stmt, `var ${stmt.name}`); if (stmt.value) { ctx.print(stmt, ' = '); @@ -111,11 +111,12 @@ export abstract class AbstractJsEmitterVisitor extends AbstractEmitterVisitor { ctx.println(stmt, `;`); return null; } - visitCastExpr(ast: o.CastExpr, ctx: EmitterVisitorContext): any { + override visitCastExpr(ast: o.CastExpr, ctx: EmitterVisitorContext): any { ast.value.visitExpression(this, ctx); return null; } - visitInvokeFunctionExpr(expr: o.InvokeFunctionExpr, ctx: EmitterVisitorContext): string|null { + override visitInvokeFunctionExpr(expr: o.InvokeFunctionExpr, ctx: EmitterVisitorContext): string + |null { const fnExpr = expr.fn; if (fnExpr instanceof o.ReadVarExpr && fnExpr.builtin === o.BuiltinVar.Super) { ctx.currentClass!.parent!.visitExpression(this, ctx); @@ -130,7 +131,7 @@ export abstract class AbstractJsEmitterVisitor extends AbstractEmitterVisitor { } return null; } - visitTaggedTemplateExpr(ast: o.TaggedTemplateExpr, ctx: EmitterVisitorContext): any { + override visitTaggedTemplateExpr(ast: o.TaggedTemplateExpr, ctx: EmitterVisitorContext): any { // The following convoluted piece of code is effectively the downlevelled equivalent of // ``` // tag`...` @@ -151,7 +152,7 @@ export abstract class AbstractJsEmitterVisitor extends AbstractEmitterVisitor { ctx.print(ast, ')'); return null; } - visitFunctionExpr(ast: o.FunctionExpr, ctx: EmitterVisitorContext): any { + override visitFunctionExpr(ast: o.FunctionExpr, ctx: EmitterVisitorContext): any { ctx.print(ast, `function${ast.name ? ' ' + ast.name : ''}(`); this._visitParams(ast.params, ctx); ctx.println(ast, `) {`); @@ -161,7 +162,7 @@ export abstract class AbstractJsEmitterVisitor extends AbstractEmitterVisitor { ctx.print(ast, `}`); return null; } - visitDeclareFunctionStmt(stmt: o.DeclareFunctionStmt, ctx: EmitterVisitorContext): any { + override visitDeclareFunctionStmt(stmt: o.DeclareFunctionStmt, ctx: EmitterVisitorContext): any { ctx.print(stmt, `function ${stmt.name}(`); this._visitParams(stmt.params, ctx); ctx.println(stmt, `) {`); @@ -171,7 +172,7 @@ export abstract class AbstractJsEmitterVisitor extends AbstractEmitterVisitor { ctx.println(stmt, `}`); return null; } - visitTryCatchStmt(stmt: o.TryCatchStmt, ctx: EmitterVisitorContext): any { + override visitTryCatchStmt(stmt: o.TryCatchStmt, ctx: EmitterVisitorContext): any { ctx.println(stmt, `try {`); ctx.incIndent(); this.visitAllStatements(stmt.bodyStmts, ctx); @@ -188,7 +189,7 @@ export abstract class AbstractJsEmitterVisitor extends AbstractEmitterVisitor { return null; } - visitLocalizedString(ast: o.LocalizedString, ctx: EmitterVisitorContext): any { + override visitLocalizedString(ast: o.LocalizedString, ctx: EmitterVisitorContext): any { // The following convoluted piece of code is effectively the downlevelled equivalent of // ``` // $localize `...` @@ -216,7 +217,7 @@ export abstract class AbstractJsEmitterVisitor extends AbstractEmitterVisitor { this.visitAllObjects(param => ctx.print(null, param.name), params, ctx, ','); } - getBuiltinMethodName(method: o.BuiltinMethod): string { + override getBuiltinMethodName(method: o.BuiltinMethod): string { let name: string; switch (method) { case o.BuiltinMethod.ConcatArray: diff --git a/packages/compiler/src/output/js_emitter.ts b/packages/compiler/src/output/js_emitter.ts index 130a22251f..1091dd1d3f 100644 --- a/packages/compiler/src/output/js_emitter.ts +++ b/packages/compiler/src/output/js_emitter.ts @@ -41,7 +41,7 @@ export class JavaScriptEmitter implements OutputEmitter { class JsEmitterVisitor extends AbstractJsEmitterVisitor { importsWithPrefixes = new Map(); - visitExternalExpr(ast: o.ExternalExpr, ctx: EmitterVisitorContext): any { + override visitExternalExpr(ast: o.ExternalExpr, ctx: EmitterVisitorContext): any { const {name, moduleName} = ast.value; if (moduleName) { let prefix = this.importsWithPrefixes.get(moduleName); @@ -54,21 +54,21 @@ class JsEmitterVisitor extends AbstractJsEmitterVisitor { ctx.print(ast, name!); return null; } - visitDeclareVarStmt(stmt: o.DeclareVarStmt, ctx: EmitterVisitorContext): any { + override visitDeclareVarStmt(stmt: o.DeclareVarStmt, ctx: EmitterVisitorContext): any { super.visitDeclareVarStmt(stmt, ctx); if (stmt.hasModifier(o.StmtModifier.Exported)) { ctx.println(stmt, exportVar(stmt.name)); } return null; } - visitDeclareFunctionStmt(stmt: o.DeclareFunctionStmt, ctx: EmitterVisitorContext): any { + override visitDeclareFunctionStmt(stmt: o.DeclareFunctionStmt, ctx: EmitterVisitorContext): any { super.visitDeclareFunctionStmt(stmt, ctx); if (stmt.hasModifier(o.StmtModifier.Exported)) { ctx.println(stmt, exportVar(stmt.name)); } return null; } - visitDeclareClassStmt(stmt: o.ClassStmt, ctx: EmitterVisitorContext): any { + override visitDeclareClassStmt(stmt: o.ClassStmt, ctx: EmitterVisitorContext): any { super.visitDeclareClassStmt(stmt, ctx); if (stmt.hasModifier(o.StmtModifier.Exported)) { ctx.println(stmt, exportVar(stmt.name)); diff --git a/packages/compiler/src/output/output_ast.ts b/packages/compiler/src/output/output_ast.ts index bf14072310..ae511e6e54 100644 --- a/packages/compiler/src/output/output_ast.ts +++ b/packages/compiler/src/output/output_ast.ts @@ -39,7 +39,7 @@ export class BuiltinType extends Type { constructor(public name: BuiltinTypeName, modifiers?: TypeModifier[]) { super(modifiers); } - visitType(visitor: TypeVisitor, context: any): any { + override visitType(visitor: TypeVisitor, context: any): any { return visitor.visitBuiltinType(this, context); } } @@ -49,7 +49,7 @@ export class ExpressionType extends Type { public value: Expression, modifiers?: TypeModifier[], public typeParams: Type[]|null = null) { super(modifiers); } - visitType(visitor: TypeVisitor, context: any): any { + override visitType(visitor: TypeVisitor, context: any): any { return visitor.visitExpressionType(this, context); } } @@ -59,7 +59,7 @@ export class ArrayType extends Type { constructor(public of: Type, modifiers?: TypeModifier[]) { super(modifiers); } - visitType(visitor: TypeVisitor, context: any): any { + override visitType(visitor: TypeVisitor, context: any): any { return visitor.visitArrayType(this, context); } } @@ -71,7 +71,7 @@ export class MapType extends Type { super(modifiers); this.valueType = valueType || null; } - visitType(visitor: TypeVisitor, context: any): any { + override visitType(visitor: TypeVisitor, context: any): any { return visitor.visitMapType(this, context); } } @@ -115,7 +115,8 @@ export enum BinaryOperator { Lower, LowerEquals, Bigger, - BiggerEquals + BiggerEquals, + NullishCoalesce, } export function nullSafeIsEquivalent( @@ -254,6 +255,9 @@ export abstract class Expression { cast(type: Type, sourceSpan?: ParseSourceSpan|null): Expression { return new CastExpr(this, type, sourceSpan); } + nullishCoalesce(rhs: Expression, sourceSpan?: ParseSourceSpan|null): BinaryOperatorExpr { + return new BinaryOperatorExpr(BinaryOperator.NullishCoalesce, this, rhs, null, sourceSpan); + } toStmt(): Statement { return new ExpressionStatement(this, null); @@ -282,15 +286,15 @@ export class ReadVarExpr extends Expression { } } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof ReadVarExpr && this.name === e.name && this.builtin === e.builtin; } - isConstant() { + override isConstant() { return false; } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitReadVarExpr(this, context); } @@ -307,15 +311,15 @@ export class TypeofExpr extends Expression { super(type, sourceSpan); } - visitExpression(visitor: ExpressionVisitor, context: any) { + override visitExpression(visitor: ExpressionVisitor, context: any) { return visitor.visitTypeofExpr(this, context); } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof TypeofExpr && e.expr.isEquivalent(this.expr); } - isConstant(): boolean { + override isConstant(): boolean { return this.expr.isConstant(); } } @@ -325,15 +329,15 @@ export class WrappedNodeExpr extends Expression { super(type, sourceSpan); } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof WrappedNodeExpr && this.node === e.node; } - isConstant() { + override isConstant() { return false; } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitWrappedNodeExpr(this, context); } } @@ -346,15 +350,15 @@ export class WriteVarExpr extends Expression { this.value = value; } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof WriteVarExpr && this.name === e.name && this.value.isEquivalent(e.value); } - isConstant() { + override isConstant() { return false; } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitWriteVarExpr(this, context); } @@ -377,16 +381,16 @@ export class WriteKeyExpr extends Expression { this.value = value; } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof WriteKeyExpr && this.receiver.isEquivalent(e.receiver) && this.index.isEquivalent(e.index) && this.value.isEquivalent(e.value); } - isConstant() { + override isConstant() { return false; } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitWriteKeyExpr(this, context); } } @@ -401,16 +405,16 @@ export class WritePropExpr extends Expression { this.value = value; } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof WritePropExpr && this.receiver.isEquivalent(e.receiver) && this.name === e.name && this.value.isEquivalent(e.value); } - isConstant() { + override isConstant() { return false; } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitWritePropExpr(this, context); } } @@ -437,16 +441,16 @@ export class InvokeMethodExpr extends Expression { } } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof InvokeMethodExpr && this.receiver.isEquivalent(e.receiver) && this.name === e.name && this.builtin === e.builtin && areAllEquivalent(this.args, e.args); } - isConstant() { + override isConstant() { return false; } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitInvokeMethodExpr(this, context); } } @@ -459,16 +463,16 @@ export class InvokeFunctionExpr extends Expression { super(type, sourceSpan); } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof InvokeFunctionExpr && this.fn.isEquivalent(e.fn) && areAllEquivalent(this.args, e.args) && this.pure === e.pure; } - isConstant() { + override isConstant() { return false; } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitInvokeFunctionExpr(this, context); } } @@ -481,18 +485,18 @@ export class TaggedTemplateExpr extends Expression { super(type, sourceSpan); } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof TaggedTemplateExpr && this.tag.isEquivalent(e.tag) && areAllEquivalentPredicate( this.template.elements, e.template.elements, (a, b) => a.text === b.text) && areAllEquivalent(this.template.expressions, e.template.expressions); } - isConstant() { + override isConstant() { return false; } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitTaggedTemplateExpr(this, context); } } @@ -505,16 +509,16 @@ export class InstantiateExpr extends Expression { super(type, sourceSpan); } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof InstantiateExpr && this.classExpr.isEquivalent(e.classExpr) && areAllEquivalent(this.args, e.args); } - isConstant() { + override isConstant() { return false; } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitInstantiateExpr(this, context); } } @@ -527,15 +531,15 @@ export class LiteralExpr extends Expression { super(type, sourceSpan); } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof LiteralExpr && this.value === e.value; } - isConstant() { + override isConstant() { return true; } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitLiteralExpr(this, context); } } @@ -571,16 +575,16 @@ export class LocalizedString extends Expression { super(STRING_TYPE, sourceSpan); } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { // return e instanceof LocalizedString && this.message === e.message; return false; } - isConstant() { + override isConstant() { return false; } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitLocalizedString(this, context); } @@ -692,16 +696,16 @@ export class ExternalExpr extends Expression { super(type, sourceSpan); } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof ExternalExpr && this.value.name === e.value.name && this.value.moduleName === e.value.moduleName && this.value.runtime === e.value.runtime; } - isConstant() { + override isConstant() { return false; } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitExternalExpr(this, context); } } @@ -722,16 +726,16 @@ export class ConditionalExpr extends Expression { this.trueCase = trueCase; } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof ConditionalExpr && this.condition.isEquivalent(e.condition) && this.trueCase.isEquivalent(e.trueCase) && nullSafeIsEquivalent(this.falseCase, e.falseCase); } - isConstant() { + override isConstant() { return false; } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitConditionalExpr(this, context); } } @@ -742,15 +746,15 @@ export class NotExpr extends Expression { super(BOOL_TYPE, sourceSpan); } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof NotExpr && this.condition.isEquivalent(e.condition); } - isConstant() { + override isConstant() { return false; } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitNotExpr(this, context); } } @@ -760,15 +764,15 @@ export class AssertNotNull extends Expression { super(condition.type, sourceSpan); } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof AssertNotNull && this.condition.isEquivalent(e.condition); } - isConstant() { + override isConstant() { return false; } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitAssertNotNullExpr(this, context); } } @@ -778,15 +782,15 @@ export class CastExpr extends Expression { super(type, sourceSpan); } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof CastExpr && this.value.isEquivalent(e.value); } - isConstant() { + override isConstant() { return false; } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitCastExpr(this, context); } } @@ -808,16 +812,16 @@ export class FunctionExpr extends Expression { super(type, sourceSpan); } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof FunctionExpr && areAllEquivalent(this.params, e.params) && areAllEquivalent(this.statements, e.statements); } - isConstant() { + override isConstant() { return false; } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitFunctionExpr(this, context); } @@ -835,16 +839,16 @@ export class UnaryOperatorExpr extends Expression { super(type || NUMBER_TYPE, sourceSpan); } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof UnaryOperatorExpr && this.operator === e.operator && this.expr.isEquivalent(e.expr); } - isConstant() { + override isConstant() { return false; } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitUnaryOperatorExpr(this, context); } } @@ -859,16 +863,16 @@ export class BinaryOperatorExpr extends Expression { this.lhs = lhs; } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof BinaryOperatorExpr && this.operator === e.operator && this.lhs.isEquivalent(e.lhs) && this.rhs.isEquivalent(e.rhs); } - isConstant() { + override isConstant() { return false; } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitBinaryOperatorExpr(this, context); } } @@ -881,16 +885,16 @@ export class ReadPropExpr extends Expression { super(type, sourceSpan); } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof ReadPropExpr && this.receiver.isEquivalent(e.receiver) && this.name === e.name; } - isConstant() { + override isConstant() { return false; } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitReadPropExpr(this, context); } @@ -907,16 +911,16 @@ export class ReadKeyExpr extends Expression { super(type, sourceSpan); } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof ReadKeyExpr && this.receiver.isEquivalent(e.receiver) && this.index.isEquivalent(e.index); } - isConstant() { + override isConstant() { return false; } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitReadKeyExpr(this, context); } @@ -933,14 +937,14 @@ export class LiteralArrayExpr extends Expression { this.entries = entries; } - isConstant() { + override isConstant() { return this.entries.every(e => e.isConstant()); } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof LiteralArrayExpr && areAllEquivalent(this.entries, e.entries); } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitLiteralArrayExpr(this, context); } } @@ -962,15 +966,15 @@ export class LiteralMapExpr extends Expression { } } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof LiteralMapExpr && areAllEquivalent(this.entries, e.entries); } - isConstant() { + override isConstant() { return this.entries.every(e => e.value.isConstant()); } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitLiteralMapExpr(this, context); } } @@ -980,15 +984,15 @@ export class CommaExpr extends Expression { super(parts[parts.length - 1].type, sourceSpan); } - isEquivalent(e: Expression): boolean { + override isEquivalent(e: Expression): boolean { return e instanceof CommaExpr && areAllEquivalent(this.parts, e.parts); } - isConstant() { + override isConstant() { return false; } - visitExpression(visitor: ExpressionVisitor, context: any): any { + override visitExpression(visitor: ExpressionVisitor, context: any): any { return visitor.visitCommaExpr(this, context); } } @@ -1046,7 +1050,7 @@ export class JSDocComment extends LeadingComment { constructor(public tags: JSDocTag[]) { super('', /* multiline */ true, /* trailingNewline */ true); } - toString(): string { + override toString(): string { return serializeTags(this.tags); } } @@ -1082,11 +1086,11 @@ export class DeclareVarStmt extends Statement { super(modifiers, sourceSpan, leadingComments); this.type = type || (value && value.type) || null; } - isEquivalent(stmt: Statement): boolean { + override isEquivalent(stmt: Statement): boolean { return stmt instanceof DeclareVarStmt && this.name === stmt.name && (this.value ? !!stmt.value && this.value.isEquivalent(stmt.value) : !stmt.value); } - visitStatement(visitor: StatementVisitor, context: any): any { + override visitStatement(visitor: StatementVisitor, context: any): any { return visitor.visitDeclareVarStmt(this, context); } } @@ -1100,11 +1104,11 @@ export class DeclareFunctionStmt extends Statement { super(modifiers, sourceSpan, leadingComments); this.type = type || null; } - isEquivalent(stmt: Statement): boolean { + override isEquivalent(stmt: Statement): boolean { return stmt instanceof DeclareFunctionStmt && areAllEquivalent(this.params, stmt.params) && areAllEquivalent(this.statements, stmt.statements); } - visitStatement(visitor: StatementVisitor, context: any): any { + override visitStatement(visitor: StatementVisitor, context: any): any { return visitor.visitDeclareFunctionStmt(this, context); } } @@ -1115,10 +1119,10 @@ export class ExpressionStatement extends Statement { leadingComments?: LeadingComment[]) { super([], sourceSpan, leadingComments); } - isEquivalent(stmt: Statement): boolean { + override isEquivalent(stmt: Statement): boolean { return stmt instanceof ExpressionStatement && this.expr.isEquivalent(stmt.expr); } - visitStatement(visitor: StatementVisitor, context: any): any { + override visitStatement(visitor: StatementVisitor, context: any): any { return visitor.visitExpressionStmt(this, context); } } @@ -1130,10 +1134,10 @@ export class ReturnStatement extends Statement { leadingComments?: LeadingComment[]) { super([], sourceSpan, leadingComments); } - isEquivalent(stmt: Statement): boolean { + override isEquivalent(stmt: Statement): boolean { return stmt instanceof ReturnStatement && this.value.isEquivalent(stmt.value); } - visitStatement(visitor: StatementVisitor, context: any): any { + override visitStatement(visitor: StatementVisitor, context: any): any { return visitor.visitReturnStmt(this, context); } } @@ -1188,7 +1192,7 @@ export class ClassStmt extends Statement { leadingComments?: LeadingComment[]) { super(modifiers, sourceSpan, leadingComments); } - isEquivalent(stmt: Statement): boolean { + override isEquivalent(stmt: Statement): boolean { return stmt instanceof ClassStmt && this.name === stmt.name && nullSafeIsEquivalent(this.parent, stmt.parent) && areAllEquivalent(this.fields, stmt.fields) && @@ -1196,7 +1200,7 @@ export class ClassStmt extends Statement { this.constructorMethod.isEquivalent(stmt.constructorMethod) && areAllEquivalent(this.methods, stmt.methods); } - visitStatement(visitor: StatementVisitor, context: any): any { + override visitStatement(visitor: StatementVisitor, context: any): any { return visitor.visitDeclareClassStmt(this, context); } } @@ -1209,12 +1213,12 @@ export class IfStmt extends Statement { leadingComments?: LeadingComment[]) { super([], sourceSpan, leadingComments); } - isEquivalent(stmt: Statement): boolean { + override isEquivalent(stmt: Statement): boolean { return stmt instanceof IfStmt && this.condition.isEquivalent(stmt.condition) && areAllEquivalent(this.trueCase, stmt.trueCase) && areAllEquivalent(this.falseCase, stmt.falseCase); } - visitStatement(visitor: StatementVisitor, context: any): any { + override visitStatement(visitor: StatementVisitor, context: any): any { return visitor.visitIfStmt(this, context); } } @@ -1225,11 +1229,11 @@ export class TryCatchStmt extends Statement { sourceSpan: ParseSourceSpan|null = null, leadingComments?: LeadingComment[]) { super([], sourceSpan, leadingComments); } - isEquivalent(stmt: Statement): boolean { + override isEquivalent(stmt: Statement): boolean { return stmt instanceof TryCatchStmt && areAllEquivalent(this.bodyStmts, stmt.bodyStmts) && areAllEquivalent(this.catchStmts, stmt.catchStmts); } - visitStatement(visitor: StatementVisitor, context: any): any { + override visitStatement(visitor: StatementVisitor, context: any): any { return visitor.visitTryCatchStmt(this, context); } } @@ -1241,10 +1245,10 @@ export class ThrowStmt extends Statement { leadingComments?: LeadingComment[]) { super([], sourceSpan, leadingComments); } - isEquivalent(stmt: ThrowStmt): boolean { + override isEquivalent(stmt: ThrowStmt): boolean { return stmt instanceof TryCatchStmt && this.error.isEquivalent(stmt.error); } - visitStatement(visitor: StatementVisitor, context: any): any { + override visitStatement(visitor: StatementVisitor, context: any): any { return visitor.visitThrowStmt(this, context); } } @@ -1722,15 +1726,15 @@ export function findReadVarNames(stmts: Statement[]): Set { class _ReadVarVisitor extends RecursiveAstVisitor { varNames = new Set(); - visitDeclareFunctionStmt(stmt: DeclareFunctionStmt, context: any): any { + override visitDeclareFunctionStmt(stmt: DeclareFunctionStmt, context: any): any { // Don't descend into nested functions return stmt; } - visitDeclareClassStmt(stmt: ClassStmt, context: any): any { + override visitDeclareClassStmt(stmt: ClassStmt, context: any): any { // Don't descend into nested classes return stmt; } - visitReadVarExpr(ast: ReadVarExpr, context: any): any { + override visitReadVarExpr(ast: ReadVarExpr, context: any): any { if (ast.name) { this.varNames.add(ast.name); } @@ -1746,7 +1750,7 @@ export function collectExternalReferences(stmts: Statement[]): ExternalReference class _FindExternalReferencesVisitor extends RecursiveAstVisitor { externalReferences: ExternalReference[] = []; - visitExternalExpr(e: ExternalExpr, context: any) { + override visitExternalExpr(e: ExternalExpr, context: any) { this.externalReferences.push(e.value); return super.visitExternalExpr(e, context); } @@ -1782,7 +1786,7 @@ class _ApplySourceSpanTransformer extends AstTransformer { return clone; } - transformExpr(expr: Expression, context: any): Expression { + override transformExpr(expr: Expression, context: any): Expression { if (!expr.sourceSpan) { expr = this._clone(expr); expr.sourceSpan = this.sourceSpan; @@ -1790,7 +1794,7 @@ class _ApplySourceSpanTransformer extends AstTransformer { return expr; } - transformStmt(stmt: Statement, context: any): Statement { + override transformStmt(stmt: Statement, context: any): Statement { if (!stmt.sourceSpan) { stmt = this._clone(stmt); stmt.sourceSpan = this.sourceSpan; diff --git a/packages/compiler/src/output/output_interpreter.ts b/packages/compiler/src/output/output_interpreter.ts index 22d7dbec83..cfcbc43c91 100644 --- a/packages/compiler/src/output/output_interpreter.ts +++ b/packages/compiler/src/output/output_interpreter.ts @@ -332,6 +332,8 @@ class StatementInterpreter implements o.StatementVisitor, o.ExpressionVisitor { return lhs() > rhs(); case o.BinaryOperator.BiggerEquals: return lhs() >= rhs(); + case o.BinaryOperator.NullishCoalesce: + return lhs() ?? rhs(); default: throw new Error(`Unknown operator ${ast.operator}`); } diff --git a/packages/compiler/src/output/output_jit.ts b/packages/compiler/src/output/output_jit.ts index d672098bca..95ec8cc940 100644 --- a/packages/compiler/src/output/output_jit.ts +++ b/packages/compiler/src/output/output_jit.ts @@ -119,31 +119,31 @@ export class JitEmitterVisitor extends AbstractJsEmitterVisitor { return result; } - visitExternalExpr(ast: o.ExternalExpr, ctx: EmitterVisitorContext): any { + override visitExternalExpr(ast: o.ExternalExpr, ctx: EmitterVisitorContext): any { this._emitReferenceToExternal(ast, this.reflector.resolveExternalReference(ast.value), ctx); return null; } - visitWrappedNodeExpr(ast: o.WrappedNodeExpr, ctx: EmitterVisitorContext): any { + override visitWrappedNodeExpr(ast: o.WrappedNodeExpr, ctx: EmitterVisitorContext): any { this._emitReferenceToExternal(ast, ast.node, ctx); return null; } - visitDeclareVarStmt(stmt: o.DeclareVarStmt, ctx: EmitterVisitorContext): any { + override visitDeclareVarStmt(stmt: o.DeclareVarStmt, ctx: EmitterVisitorContext): any { if (stmt.hasModifier(o.StmtModifier.Exported)) { this._evalExportedVars.push(stmt.name); } return super.visitDeclareVarStmt(stmt, ctx); } - visitDeclareFunctionStmt(stmt: o.DeclareFunctionStmt, ctx: EmitterVisitorContext): any { + override visitDeclareFunctionStmt(stmt: o.DeclareFunctionStmt, ctx: EmitterVisitorContext): any { if (stmt.hasModifier(o.StmtModifier.Exported)) { this._evalExportedVars.push(stmt.name); } return super.visitDeclareFunctionStmt(stmt, ctx); } - visitDeclareClassStmt(stmt: o.ClassStmt, ctx: EmitterVisitorContext): any { + override visitDeclareClassStmt(stmt: o.ClassStmt, ctx: EmitterVisitorContext): any { if (stmt.hasModifier(o.StmtModifier.Exported)) { this._evalExportedVars.push(stmt.name); } diff --git a/packages/compiler/src/output/ts_emitter.ts b/packages/compiler/src/output/ts_emitter.ts index 968e0ea42f..27ff79035e 100644 --- a/packages/compiler/src/output/ts_emitter.ts +++ b/packages/compiler/src/output/ts_emitter.ts @@ -93,7 +93,7 @@ class _TsEmitterVisitor extends AbstractEmitterVisitor implements o.TypeVisitor } } - visitLiteralExpr(ast: o.LiteralExpr, ctx: EmitterVisitorContext): any { + override visitLiteralExpr(ast: o.LiteralExpr, ctx: EmitterVisitorContext): any { const value = ast.value; if (value == null && ast.type != o.INFERRED_TYPE) { ctx.print(ast, `(${value} as any)`); @@ -107,7 +107,7 @@ class _TsEmitterVisitor extends AbstractEmitterVisitor implements o.TypeVisitor // In SNC mode, [] have the type never[], so we cast here to any[]. // TODO: narrow the cast to a more explicit type, or use a pattern that does not // start with [].concat. see https://github.com/angular/angular/pull/11846 - visitLiteralArrayExpr(ast: o.LiteralArrayExpr, ctx: EmitterVisitorContext): any { + override visitLiteralArrayExpr(ast: o.LiteralArrayExpr, ctx: EmitterVisitorContext): any { if (ast.entries.length === 0) { ctx.print(ast, '('); } @@ -118,18 +118,18 @@ class _TsEmitterVisitor extends AbstractEmitterVisitor implements o.TypeVisitor return result; } - visitExternalExpr(ast: o.ExternalExpr, ctx: EmitterVisitorContext): any { + override visitExternalExpr(ast: o.ExternalExpr, ctx: EmitterVisitorContext): any { this._visitIdentifier(ast.value, ast.typeParams, ctx); return null; } - visitAssertNotNullExpr(ast: o.AssertNotNull, ctx: EmitterVisitorContext): any { + override visitAssertNotNullExpr(ast: o.AssertNotNull, ctx: EmitterVisitorContext): any { const result = super.visitAssertNotNullExpr(ast, ctx); ctx.print(ast, '!'); return result; } - visitDeclareVarStmt(stmt: o.DeclareVarStmt, ctx: EmitterVisitorContext): any { + override visitDeclareVarStmt(stmt: o.DeclareVarStmt, ctx: EmitterVisitorContext): any { if (stmt.hasModifier(o.StmtModifier.Exported) && stmt.value instanceof o.ExternalExpr && !stmt.type) { // check for a reexport @@ -162,11 +162,11 @@ class _TsEmitterVisitor extends AbstractEmitterVisitor implements o.TypeVisitor return null; } - visitWrappedNodeExpr(ast: o.WrappedNodeExpr, ctx: EmitterVisitorContext): never { + override visitWrappedNodeExpr(ast: o.WrappedNodeExpr, ctx: EmitterVisitorContext): never { throw new Error('Cannot visit a WrappedNodeExpr when outputting Typescript.'); } - visitCastExpr(ast: o.CastExpr, ctx: EmitterVisitorContext): any { + override visitCastExpr(ast: o.CastExpr, ctx: EmitterVisitorContext): any { ctx.print(ast, `(<`); ast.type!.visitType(this, ctx); ctx.print(ast, `>`); @@ -175,7 +175,7 @@ class _TsEmitterVisitor extends AbstractEmitterVisitor implements o.TypeVisitor return null; } - visitInstantiateExpr(ast: o.InstantiateExpr, ctx: EmitterVisitorContext): any { + override visitInstantiateExpr(ast: o.InstantiateExpr, ctx: EmitterVisitorContext): any { ctx.print(ast, `new `); this.typeExpression++; ast.classExpr.visitExpression(this, ctx); @@ -186,7 +186,7 @@ class _TsEmitterVisitor extends AbstractEmitterVisitor implements o.TypeVisitor return null; } - visitDeclareClassStmt(stmt: o.ClassStmt, ctx: EmitterVisitorContext): any { + override visitDeclareClassStmt(stmt: o.ClassStmt, ctx: EmitterVisitorContext): any { ctx.pushClass(stmt); if (stmt.hasModifier(o.StmtModifier.Exported)) { ctx.print(stmt, `export `); @@ -267,7 +267,7 @@ class _TsEmitterVisitor extends AbstractEmitterVisitor implements o.TypeVisitor ctx.println(null, `}`); } - visitFunctionExpr(ast: o.FunctionExpr, ctx: EmitterVisitorContext): any { + override visitFunctionExpr(ast: o.FunctionExpr, ctx: EmitterVisitorContext): any { if (ast.name) { ctx.print(ast, 'function '); ctx.print(ast, ast.name); @@ -288,7 +288,7 @@ class _TsEmitterVisitor extends AbstractEmitterVisitor implements o.TypeVisitor return null; } - visitDeclareFunctionStmt(stmt: o.DeclareFunctionStmt, ctx: EmitterVisitorContext): any { + override visitDeclareFunctionStmt(stmt: o.DeclareFunctionStmt, ctx: EmitterVisitorContext): any { if (stmt.hasModifier(o.StmtModifier.Exported)) { ctx.print(stmt, `export `); } @@ -304,7 +304,7 @@ class _TsEmitterVisitor extends AbstractEmitterVisitor implements o.TypeVisitor return null; } - visitTryCatchStmt(stmt: o.TryCatchStmt, ctx: EmitterVisitorContext): any { + override visitTryCatchStmt(stmt: o.TryCatchStmt, ctx: EmitterVisitorContext): any { ctx.println(stmt, `try {`); ctx.incIndent(); this.visitAllStatements(stmt.bodyStmts, ctx); @@ -375,7 +375,7 @@ class _TsEmitterVisitor extends AbstractEmitterVisitor implements o.TypeVisitor return null; } - getBuiltinMethodName(method: o.BuiltinMethod): string { + override getBuiltinMethodName(method: o.BuiltinMethod): string { let name: string; switch (method) { case o.BuiltinMethod.ConcatArray: diff --git a/packages/compiler/src/render3/partial/api.ts b/packages/compiler/src/render3/partial/api.ts index 124e953291..a6ce0dcfed 100644 --- a/packages/compiler/src/render3/partial/api.ts +++ b/packages/compiler/src/render3/partial/api.ts @@ -9,6 +9,11 @@ import {ChangeDetectionStrategy, ViewEncapsulation} from '../../core'; import * as o from '../../output/output_ast'; export interface R3PartialDeclaration { + /** + * The minimum version of the compiler that can process this partial declaration. + */ + minVersion: string; + /** * Version number of the Angular compiler that was used to compile this declaration. The linker * will be able to detect which version a library is using and interpret its metadata accordingly. @@ -367,6 +372,53 @@ export enum FactoryTarget { NgModule = 4, } +/** + * Describes the shape of the object that the `ɵɵngDeclareInjectable()` function accepts. + * + * This interface serves primarily as documentation, as conformance to this interface is not + * enforced during linking. + */ +export interface R3DeclareInjectableMetadata extends R3PartialDeclaration { + /** + * If provided, specifies that the declared injectable belongs to a particular injector: + * - `InjectorType` such as `NgModule`, + * - `'root'` the root injector + * - `'any'` all injectors. + * If not provided, then it does not belong to any injector. Must be explicitly listed in the + * providers of an injector. + */ + providedIn?: o.Expression; + + /** + * If provided, an expression that evaluates to a class to use when creating an instance of this + * injectable. + */ + useClass?: o.Expression; + + /** + * If provided, an expression that evaluates to a function to use when creating an instance of + * this injectable. + */ + useFactory?: o.Expression; + + /** + * If provided, an expression that evaluates to a token of another injectable that this injectable + * aliases. + */ + useExisting?: o.Expression; + + /** + * If provided, an expression that evaluates to the value of the instance of this injectable. + */ + useValue?: o.Expression; + + /** + * An array of dependencies to support instantiating this injectable via `useClass` or + * `useFactory`. + */ + deps?: R3DeclareDependencyMetadata[]; +} + /** * Metadata indicating how a dependency should be injected into a factory. */ @@ -410,3 +462,28 @@ export interface R3DeclareDependencyMetadata { */ skipSelf?: boolean; } + +/** + * Describes the shape of the object that the `ɵɵngDeclareClassMetadata()` function accepts. + * + * This interface serves primarily as documentation, as conformance to this interface is not + * enforced during linking. + */ +export interface R3DeclareClassMetadata extends R3PartialDeclaration { + /** + * The Angular decorators of the class. + */ + decorators: o.Expression; + + /** + * Optionally specifies the constructor parameters, their types and the Angular decorators of each + * parameter. This property is omitted if the class does not have a constructor. + */ + ctorParameters?: o.Expression; + + /** + * Optionally specifies the Angular decorators applied to the class properties. This property is + * omitted if no properties have any decorators. + */ + propDecorators?: o.Expression; +} diff --git a/packages/compiler/src/render3/partial/class_metadata.ts b/packages/compiler/src/render3/partial/class_metadata.ts new file mode 100644 index 0000000000..7c401e4d10 --- /dev/null +++ b/packages/compiler/src/render3/partial/class_metadata.ts @@ -0,0 +1,35 @@ +/** + * @license + * 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 + */ +import * as o from '../../output/output_ast'; +import {R3ClassMetadata} from '../r3_class_metadata_compiler'; +import {Identifiers as R3} from '../r3_identifiers'; +import {DefinitionMap} from '../view/util'; + +import {R3DeclareClassMetadata} from './api'; + +/** + * Every time we make a breaking change to the declaration interface or partial-linker behavior, we + * must update this constant to prevent old partial-linkers from incorrectly processing the + * declaration. + * + * Do not include any prerelease in these versions as they are ignored. + */ +const MINIMUM_PARTIAL_LINKER_VERSION = '12.0.0'; + +export function compileDeclareClassMetadata(metadata: R3ClassMetadata): o.Expression { + const definitionMap = new DefinitionMap(); + definitionMap.set('minVersion', o.literal(MINIMUM_PARTIAL_LINKER_VERSION)); + definitionMap.set('version', o.literal('0.0.0-PLACEHOLDER')); + definitionMap.set('ngImport', o.importExpr(R3.core)); + definitionMap.set('type', metadata.type); + definitionMap.set('decorators', metadata.decorators); + definitionMap.set('ctorParameters', metadata.ctorParameters); + definitionMap.set('propDecorators', metadata.propDecorators); + + return o.importExpr(R3.declareClassMetadata).callFn([definitionMap.toLiteralMap()]); +} diff --git a/packages/compiler/src/render3/partial/component.ts b/packages/compiler/src/render3/partial/component.ts index d54f1e7b84..fb620b55bd 100644 --- a/packages/compiler/src/render3/partial/component.ts +++ b/packages/compiler/src/render3/partial/component.ts @@ -18,15 +18,44 @@ import {DefinitionMap} from '../view/util'; import {R3DeclareComponentMetadata, R3DeclareUsedDirectiveMetadata} from './api'; import {createDirectiveDefinitionMap} from './directive'; -import {toOptionalLiteralArray} from './util'; +import {generateForwardRef, toOptionalLiteralArray} from './util'; +export interface DeclareComponentTemplateInfo { + /** + * The string contents of the template. + * + * This is the "logical" template string, after expansion of any escaped characters (for inline + * templates). This may differ from the actual template bytes as they appear in the .ts file. + */ + content: string; + + /** + * A full path to the file which contains the template. + * + * This can be either the original .ts file if the template is inline, or the .html file if an + * external file was used. + */ + sourceUrl: string; + + /** + * Whether the template was inline (using `template`) or external (using `templateUrl`). + */ + isInline: boolean; + + /** + * If the template was defined inline by a direct string literal, then this is that literal + * expression. Otherwise `null`, if the template was not defined inline or was not a literal. + */ + inlineTemplateLiteralExpression: o.Expression|null; +} /** * Compile a component declaration defined by the `R3ComponentMetadata`. */ export function compileDeclareComponentFromMetadata( - meta: R3ComponentMetadata, template: ParsedTemplate): R3CompiledExpression { - const definitionMap = createComponentDefinitionMap(meta, template); + meta: R3ComponentMetadata, template: ParsedTemplate, + additionalTemplateInfo: DeclareComponentTemplateInfo): R3CompiledExpression { + const definitionMap = createComponentDefinitionMap(meta, template, additionalTemplateInfo); const expression = o.importExpr(R3.declareComponent).callFn([definitionMap.toLiteralMap()]); const type = createComponentType(meta); @@ -37,13 +66,14 @@ export function compileDeclareComponentFromMetadata( /** * Gathers the declaration fields for a component into a `DefinitionMap`. */ -export function createComponentDefinitionMap(meta: R3ComponentMetadata, template: ParsedTemplate): - DefinitionMap { +export function createComponentDefinitionMap( + meta: R3ComponentMetadata, template: ParsedTemplate, + templateInfo: DeclareComponentTemplateInfo): DefinitionMap { const definitionMap: DefinitionMap = createDirectiveDefinitionMap(meta); - definitionMap.set('template', getTemplateExpression(template)); - if (template.isInline) { + definitionMap.set('template', getTemplateExpression(template, templateInfo)); + if (templateInfo.isInline) { definitionMap.set('isInline', o.literal(true)); } @@ -82,26 +112,32 @@ export function createComponentDefinitionMap(meta: R3ComponentMetadata, template return definitionMap; } -function getTemplateExpression(template: ParsedTemplate): o.Expression { - if (typeof template.template === 'string') { - if (template.isInline) { - // The template is inline but not a simple literal string, so give up with trying to - // source-map it and just return a simple literal here. - return o.literal(template.template); - } else { - // The template is external so we must synthesize an expression node with the appropriate - // source-span. - const contents = template.template; - const file = new ParseSourceFile(contents, template.templateUrl); - const start = new ParseLocation(file, 0, 0, 0); - const end = computeEndLocation(file, contents); - const span = new ParseSourceSpan(start, end); - return o.literal(contents, null, span); - } - } else { - // The template is inline so we can just reuse the current expression node. - return template.template; +function getTemplateExpression( + template: ParsedTemplate, templateInfo: DeclareComponentTemplateInfo): o.Expression { + // If the template has been defined using a direct literal, we use that expression directly + // without any modifications. This is ensures proper source mapping from the partially + // compiled code to the source file declaring the template. Note that this does not capture + // template literals referenced indirectly through an identifier. + if (templateInfo.inlineTemplateLiteralExpression !== null) { + return templateInfo.inlineTemplateLiteralExpression; } + + // If the template is defined inline but not through a literal, the template has been resolved + // through static interpretation. We create a literal but cannot provide any source span. Note + // that we cannot use the expression defining the template because the linker expects the template + // to be defined as a literal in the declaration. + if (templateInfo.isInline) { + return o.literal(templateInfo.content, null, null); + } + + // The template is external so we must synthesize an expression node with + // the appropriate source-span. + const contents = templateInfo.content; + const file = new ParseSourceFile(contents, templateInfo.sourceUrl); + const start = new ParseLocation(file, 0, 0, 0); + const end = computeEndLocation(file, contents); + const span = new ParseSourceSpan(start, end); + return o.literal(contents, null, span); } function computeEndLocation(file: ParseSourceFile, contents: string): ParseLocation { @@ -163,7 +199,3 @@ function compileUsedPipeMetadata(meta: R3ComponentMetadata): o.LiteralMapExpr|nu } return o.literalMap(entries); } - -function generateForwardRef(expr: o.Expression): o.Expression { - return o.importExpr(R3.forwardRef).callFn([o.fn([], [new o.ReturnStatement(expr)])]); -} diff --git a/packages/compiler/src/render3/partial/directive.ts b/packages/compiler/src/render3/partial/directive.ts index a14c3c5ef6..310146963b 100644 --- a/packages/compiler/src/render3/partial/directive.ts +++ b/packages/compiler/src/render3/partial/directive.ts @@ -14,6 +14,14 @@ import {asLiteral, conditionallyCreateMapObjectLiteral, DefinitionMap} from '../ import {R3DeclareDirectiveMetadata, R3DeclareQueryMetadata} from './api'; import {toOptionalLiteralMap} from './util'; +/** + * Every time we make a breaking change to the declaration interface or partial-linker behavior, we + * must update this constant to prevent old partial-linkers from incorrectly processing the + * declaration. + * + * Do not include any prerelease in these versions as they are ignored. + */ +const MINIMUM_PARTIAL_LINKER_VERSION = '12.0.0'; /** * Compile a directive declaration defined by the `R3DirectiveMetadata`. @@ -36,6 +44,7 @@ export function createDirectiveDefinitionMap(meta: R3DirectiveMetadata): DefinitionMap { const definitionMap = new DefinitionMap(); + definitionMap.set('minVersion', o.literal(MINIMUM_PARTIAL_LINKER_VERSION)); definitionMap.set('version', o.literal('0.0.0-PLACEHOLDER')); // e.g. `type: MyDirective` diff --git a/packages/compiler/src/render3/partial/factory.ts b/packages/compiler/src/render3/partial/factory.ts index 3a8e6d9eaa..5102c89556 100644 --- a/packages/compiler/src/render3/partial/factory.ts +++ b/packages/compiler/src/render3/partial/factory.ts @@ -6,15 +6,26 @@ * found in the LICENSE file at https://angular.io/license */ import * as o from '../../output/output_ast'; -import {createFactoryType, FactoryTarget, R3DependencyMetadata, R3FactoryMetadata} from '../r3_factory'; +import {createFactoryType, FactoryTarget, R3FactoryMetadata} from '../r3_factory'; import {Identifiers as R3} from '../r3_identifiers'; import {R3CompiledExpression} from '../util'; import {DefinitionMap} from '../view/util'; -import {R3DeclareDependencyMetadata, R3DeclareFactoryMetadata} from './api'; +import {R3DeclareFactoryMetadata} from './api'; +import {compileDependencies} from './util'; + +/** + * Every time we make a breaking change to the declaration interface or partial-linker behavior, we + * must update this constant to prevent old partial-linkers from incorrectly processing the + * declaration. + * + * Do not include any prerelease in these versions as they are ignored. + */ +const MINIMUM_PARTIAL_LINKER_VERSION = '12.0.0'; export function compileDeclareFactoryFunction(meta: R3FactoryMetadata): R3CompiledExpression { const definitionMap = new DefinitionMap(); + definitionMap.set('minVersion', o.literal(MINIMUM_PARTIAL_LINKER_VERSION)); definitionMap.set('version', o.literal('0.0.0-PLACEHOLDER')); definitionMap.set('ngImport', o.importExpr(R3.core)); definitionMap.set('type', meta.internalType); @@ -27,35 +38,3 @@ export function compileDeclareFactoryFunction(meta: R3FactoryMetadata): R3Compil type: createFactoryType(meta), }; } - -function compileDependencies(deps: R3DependencyMetadata[]|'invalid'|null): o.LiteralExpr| - o.LiteralArrayExpr { - if (deps === 'invalid') { - return o.literal('invalid'); - } else if (deps === null) { - return o.literal(null); - } else { - return o.literalArr(deps.map(compileDependency)); - } -} - -function compileDependency(dep: R3DependencyMetadata): o.LiteralMapExpr { - const depMeta = new DefinitionMap(); - depMeta.set('token', dep.token); - if (dep.attributeNameType !== null) { - depMeta.set('attribute', o.literal(true)); - } - if (dep.host) { - depMeta.set('host', o.literal(true)); - } - if (dep.optional) { - depMeta.set('optional', o.literal(true)); - } - if (dep.self) { - depMeta.set('self', o.literal(true)); - } - if (dep.skipSelf) { - depMeta.set('skipSelf', o.literal(true)); - } - return depMeta.toLiteralMap(); -} diff --git a/packages/compiler/src/render3/partial/injectable.ts b/packages/compiler/src/render3/partial/injectable.ts new file mode 100644 index 0000000000..22f58fc9cf --- /dev/null +++ b/packages/compiler/src/render3/partial/injectable.ts @@ -0,0 +1,103 @@ +/** + * @license + * 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 + */ +import {createInjectableType, R3InjectableMetadata, R3ProviderExpression} from '../../injectable_compiler_2'; +import * as o from '../../output/output_ast'; +import {Identifiers as R3} from '../r3_identifiers'; +import {R3CompiledExpression} from '../util'; +import {DefinitionMap} from '../view/util'; + +import {R3DeclareInjectableMetadata} from './api'; +import {compileDependency, generateForwardRef} from './util'; + +/** + * Every time we make a breaking change to the declaration interface or partial-linker behavior, we + * must update this constant to prevent old partial-linkers from incorrectly processing the + * declaration. + * + * Do not include any prerelease in these versions as they are ignored. + */ +const MINIMUM_PARTIAL_LINKER_VERSION = '12.0.0'; + +/** + * Compile a Injectable declaration defined by the `R3InjectableMetadata`. + */ +export function compileDeclareInjectableFromMetadata(meta: R3InjectableMetadata): + R3CompiledExpression { + const definitionMap = createInjectableDefinitionMap(meta); + + const expression = o.importExpr(R3.declareInjectable).callFn([definitionMap.toLiteralMap()]); + const type = createInjectableType(meta); + + return {expression, type, statements: []}; +} + +/** + * Gathers the declaration fields for a Injectable into a `DefinitionMap`. + */ +export function createInjectableDefinitionMap(meta: R3InjectableMetadata): + DefinitionMap { + const definitionMap = new DefinitionMap(); + + definitionMap.set('minVersion', o.literal(MINIMUM_PARTIAL_LINKER_VERSION)); + definitionMap.set('version', o.literal('0.0.0-PLACEHOLDER')); + definitionMap.set('ngImport', o.importExpr(R3.core)); + definitionMap.set('type', meta.internalType); + + // Only generate providedIn property if it has a non-null value + if (meta.providedIn !== undefined) { + const providedIn = convertFromProviderExpression(meta.providedIn); + if ((providedIn as o.LiteralExpr).value !== null) { + definitionMap.set('providedIn', providedIn); + } + } + + if (meta.useClass !== undefined) { + definitionMap.set('useClass', convertFromProviderExpression(meta.useClass)); + } + if (meta.useExisting !== undefined) { + definitionMap.set('useExisting', convertFromProviderExpression(meta.useExisting)); + } + if (meta.useValue !== undefined) { + definitionMap.set('useValue', convertFromProviderExpression(meta.useValue)); + } + // Factories do not contain `ForwardRef`s since any types are already wrapped in a function call + // so the types will not be eagerly evaluated. Therefore we do not need to process this expression + // with `convertFromProviderExpression()`. + if (meta.useFactory !== undefined) { + definitionMap.set('useFactory', meta.useFactory); + } + + if (meta.deps !== undefined) { + definitionMap.set('deps', o.literalArr(meta.deps.map(compileDependency))); + } + + return definitionMap; +} + +/** + * Convert an `R3ProviderExpression` to an `Expression`, possibly wrapping its expression in a + * `forwardRef()` call. + * + * If `R3ProviderExpression.isForwardRef` is true then the expression was originally wrapped in a + * `forwardRef()` call to prevent the value from being eagerly evaluated in the code. + * + * Normally, the linker will statically process the code, putting the `expression` inside a factory + * function so the `forwardRef()` wrapper is not evaluated before it has been defined. But if the + * partial declaration is evaluated by the JIT compiler the `forwardRef()` call is still needed to + * prevent eager evaluation of the `expression`. + * + * So in partial declarations, expressions that could be forward-refs are wrapped in `forwardRef()` + * calls, and this is then unwrapped in the linker as necessary. + * + * See `packages/compiler-cli/src/ngtsc/annotations/src/injectable.ts` and + * `packages/compiler/src/jit_compiler_facade.ts` for more information. + */ +function convertFromProviderExpression({expression, isForwardRef}: R3ProviderExpression): + o.Expression { + return isForwardRef ? generateForwardRef(expression) : expression; +} diff --git a/packages/compiler/src/render3/partial/injector.ts b/packages/compiler/src/render3/partial/injector.ts index 5322d2b82a..0d667522c3 100644 --- a/packages/compiler/src/render3/partial/injector.ts +++ b/packages/compiler/src/render3/partial/injector.ts @@ -12,6 +12,14 @@ import {R3CompiledExpression} from '../util'; import {DefinitionMap} from '../view/util'; import {R3DeclareInjectorMetadata} from './api'; +/** + * Every time we make a breaking change to the declaration interface or partial-linker behavior, we + * must update this constant to prevent old partial-linkers from incorrectly processing the + * declaration. + * + * Do not include any prerelease in these versions as they are ignored. + */ +const MINIMUM_PARTIAL_LINKER_VERSION = '12.0.0'; export function compileDeclareInjectorFromMetadata(meta: R3InjectorMetadata): R3CompiledExpression { const definitionMap = createInjectorDefinitionMap(meta); @@ -22,10 +30,14 @@ export function compileDeclareInjectorFromMetadata(meta: R3InjectorMetadata): R3 return {expression, type, statements: []}; } +/** + * Gathers the declaration fields for an Injector into a `DefinitionMap`. + */ function createInjectorDefinitionMap(meta: R3InjectorMetadata): DefinitionMap { const definitionMap = new DefinitionMap(); + definitionMap.set('minVersion', o.literal(MINIMUM_PARTIAL_LINKER_VERSION)); definitionMap.set('version', o.literal('0.0.0-PLACEHOLDER')); definitionMap.set('ngImport', o.importExpr(R3.core)); diff --git a/packages/compiler/src/render3/partial/ng_module.ts b/packages/compiler/src/render3/partial/ng_module.ts index f9ad4ed28d..d6313897c6 100644 --- a/packages/compiler/src/render3/partial/ng_module.ts +++ b/packages/compiler/src/render3/partial/ng_module.ts @@ -13,6 +13,14 @@ import {DefinitionMap} from '../view/util'; import {R3DeclareNgModuleMetadata} from './api'; +/** + * Every time we make a breaking change to the declaration interface or partial-linker behavior, we + * must update this constant to prevent old partial-linkers from incorrectly processing the + * declaration. + * + * Do not include any prerelease in these versions as they are ignored. + */ +const MINIMUM_PARTIAL_LINKER_VERSION = '12.0.0'; export function compileDeclareNgModuleFromMetadata(meta: R3NgModuleMetadata): R3CompiledExpression { const definitionMap = createNgModuleDefinitionMap(meta); @@ -23,10 +31,14 @@ export function compileDeclareNgModuleFromMetadata(meta: R3NgModuleMetadata): R3 return {expression, type, statements: []}; } +/** + * Gathers the declaration fields for an NgModule into a `DefinitionMap`. + */ function createNgModuleDefinitionMap(meta: R3NgModuleMetadata): DefinitionMap { const definitionMap = new DefinitionMap(); + definitionMap.set('minVersion', o.literal(MINIMUM_PARTIAL_LINKER_VERSION)); definitionMap.set('version', o.literal('0.0.0-PLACEHOLDER')); definitionMap.set('ngImport', o.importExpr(R3.core)); definitionMap.set('type', meta.internalType); diff --git a/packages/compiler/src/render3/partial/pipe.ts b/packages/compiler/src/render3/partial/pipe.ts index bea20bcc20..1ee22d359d 100644 --- a/packages/compiler/src/render3/partial/pipe.ts +++ b/packages/compiler/src/render3/partial/pipe.ts @@ -12,6 +12,14 @@ import {R3CompiledExpression} from '../util'; import {DefinitionMap} from '../view/util'; import {R3DeclarePipeMetadata} from './api'; +/** + * Every time we make a breaking change to the declaration interface or partial-linker behavior, we + * must update this constant to prevent old partial-linkers from incorrectly processing the + * declaration. + * + * Do not include any prerelease in these versions as they are ignored. + */ +const MINIMUM_PARTIAL_LINKER_VERSION = '12.0.0'; /** * Compile a Pipe declaration defined by the `R3PipeMetadata`. @@ -26,13 +34,13 @@ export function compileDeclarePipeFromMetadata(meta: R3PipeMetadata): R3Compiled } /** - * Gathers the declaration fields for a Pipe into a `DefinitionMap`. This allows for reusing - * this logic for components, as they extend the Pipe metadata. + * Gathers the declaration fields for a Pipe into a `DefinitionMap`. */ export function createPipeDefinitionMap(meta: R3PipeMetadata): DefinitionMap { const definitionMap = new DefinitionMap(); + definitionMap.set('minVersion', o.literal(MINIMUM_PARTIAL_LINKER_VERSION)); definitionMap.set('version', o.literal('0.0.0-PLACEHOLDER')); definitionMap.set('ngImport', o.importExpr(R3.core)); diff --git a/packages/compiler/src/render3/partial/util.ts b/packages/compiler/src/render3/partial/util.ts index c99168a979..3be414b160 100644 --- a/packages/compiler/src/render3/partial/util.ts +++ b/packages/compiler/src/render3/partial/util.ts @@ -6,6 +6,10 @@ * found in the LICENSE file at https://angular.io/license */ import * as o from '../../output/output_ast'; +import {R3DependencyMetadata} from '../r3_factory'; +import {Identifiers} from '../r3_identifiers'; +import {DefinitionMap} from '../view/util'; +import {R3DeclareDependencyMetadata} from './api'; /** * Creates an array literal expression from the given array, mapping all values to an expression @@ -46,3 +50,48 @@ export function toOptionalLiteralMap( return null; } } + +export function compileDependencies(deps: R3DependencyMetadata[]|'invalid'|null): o.LiteralExpr| + o.LiteralArrayExpr { + if (deps === 'invalid') { + // The `deps` can be set to the string "invalid" by the `unwrapConstructorDependencies()` + // function, which tries to convert `ConstructorDeps` into `R3DependencyMetadata[]`. + return o.literal('invalid'); + } else if (deps === null) { + return o.literal(null); + } else { + return o.literalArr(deps.map(compileDependency)); + } +} + +export function compileDependency(dep: R3DependencyMetadata): o.LiteralMapExpr { + const depMeta = new DefinitionMap(); + depMeta.set('token', dep.token); + if (dep.attributeNameType !== null) { + depMeta.set('attribute', o.literal(true)); + } + if (dep.host) { + depMeta.set('host', o.literal(true)); + } + if (dep.optional) { + depMeta.set('optional', o.literal(true)); + } + if (dep.self) { + depMeta.set('self', o.literal(true)); + } + if (dep.skipSelf) { + depMeta.set('skipSelf', o.literal(true)); + } + return depMeta.toLiteralMap(); +} + +/** + * Generate an expression that has the given `expr` wrapped in the following form: + * + * ``` + * forwardRef(() => expr) + * ``` + */ +export function generateForwardRef(expr: o.Expression): o.Expression { + return o.importExpr(Identifiers.forwardRef).callFn([o.fn([], [new o.ReturnStatement(expr)])]); +} diff --git a/packages/compiler/src/render3/r3_ast.ts b/packages/compiler/src/render3/r3_ast.ts index dc7e452a11..0eb111b3c7 100644 --- a/packages/compiler/src/render3/r3_ast.ts +++ b/packages/compiler/src/render3/r3_ast.ts @@ -203,11 +203,15 @@ export class NullVisitor implements Visitor { export class RecursiveVisitor implements Visitor { visitElement(element: Element): void { visitAll(this, element.attributes); + visitAll(this, element.inputs); + visitAll(this, element.outputs); visitAll(this, element.children); visitAll(this, element.references); } visitTemplate(template: Template): void { visitAll(this, template.attributes); + visitAll(this, template.inputs); + visitAll(this, template.outputs); visitAll(this, template.children); visitAll(this, template.references); visitAll(this, template.variables); diff --git a/packages/compiler/src/render3/r3_class_metadata_compiler.ts b/packages/compiler/src/render3/r3_class_metadata_compiler.ts new file mode 100644 index 0000000000..d1a6298786 --- /dev/null +++ b/packages/compiler/src/render3/r3_class_metadata_compiler.ts @@ -0,0 +1,55 @@ +/** + * @license + * 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 + */ +import * as o from '../output/output_ast'; + +import {Identifiers as R3} from './r3_identifiers'; +import {devOnlyGuardedExpression} from './util'; + +export type CompileClassMetadataFn = (metadata: R3ClassMetadata) => o.Expression; + +/** + * Metadata of a class which captures the original Angular decorators of a class. The original + * decorators are preserved in the generated code to allow TestBed APIs to recompile the class + * using the original decorator with a set of overrides applied. + */ +export interface R3ClassMetadata { + /** + * The class type for which the metadata is captured. + */ + type: o.Expression; + + /** + * An expression representing the Angular decorators that were applied on the class. + */ + decorators: o.Expression; + + /** + * An expression representing the Angular decorators applied to constructor parameters, or `null` + * if there is no constructor. + */ + ctorParameters: o.Expression|null; + + /** + * An expression representing the Angular decorators that were applied on the properties of the + * class, or `null` if no properties have decorators. + */ + propDecorators: o.Expression|null; +} + +export function compileClassMetadata(metadata: R3ClassMetadata): o.Expression { + // Generate an ngDevMode guarded call to setClassMetadata with the class identifier and its + // metadata. + const fnCall = o.importExpr(R3.setClassMetadata).callFn([ + metadata.type, + metadata.decorators, + metadata.ctorParameters ?? o.literal(null), + metadata.propDecorators ?? o.literal(null), + ]); + const iife = o.fn([], [devOnlyGuardedExpression(fnCall).toStmt()]); + return iife.callFn([]); +} diff --git a/packages/compiler/src/render3/r3_identifiers.ts b/packages/compiler/src/render3/r3_identifiers.ts index 89f26c9813..4ece5a1eae 100644 --- a/packages/compiler/src/render3/r3_identifiers.ts +++ b/packages/compiler/src/render3/r3_identifiers.ts @@ -229,6 +229,11 @@ export class Identifiers { static forwardRef: o.ExternalReference = {name: 'forwardRef', moduleName: CORE}; static resolveForwardRef: o.ExternalReference = {name: 'resolveForwardRef', moduleName: CORE}; + static ɵɵdefineInjectable: o.ExternalReference = {name: 'ɵɵdefineInjectable', moduleName: CORE}; + static declareInjectable: o.ExternalReference = {name: 'ɵɵngDeclareInjectable', moduleName: CORE}; + static InjectableDeclaration: + o.ExternalReference = {name: 'ɵɵInjectableDeclaration', moduleName: CORE}; + static resolveWindow: o.ExternalReference = {name: 'ɵɵresolveWindow', moduleName: CORE}; static resolveDocument: o.ExternalReference = {name: 'ɵɵresolveDocument', moduleName: CORE}; static resolveBody: o.ExternalReference = {name: 'ɵɵresolveBody', moduleName: CORE}; @@ -293,6 +298,10 @@ export class Identifiers { static definePipe: o.ExternalReference = {name: 'ɵɵdefinePipe', moduleName: CORE}; static declarePipe: o.ExternalReference = {name: 'ɵɵngDeclarePipe', moduleName: CORE}; + static declareClassMetadata: + o.ExternalReference = {name: 'ɵɵngDeclareClassMetadata', moduleName: CORE}; + static setClassMetadata: o.ExternalReference = {name: 'ɵsetClassMetadata', moduleName: CORE}; + static queryRefresh: o.ExternalReference = {name: 'ɵɵqueryRefresh', moduleName: CORE}; static viewQuery: o.ExternalReference = {name: 'ɵɵviewQuery', moduleName: CORE}; static loadQuery: o.ExternalReference = {name: 'ɵɵloadQuery', moduleName: CORE}; diff --git a/packages/compiler/src/render3/view/compiler.ts b/packages/compiler/src/render3/view/compiler.ts index 76de1f9af4..49825e0a2c 100644 --- a/packages/compiler/src/render3/view/compiler.ts +++ b/packages/compiler/src/render3/view/compiler.ts @@ -550,7 +550,7 @@ function createHostBindingsFunction( securityContexts.indexOf(core.SecurityContext.URL) > -1 && securityContexts.indexOf(core.SecurityContext.RESOURCE_URL) > -1) { // Special case for some URL attributes (such as "src" and "href") that may be a part - // of different security contexts. In this case we use special santitization function and + // of different security contexts. In this case we use special sanitization function and // select the actual sanitizer at runtime based on a tag name that is provided while // invoking sanitization function. sanitizerFn = o.importExpr(R3.sanitizeUrlOrResourceUrl); diff --git a/packages/compiler/src/render3/view/t2_binder.ts b/packages/compiler/src/render3/view/t2_binder.ts index 5226823a53..ca4fca3268 100644 --- a/packages/compiler/src/render3/view/t2_binder.ts +++ b/packages/compiler/src/render3/view/t2_binder.ts @@ -51,7 +51,7 @@ export class R3TargetBinder implements TargetB // Finally, run the TemplateBinder to bind references, variables, and other entities within the // template. This extracts all the metadata that doesn't depend on directive matching. const {expressions, symbols, nestingLevel, usedPipes} = - TemplateBinder.apply(target.template, scope); + TemplateBinder.applyWithScope(target.template, scope); return new R3BoundTarget( target, directives, bindings, references, expressions, symbols, nestingLevel, templateEntities, usedPipes); @@ -347,7 +347,7 @@ class TemplateBinder extends RecursiveAstVisitor implements Visitor { // This method is defined to reconcile the type of TemplateBinder since both // RecursiveAstVisitor and Visitor define the visit() method in their // interfaces. - visit(node: AST|Node, context?: any) { + override visit(node: AST|Node, context?: any) { if (node instanceof AST) { node.visit(this, context); } else { @@ -367,7 +367,7 @@ class TemplateBinder extends RecursiveAstVisitor implements Visitor { * nesting level (how many levels deep within the template structure the `Template` is), starting * at 1. */ - static apply(template: Node[], scope: Scope): { + static applyWithScope(template: Node[], scope: Scope): { expressions: Map, symbols: Map, nestingLevel: Map, @@ -461,7 +461,7 @@ class TemplateBinder extends RecursiveAstVisitor implements Visitor { visitBoundText(text: BoundText) { text.value.visit(this); } - visitPipe(ast: BindingPipe, context: any): any { + override visitPipe(ast: BindingPipe, context: any): any { this.usedPipes.add(ast.name); return super.visitPipe(ast, context); } @@ -469,27 +469,27 @@ class TemplateBinder extends RecursiveAstVisitor implements Visitor { // These five types of AST expressions can refer to expression roots, which could be variables // or references in the current scope. - visitPropertyRead(ast: PropertyRead, context: any): any { + override visitPropertyRead(ast: PropertyRead, context: any): any { this.maybeMap(context, ast, ast.name); return super.visitPropertyRead(ast, context); } - visitSafePropertyRead(ast: SafePropertyRead, context: any): any { + override visitSafePropertyRead(ast: SafePropertyRead, context: any): any { this.maybeMap(context, ast, ast.name); return super.visitSafePropertyRead(ast, context); } - visitPropertyWrite(ast: PropertyWrite, context: any): any { + override visitPropertyWrite(ast: PropertyWrite, context: any): any { this.maybeMap(context, ast, ast.name); return super.visitPropertyWrite(ast, context); } - visitMethodCall(ast: MethodCall, context: any): any { + override visitMethodCall(ast: MethodCall, context: any): any { this.maybeMap(context, ast, ast.name); return super.visitMethodCall(ast, context); } - visitSafeMethodCall(ast: SafeMethodCall, context: any): any { + override visitSafeMethodCall(ast: SafeMethodCall, context: any): any { this.maybeMap(context, ast, ast.name); return super.visitSafeMethodCall(ast, context); } diff --git a/packages/compiler/src/render3/view/template.ts b/packages/compiler/src/render3/view/template.ts index e75f7885a4..600c955626 100644 --- a/packages/compiler/src/render3/view/template.ts +++ b/packages/compiler/src/render3/view/template.ts @@ -22,7 +22,7 @@ import {LexerRange} from '../../ml_parser/lexer'; import {isNgContainer as checkIsNgContainer, splitNsName} from '../../ml_parser/tags'; import {mapLiteral} from '../../output/map_util'; import * as o from '../../output/output_ast'; -import {ParseError, ParseSourceSpan} from '../../parse_util'; +import {ParseError, ParseSourceFile, ParseSourceSpan} from '../../parse_util'; import {DomElementSchemaRegistry} from '../../schema/dom_element_schema_registry'; import {isTrustedTypesSink} from '../../schema/trusted_types_sinks'; import {CssSelector, SelectorMatcher} from '../../selector'; @@ -339,6 +339,11 @@ export class TemplateDefinitionBuilder implements t.Visitor, LocalResolver this._bindingScope.notifyImplicitReceiverUse(); } + // LocalResolver + maybeRestoreView(): void { + this._bindingScope.maybeRestoreView(); + } + private i18nTranslate( message: i18n.Message, params: {[name: string]: o.Expression} = {}, ref?: o.ReadVarExpr, transformFn?: (raw: o.ReadVarExpr) => o.Expression): o.ReadVarExpr { @@ -875,17 +880,17 @@ export class TemplateDefinitionBuilder implements t.Visitor, LocalResolver this.i18n.appendTemplate(template.i18n!, templateIndex); } - const tagName = sanitizeIdentifier(template.tagName || ''); - const contextName = `${this.contextName}${tagName ? '_' + tagName : ''}_${templateIndex}`; + const tagNameWithoutNamespace = + template.tagName ? splitNsName(template.tagName)[1] : template.tagName; + const contextName = `${this.contextName}${ + template.tagName ? '_' + sanitizeIdentifier(template.tagName) : ''}_${templateIndex}`; const templateName = `${contextName}_Template`; - const parameters: o.Expression[] = [ o.literal(templateIndex), o.variable(templateName), - // We don't care about the tag's namespace here, because we infer // it based on the parent nodes inside the template instruction. - o.literal(template.tagName ? splitNsName(template.tagName)[1] : template.tagName), + o.literal(tagNameWithoutNamespace), ]; // find directives matching on a given node @@ -937,7 +942,7 @@ export class TemplateDefinitionBuilder implements t.Visitor, LocalResolver this.templatePropertyBindings(templateIndex, template.templateAttrs); // Only add normal input/output binding instructions on explicit elements. - if (template.tagName === NG_TEMPLATE_TAG_NAME) { + if (tagNameWithoutNamespace === NG_TEMPLATE_TAG_NAME) { const [i18nInputs, inputs] = partitionArray(template.inputs, hasI18nMeta); @@ -1490,7 +1495,7 @@ export class ValueConverter extends AstMemoryEfficientTransformer { } // AstMemoryEfficientTransformer - visitPipe(pipe: BindingPipe, context: any): AST { + override visitPipe(pipe: BindingPipe, context: any): AST { // Allocate a slot to create the pipe const slot = this.allocateSlot(); const slotPseudoLocal = `PIPE:${slot}`; @@ -1523,7 +1528,7 @@ export class ValueConverter extends AstMemoryEfficientTransformer { }); } - visitLiteralArray(array: LiteralArray, context: any): AST { + override visitLiteralArray(array: LiteralArray, context: any): AST { return new BuiltinFunctionCall( array.span, array.sourceSpan, this.visitAll(array.expressions), values => { // If the literal has calculated (non-literal) elements transform it into @@ -1534,7 +1539,7 @@ export class ValueConverter extends AstMemoryEfficientTransformer { }); } - visitLiteralMap(map: LiteralMap, context: any): AST { + override visitLiteralMap(map: LiteralMap, context: any): AST { return new BuiltinFunctionCall(map.span, map.sourceSpan, this.visitAll(map.values), values => { // If the literal has calculated (non-literal) elements transform it into // calls to literal factories that compose the literal and will cache intermediate @@ -1651,7 +1656,6 @@ const SHARED_CONTEXT_KEY = '$$shared_ctx$$'; type BindingData = { retrievalLevel: number; lhs: o.Expression; declareLocalCallback?: DeclareLocalVarCallback; declare: boolean; priority: number; - localRef: boolean; }; /** @@ -1696,15 +1700,14 @@ export class BindingScope implements LocalResolver { lhs: value.lhs, declareLocalCallback: value.declareLocalCallback, declare: false, - priority: value.priority, - localRef: value.localRef + priority: value.priority }; // Cache the value locally. this.map.set(name, value); // Possibly generate a shared context var this.maybeGenerateSharedContextVar(value); - this.maybeRestoreView(value.retrievalLevel, value.localRef); + this.maybeRestoreView(); } if (value.declareLocalCallback && !value.declare) { @@ -1749,7 +1752,6 @@ export class BindingScope implements LocalResolver { declare: false, declareLocalCallback: declareLocalCallback, priority: priority, - localRef: localRef || false }); return this; } @@ -1818,24 +1820,22 @@ export class BindingScope implements LocalResolver { }, declare: false, priority: DeclarationPriority.SHARED_CONTEXT, - localRef: false }); } getComponentProperty(name: string): o.Expression { const componentValue = this.map.get(SHARED_CONTEXT_KEY + 0)!; componentValue.declare = true; - this.maybeRestoreView(0, false); + this.maybeRestoreView(); return componentValue.lhs.prop(name); } - maybeRestoreView(retrievalLevel: number, localRefLookup: boolean) { - // We want to restore the current view in listener fns if: - // 1 - we are accessing a value in a parent view, which requires walking the view tree rather - // than using the ctx arg. In this case, the retrieval and binding level will be different. - // 2 - we are looking up a local ref, which requires restoring the view where the local - // ref is stored - if (this.isListenerScope() && (retrievalLevel < this.bindingLevel || localRefLookup)) { + maybeRestoreView() { + // View restoration is required for listener instructions inside embedded views, because + // they only run in creation mode and they can have references to the context object. + // If the context object changes in update mode, the reference will be incorrect, because + // it was established during creation. + if (this.isListenerScope()) { if (!this.parent!.restoreViewVariable) { // parent saves variable to generate a shared `const $s$ = getCurrentView();` instruction this.parent!.restoreViewVariable = o.variable(this.parent!.freshReferenceName()); @@ -2082,6 +2082,7 @@ export interface ParseTemplateOptions { * `$localize` message id format and you are not using compile time translation merging. */ enableI18nLegacyMessageIdFormat?: boolean; + /** * If this text is stored in an external template (e.g. via `templateUrl`) then we need to decide * whether or not to normalize the line-endings (from `\r\n` to `\n`) when processing ICU @@ -2092,11 +2093,6 @@ export interface ParseTemplateOptions { */ i18nNormalizeLineEndingsInICUs?: boolean; - /** - * Whether the template was inline. - */ - isInline?: boolean; - /** * Whether to always attempt to convert the parsed HTML AST to an R3 AST, despite HTML or i18n * Meta parse errors. @@ -2134,7 +2130,6 @@ export interface ParseTemplateOptions { export function parseTemplate( template: string, templateUrl: string, options: ParseTemplateOptions = {}): ParsedTemplate { const {interpolationConfig, preserveWhitespaces, enableI18nLegacyMessageIdFormat} = options; - const isInline = options.isInline ?? false; const bindingParser = makeBindingParser(interpolationConfig); const htmlParser = new HtmlParser(); const parseResult = htmlParser.parse( @@ -2146,9 +2141,6 @@ export function parseTemplate( const parsedTemplate: ParsedTemplate = { interpolationConfig, preserveWhitespaces, - template, - templateUrl, - isInline, errors: parseResult.errors, nodes: [], styleUrls: [], @@ -2177,9 +2169,6 @@ export function parseTemplate( const parsedTemplate: ParsedTemplate = { interpolationConfig, preserveWhitespaces, - template, - templateUrl, - isInline, errors: i18nMetaResult.errors, nodes: [], styleUrls: [], @@ -2215,14 +2204,12 @@ export function parseTemplate( interpolationConfig, preserveWhitespaces, errors: errors.length > 0 ? errors : null, - template, - templateUrl, - isInline, nodes, styleUrls, styles, ngContentSelectors }; + if (options.collectCommentNodes) { parsedTemplate.commentNodes = commentNodes; } @@ -2383,29 +2370,6 @@ export interface ParsedTemplate { * How to parse interpolation markers. */ interpolationConfig?: InterpolationConfig; - - /** - * The string contents of the template, or an expression that represents the string/template - * literal as it occurs in the source. - * - * This is the "logical" template string, after expansion of any escaped characters (for inline - * templates). This may differ from the actual template bytes as they appear in the .ts file. - */ - template: string|o.Expression; - - /** - * A full path to the file which contains the template. - * - * This can be either the original .ts file if the template is inline, or the .html file if an - * external file was used. - */ - templateUrl: string; - - /** - * Whether the template was inline (using `template`) or external (using `templateUrl`). - */ - isInline: boolean; - /** * Any errors from parsing the template the first time. * diff --git a/packages/compiler/src/resource_loader.ts b/packages/compiler/src/resource_loader.ts index ec9d91af21..ea65396ef1 100644 --- a/packages/compiler/src/resource_loader.ts +++ b/packages/compiler/src/resource_loader.ts @@ -7,11 +7,12 @@ */ /** - * An interface for retrieving documents by URL that the compiler uses - * to load templates. + * An interface for retrieving documents by URL that the compiler uses to + * load templates. + * + * This is an abstract class, rather than an interface, so that it can be used + * as injection token. */ -export class ResourceLoader { - get(url: string): Promise|string { - return ''; - } +export abstract class ResourceLoader { + abstract get(url: string): Promise|string; } diff --git a/packages/compiler/src/schema/dom_element_schema_registry.ts b/packages/compiler/src/schema/dom_element_schema_registry.ts index 2b6924c061..8b9708829c 100644 --- a/packages/compiler/src/schema/dom_element_schema_registry.ts +++ b/packages/compiler/src/schema/dom_element_schema_registry.ts @@ -291,7 +291,7 @@ export class DomElementSchemaRegistry extends ElementSchemaRegistry { }); } - hasProperty(tagName: string, propName: string, schemaMetas: SchemaMetadata[]): boolean { + override hasProperty(tagName: string, propName: string, schemaMetas: SchemaMetadata[]): boolean { if (schemaMetas.some((schema) => schema.name === NO_ERRORS_SCHEMA.name)) { return true; } @@ -312,7 +312,7 @@ export class DomElementSchemaRegistry extends ElementSchemaRegistry { return !!elementProperties[propName]; } - hasElement(tagName: string, schemaMetas: SchemaMetadata[]): boolean { + override hasElement(tagName: string, schemaMetas: SchemaMetadata[]): boolean { if (schemaMetas.some((schema) => schema.name === NO_ERRORS_SCHEMA.name)) { return true; } @@ -341,7 +341,8 @@ export class DomElementSchemaRegistry extends ElementSchemaRegistry { * above are assumed to have the 'NONE' security context, i.e. that they are safe inert * string values. Only specific well known attack vectors are assigned their appropriate context. */ - securityContext(tagName: string, propName: string, isAttribute: boolean): SecurityContext { + override securityContext(tagName: string, propName: string, isAttribute: boolean): + SecurityContext { if (isAttribute) { // NB: For security purposes, use the mapped property name, not the attribute name. propName = this.getMappedPropName(propName); @@ -359,15 +360,15 @@ export class DomElementSchemaRegistry extends ElementSchemaRegistry { return ctx ? ctx : SecurityContext.NONE; } - getMappedPropName(propName: string): string { + override getMappedPropName(propName: string): string { return _ATTR_TO_PROP[propName] || propName; } - getDefaultComponentElementName(): string { + override getDefaultComponentElementName(): string { return 'ng-component'; } - validateProperty(name: string): {error: boolean, msg?: string} { + override validateProperty(name: string): {error: boolean, msg?: string} { if (name.toLowerCase().startsWith('on')) { const msg = `Binding to event property '${name}' is disallowed for security reasons, ` + `please use (${name.slice(2)})=...` + @@ -379,7 +380,7 @@ export class DomElementSchemaRegistry extends ElementSchemaRegistry { } } - validateAttribute(name: string): {error: boolean, msg?: string} { + override validateAttribute(name: string): {error: boolean, msg?: string} { if (name.toLowerCase().startsWith('on')) { const msg = `Binding to event attribute '${name}' is disallowed for security reasons, ` + `please use (${name.slice(2)})=...`; @@ -389,7 +390,7 @@ export class DomElementSchemaRegistry extends ElementSchemaRegistry { } } - allKnownElementNames(): string[] { + override allKnownElementNames(): string[] { return Object.keys(this._schema); } @@ -399,12 +400,13 @@ export class DomElementSchemaRegistry extends ElementSchemaRegistry { return Object.keys(elementProperties).map(prop => _PROP_TO_ATTR[prop] ?? prop); } - normalizeAnimationStyleProperty(propName: string): string { + override normalizeAnimationStyleProperty(propName: string): string { return dashCaseToCamelCase(propName); } - normalizeAnimationStyleValue(camelCaseProp: string, userProvidedProp: string, val: string|number): - {error: string, value: string} { + override normalizeAnimationStyleValue( + camelCaseProp: string, userProvidedProp: string, + val: string|number): {error: string, value: string} { let unit: string = ''; const strVal = val.toString().trim(); let errorMsg: string = null!; diff --git a/packages/compiler/src/selector.ts b/packages/compiler/src/selector.ts index b31f75936c..1460206d8d 100644 --- a/packages/compiler/src/selector.ts +++ b/packages/compiler/src/selector.ts @@ -13,11 +13,11 @@ const _SELECTOR_REGEXP = new RegExp( '(([\\.\\#]?)[-\\w]+)|' + // 2: "tag"; 3: "."/"#"; // "-" should appear first in the regexp below as FF31 parses "[.-\w]" as a range // 4: attribute; 5: attribute_string; 6: attribute_value - '(?:\\[([-.\\w*]+)(?:=([\"\']?)([^\\]\"\']*)\\5)?\\])|' + // "[name]", "[name=value]", - // "[name="value"]", - // "[name='value']" - '(\\))|' + // 7: ")" - '(\\s*,\\s*)', // 8: "," + '(?:\\[([-.\\w*\\\\$]+)(?:=([\"\']?)([^\\]\"\']*)\\5)?\\])|' + // "[name]", "[name=value]", + // "[name="value"]", + // "[name='value']" + '(\\))|' + // 7: ")" + '(\\s*,\\s*)', // 8: "," 'g'); /** @@ -94,8 +94,10 @@ export class CssSelector { } } const attribute = match[SelectorRegexp.ATTRIBUTE]; + if (attribute) { - current.addAttribute(attribute, match[SelectorRegexp.ATTRIBUTE_VALUE]); + current.addAttribute( + current.unescapeAttribute(attribute), match[SelectorRegexp.ATTRIBUTE_VALUE]); } if (match[SelectorRegexp.NOT_END]) { inNot = false; @@ -113,6 +115,50 @@ export class CssSelector { return results; } + /** + * Unescape `\$` sequences from the CSS attribute selector. + * + * This is needed because `$` can have a special meaning in CSS selectors, + * but we might want to match an attribute that contains `$`. + * [MDN web link for more + * info](https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors). + * @param attr the attribute to unescape. + * @returns the unescaped string. + */ + unescapeAttribute(attr: string): string { + let result = ''; + let escaping = false; + for (let i = 0; i < attr.length; i++) { + const char = attr.charAt(i); + if (char === '\\') { + escaping = true; + continue; + } + if (char === '$' && !escaping) { + throw new Error( + `Error in attribute selector "${attr}". ` + + `Unescaped "$" is not supported. Please escape with "\\$".`); + } + escaping = false; + result += char; + } + return result; + } + + /** + * Escape `$` sequences from the CSS attribute selector. + * + * This is needed because `$` can have a special meaning in CSS selectors, + * with this method we are escaping `$` with `\$'. + * [MDN web link for more + * info](https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors). + * @param attr the attribute to escape. + * @returns the escaped string.  + */ + escapeAttribute(attr: string): string { + return attr.replace(/\\/g, '\\\\').replace(/\$/g, '\\$'); + } + isElementSelector(): boolean { return this.hasElementSelector() && this.classNames.length == 0 && this.attrs.length == 0 && this.notSelectors.length === 0; @@ -165,7 +211,7 @@ export class CssSelector { } if (this.attrs) { for (let i = 0; i < this.attrs.length; i += 2) { - const name = this.attrs[i]; + const name = this.escapeAttribute(this.attrs[i]); const value = this.attrs[i + 1]; res += `[${name}${value ? '=' + value : ''}]`; } diff --git a/packages/compiler/src/shadow_css.ts b/packages/compiler/src/shadow_css.ts index e8d08e7adb..cbb2896034 100644 --- a/packages/compiler/src/shadow_css.ts +++ b/packages/compiler/src/shadow_css.ts @@ -135,8 +135,6 @@ export class ShadowCss { strictStyling: boolean = true; - constructor() {} - /* * Shim some cssText with the given selector. Returns cssText that can * be included in the document via WebComponents.ShadowCSS.addCssToDocument(css). @@ -367,18 +365,49 @@ export class ShadowCss { return processRules(cssText, (rule: CssRule) => { let selector = rule.selector; let content = rule.content; - if (rule.selector[0] != '@') { + if (rule.selector[0] !== '@') { selector = this._scopeSelector(rule.selector, scopeSelector, hostSelector, this.strictStyling); } else if ( rule.selector.startsWith('@media') || rule.selector.startsWith('@supports') || - rule.selector.startsWith('@page') || rule.selector.startsWith('@document')) { + rule.selector.startsWith('@document')) { content = this._scopeSelectors(rule.content, scopeSelector, hostSelector); + } else if (rule.selector.startsWith('@font-face') || rule.selector.startsWith('@page')) { + content = this._stripScopingSelectors(rule.content); } return new CssRule(selector, content); }); } + /** + * Handle a css text that is within a rule that should not contain scope selectors by simply + * removing them! An example of such a rule is `@font-face`. + * + * `@font-face` rules cannot contain nested selectors. Nor can they be nested under a selector. + * Normally this would be a syntax error by the author of the styles. But in some rare cases, such + * as importing styles from a library, and applying `:host ::ng-deep` to the imported styles, we + * can end up with broken css if the imported styles happen to contain @font-face rules. + * + * For example: + * + * ``` + * :host ::ng-deep { + * import 'some/lib/containing/font-face'; + * } + * + * Similar logic applies to `@page` rules which can contain a particular set of properties, + * as well as some specific at-rules. Since they can't be encapsulated, we have to strip + * any scoping selectors from them. For more information: https://www.w3.org/TR/css-page-3 + * ``` + */ + private _stripScopingSelectors(cssText: string): string { + return processRules(cssText, rule => { + const selector = rule.selector.replace(_shadowDeepSelectors, ' ') + .replace(_polyfillHostNoCombinatorRe, ' '); + return new CssRule(selector, rule.content); + }); + } + private _scopeSelector( selector: string, scopeSelector: string, hostSelector: string, strict: boolean): string { return selector.split(',') @@ -595,7 +624,7 @@ const _shadowDOMSelectorsRe = [ // Support for `>>>`, `deep`, `::ng-deep` is then also deprecated and will be removed in the future. // see https://github.com/angular/angular/pull/17677 const _shadowDeepSelectors = /(?:>>>)|(?:\/deep\/)|(?:::ng-deep)/g; -const _selectorReSuffix = '([>\\s~+\[.,{:][\\s\\S]*)?$'; +const _selectorReSuffix = '([>\\s~+[.,{:][\\s\\S]*)?$'; const _polyfillHostRe = /-shadowcsshost/gim; const _colonHostRe = /:host/gim; const _colonHostContextRe = /:host-context/gim; @@ -763,7 +792,7 @@ function combineHostContextSelectors(contextSelectors: string[], otherSelectors: * in-place. * @param multiples The number of times the current groups should appear. */ -export function repeatGroups(groups: string[][], multiples: number): void { +export function repeatGroups(groups: string[][], multiples: number): void { const length = groups.length; for (let i = 1; i < multiples; i++) { for (let j = 0; j < length; j++) { diff --git a/packages/compiler/src/template_parser/binding_parser.ts b/packages/compiler/src/template_parser/binding_parser.ts index daffb70155..8757e39d79 100644 --- a/packages/compiler/src/template_parser/binding_parser.ts +++ b/packages/compiler/src/template_parser/binding_parser.ts @@ -568,7 +568,7 @@ export class BindingParser { export class PipeCollector extends RecursiveAstVisitor { pipes = new Map(); - visitPipe(ast: BindingPipe, context: any): any { + override visitPipe(ast: BindingPipe, context: any): any { this.pipes.set(ast.name, ast); ast.exp.visit(this); this.visitAll(ast.args, context); diff --git a/packages/compiler/src/template_parser/template_ast.ts b/packages/compiler/src/template_parser/template_ast.ts index 4774890e61..323a70afa3 100644 --- a/packages/compiler/src/template_parser/template_ast.ts +++ b/packages/compiler/src/template_parser/template_ast.ts @@ -328,7 +328,7 @@ export class RecursiveTemplateAstVisitor extends NullTemplateVisitor implements } // Nodes with children - visitEmbeddedTemplate(ast: EmbeddedTemplateAst, context: any): any { + override visitEmbeddedTemplate(ast: EmbeddedTemplateAst, context: any): any { return this.visitChildren(context, visit => { visit(ast.attrs); visit(ast.references); @@ -339,7 +339,7 @@ export class RecursiveTemplateAstVisitor extends NullTemplateVisitor implements }); } - visitElement(ast: ElementAst, context: any): any { + override visitElement(ast: ElementAst, context: any): any { return this.visitChildren(context, visit => { visit(ast.attrs); visit(ast.inputs); @@ -351,7 +351,7 @@ export class RecursiveTemplateAstVisitor extends NullTemplateVisitor implements }); } - visitDirective(ast: DirectiveAst, context: any): any { + override visitDirective(ast: DirectiveAst, context: any): any { return this.visitChildren(context, visit => { visit(ast.inputs); visit(ast.hostProperties); diff --git a/packages/compiler/src/version.ts b/packages/compiler/src/version.ts index 5ac1b6c24d..8b57d9756f 100644 --- a/packages/compiler/src/version.ts +++ b/packages/compiler/src/version.ts @@ -9,7 +9,7 @@ /** * @module * @description - * Entry point for all public APIs of the common package. + * Entry point for all public APIs of the compiler package. */ import {Version} from './util'; diff --git a/packages/compiler/src/view_compiler/type_check_compiler.ts b/packages/compiler/src/view_compiler/type_check_compiler.ts index 6eaa3f6552..9518b0a77d 100644 --- a/packages/compiler/src/view_compiler/type_check_compiler.ts +++ b/packages/compiler/src/view_compiler/type_check_compiler.ts @@ -78,6 +78,7 @@ const DYNAMIC_VAR_NAME = '_any'; class TypeCheckLocalResolver implements LocalResolver { notifyImplicitReceiverUse(): void {} + maybeRestoreView(): void {} getLocal(name: string): o.Expression|null { if (name === EventHandlerVars.event.name) { // References to the event should not be type-checked. @@ -290,6 +291,8 @@ class ViewBuilder implements TemplateAstVisitor, LocalResolver { } notifyImplicitReceiverUse(): void {} + maybeRestoreView(): void {} + getLocal(name: string): o.Expression|null { if (name == EventHandlerVars.event.name) { return o.variable(this.getOutputVar(o.BuiltinTypeName.Dynamic)); diff --git a/packages/compiler/src/view_compiler/view_compiler.ts b/packages/compiler/src/view_compiler/view_compiler.ts index b8c9f76c80..4cbe72a4d8 100644 --- a/packages/compiler/src/view_compiler/view_compiler.ts +++ b/packages/compiler/src/view_compiler/view_compiler.ts @@ -24,7 +24,7 @@ import {componentFactoryResolverProviderDef, depDef, lifecycleHookToNodeFlag, pr const CLASS_ATTR = 'class'; const STYLE_ATTR = 'style'; -const IMPLICIT_TEMPLATE_VAR = '\$implicit'; +const IMPLICIT_TEMPLATE_VAR = '$implicit'; export class ViewCompileResult { constructor(public viewClassVar: string, public rendererTypeVar: string) {} @@ -680,11 +680,15 @@ class ViewBuilder implements TemplateAstVisitor, LocalResolver { } notifyImplicitReceiverUse(): void { - // Not needed in View Engine as View Engine walks through the generated + // Not needed in ViewEngine as ViewEngine walks through the generated // expressions to figure out if the implicit receiver is used and needs // to be generated as part of the pre-update statements. } + maybeRestoreView(): void { + // Not necessary in ViewEngine, because view restoration is an Ivy concept. + } + private _createLiteralArrayConverter(sourceSpan: ParseSourceSpan, argCount: number): BuiltinConverter { if (argCount === 0) { diff --git a/packages/compiler/test/compiler_facade_interface_spec.ts b/packages/compiler/test/compiler_facade_interface_spec.ts index e0481e504a..69cb4be6ae 100644 --- a/packages/compiler/test/compiler_facade_interface_spec.ts +++ b/packages/compiler/test/compiler_facade_interface_spec.ts @@ -76,6 +76,11 @@ const coreR3InjectableMetadataFacade: core.R3InjectableMetadataFacade = const compilerR3InjectableMetadataFacade: compiler.R3InjectableMetadataFacade = null! as core.R3InjectableMetadataFacade; +const coreR3DeclareInjectableFacade: core.R3DeclareInjectableFacade = + null! as compiler.R3DeclareInjectableFacade; +const compilerR3DeclareInjectableFacade: compiler.R3DeclareInjectableFacade = + null! as core.R3DeclareInjectableFacade; + const coreR3NgModuleMetadataFacade: core.R3NgModuleMetadataFacade = null! as compiler.R3NgModuleMetadataFacade; const compilerR3NgModuleMetadataFacade: compiler.R3NgModuleMetadataFacade = diff --git a/packages/compiler/test/directive_resolver_spec.ts b/packages/compiler/test/directive_resolver_spec.ts index a1d7d96f2f..e2fcabb557 100644 --- a/packages/compiler/test/directive_resolver_spec.ts +++ b/packages/compiler/test/directive_resolver_spec.ts @@ -227,7 +227,7 @@ class SomeDirectiveWithoutMetadata {} } class Child extends Parent { - @Input('p22') p2: any; + @Input('p22') override p2: any; @Input() p3: any; } @@ -282,7 +282,7 @@ class SomeDirectiveWithoutMetadata {} } class Child extends Parent { - @Output('p22') p2: any; + @Output('p22') override p2: any; @Output() p3: any; } @@ -328,7 +328,7 @@ class SomeDirectiveWithoutMetadata {} } class Child extends Parent { - @HostBinding('p22') p2: any; + @HostBinding('p22') override p2: any; @HostBinding() p3: any; } @@ -350,7 +350,7 @@ class SomeDirectiveWithoutMetadata {} class Child extends Parent { @HostListener('p22') - p2() { + override p2() { } @HostListener('p3') p3() { @@ -375,10 +375,10 @@ class SomeDirectiveWithoutMetadata {} class Child extends Parent { @HostListener('c1') - p1() { + override p1() { } - @HostBinding('c2') p2: any; + @HostBinding('c2') override p2: any; } const directiveMetadata = resolver.resolve(Child); @@ -426,7 +426,7 @@ class SomeDirectiveWithoutMetadata {} } class Child extends Parent { - @ContentChild('p22') p2: any; + @ContentChild('p22') override p2: any; @ContentChild('p3') p3: any; } diff --git a/packages/compiler/test/expression_parser/ast_spec.ts b/packages/compiler/test/expression_parser/ast_spec.ts index c49ff622f4..989d199e57 100644 --- a/packages/compiler/test/expression_parser/ast_spec.ts +++ b/packages/compiler/test/expression_parser/ast_spec.ts @@ -30,7 +30,7 @@ describe('RecursiveAstVisitor', () => { }); class Visitor extends RecursiveAstVisitor { - visit(node: AST, path: AST[]) { + override visit(node: AST, path: AST[]) { path.push(node); node.visit(this, path); } diff --git a/packages/compiler/test/expression_parser/lexer_spec.ts b/packages/compiler/test/expression_parser/lexer_spec.ts index 33814492bf..068cfdeb52 100644 --- a/packages/compiler/test/expression_parser/lexer_spec.ts +++ b/packages/compiler/test/expression_parser/lexer_spec.ts @@ -47,6 +47,13 @@ function expectIdentifierToken(token: any, index: number, end: number, identifie expect(token.toString()).toEqual(identifier); } +function expectPrivateIdentifierToken(token: any, index: number, end: number, identifier: string) { + expectToken(token, index, end); + expect(token.isPrivateIdentifier()).toBe(true); + expect(token.toString()).toEqual(identifier); +} + + function expectKeywordToken(token: any, index: number, end: number, keyword: string) { expectToken(token, index, end); expect(token.isKeyword()).toBe(true); @@ -82,6 +89,31 @@ function expectErrorToken(token: Token, index: any, end: number, message: string expectIdentifierToken(tokens[2], 2, 3, 'k'); }); + it('should tokenize a private identifier', () => { + const tokens: number[] = lex('#a'); + expect(tokens.length).toEqual(1); + expectPrivateIdentifierToken(tokens[0], 0, 2, '#a'); + }); + + it('should tokenize a property access with private identifier', () => { + const tokens: number[] = lex('j.#k'); + expect(tokens.length).toEqual(3); + expectIdentifierToken(tokens[0], 0, 1, 'j'); + expectCharacterToken(tokens[1], 1, 2, '.'); + expectPrivateIdentifierToken(tokens[2], 2, 4, '#k'); + }); + + it('should throw an invalid character error when a hash character is discovered but ' + + 'not indicating a private identifier', + () => { + expectErrorToken( + lex('#')[0], 0, 1, + `Lexer Error: Invalid character [#] at column 0 in expression [#]`); + expectErrorToken( + lex('#0')[0], 0, 1, + `Lexer Error: Invalid character [#] at column 0 in expression [#0]`); + }); + it('should tokenize an operator', () => { const tokens: number[] = lex('j-k'); expect(tokens.length).toEqual(3); @@ -95,6 +127,14 @@ function expectErrorToken(token: Token, index: any, end: number, message: string expectCharacterToken(tokens[3], 3, 4, ']'); }); + it('should tokenize a safe indexed operator', () => { + const tokens: number[] = lex('j?.[k]'); + expect(tokens.length).toBe(5); + expectOperatorToken(tokens[1], 1, 3, '?.'); + expectCharacterToken(tokens[2], 3, 4, '['); + expectCharacterToken(tokens[4], 5, 6, ']'); + }); + it('should tokenize numbers', () => { const tokens: number[] = lex('88'); expect(tokens.length).toEqual(1); @@ -248,13 +288,43 @@ function expectErrorToken(token: Token, index: any, end: number, message: string 'Lexer Error: Invalid unicode escape [\\u1\'\'b] at column 2 in expression [\'\\u1\'\'bla\']'); }); - it('should tokenize hash as operator', () => { - expectOperatorToken(lex('#')[0], 0, 1, '#'); - }); - it('should tokenize ?. as operator', () => { expectOperatorToken(lex('?.')[0], 0, 2, '?.'); }); + + it('should tokenize ?? as operator', () => { + expectOperatorToken(lex('??')[0], 0, 2, '??'); + }); + + it('should tokenize number with separator', () => { + expectNumberToken(lex('123_456')[0], 0, 7, 123_456); + expectNumberToken(lex('1_000_000_000')[0], 0, 13, 1_000_000_000); + expectNumberToken(lex('123_456.78')[0], 0, 10, 123_456.78); + expectNumberToken(lex('123_456_789.123_456_789')[0], 0, 23, 123_456_789.123_456_789); + expectNumberToken(lex('1_2_3_4')[0], 0, 7, 1_2_3_4); + expectNumberToken(lex('1_2_3_4.5_6_7_8')[0], 0, 15, 1_2_3_4.5_6_7_8); + }); + + it('should tokenize number starting with an underscore as an identifier', () => { + expectIdentifierToken(lex('_123')[0], 0, 4, '_123'); + expectIdentifierToken(lex('_123_')[0], 0, 5, '_123_'); + expectIdentifierToken(lex('_1_2_3_')[0], 0, 7, '_1_2_3_'); + }); + + it('should throw error for invalid number separators', () => { + expectErrorToken( + lex('123_')[0], 3, 3, + 'Lexer Error: Invalid numeric separator at column 3 in expression [123_]'); + expectErrorToken( + lex('12__3')[0], 2, 2, + 'Lexer Error: Invalid numeric separator at column 2 in expression [12__3]'); + expectErrorToken( + lex('1_2_3_.456')[0], 5, 5, + 'Lexer Error: Invalid numeric separator at column 5 in expression [1_2_3_.456]'); + expectErrorToken( + lex('1_2_3._456')[0], 6, 6, + 'Lexer Error: Invalid numeric separator at column 6 in expression [1_2_3._456]'); + }); }); }); } diff --git a/packages/compiler/test/expression_parser/parser_spec.ts b/packages/compiler/test/expression_parser/parser_spec.ts index 5c4ab2c876..444995483b 100644 --- a/packages/compiler/test/expression_parser/parser_spec.ts +++ b/packages/compiler/test/expression_parser/parser_spec.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {AbsoluteSourceSpan, ASTWithSource, BindingPipe, EmptyExpr, Interpolation, ParserError, TemplateBinding, VariableBinding} from '@angular/compiler/src/expression_parser/ast'; +import {AbsoluteSourceSpan, ASTWithSource, BindingPipe, EmptyExpr, Interpolation, MethodCall, ParserError, TemplateBinding, VariableBinding} from '@angular/compiler/src/expression_parser/ast'; import {Lexer} from '@angular/compiler/src/expression_parser/lexer'; import {IvyParser, Parser, SplitInterpolation} from '@angular/compiler/src/expression_parser/parser'; import {expect} from '@angular/platform-browser/testing/src/matchers'; @@ -81,6 +81,8 @@ describe('parser', () => { it('should parse expressions', () => { checkAction('true && true'); checkAction('true || false'); + checkAction('null ?? 0'); + checkAction('null ?? undefined ?? 0'); }); it('should parse grouped expressions', () => { @@ -118,6 +120,24 @@ describe('parser', () => { it('should only allow identifier, string, or keyword as map key', () => { expectActionError('{(:0}', 'expected identifier, keyword, or string'); expectActionError('{1234:0}', 'expected identifier, keyword, or string'); + expectActionError('{#myField:0}', 'expected identifier, keyword or string'); + }); + + it('should parse property shorthand declarations', () => { + checkAction('{a, b, c}', '{a: a, b: b, c: c}'); + checkAction('{a: 1, b}', '{a: 1, b: b}'); + checkAction('{a, b: 1}', '{a: a, b: 1}'); + checkAction('{a: 1, b, c: 2}', '{a: 1, b: b, c: 2}'); + }); + + it('should not allow property shorthand declaration on quoted properties', () => { + expectActionError('{"a-b"}', 'expected : at column 7'); + }); + + it('should not infer invalid identifiers as shorthand property declarations', () => { + expectActionError('{a.b}', 'expected } at column 3'); + expectActionError('{a["b"]}', 'expected } at column 3'); + expectActionError('{1234}', ' expected identifier, keyword, or string at column 2'); }); }); @@ -128,11 +148,20 @@ describe('parser', () => { checkAction('a.a'); }); + it('should error for private identifiers with implicit receiver', () => { + checkActionWithError( + '#privateField', '', + 'Private identifiers are not supported. Unexpected private identifier: #privateField at column 1'); + }); + it('should only allow identifier or keyword as member names', () => { checkActionWithError('x.', 'x.', 'identifier or keyword'); checkActionWithError('x.(', 'x.', 'identifier or keyword'); checkActionWithError('x. 1234', 'x.', 'identifier or keyword'); checkActionWithError('x."foo"', 'x.', 'identifier or keyword'); + checkActionWithError( + 'x.#privateField', 'x.', + 'Private identifiers are not supported. Unexpected private identifier: #privateField, expected identifier or keyword'); }); it('should parse safe field access', () => { @@ -186,6 +215,13 @@ describe('parser', () => { checkAction('a.add(1, 2)'); checkAction('fn().add(1, 2)'); }); + + it('should parse an EmptyExpr with a correct span for a trailing empty argument', () => { + const ast = parseAction('fn(1, )').ast as MethodCall; + expect(ast.args[1]).toBeAnInstanceOf(EmptyExpr); + const sourceSpan = (ast.args[1] as EmptyExpr).sourceSpan; + expect([sourceSpan.start, sourceSpan.end]).toEqual([5, 6]); + }); }); describe('functional calls', () => { @@ -196,9 +232,16 @@ describe('parser', () => { describe('keyed read', () => { it('should parse keyed reads', () => { - checkAction('a["a"]'); - checkAction('this.a["a"]', 'a["a"]'); - checkAction('a.a["a"]'); + checkBinding('a["a"]'); + checkBinding('this.a["a"]', 'a["a"]'); + checkBinding('a.a["a"]'); + }); + + it('should parse safe keyed reads', () => { + checkBinding('a?.["a"]'); + checkBinding('this.a?.["a"]', 'a?.["a"]'); + checkBinding('a.a?.["a"]'); + checkBinding('a.a?.["a" | foo]', 'a.a?.[("a" | foo)]'); }); describe('malformed keyed reads', () => { @@ -229,6 +272,10 @@ describe('parser', () => { checkAction('a.a["a"] = 1 + 2'); }); + it('should report on safe keyed writes', () => { + expectActionError('a?.["a"] = 123', 'cannot be used in the assignment'); + }); + describe('malformed keyed writes', () => { it('should recover on empty rvalues', () => { checkActionWithError('a["a"] = ', 'a["a"] = ', 'Unexpected end of expression'); @@ -348,6 +395,11 @@ describe('parser', () => { expect(unparseWithSpan(ast)).toContain(['foo()', '[nameSpan] foo']); }); + it('should record method call argument span', () => { + const ast = parseAction('foo(1 + 2)'); + expect(unparseWithSpan(ast)).toContain(['foo(1 + 2)', '[argumentSpan] 1 + 2']); + }); + it('should record accessed method call span', () => { const ast = parseAction('foo.bar()'); expect(unparseWithSpan(ast)).toContain(['foo.bar()', 'foo.bar()']); @@ -497,6 +549,7 @@ describe('parser', () => { expectBindingError('"Foo"|(', 'identifier or keyword'); expectBindingError('"Foo"|1234', 'identifier or keyword'); expectBindingError('"Foo"|"uppercase"', 'identifier or keyword'); + expectBindingError('"Foo"|#privateIdentifier"', 'identifier or keyword'); }); it('should parse quoted expressions', () => { diff --git a/packages/compiler/test/expression_parser/utils/unparser.ts b/packages/compiler/test/expression_parser/utils/unparser.ts index cb165b246b..a3658d769c 100644 --- a/packages/compiler/test/expression_parser/utils/unparser.ts +++ b/packages/compiler/test/expression_parser/utils/unparser.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {AST, AstVisitor, ASTWithSource, Binary, BindingPipe, Chain, Conditional, FunctionCall, ImplicitReceiver, Interpolation, KeyedRead, KeyedWrite, LiteralArray, LiteralMap, LiteralPrimitive, MethodCall, NonNullAssert, ParseSpan, PrefixNot, PropertyRead, PropertyWrite, Quote, RecursiveAstVisitor, SafeMethodCall, SafePropertyRead, ThisReceiver, Unary} from '../../../src/expression_parser/ast'; +import {AST, AstVisitor, ASTWithSource, Binary, BindingPipe, Chain, Conditional, FunctionCall, ImplicitReceiver, Interpolation, KeyedRead, KeyedWrite, LiteralArray, LiteralMap, LiteralPrimitive, MethodCall, NonNullAssert, ParseSpan, PrefixNot, PropertyRead, PropertyWrite, Quote, RecursiveAstVisitor, SafeKeyedRead, SafeMethodCall, SafePropertyRead, ThisReceiver, Unary} from '../../../src/expression_parser/ast'; import {DEFAULT_INTERPOLATION_CONFIG, InterpolationConfig} from '../../../src/ml_parser/interpolation_config'; class Unparser implements AstVisitor { @@ -101,14 +101,14 @@ class Unparser implements AstVisitor { } visitKeyedRead(ast: KeyedRead, context: any) { - this._visit(ast.obj); + this._visit(ast.receiver); this._expression += '['; this._visit(ast.key); this._expression += ']'; } visitKeyedWrite(ast: KeyedWrite, context: any) { - this._visit(ast.obj); + this._visit(ast.receiver); this._expression += '['; this._visit(ast.key); this._expression += '] = '; @@ -193,6 +193,13 @@ class Unparser implements AstVisitor { this._expression += `${ast.prefix}:${ast.uninterpretedExpression}`; } + visitSafeKeyedRead(ast: SafeKeyedRead, context: any) { + this._visit(ast.receiver); + this._expression += '?.['; + this._visit(ast.key); + this._expression += ']'; + } + private _visit(ast: AST) { ast.visit(this); } @@ -224,11 +231,14 @@ export function unparseWithSpan( ]); } - visit(ast: AST, unparsedList: UnparsedWithSpan[]) { + override visit(ast: AST, unparsedList: UnparsedWithSpan[]) { this.recordUnparsed(ast, 'span', unparsedList); if (ast.hasOwnProperty('nameSpan')) { this.recordUnparsed(ast, 'nameSpan', unparsedList); } + if (ast.hasOwnProperty('argumentSpan')) { + this.recordUnparsed(ast, 'argumentSpan', unparsedList); + } ast.visit(this, unparsedList); } }; diff --git a/packages/compiler/test/expression_parser/utils/validator.ts b/packages/compiler/test/expression_parser/utils/validator.ts index 0023fa77dd..a24c8dbe55 100644 --- a/packages/compiler/test/expression_parser/utils/validator.ts +++ b/packages/compiler/test/expression_parser/utils/validator.ts @@ -6,14 +6,14 @@ * found in the LICENSE file at https://angular.io/license */ -import {AST, Binary, BindingPipe, Chain, Conditional, FunctionCall, ImplicitReceiver, Interpolation, KeyedRead, KeyedWrite, LiteralArray, LiteralMap, LiteralPrimitive, MethodCall, ParseSpan, PrefixNot, PropertyRead, PropertyWrite, Quote, RecursiveAstVisitor, SafeMethodCall, SafePropertyRead, Unary} from '../../../src/expression_parser/ast'; +import {AST, Binary, BindingPipe, Chain, Conditional, FunctionCall, ImplicitReceiver, Interpolation, KeyedRead, KeyedWrite, LiteralArray, LiteralMap, LiteralPrimitive, MethodCall, ParseSpan, PrefixNot, PropertyRead, PropertyWrite, Quote, RecursiveAstVisitor, SafeKeyedRead, SafeMethodCall, SafePropertyRead, Unary} from '../../../src/expression_parser/ast'; import {unparse} from './unparser'; class ASTValidator extends RecursiveAstVisitor { private parentSpan: ParseSpan|undefined; - visit(ast: AST) { + override visit(ast: AST) { this.parentSpan = undefined; ast.visit(this); } @@ -34,85 +34,89 @@ class ASTValidator extends RecursiveAstVisitor { this.parentSpan = oldParent; } - visitUnary(ast: Unary, context: any): any { + override visitUnary(ast: Unary, context: any): any { this.validate(ast, () => super.visitUnary(ast, context)); } - visitBinary(ast: Binary, context: any): any { + override visitBinary(ast: Binary, context: any): any { this.validate(ast, () => super.visitBinary(ast, context)); } - visitChain(ast: Chain, context: any): any { + override visitChain(ast: Chain, context: any): any { this.validate(ast, () => super.visitChain(ast, context)); } - visitConditional(ast: Conditional, context: any): any { + override visitConditional(ast: Conditional, context: any): any { this.validate(ast, () => super.visitConditional(ast, context)); } - visitFunctionCall(ast: FunctionCall, context: any): any { + override visitFunctionCall(ast: FunctionCall, context: any): any { this.validate(ast, () => super.visitFunctionCall(ast, context)); } - visitImplicitReceiver(ast: ImplicitReceiver, context: any): any { + override visitImplicitReceiver(ast: ImplicitReceiver, context: any): any { this.validate(ast, () => super.visitImplicitReceiver(ast, context)); } - visitInterpolation(ast: Interpolation, context: any): any { + override visitInterpolation(ast: Interpolation, context: any): any { this.validate(ast, () => super.visitInterpolation(ast, context)); } - visitKeyedRead(ast: KeyedRead, context: any): any { + override visitKeyedRead(ast: KeyedRead, context: any): any { this.validate(ast, () => super.visitKeyedRead(ast, context)); } - visitKeyedWrite(ast: KeyedWrite, context: any): any { + override visitKeyedWrite(ast: KeyedWrite, context: any): any { this.validate(ast, () => super.visitKeyedWrite(ast, context)); } - visitLiteralArray(ast: LiteralArray, context: any): any { + override visitLiteralArray(ast: LiteralArray, context: any): any { this.validate(ast, () => super.visitLiteralArray(ast, context)); } - visitLiteralMap(ast: LiteralMap, context: any): any { + override visitLiteralMap(ast: LiteralMap, context: any): any { this.validate(ast, () => super.visitLiteralMap(ast, context)); } - visitLiteralPrimitive(ast: LiteralPrimitive, context: any): any { + override visitLiteralPrimitive(ast: LiteralPrimitive, context: any): any { this.validate(ast, () => super.visitLiteralPrimitive(ast, context)); } - visitMethodCall(ast: MethodCall, context: any): any { + override visitMethodCall(ast: MethodCall, context: any): any { this.validate(ast, () => super.visitMethodCall(ast, context)); } - visitPipe(ast: BindingPipe, context: any): any { + override visitPipe(ast: BindingPipe, context: any): any { this.validate(ast, () => super.visitPipe(ast, context)); } - visitPrefixNot(ast: PrefixNot, context: any): any { + override visitPrefixNot(ast: PrefixNot, context: any): any { this.validate(ast, () => super.visitPrefixNot(ast, context)); } - visitPropertyRead(ast: PropertyRead, context: any): any { + override visitPropertyRead(ast: PropertyRead, context: any): any { this.validate(ast, () => super.visitPropertyRead(ast, context)); } - visitPropertyWrite(ast: PropertyWrite, context: any): any { + override visitPropertyWrite(ast: PropertyWrite, context: any): any { this.validate(ast, () => super.visitPropertyWrite(ast, context)); } - visitQuote(ast: Quote, context: any): any { + override visitQuote(ast: Quote, context: any): any { this.validate(ast, () => super.visitQuote(ast, context)); } - visitSafeMethodCall(ast: SafeMethodCall, context: any): any { + override visitSafeMethodCall(ast: SafeMethodCall, context: any): any { this.validate(ast, () => super.visitSafeMethodCall(ast, context)); } - visitSafePropertyRead(ast: SafePropertyRead, context: any): any { + override visitSafePropertyRead(ast: SafePropertyRead, context: any): any { this.validate(ast, () => super.visitSafePropertyRead(ast, context)); } + + override visitSafeKeyedRead(ast: SafeKeyedRead, context: any): any { + this.validate(ast, () => super.visitSafeKeyedRead(ast, context)); + } } function inSpan(span: ParseSpan, parentSpan: ParseSpan|undefined): parentSpan is ParseSpan { diff --git a/packages/compiler/test/i18n/integration_common.ts b/packages/compiler/test/i18n/integration_common.ts index 2cefca7946..63bfb6e0dd 100644 --- a/packages/compiler/test/i18n/integration_common.ts +++ b/packages/compiler/test/i18n/integration_common.ts @@ -11,14 +11,13 @@ import {Serializer} from '@angular/compiler/src/i18n'; import {MessageBundle} from '@angular/compiler/src/i18n/message_bundle'; import {HtmlParser} from '@angular/compiler/src/ml_parser/html_parser'; import {DEFAULT_INTERPOLATION_CONFIG} from '@angular/compiler/src/ml_parser/interpolation_config'; +import {ResourceLoader} from '@angular/compiler/src/resource_loader'; import {Component, DebugElement, TRANSLATIONS, TRANSLATIONS_FORMAT} from '@angular/core'; import {ComponentFixture, TestBed} from '@angular/core/testing'; import {By} from '@angular/platform-browser/src/dom/debug/by'; import {stringifyElement} from '@angular/platform-browser/testing/src/browser_util'; import {expect} from '@angular/platform-browser/testing/src/matchers'; -import {SpyResourceLoader} from '../spies'; - @Component({ selector: 'i18n-cmp', template: '', @@ -180,7 +179,7 @@ export const HTML = ` export async function configureCompiler(translationsToMerge: string, format: string) { TestBed.configureCompiler({ providers: [ - SpyResourceLoader.PROVIDE, + {provide: ResourceLoader, useValue: jasmine.createSpyObj('ResourceLoader', ['get'])}, FrLocalization.PROVIDE, {provide: TRANSLATIONS, useValue: translationsToMerge}, {provide: TRANSLATIONS_FORMAT, useValue: format}, diff --git a/packages/compiler/test/i18n/message_bundle_spec.ts b/packages/compiler/test/i18n/message_bundle_spec.ts index c1a2b23d08..8d2f7edce9 100644 --- a/packages/compiler/test/i18n/message_bundle_spec.ts +++ b/packages/compiler/test/i18n/message_bundle_spec.ts @@ -44,17 +44,17 @@ import {DEFAULT_INTERPOLATION_CONFIG} from '../../src/ml_parser/interpolation_co } class _TestSerializer extends Serializer { - write(messages: i18n.Message[]): string { + override write(messages: i18n.Message[]): string { return messages.map(msg => `${serializeNodes(msg.nodes)} (${msg.meaning}|${msg.description})`) .join('//'); } - load(content: string, url: string): + override load(content: string, url: string): {locale: string|null, i18nNodesByMsgId: {[id: string]: i18n.Node[]}} { return {locale: null, i18nNodesByMsgId: {}}; } - digest(msg: i18n.Message): string { + override digest(msg: i18n.Message): string { return msg.id || `default`; } } diff --git a/packages/compiler/test/i18n/serializers/i18n_ast_spec.ts b/packages/compiler/test/i18n/serializers/i18n_ast_spec.ts index 7b2fe3b7b7..2030762403 100644 --- a/packages/compiler/test/i18n/serializers/i18n_ast_spec.ts +++ b/packages/compiler/test/i18n/serializers/i18n_ast_spec.ts @@ -58,15 +58,15 @@ class RecurseVisitor extends i18n.RecurseVisitor { phCount = 0; icuPhCount = 0; - visitText(text: i18n.Text, context?: any): any { + override visitText(text: i18n.Text, context?: any): any { this.textCount++; } - visitPlaceholder(ph: i18n.Placeholder, context?: any): any { + override visitPlaceholder(ph: i18n.Placeholder, context?: any): any { this.phCount++; } - visitIcuPlaceholder(ph: i18n.IcuPlaceholder, context?: any): any { + override visitIcuPlaceholder(ph: i18n.IcuPlaceholder, context?: any): any { this.icuPhCount++; } } diff --git a/packages/compiler/test/ml_parser/html_parser_spec.ts b/packages/compiler/test/ml_parser/html_parser_spec.ts index 48e87d07cb..b971d9187a 100644 --- a/packages/compiler/test/ml_parser/html_parser_spec.ts +++ b/packages/compiler/test/ml_parser/html_parser_spec.ts @@ -857,6 +857,20 @@ import {humanizeDom, humanizeDomSourceSpans, humanizeLineColumn, humanizeNodes} ]]); }); + it('gets correct close tag for parent when a child is not closed', () => { + const {errors, rootNodes} = parser.parse('
', 'TestComp'); + expect(errors.length).toEqual(1); + expect(humanizeErrors(errors)).toEqual([[ + 'div', + 'Unexpected closing tag "div". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags', + '0:11' + ]]); + expect(humanizeNodes(rootNodes, true)).toEqual([ + [html.Element, 'div', 0, '
', '
', '
'], + [html.Element, 'span', 1, '', '', null], + ]); + }); + describe('incomplete element tag', () => { it('should parse and report incomplete tags after the tag name', () => { const {errors, rootNodes} = parser.parse('
', 'TestComp'); diff --git a/packages/compiler/test/ml_parser/lexer_spec.ts b/packages/compiler/test/ml_parser/lexer_spec.ts index 7d451b52ea..5c795ed959 100644 --- a/packages/compiler/test/ml_parser/lexer_spec.ts +++ b/packages/compiler/test/ml_parser/lexer_spec.ts @@ -612,7 +612,7 @@ import {ParseLocation, ParseSourceFile, ParseSourceSpan} from '../../src/parse_u ]); }); - it('should parse valid start tag in interpolation', () => { + it('should break out of interpolation in text token on valid start tag', () => { expect(tokenizeAndHumanizeParts('{{ a d }}')).toEqual([ [lex.TokenType.TEXT, '{{ a '], [lex.TokenType.TAG_OPEN_START, '', 'b'], @@ -624,6 +624,42 @@ import {ParseLocation, ParseSourceFile, ParseSourceSpan} from '../../src/parse_u ]); }); + it('should break out of interpolation in text token on valid comment', () => { + expect(tokenizeAndHumanizeParts('{{ a }}')).toEqual([ + [lex.TokenType.TEXT, '{{ a }'], + [lex.TokenType.COMMENT_START], + [lex.TokenType.RAW_TEXT, ''], + [lex.TokenType.COMMENT_END], + [lex.TokenType.TEXT, '}'], + [lex.TokenType.EOF], + ]); + }); + + it('should break out of interpolation in text token on valid CDATA', () => { + expect(tokenizeAndHumanizeParts('{{ a }}')).toEqual([ + [lex.TokenType.TEXT, '{{ a }'], + [lex.TokenType.CDATA_START], + [lex.TokenType.RAW_TEXT, ''], + [lex.TokenType.CDATA_END], + [lex.TokenType.TEXT, '}'], + [lex.TokenType.EOF], + ]); + }); + + it('should ignore invalid start tag in interpolation', () => { + // Note that if the `<=` is considered an "end of text" then the following `{` would + // incorrectly be considered part of an ICU. + expect(tokenizeAndHumanizeParts(`{{'<={'}}`, {tokenizeExpansionForms: true})) + .toEqual([ + [lex.TokenType.TAG_OPEN_START, '', 'code'], + [lex.TokenType.TAG_OPEN_END], + [lex.TokenType.TEXT, '{{\'<={\'}}'], + [lex.TokenType.TAG_CLOSE, '', 'code'], + [lex.TokenType.EOF], + ]); + }); + + it('should parse start tags quotes in place of an attribute name as text', () => { expect(tokenizeAndHumanizeParts('')).toEqual([ [lex.TokenType.INCOMPLETE_TAG_OPEN, '', 't'], @@ -1208,6 +1244,18 @@ import {ParseLocation, ParseSourceFile, ParseSourceSpan} from '../../src/parse_u ]]); }); + it('should report unescaped "{" as an error, even after a prematurely terminated interpolation', + () => { + expect(tokenizeAndHumanizeErrors( + `{{b}}
import {a} from 'a';
`, + {tokenizeExpansionForms: true})) + .toEqual([[ + lex.TokenType.RAW_TEXT, + `Unexpected character "EOF" (Do you have an unescaped "{" in your template? Use "{{ '{' }}") to escape it.)`, + '0:56', + ]]); + }); + it('should include 2 lines of context in message', () => { const src = '111\n222\n333\nE\n444\n555\n666\n'; const file = new ParseSourceFile(src, 'file://'); diff --git a/packages/compiler/test/ng_module_resolver_mock_spec.ts b/packages/compiler/test/ng_module_resolver_mock_spec.ts index cb6ea2feee..487b7ed4e2 100644 --- a/packages/compiler/test/ng_module_resolver_mock_spec.ts +++ b/packages/compiler/test/ng_module_resolver_mock_spec.ts @@ -6,8 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {Injector, NgModule} from '@angular/core'; -import {beforeEach, describe, expect, inject, it} from '@angular/core/testing/src/testing_internal'; +import {NgModule} from '@angular/core'; import {JitReflector} from '@angular/platform-browser-dynamic/src/compiler_reflector'; import {MockNgModuleResolver} from '../testing'; @@ -16,9 +15,9 @@ import {MockNgModuleResolver} from '../testing'; describe('MockNgModuleResolver', () => { let ngModuleResolver: MockNgModuleResolver; - beforeEach(inject([Injector], (injector: Injector) => { + beforeEach(() => { ngModuleResolver = new MockNgModuleResolver(new JitReflector()); - })); + }); describe('NgModule overriding', () => { it('should fallback to the default NgModuleResolver when templates are not overridden', diff --git a/packages/compiler/test/ng_module_resolver_spec.ts b/packages/compiler/test/ng_module_resolver_spec.ts index 572890edad..1526da8b51 100644 --- a/packages/compiler/test/ng_module_resolver_spec.ts +++ b/packages/compiler/test/ng_module_resolver_spec.ts @@ -7,15 +7,28 @@ */ import {NgModuleResolver} from '@angular/compiler/src/ng_module_resolver'; -import {ɵstringify as stringify} from '@angular/core'; -import {NgModule} from '@angular/core/src/metadata'; +import {Component, Directive, Injectable, NgModule, ɵstringify as stringify} from '@angular/core'; import {JitReflector} from '@angular/platform-browser-dynamic/src/compiler_reflector'; -class SomeClass1 {} -class SomeClass2 {} -class SomeClass3 {} -class SomeClass4 {} -class SomeClass5 {} +@Directive() +class SomeClass1 { +} + +@NgModule() +class SomeClass2 { +} + +@NgModule() +class SomeClass3 { +} + +@Injectable() +class SomeClass4 { +} + +@Component({template: ''}) +class SomeClass5 { +} @NgModule({ declarations: [SomeClass1], diff --git a/packages/compiler/test/render3/r3_ast_absolute_span_spec.ts b/packages/compiler/test/render3/r3_ast_absolute_span_spec.ts index bb9082b245..9d89aaeb35 100644 --- a/packages/compiler/test/render3/r3_ast_absolute_span_spec.ts +++ b/packages/compiler/test/render3/r3_ast_absolute_span_spec.ts @@ -360,4 +360,15 @@ describe('expression AST absolute source spans', () => { expect(spans).toContain(['nestedPlaceholder', new AbsoluteSourceSpan(89, 106)]); }); }); + + describe('object literal', () => { + it('is correct for object literals with shorthand property declarations', () => { + const spans = + humanizeExpressionSource(parse('
').nodes); + + expect(spans).toContain(['{a: 1, b: b, c: 3, foo: foo}', new AbsoluteSourceSpan(19, 39)]); + expect(spans).toContain(['b', new AbsoluteSourceSpan(26, 27)]); + expect(spans).toContain(['foo', new AbsoluteSourceSpan(35, 38)]); + }); + }); }); diff --git a/packages/compiler/test/render3/util/expression.ts b/packages/compiler/test/render3/util/expression.ts index a0af48ba91..84092cd513 100644 --- a/packages/compiler/test/render3/util/expression.ts +++ b/packages/compiler/test/render3/util/expression.ts @@ -22,7 +22,7 @@ class ExpressionSourceHumanizer extends e.RecursiveAstVisitor implements t.Visit // This method is defined to reconcile the type of ExpressionSourceHumanizer // since both RecursiveAstVisitor and Visitor define the visit() method in // their interfaces. - visit(node: e.AST|t.Node, context?: any) { + override visit(node: e.AST|t.Node, context?: any) { if (node instanceof e.AST) { node.visit(this, context); } else { @@ -34,86 +34,90 @@ class ExpressionSourceHumanizer extends e.RecursiveAstVisitor implements t.Visit this.recordAst(ast); this.visitAll([ast.ast], null); } - visitBinary(ast: e.Binary) { + override visitBinary(ast: e.Binary) { this.recordAst(ast); super.visitBinary(ast, null); } - visitChain(ast: e.Chain) { + override visitChain(ast: e.Chain) { this.recordAst(ast); super.visitChain(ast, null); } - visitConditional(ast: e.Conditional) { + override visitConditional(ast: e.Conditional) { this.recordAst(ast); super.visitConditional(ast, null); } - visitFunctionCall(ast: e.FunctionCall) { + override visitFunctionCall(ast: e.FunctionCall) { this.recordAst(ast); super.visitFunctionCall(ast, null); } - visitImplicitReceiver(ast: e.ImplicitReceiver) { + override visitImplicitReceiver(ast: e.ImplicitReceiver) { this.recordAst(ast); super.visitImplicitReceiver(ast, null); } - visitInterpolation(ast: e.Interpolation) { + override visitInterpolation(ast: e.Interpolation) { this.recordAst(ast); super.visitInterpolation(ast, null); } - visitKeyedRead(ast: e.KeyedRead) { + override visitKeyedRead(ast: e.KeyedRead) { this.recordAst(ast); super.visitKeyedRead(ast, null); } - visitKeyedWrite(ast: e.KeyedWrite) { + override visitKeyedWrite(ast: e.KeyedWrite) { this.recordAst(ast); super.visitKeyedWrite(ast, null); } - visitLiteralPrimitive(ast: e.LiteralPrimitive) { + override visitLiteralPrimitive(ast: e.LiteralPrimitive) { this.recordAst(ast); super.visitLiteralPrimitive(ast, null); } - visitLiteralArray(ast: e.LiteralArray) { + override visitLiteralArray(ast: e.LiteralArray) { this.recordAst(ast); super.visitLiteralArray(ast, null); } - visitLiteralMap(ast: e.LiteralMap) { + override visitLiteralMap(ast: e.LiteralMap) { this.recordAst(ast); super.visitLiteralMap(ast, null); } - visitMethodCall(ast: e.MethodCall) { + override visitMethodCall(ast: e.MethodCall) { this.recordAst(ast); super.visitMethodCall(ast, null); } - visitNonNullAssert(ast: e.NonNullAssert) { + override visitNonNullAssert(ast: e.NonNullAssert) { this.recordAst(ast); super.visitNonNullAssert(ast, null); } - visitPipe(ast: e.BindingPipe) { + override visitPipe(ast: e.BindingPipe) { this.recordAst(ast); super.visitPipe(ast, null); } - visitPrefixNot(ast: e.PrefixNot) { + override visitPrefixNot(ast: e.PrefixNot) { this.recordAst(ast); super.visitPrefixNot(ast, null); } - visitPropertyRead(ast: e.PropertyRead) { + override visitPropertyRead(ast: e.PropertyRead) { this.recordAst(ast); super.visitPropertyRead(ast, null); } - visitPropertyWrite(ast: e.PropertyWrite) { + override visitPropertyWrite(ast: e.PropertyWrite) { this.recordAst(ast); super.visitPropertyWrite(ast, null); } - visitSafeMethodCall(ast: e.SafeMethodCall) { + override visitSafeMethodCall(ast: e.SafeMethodCall) { this.recordAst(ast); super.visitSafeMethodCall(ast, null); } - visitSafePropertyRead(ast: e.SafePropertyRead) { + override visitSafePropertyRead(ast: e.SafePropertyRead) { this.recordAst(ast); super.visitSafePropertyRead(ast, null); } - visitQuote(ast: e.Quote) { + override visitQuote(ast: e.Quote) { this.recordAst(ast); super.visitQuote(ast, null); } + override visitSafeKeyedRead(ast: e.SafeKeyedRead) { + this.recordAst(ast); + super.visitSafeKeyedRead(ast, null); + } visitTemplate(ast: t.Template) { t.visitAll(this, ast.children); diff --git a/packages/compiler/test/resource_loader_mock_spec.ts b/packages/compiler/test/resource_loader_mock_spec.ts index 4d19081d99..6723fa5d2e 100644 --- a/packages/compiler/test/resource_loader_mock_spec.ts +++ b/packages/compiler/test/resource_loader_mock_spec.ts @@ -7,7 +7,6 @@ */ import {MockResourceLoader} from '@angular/compiler/testing/src/resource_loader_mock'; -import {AsyncTestCompleter, beforeEach, describe, expect, inject, it} from '@angular/core/testing/src/testing_internal'; { describe('MockResourceLoader', () => { @@ -42,41 +41,37 @@ import {AsyncTestCompleter, beforeEach, describe, expect, inject, it} from '@ang request.then(onResponse, onError); } - it('should return a response from the definitions', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const url = '/foo'; - const response = 'bar'; - resourceLoader.when(url, response); - expectResponse(resourceLoader.get(url), url, response, () => async.done()); - resourceLoader.flush(); - })); + it('should return a response from the definitions', done => { + const url = '/foo'; + const response = 'bar'; + resourceLoader.when(url, response); + expectResponse(resourceLoader.get(url), url, response, () => done()); + resourceLoader.flush(); + }); - it('should return an error from the definitions', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const url = '/foo'; - const response: string = null!; - resourceLoader.when(url, response); - expectResponse(resourceLoader.get(url), url, response, () => async.done()); - resourceLoader.flush(); - })); + it('should return an error from the definitions', done => { + const url = '/foo'; + const response: string = null!; + resourceLoader.when(url, response); + expectResponse(resourceLoader.get(url), url, response, () => done()); + resourceLoader.flush(); + }); - it('should return a response from the expectations', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const url = '/foo'; - const response = 'bar'; - resourceLoader.expect(url, response); - expectResponse(resourceLoader.get(url), url, response, () => async.done()); - resourceLoader.flush(); - })); + it('should return a response from the expectations', done => { + const url = '/foo'; + const response = 'bar'; + resourceLoader.expect(url, response); + expectResponse(resourceLoader.get(url), url, response, () => done()); + resourceLoader.flush(); + }); - it('should return an error from the expectations', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const url = '/foo'; - const response: string = null!; - resourceLoader.expect(url, response); - expectResponse(resourceLoader.get(url), url, response, () => async.done()); - resourceLoader.flush(); - })); + it('should return an error from the expectations', done => { + const url = '/foo'; + const response: string = null!; + resourceLoader.expect(url, response); + expectResponse(resourceLoader.get(url), url, response, () => done()); + resourceLoader.flush(); + }); it('should not reuse expectations', () => { const url = '/foo'; @@ -89,15 +84,14 @@ import {AsyncTestCompleter, beforeEach, describe, expect, inject, it} from '@ang }).toThrowError('Unexpected request /foo'); }); - it('should return expectations before definitions', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const url = '/foo'; - resourceLoader.when(url, 'when'); - resourceLoader.expect(url, 'expect'); - expectResponse(resourceLoader.get(url), url, 'expect'); - expectResponse(resourceLoader.get(url), url, 'when', () => async.done()); - resourceLoader.flush(); - })); + it('should return expectations before definitions', done => { + const url = '/foo'; + resourceLoader.when(url, 'when'); + resourceLoader.expect(url, 'expect'); + expectResponse(resourceLoader.get(url), url, 'expect'); + expectResponse(resourceLoader.get(url), url, 'when', () => done()); + resourceLoader.flush(); + }); it('should throw when there is no definitions or expectations', () => { resourceLoader.get('/foo'); diff --git a/packages/compiler/test/runtime_compiler_spec.ts b/packages/compiler/test/runtime_compiler_spec.ts index ce37f36e9f..c0fbe40cd7 100644 --- a/packages/compiler/test/runtime_compiler_spec.ts +++ b/packages/compiler/test/runtime_compiler_spec.ts @@ -13,8 +13,6 @@ import {expect} from '@angular/platform-browser/testing/src/matchers'; import {MockDirectiveResolver} from '../testing'; -import {SpyResourceLoader} from './spies'; - @Component({selector: 'child-cmp'}) class ChildComp { } @@ -91,22 +89,20 @@ class SomeCompWithUrlTemplate { describe('RuntimeCompiler', () => { let compiler: Compiler; - let resourceLoader: SpyResourceLoader; + let resourceLoader: {get: jasmine.Spy}; let dirResolver: MockDirectiveResolver; - let injector: Injector; beforeEach(() => { - TestBed.configureCompiler({providers: [SpyResourceLoader.PROVIDE]}); + resourceLoader = jasmine.createSpyObj('ResourceLoader', ['get']); + TestBed.configureCompiler({providers: [{provide: ResourceLoader, useValue: resourceLoader}]}); }); beforeEach(fakeAsync(inject( [Compiler, ResourceLoader, DirectiveResolver, Injector], - (_compiler: Compiler, _resourceLoader: SpyResourceLoader, - _dirResolver: MockDirectiveResolver, _injector: Injector) => { + (_compiler: Compiler, _resourceLoader: any, _dirResolver: MockDirectiveResolver) => { compiler = _compiler; resourceLoader = _resourceLoader; dirResolver = _dirResolver; - injector = _injector; }))); describe('compileModuleAsync', () => { @@ -118,7 +114,7 @@ class SomeCompWithUrlTemplate { class SomeModule { } - resourceLoader.spy('get').and.callFake(() => Promise.resolve('hello')); + resourceLoader.get.and.callFake(() => Promise.resolve('hello')); let ngModuleFactory: NgModuleFactory = undefined!; compiler.compileModuleAsync(SomeModule).then((f) => ngModuleFactory = f); tick(); @@ -133,7 +129,7 @@ class SomeCompWithUrlTemplate { class SomeModule { } - resourceLoader.spy('get').and.callFake(() => Promise.resolve('')); + resourceLoader.get.and.callFake(() => Promise.resolve('')); expect(() => compiler.compileModuleSync(SomeModule)) .toThrowError(`Can't compile synchronously as ${ stringify(SomeCompWithUrlTemplate)} is still being loaded!`); @@ -145,7 +141,7 @@ class SomeCompWithUrlTemplate { class SomeModule { } - resourceLoader.spy('get').and.callFake(() => Promise.resolve('')); + resourceLoader.get.and.callFake(() => Promise.resolve('')); dirResolver.setDirective(SomeComp, new Component({selector: 'some-cmp', template: ''})); dirResolver.setDirective( ChildComp, new Component({selector: 'child-cmp', templateUrl: '/someTpl.html'})); @@ -163,7 +159,7 @@ class SomeCompWithUrlTemplate { class SomeModule { } - resourceLoader.spy('get').and.callFake(() => Promise.resolve('hello')); + resourceLoader.get.and.callFake(() => Promise.resolve('hello')); compiler.compileModuleAsync(SomeModule); tick(); diff --git a/packages/compiler/test/schema/dom_element_schema_registry_spec.ts b/packages/compiler/test/schema/dom_element_schema_registry_spec.ts index 425a95c7a1..c4812c7b24 100644 --- a/packages/compiler/test/schema/dom_element_schema_registry_spec.ts +++ b/packages/compiler/test/schema/dom_element_schema_registry_spec.ts @@ -8,7 +8,6 @@ import {DomElementSchemaRegistry} from '@angular/compiler/src/schema/dom_element_schema_registry'; import {CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, SecurityContext} from '@angular/core'; -import {beforeEach, describe, expect, it} from '@angular/core/testing/src/testing_internal'; import {browserDetection} from '@angular/platform-browser/testing/src/browser_util'; import {Element} from '../../src/ml_parser/ast'; diff --git a/packages/compiler/test/schema/trusted_types_sinks_spec.ts b/packages/compiler/test/schema/trusted_types_sinks_spec.ts index 49023439a7..16504814a6 100644 --- a/packages/compiler/test/schema/trusted_types_sinks_spec.ts +++ b/packages/compiler/test/schema/trusted_types_sinks_spec.ts @@ -7,7 +7,6 @@ */ import {isTrustedTypesSink} from '@angular/compiler/src/schema/trusted_types_sinks'; -import {describe, expect, it} from '@angular/core/testing/src/testing_internal'; { describe('isTrustedTypesSink', () => { diff --git a/packages/compiler/test/selector/selector_spec.ts b/packages/compiler/test/selector/selector_spec.ts index 076a19418c..47ece1e724 100644 --- a/packages/compiler/test/selector/selector_spec.ts +++ b/packages/compiler/test/selector/selector_spec.ts @@ -126,6 +126,67 @@ import {el} from '@angular/platform-browser/testing/src/browser_util'; expect(matched).toEqual([s1[0], 1]); }); + it('should support "$" in attribute names', () => { + matcher.addSelectables(s1 = CssSelector.parse('[someAttr\\$]'), 1); + + expect(matcher.match(getSelectorFor({attrs: [['someAttr', '']]}), selectableCollector)) + .toEqual(false); + expect(matched).toEqual([]); + reset(); + + expect(matcher.match(getSelectorFor({attrs: [['someAttr$', '']]}), selectableCollector)) + .toEqual(true); + expect(matched).toEqual([s1[0], 1]); + reset(); + + matcher.addSelectables(s1 = CssSelector.parse('[some\\$attr]'), 1); + + expect(matcher.match(getSelectorFor({attrs: [['someattr', '']]}), selectableCollector)) + .toEqual(false); + expect(matched).toEqual([]); + + expect(matcher.match(getSelectorFor({attrs: [['some$attr', '']]}), selectableCollector)) + .toEqual(true); + expect(matched).toEqual([s1[0], 1]); + reset(); + + matcher.addSelectables(s1 = CssSelector.parse('[\\$someAttr]'), 1); + + expect(matcher.match(getSelectorFor({attrs: [['someAttr', '']]}), selectableCollector)) + .toEqual(false); + expect(matched).toEqual([]); + + expect(matcher.match(getSelectorFor({attrs: [['$someAttr', '']]}), selectableCollector)) + .toEqual(true); + expect(matched).toEqual([s1[0], 1]); + reset(); + + matcher.addSelectables(s1 = CssSelector.parse('[some-\\$Attr]'), 1); + matcher.addSelectables(s2 = CssSelector.parse('[some-\\$Attr][some-\\$-attr]'), 2); + + expect(matcher.match(getSelectorFor({attrs: [['some\\$Attr', '']]}), selectableCollector)) + .toEqual(false); + expect(matched).toEqual([]); + + expect(matcher.match( + getSelectorFor({attrs: [['some-$-attr', 'someValue'], ['some-$Attr', '']]}), + selectableCollector)) + .toEqual(true); + expect(matched).toEqual([s1[0], 1, s2[0], 2]); + reset(); + + + expect(matcher.match(getSelectorFor({attrs: [['someattr$', '']]}), selectableCollector)) + .toEqual(false); + expect(matched).toEqual([]); + + expect(matcher.match( + getSelectorFor({attrs: [['some-simple-attr', '']]}), selectableCollector)) + .toEqual(false); + expect(matched).toEqual([]); + reset(); + }); + it('should select by attr name only once if the value is from the DOM', () => { matcher.addSelectables(s1 = CssSelector.parse('[some-decor]'), 1); @@ -307,6 +368,35 @@ import {el} from '@angular/platform-browser/testing/src/browser_util'; expect(cssSelector.toString()).toEqual('sometag'); }); + it('should detect attr names with escaped $', () => { + let cssSelector = CssSelector.parse('[attrname\\$]')[0]; + expect(cssSelector.attrs).toEqual(['attrname$', '']); + expect(cssSelector.toString()).toEqual('[attrname\\$]'); + + cssSelector = CssSelector.parse('[\\$attrname]')[0]; + expect(cssSelector.attrs).toEqual(['$attrname', '']); + expect(cssSelector.toString()).toEqual('[\\$attrname]'); + + cssSelector = CssSelector.parse('[foo\\$bar]')[0]; + expect(cssSelector.attrs).toEqual(['foo$bar', '']); + expect(cssSelector.toString()).toEqual('[foo\\$bar]'); + }); + + it('should error on attr names with unescaped $', () => { + expect(() => CssSelector.parse('[attrname$]')) + .toThrowError( + 'Error in attribute selector "attrname$". Unescaped "$" is not supported. Please escape with "\\$".'); + expect(() => CssSelector.parse('[$attrname]')) + .toThrowError( + 'Error in attribute selector "$attrname". Unescaped "$" is not supported. Please escape with "\\$".'); + expect(() => CssSelector.parse('[foo$bar]')) + .toThrowError( + 'Error in attribute selector "foo$bar". Unescaped "$" is not supported. Please escape with "\\$".'); + expect(() => CssSelector.parse('[foo\\$bar$]')) + .toThrowError( + 'Error in attribute selector "foo\\$bar$". Unescaped "$" is not supported. Please escape with "\\$".'); + }); + it('should detect class names', () => { const cssSelector = CssSelector.parse('.someClass')[0]; expect(cssSelector.classNames).toEqual(['someclass']); diff --git a/packages/compiler/test/shadow_css_spec.ts b/packages/compiler/test/shadow_css_spec.ts index 32cd76dbab..574815ec5c 100644 --- a/packages/compiler/test/shadow_css_spec.ts +++ b/packages/compiler/test/shadow_css_spec.ts @@ -14,8 +14,11 @@ import {normalizeCSS} from '@angular/platform-browser/testing/src/browser_util'; function s(css: string, contentAttr: string, hostAttr: string = '') { const shadowCss = new ShadowCss(); const shim = shadowCss.shimCssText(css, contentAttr, hostAttr); - const nlRegexp = /\n/g; - return normalizeCSS(shim.replace(nlRegexp, '')); + return normalize(shim); + } + + function normalize(value: string): string { + return normalizeCSS(value.replace(/\n/g, '')).trim(); } it('should handle empty string', () => { @@ -53,10 +56,49 @@ import {normalizeCSS} from '@angular/platform-browser/testing/src/browser_util'; expect(s(css, 'contenta')).toEqual(expected); }); - it('should handle page rules', () => { - const css = '@page {div {font-size:50px;}}'; - const expected = '@page {div[contenta] {font-size:50px;}}'; - expect(s(css, 'contenta')).toEqual(expected); + // @page rules use a special set of at-rules and selectors and they can't be scoped. + // See: https://www.w3.org/TR/css-page-3 + it('should preserve @page rules', () => { + const contentAttr = 'contenta'; + const css = ` + @page { + margin-right: 4in; + + @top-left { + content: "Hamlet"; + } + + @top-right { + content: "Page " counter(page); + } + } + + @page main { + margin-left: 4in; + } + + @page :left { + margin-left: 3cm; + margin-right: 4cm; + } + + @page :right { + margin-left: 4cm; + margin-right: 3cm; + } + `; + const result = s(css, contentAttr); + expect(result).toEqual(normalize(css)); + expect(result).not.toContain(contentAttr); + }); + + it('should strip ::ng-deep and :host from within @page rules', () => { + expect(s('@page { margin-right: 4in; }', 'contenta', 'h')) + .toEqual('@page { margin-right:4in;}'); + expect(s('@page { ::ng-deep @top-left { content: "Hamlet";}}', 'contenta', 'h')) + .toEqual('@page { @top-left { content:"Hamlet";}}'); + expect(s('@page { :host ::ng-deep @top-left { content:"Hamlet";}}', 'contenta', 'h')) + .toEqual('@page { @top-left { content:"Hamlet";}}'); }); it('should handle document rules', () => { @@ -369,6 +411,18 @@ import {normalizeCSS} from '@angular/platform-browser/testing/src/browser_util'; expect(s(css, 'contenta', 'h')).toEqual('[h] > > .x {}'); }); + it('should strip ::ng-deep and :host from within @font-face', () => { + expect(s('@font-face { font-family {} }', 'contenta', 'h')) + .toEqual('@font-face { font-family {}}'); + expect(s('@font-face { ::ng-deep font-family{} }', 'contenta', 'h')) + .toEqual('@font-face { font-family{}}'); + expect(s('@font-face { :host ::ng-deep font-family{} }', 'contenta', 'h')) + .toEqual('@font-face { font-family{}}'); + expect(s('@supports (display: flex) { @font-face { :host ::ng-deep font-family{} } }', + 'contenta', 'h')) + .toEqual('@supports (display:flex) { @font-face { font-family{}}}'); + }); + it('should pass through @import directives', () => { const styleStr = '@import url("https://fonts.googleapis.com/css?family=Roboto");'; const css = s(styleStr, 'contenta'); diff --git a/packages/compiler/test/spies.ts b/packages/compiler/test/spies.ts deleted file mode 100644 index 5799817226..0000000000 --- a/packages/compiler/test/spies.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * 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 - */ - -import {ResourceLoader} from '@angular/compiler/src/resource_loader'; - -import {SpyObject} from '@angular/core/testing/src/testing_internal'; - -export class SpyResourceLoader extends SpyObject { - public static PROVIDE = {provide: ResourceLoader, useClass: SpyResourceLoader, deps: []}; - constructor() { - super(ResourceLoader); - } -} diff --git a/packages/compiler/test/style_url_resolver_spec.ts b/packages/compiler/test/style_url_resolver_spec.ts index 35a88889df..a49eebc0a4 100644 --- a/packages/compiler/test/style_url_resolver_spec.ts +++ b/packages/compiler/test/style_url_resolver_spec.ts @@ -138,7 +138,7 @@ class FakeUrlResolver extends UrlResolver { super(); } - resolve(baseUrl: string, url: string): string { + override resolve(baseUrl: string, url: string): string { return 'fake_resolved_url'; } } diff --git a/packages/compiler/test/template_parser/template_parser_spec.ts b/packages/compiler/test/template_parser/template_parser_spec.ts index 69a0c3e754..50581c1c1f 100644 --- a/packages/compiler/test/template_parser/template_parser_spec.ts +++ b/packages/compiler/test/template_parser/template_parser_spec.ts @@ -238,7 +238,7 @@ class ThrowingVisitor implements TemplateAstVisitor { } class FooAstTransformer extends ThrowingVisitor { - visitElement(ast: ElementAst, context: any): any { + override visitElement(ast: ElementAst, context: any): any { if (ast.name != 'div') return ast; return new ElementAst( 'foo', [], [], [], [], [], [], false, [], [], ast.ngContentIndex, ast.sourceSpan, @@ -247,7 +247,7 @@ class FooAstTransformer extends ThrowingVisitor { } class BarAstTransformer extends FooAstTransformer { - visitElement(ast: ElementAst, context: any): any { + override visitElement(ast: ElementAst, context: any): any { if (ast.name != 'foo') return ast; return new ElementAst( 'bar', [], [], [], [], [], [], false, [], [], ast.ngContentIndex, ast.sourceSpan, @@ -340,7 +340,7 @@ describe('TemplateAstVisitor', () => { it('should visit NgContentAst', () => { expectVisitedNode(new class extends NullVisitor { - visitNgContent(ast: NgContentAst, context: any): any { + override visitNgContent(ast: NgContentAst, context: any): any { return ast; } }, new NgContentAst(0, 0, null!)); @@ -348,7 +348,7 @@ describe('TemplateAstVisitor', () => { it('should visit EmbeddedTemplateAst', () => { expectVisitedNode(new class extends NullVisitor { - visitEmbeddedTemplate(ast: EmbeddedTemplateAst, context: any) { + override visitEmbeddedTemplate(ast: EmbeddedTemplateAst, context: any) { return ast; } }, new EmbeddedTemplateAst([], [], [], [], [], [], false, [], [], 0, null!)); @@ -356,7 +356,7 @@ describe('TemplateAstVisitor', () => { it('should visit ElementAst', () => { expectVisitedNode(new class extends NullVisitor { - visitElement(ast: ElementAst, context: any) { + override visitElement(ast: ElementAst, context: any) { return ast; } }, new ElementAst('foo', [], [], [], [], [], [], false, [], [], 0, null!, null!)); @@ -364,7 +364,7 @@ describe('TemplateAstVisitor', () => { it('should visit RefererenceAst', () => { expectVisitedNode(new class extends NullVisitor { - visitReference(ast: ReferenceAst, context: any): any { + override visitReference(ast: ReferenceAst, context: any): any { return ast; } }, new ReferenceAst('foo', null!, null!, null!)); @@ -372,7 +372,7 @@ describe('TemplateAstVisitor', () => { it('should visit VariableAst', () => { expectVisitedNode(new class extends NullVisitor { - visitVariable(ast: VariableAst, context: any): any { + override visitVariable(ast: VariableAst, context: any): any { return ast; } }, new VariableAst('foo', 'bar', null!)); @@ -380,7 +380,7 @@ describe('TemplateAstVisitor', () => { it('should visit BoundEventAst', () => { expectVisitedNode(new class extends NullVisitor { - visitEvent(ast: BoundEventAst, context: any): any { + override visitEvent(ast: BoundEventAst, context: any): any { return ast; } }, new BoundEventAst('foo', 'bar', 'goo', null!, null!, null!)); @@ -388,7 +388,7 @@ describe('TemplateAstVisitor', () => { it('should visit BoundElementPropertyAst', () => { expectVisitedNode(new class extends NullVisitor { - visitElementProperty(ast: BoundElementPropertyAst, context: any): any { + override visitElementProperty(ast: BoundElementPropertyAst, context: any): any { return ast; } }, new BoundElementPropertyAst('foo', null!, null!, null!, 'bar', null!)); @@ -396,7 +396,7 @@ describe('TemplateAstVisitor', () => { it('should visit AttrAst', () => { expectVisitedNode(new class extends NullVisitor { - visitAttr(ast: AttrAst, context: any): any { + override visitAttr(ast: AttrAst, context: any): any { return ast; } }, new AttrAst('foo', 'bar', null!)); @@ -404,7 +404,7 @@ describe('TemplateAstVisitor', () => { it('should visit BoundTextAst', () => { expectVisitedNode(new class extends NullVisitor { - visitBoundText(ast: BoundTextAst, context: any): any { + override visitBoundText(ast: BoundTextAst, context: any): any { return ast; } }, new BoundTextAst(null!, 0, null!)); @@ -412,7 +412,7 @@ describe('TemplateAstVisitor', () => { it('should visit TextAst', () => { expectVisitedNode(new class extends NullVisitor { - visitText(ast: TextAst, context: any): any { + override visitText(ast: TextAst, context: any): any { return ast; } }, new TextAst('foo', 0, null!)); @@ -420,7 +420,7 @@ describe('TemplateAstVisitor', () => { it('should visit DirectiveAst', () => { expectVisitedNode(new class extends NullVisitor { - visitDirective(ast: DirectiveAst, context: any): any { + override visitDirective(ast: DirectiveAst, context: any): any { return ast; } }, new DirectiveAst(null!, [], [], [], 0, null!)); @@ -428,7 +428,7 @@ describe('TemplateAstVisitor', () => { it('should visit DirectiveAst', () => { expectVisitedNode(new class extends NullVisitor { - visitDirectiveProperty(ast: BoundDirectivePropertyAst, context: any): any { + override visitDirectiveProperty(ast: BoundDirectivePropertyAst, context: any): any { return ast; } }, new BoundDirectivePropertyAst('foo', 'bar', null!, null!)); @@ -1622,7 +1622,8 @@ Reference "#a" is defined several times ("
]#a>
describe('inline templates', () => { it('should report an error on variables declared with #', () => { expect(() => humanizeTplAst(parse('
', []))) - .toThrowError(/Parser Error: Unexpected token # at column 1/); + .toThrowError( + /Parser Error: Private identifiers are not supported\. Unexpected private identifier: #a at column 1/); }); it('should parse variables via let ...', () => { diff --git a/packages/compiler/test/template_parser/template_preparser_spec.ts b/packages/compiler/test/template_parser/template_preparser_spec.ts index e43efd1322..f07caa14fb 100644 --- a/packages/compiler/test/template_parser/template_preparser_spec.ts +++ b/packages/compiler/test/template_parser/template_preparser_spec.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {beforeEach, describe, expect, inject, it} from '../../../core/testing/src/testing_internal'; +import {inject} from '../../../core/testing'; import {Element} from '../../src/ml_parser/ast'; import {HtmlParser} from '../../src/ml_parser/html_parser'; import {PreparsedElement, PreparsedElementType, preparseElement} from '../../src/template_parser/template_preparser'; diff --git a/packages/compiler/test/template_parser/util/expression.ts b/packages/compiler/test/template_parser/util/expression.ts index bad905d9ff..5ee6186fca 100644 --- a/packages/compiler/test/template_parser/util/expression.ts +++ b/packages/compiler/test/template_parser/util/expression.ts @@ -22,7 +22,7 @@ class ExpressionSourceHumanizer extends e.RecursiveAstVisitor implements t.Templ // This method is defined to reconcile the type of ExpressionSourceHumanizer // since both RecursiveAstVisitor and TemplateAstVisitor define the visit() // method in their interfaces. - visit(node: e.AST|t.TemplateAst, context?: any) { + override visit(node: e.AST|t.TemplateAst, context?: any) { node.visit(this, context); } @@ -30,90 +30,94 @@ class ExpressionSourceHumanizer extends e.RecursiveAstVisitor implements t.Templ this.recordAst(ast); this.visitAll([ast.ast], null); } - visitUnary(ast: e.Unary) { + override visitUnary(ast: e.Unary) { this.recordAst(ast); super.visitUnary(ast, null); } - visitBinary(ast: e.Binary) { + override visitBinary(ast: e.Binary) { this.recordAst(ast); super.visitBinary(ast, null); } - visitChain(ast: e.Chain) { + override visitChain(ast: e.Chain) { this.recordAst(ast); super.visitChain(ast, null); } - visitConditional(ast: e.Conditional) { + override visitConditional(ast: e.Conditional) { this.recordAst(ast); super.visitConditional(ast, null); } - visitFunctionCall(ast: e.FunctionCall) { + override visitFunctionCall(ast: e.FunctionCall) { this.recordAst(ast); super.visitFunctionCall(ast, null); } - visitImplicitReceiver(ast: e.ImplicitReceiver) { + override visitImplicitReceiver(ast: e.ImplicitReceiver) { this.recordAst(ast); super.visitImplicitReceiver(ast, null); } - visitInterpolation(ast: e.Interpolation) { + override visitInterpolation(ast: e.Interpolation) { this.recordAst(ast); super.visitInterpolation(ast, null); } - visitKeyedRead(ast: e.KeyedRead) { + override visitKeyedRead(ast: e.KeyedRead) { this.recordAst(ast); super.visitKeyedRead(ast, null); } - visitKeyedWrite(ast: e.KeyedWrite) { + override visitKeyedWrite(ast: e.KeyedWrite) { this.recordAst(ast); super.visitKeyedWrite(ast, null); } - visitLiteralPrimitive(ast: e.LiteralPrimitive) { + override visitLiteralPrimitive(ast: e.LiteralPrimitive) { this.recordAst(ast); super.visitLiteralPrimitive(ast, null); } - visitLiteralArray(ast: e.LiteralArray) { + override visitLiteralArray(ast: e.LiteralArray) { this.recordAst(ast); super.visitLiteralArray(ast, null); } - visitLiteralMap(ast: e.LiteralMap) { + override visitLiteralMap(ast: e.LiteralMap) { this.recordAst(ast); super.visitLiteralMap(ast, null); } - visitMethodCall(ast: e.MethodCall) { + override visitMethodCall(ast: e.MethodCall) { this.recordAst(ast); super.visitMethodCall(ast, null); } - visitNonNullAssert(ast: e.NonNullAssert) { + override visitNonNullAssert(ast: e.NonNullAssert) { this.recordAst(ast); super.visitNonNullAssert(ast, null); } - visitPipe(ast: e.BindingPipe) { + override visitPipe(ast: e.BindingPipe) { this.recordAst(ast); super.visitPipe(ast, null); } - visitPrefixNot(ast: e.PrefixNot) { + override visitPrefixNot(ast: e.PrefixNot) { this.recordAst(ast); super.visitPrefixNot(ast, null); } - visitPropertyRead(ast: e.PropertyRead) { + override visitPropertyRead(ast: e.PropertyRead) { this.recordAst(ast); super.visitPropertyRead(ast, null); } - visitPropertyWrite(ast: e.PropertyWrite) { + override visitPropertyWrite(ast: e.PropertyWrite) { this.recordAst(ast); super.visitPropertyWrite(ast, null); } - visitSafeMethodCall(ast: e.SafeMethodCall) { + override visitSafeMethodCall(ast: e.SafeMethodCall) { this.recordAst(ast); super.visitSafeMethodCall(ast, null); } - visitSafePropertyRead(ast: e.SafePropertyRead) { + override visitSafePropertyRead(ast: e.SafePropertyRead) { this.recordAst(ast); super.visitSafePropertyRead(ast, null); } - visitQuote(ast: e.Quote) { + override visitQuote(ast: e.Quote) { this.recordAst(ast); super.visitQuote(ast, null); } + override visitSafeKeyedRead(ast: e.SafeKeyedRead) { + this.recordAst(ast); + super.visitSafeKeyedRead(ast, null); + } visitNgContent(ast: t.NgContentAst) {} visitEmbeddedTemplate(ast: t.EmbeddedTemplateAst) { diff --git a/packages/compiler/test/url_resolver_spec.ts b/packages/compiler/test/url_resolver_spec.ts index c0b1349567..ffbd0f4379 100644 --- a/packages/compiler/test/url_resolver_spec.ts +++ b/packages/compiler/test/url_resolver_spec.ts @@ -6,8 +6,8 @@ * found in the LICENSE file at https://angular.io/license */ -import {createOfflineCompileUrlResolver, UrlResolver} from '@angular/compiler/src/url_resolver'; -import {beforeEach, describe, expect, inject, it} from '@angular/core/testing/src/testing_internal'; +import {UrlResolver} from '@angular/compiler/src/url_resolver'; +import {inject} from '@angular/core/testing'; { describe('UrlResolver', () => { diff --git a/packages/compiler/testing/src/directive_resolver_mock.ts b/packages/compiler/testing/src/directive_resolver_mock.ts index e1d47be378..4a29a11436 100644 --- a/packages/compiler/testing/src/directive_resolver_mock.ts +++ b/packages/compiler/testing/src/directive_resolver_mock.ts @@ -18,10 +18,10 @@ export class MockDirectiveResolver extends DirectiveResolver { super(reflector); } - resolve(type: core.Type): core.Directive; - resolve(type: core.Type, throwIfNotFound: true): core.Directive; - resolve(type: core.Type, throwIfNotFound: boolean): core.Directive|null; - resolve(type: core.Type, throwIfNotFound = true): core.Directive|null { + override resolve(type: core.Type): core.Directive; + override resolve(type: core.Type, throwIfNotFound: true): core.Directive; + override resolve(type: core.Type, throwIfNotFound: boolean): core.Directive|null; + override resolve(type: core.Type, throwIfNotFound = true): core.Directive|null { return this._directives.get(type) || super.resolve(type, throwIfNotFound); } diff --git a/packages/compiler/testing/src/ng_module_resolver_mock.ts b/packages/compiler/testing/src/ng_module_resolver_mock.ts index cc69bf51df..83ff2fda84 100644 --- a/packages/compiler/testing/src/ng_module_resolver_mock.ts +++ b/packages/compiler/testing/src/ng_module_resolver_mock.ts @@ -28,7 +28,7 @@ export class MockNgModuleResolver extends NgModuleResolver { * default * `NgModuleResolver`, see `setNgModule`. */ - resolve(type: core.Type, throwIfNotFound = true): core.NgModule { + override resolve(type: core.Type, throwIfNotFound = true): core.NgModule { return this._ngModules.get(type) || super.resolve(type, throwIfNotFound)!; } } diff --git a/packages/compiler/testing/src/pipe_resolver_mock.ts b/packages/compiler/testing/src/pipe_resolver_mock.ts index 1fa6ece9a4..e64460230a 100644 --- a/packages/compiler/testing/src/pipe_resolver_mock.ts +++ b/packages/compiler/testing/src/pipe_resolver_mock.ts @@ -28,7 +28,7 @@ export class MockPipeResolver extends PipeResolver { * default * `PipeResolver`, see `setPipe`. */ - resolve(type: core.Type, throwIfNotFound = true): core.Pipe { + override resolve(type: core.Type, throwIfNotFound = true): core.Pipe { let metadata = this._pipes.get(type); if (!metadata) { metadata = super.resolve(type, throwIfNotFound)!; diff --git a/packages/compiler/testing/src/resource_loader_mock.ts b/packages/compiler/testing/src/resource_loader_mock.ts index 160fc968db..114c67b971 100644 --- a/packages/compiler/testing/src/resource_loader_mock.ts +++ b/packages/compiler/testing/src/resource_loader_mock.ts @@ -17,7 +17,7 @@ export class MockResourceLoader extends ResourceLoader { private _definitions = new Map(); private _requests: _PendingRequest[] = []; - get(url: string): Promise { + override get(url: string): Promise { const request = new _PendingRequest(url); this._requests.push(request); return request.getPromise(); diff --git a/packages/core/BUILD.bazel b/packages/core/BUILD.bazel index 15b435131b..e6b58532b7 100644 --- a/packages/core/BUILD.bazel +++ b/packages/core/BUILD.bazel @@ -1,7 +1,24 @@ -load("//tools:defaults.bzl", "ng_module", "ng_package", "ts_api_guardian_test", "ts_api_guardian_test_npm_package") +load("@build_bazel_rules_nodejs//:index.bzl", "generated_file_test") +load("//tools:defaults.bzl", "api_golden_test", "api_golden_test_npm_package", "ng_module", "ng_package") +load("//packages/common/locales:index.bzl", "generate_base_locale_file") package(default_visibility = ["//visibility:public"]) +# This generates the `src/i18n/locale_en.ts` file through the `generate-locales` tool. Since +# the base locale file is checked-in for Google3, we add a `generated_file_test` to ensure +# the checked-in file is up-to-date. To disambiguate from the test, we use a more precise target +# name here. +generate_base_locale_file( + name = "base_locale_file_generated", + output_file = "base_locale_file_generated.ts", +) + +generated_file_test( + name = "base_locale_file", + src = "src/i18n/locale_en.ts", + generated = ":base_locale_file_generated", +) + ng_module( name = "core", srcs = glob( @@ -55,22 +72,30 @@ ng_package( ], ) -ts_api_guardian_test_npm_package( +api_golden_test_npm_package( name = "core_api", - actualDir = "angular/packages/core/npm_package", data = [ ":npm_package", "//goldens:public-api", ], - goldenDir = "angular/goldens/public-api/core", + golden_dir = "angular/goldens/public-api/core", + npm_package = "angular/packages/core/npm_package", ) -ts_api_guardian_test( +api_golden_test( name = "ng_global_utils_api", - actual = "angular/packages/core/src/render3/global_utils_api.d.ts", data = [ "//goldens:public-api", "//packages/core", + # Additional targets the entry-point indirectly resolves `.d.ts` source files from. + # These are transitive to `:core`, but need to be listed explicitly here as only + # transitive `JSModule` information is collected (missing the type definitions). + "//packages/core/src/compiler", + "//packages/core/src/di/interface", + "//packages/core/src/interface", + "//packages/core/src/reflection", + "//packages/core/src/util", ], - golden = "angular/goldens/public-api/core/global_utils.d.ts", + entry_point = "angular/packages/core/src/render3/global_utils_api.d.ts", + golden = "angular/goldens/public-api/core/global_utils.md", ) diff --git a/packages/core/package.json b/packages/core/package.json index f365d07681..e0b585d592 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -4,11 +4,14 @@ "description": "Angular - the core framework", "author": "angular", "license": "MIT", + "engines": { + "node": "^12.14.1 || >=14.0.0" + }, "dependencies": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" }, "peerDependencies": { - "rxjs": "^6.5.3", + "rxjs": "^6.5.3 || ^7.0.0", "zone.js": "~0.11.4" }, "repository": { @@ -20,8 +23,5 @@ "migrations": "./schematics/migrations.json", "packageGroup": "NG_UPDATE_PACKAGE_GROUP" }, - "sideEffects": false, - "publishConfig": { - "registry": "https://wombat-dressing-room.appspot.com" - } + "sideEffects": false } diff --git a/packages/core/schematics/BUILD.bazel b/packages/core/schematics/BUILD.bazel index cfd2d69125..6f99228d7a 100644 --- a/packages/core/schematics/BUILD.bazel +++ b/packages/core/schematics/BUILD.bazel @@ -13,6 +13,7 @@ pkg_npm( "//packages/core/schematics/migrations/abstract-control-parent", "//packages/core/schematics/migrations/activated-route-snapshot-fragment", "//packages/core/schematics/migrations/can-activate-with-redirect-to", + "//packages/core/schematics/migrations/deep-shadow-piercing-selector", "//packages/core/schematics/migrations/dynamic-queries", "//packages/core/schematics/migrations/initial-navigation", "//packages/core/schematics/migrations/missing-injectable", diff --git a/packages/core/schematics/migrations.json b/packages/core/schematics/migrations.json index 66bcf0ec96..11101b01f2 100644 --- a/packages/core/schematics/migrations.json +++ b/packages/core/schematics/migrations.json @@ -94,6 +94,11 @@ "version": "12.0.0-next.6", "description": "`XhrFactory` has been moved from `@angular/common/http` to `@angular/common`.", "factory": "./migrations/xhr-factory/index" + }, + "migration-v12-deep-shadow-piercing-selector": { + "version": "12.0.2", + "description": "Automatically migrates shadow-piercing selector from `/deep/` to the recommended alternative `::ng-deep`.", + "factory": "./migrations/deep-shadow-piercing-selector/index" } } } diff --git a/packages/core/schematics/migrations/can-activate-with-redirect-to/util.ts b/packages/core/schematics/migrations/can-activate-with-redirect-to/util.ts index 63a6684317..04d33e185d 100644 --- a/packages/core/schematics/migrations/can-activate-with-redirect-to/util.ts +++ b/packages/core/schematics/migrations/can-activate-with-redirect-to/util.ts @@ -59,4 +59,4 @@ function hasProperty(node: ts.ObjectLiteralExpression, propertyName: string): bo } } return false; -} \ No newline at end of file +} diff --git a/packages/core/schematics/migrations/deep-shadow-piercing-selector/BUILD.bazel b/packages/core/schematics/migrations/deep-shadow-piercing-selector/BUILD.bazel new file mode 100644 index 0000000000..00f141fcd4 --- /dev/null +++ b/packages/core/schematics/migrations/deep-shadow-piercing-selector/BUILD.bazel @@ -0,0 +1,16 @@ +load("//tools:defaults.bzl", "ts_library") + +ts_library( + name = "deep-shadow-piercing-selector", + srcs = glob(["**/*.ts"]), + tsconfig = "//packages/core/schematics:tsconfig.json", + visibility = [ + "//packages/core/schematics:__pkg__", + "//packages/core/schematics/migrations/google3:__pkg__", + "//packages/core/schematics/test:__pkg__", + ], + deps = [ + "@npm//@angular-devkit/core", + "@npm//@angular-devkit/schematics", + ], +) diff --git a/packages/core/schematics/migrations/deep-shadow-piercing-selector/README.md b/packages/core/schematics/migrations/deep-shadow-piercing-selector/README.md new file mode 100644 index 0000000000..4215e54ec5 --- /dev/null +++ b/packages/core/schematics/migrations/deep-shadow-piercing-selector/README.md @@ -0,0 +1,17 @@ +## shadow-piercing selector `/deep/` to `::ng-deep` + +Automatically migrates shadow-piercing selector from `/deep/` to `::ng-deep`. + +#### Before +```css +:host /deep/ * { + cursor: pointer; +} +``` + +#### After +```css +:host ::ng-deep * { + cursor: pointer; +} +``` diff --git a/packages/core/schematics/migrations/deep-shadow-piercing-selector/index.ts b/packages/core/schematics/migrations/deep-shadow-piercing-selector/index.ts new file mode 100644 index 0000000000..0e84ebbfef --- /dev/null +++ b/packages/core/schematics/migrations/deep-shadow-piercing-selector/index.ts @@ -0,0 +1,41 @@ +/** + * @license + * 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 + */ + +import {extname, join} from '@angular-devkit/core'; +import {DirEntry, Rule} from '@angular-devkit/schematics'; + +const VALID_EXTENSIONS = ['.scss', '.sass', '.css', '.styl', '.less', '.ts']; + +function* visitFiles(directory: DirEntry): IterableIterator { + for (const path of directory.subfiles) { + const extension = extname(path); + if (VALID_EXTENSIONS.includes(extension)) { + yield join(directory.path, path); + } + } + + for (const path of directory.subdirs) { + if (path === 'node_modules' || path.startsWith('.') || path === 'dist') { + continue; + } + + yield* visitFiles(directory.dir(path)); + } +} + +export default function(): Rule { + return (tree) => { + // Visit all files in an Angular workspace monorepo. + for (const file of visitFiles(tree.root)) { + const content = tree.read(file)?.toString(); + if (content?.includes('/deep/ ')) { + tree.overwrite(file, content.replace(/\/deep\/ /g, '::ng-deep ')); + } + } + }; +} diff --git a/packages/core/schematics/migrations/google3/activatedRouteSnapshotFragmentRule.ts b/packages/core/schematics/migrations/google3/activatedRouteSnapshotFragmentRule.ts index 4b55b2bc3c..23088f1991 100644 --- a/packages/core/schematics/migrations/google3/activatedRouteSnapshotFragmentRule.ts +++ b/packages/core/schematics/migrations/google3/activatedRouteSnapshotFragmentRule.ts @@ -12,7 +12,7 @@ import * as ts from 'typescript'; import {findFragmentAccesses, migrateActivatedRouteSnapshotFragment} from '../activated-route-snapshot-fragment/util'; export class Rule extends Rules.TypedRule { - applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { + override applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { if (sourceFile.isDeclarationFile || program.isSourceFileFromExternalLibrary(sourceFile)) { return []; } diff --git a/packages/core/schematics/migrations/google3/canActivateWithRedirectToRule.ts b/packages/core/schematics/migrations/google3/canActivateWithRedirectToRule.ts index d920e136b4..4c45cf12a3 100644 --- a/packages/core/schematics/migrations/google3/canActivateWithRedirectToRule.ts +++ b/packages/core/schematics/migrations/google3/canActivateWithRedirectToRule.ts @@ -13,7 +13,7 @@ import {findLiteralsToMigrate, migrateLiteral} from '../can-activate-with-redire /** TSLint rule that removes canActivate from Route configs that also have redirectTo. */ export class Rule extends Rules.TypedRule { - applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { + override applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { const failures: RuleFailure[] = []; const printer = ts.createPrinter(); const literalsToMigrate = findLiteralsToMigrate(sourceFile); diff --git a/packages/core/schematics/migrations/google3/dynamicQueriesRule.ts b/packages/core/schematics/migrations/google3/dynamicQueriesRule.ts index 49e47adb57..e5749253c3 100644 --- a/packages/core/schematics/migrations/google3/dynamicQueriesRule.ts +++ b/packages/core/schematics/migrations/google3/dynamicQueriesRule.ts @@ -19,7 +19,7 @@ const FAILURE_MESSAGE = * TSLint rule that removes the `static` flag from dynamic queries. */ export class Rule extends Rules.TypedRule { - applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { + override applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { const printer = ts.createPrinter(); const failures: RuleFailure[] = []; const result = identifyDynamicQueryNodes(program.getTypeChecker(), sourceFile); diff --git a/packages/core/schematics/migrations/google3/explicitQueryTimingRule.ts b/packages/core/schematics/migrations/google3/explicitQueryTimingRule.ts index 20afbc54d6..b80b49f568 100644 --- a/packages/core/schematics/migrations/google3/explicitQueryTimingRule.ts +++ b/packages/core/schematics/migrations/google3/explicitQueryTimingRule.ts @@ -24,7 +24,7 @@ const FAILURE_MESSAGE = 'Query does not explicitly specify its timing. Read more * be applied in order to automatically migrate to the explicit query timing API. */ export class Rule extends Rules.TypedRule { - applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { + override applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { const typeChecker = program.getTypeChecker(); const queryVisitor = new NgQueryResolveVisitor(program.getTypeChecker()); const templateVisitor = new NgComponentTemplateVisitor(typeChecker); diff --git a/packages/core/schematics/migrations/google3/initialNavigationRule.ts b/packages/core/schematics/migrations/google3/initialNavigationRule.ts index 8f566288a3..a9c71f7905 100644 --- a/packages/core/schematics/migrations/google3/initialNavigationRule.ts +++ b/packages/core/schematics/migrations/google3/initialNavigationRule.ts @@ -19,7 +19,7 @@ import {InitialNavigationTransform} from '../initial-navigation/transform'; * TSLint rule that updates RouterModule `forRoot` options to be in line with v10 updates. */ export class Rule extends Rules.TypedRule { - applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { + override applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { const ruleName = this.ruleName; const typeChecker = program.getTypeChecker(); const sourceFiles = program.getSourceFiles().filter( diff --git a/packages/core/schematics/migrations/google3/navigationExtrasOmissionsRule.ts b/packages/core/schematics/migrations/google3/navigationExtrasOmissionsRule.ts index 7b3492b0e7..629b8ed98b 100644 --- a/packages/core/schematics/migrations/google3/navigationExtrasOmissionsRule.ts +++ b/packages/core/schematics/migrations/google3/navigationExtrasOmissionsRule.ts @@ -13,7 +13,7 @@ import {findLiteralsToMigrate, migrateLiteral} from '../../migrations/navigation /** TSLint rule that migrates `navigateByUrl` and `createUrlTree` calls to an updated signature. */ export class Rule extends Rules.TypedRule { - applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { + override applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { const failures: RuleFailure[] = []; const typeChecker = program.getTypeChecker(); const printer = ts.createPrinter(); diff --git a/packages/core/schematics/migrations/google3/noMissingInjectableRule.ts b/packages/core/schematics/migrations/google3/noMissingInjectableRule.ts index d4749efaf7..e9dedab1ba 100644 --- a/packages/core/schematics/migrations/google3/noMissingInjectableRule.ts +++ b/packages/core/schematics/migrations/google3/noMissingInjectableRule.ts @@ -21,7 +21,7 @@ import {MissingInjectableTransform} from '../missing-injectable/transform'; * Angular decorator (e.g. "@Injectable"). */ export class Rule extends Rules.TypedRule { - applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { + override applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { const ruleName = this.ruleName; const typeChecker = program.getTypeChecker(); const sourceFiles = program.getSourceFiles().filter( diff --git a/packages/core/schematics/migrations/google3/noTemplateVariableAssignmentRule.ts b/packages/core/schematics/migrations/google3/noTemplateVariableAssignmentRule.ts index 11950ca0a4..99a4a52159 100644 --- a/packages/core/schematics/migrations/google3/noTemplateVariableAssignmentRule.ts +++ b/packages/core/schematics/migrations/google3/noTemplateVariableAssignmentRule.ts @@ -20,7 +20,7 @@ const FAILURE_MESSAGE = 'Found assignment to template variable. This does not wo * Rule that reports if an Angular template contains property assignments to template variables. */ export class Rule extends Rules.TypedRule { - applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { + override applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { const typeChecker = program.getTypeChecker(); const templateVisitor = new NgComponentTemplateVisitor(typeChecker); const failures: RuleFailure[] = []; diff --git a/packages/core/schematics/migrations/google3/relativeLinkResolutionDefaultRule.ts b/packages/core/schematics/migrations/google3/relativeLinkResolutionDefaultRule.ts index 3725981830..4b3b45902b 100644 --- a/packages/core/schematics/migrations/google3/relativeLinkResolutionDefaultRule.ts +++ b/packages/core/schematics/migrations/google3/relativeLinkResolutionDefaultRule.ts @@ -14,7 +14,7 @@ import {TslintUpdateRecorder} from '../relative-link-resolution/google3/tslint_u import {RelativeLinkResolutionTransform} from '../relative-link-resolution/transform'; export class Rule extends Rules.TypedRule { - applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { + override applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { const typeChecker = program.getTypeChecker(); const ruleName = this.ruleName; const sourceFiles = program.getSourceFiles().filter( diff --git a/packages/core/schematics/migrations/google3/rendererToRenderer2Rule.ts b/packages/core/schematics/migrations/google3/rendererToRenderer2Rule.ts index 0155066eb7..c848bc3d3b 100644 --- a/packages/core/schematics/migrations/google3/rendererToRenderer2Rule.ts +++ b/packages/core/schematics/migrations/google3/rendererToRenderer2Rule.ts @@ -20,7 +20,7 @@ import {findRendererReferences} from '../renderer-to-renderer2/util'; * https://hackmd.angular.io/UTzUZTnPRA-cSa_4mHyfYw */ export class Rule extends Rules.TypedRule { - applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { + override applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { const typeChecker = program.getTypeChecker(); const printer = ts.createPrinter(); const failures: RuleFailure[] = []; diff --git a/packages/core/schematics/migrations/google3/undecoratedClassesWithDecoratedFieldsRule.ts b/packages/core/schematics/migrations/google3/undecoratedClassesWithDecoratedFieldsRule.ts index 9c9640bcfc..32b777c5f9 100644 --- a/packages/core/schematics/migrations/google3/undecoratedClassesWithDecoratedFieldsRule.ts +++ b/packages/core/schematics/migrations/google3/undecoratedClassesWithDecoratedFieldsRule.ts @@ -16,7 +16,7 @@ import {UndecoratedClassesWithDecoratedFieldsTransform} from '../undecorated-cla * https://hackmd.io/vuQfavzfRG6KUCtU7oK_EA */ export class Rule extends Rules.TypedRule { - applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { + override applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { const typeChecker = program.getTypeChecker(); const ruleName = this.ruleName; const sourceFiles = program.getSourceFiles().filter( diff --git a/packages/core/schematics/migrations/google3/waitForAsyncRule.ts b/packages/core/schematics/migrations/google3/waitForAsyncRule.ts index 44f374d60d..de947f0cf3 100644 --- a/packages/core/schematics/migrations/google3/waitForAsyncRule.ts +++ b/packages/core/schematics/migrations/google3/waitForAsyncRule.ts @@ -21,7 +21,7 @@ const newFunction = 'waitForAsync'; /** TSLint rule that migrates from `async` to `waitForAsync`. */ export class Rule extends Rules.TypedRule { - applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { + override applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): RuleFailure[] { const failures: RuleFailure[] = []; const asyncImportSpecifier = getImportSpecifier(sourceFile, '@angular/core/testing', deprecatedFunction); diff --git a/packages/core/schematics/migrations/initial-navigation/collector.ts b/packages/core/schematics/migrations/initial-navigation/collector.ts index 0c29ee7b3a..dff8c13166 100644 --- a/packages/core/schematics/migrations/initial-navigation/collector.ts +++ b/packages/core/schematics/migrations/initial-navigation/collector.ts @@ -70,7 +70,8 @@ export class InitialNavigationCollector { return null; } - if (symbolForIdentifier.declarations.length === 0) { + if (symbolForIdentifier.declarations === undefined || + symbolForIdentifier.declarations.length === 0) { return null; } diff --git a/packages/core/schematics/migrations/missing-injectable/providers_evaluator.ts b/packages/core/schematics/migrations/missing-injectable/providers_evaluator.ts index c3fd96ae47..8399fc8360 100644 --- a/packages/core/schematics/migrations/missing-injectable/providers_evaluator.ts +++ b/packages/core/schematics/migrations/missing-injectable/providers_evaluator.ts @@ -28,7 +28,7 @@ export interface ProviderLiteral { export class ProvidersEvaluator extends StaticInterpreter { private _providerLiterals: ProviderLiteral[] = []; - visitObjectLiteralExpression(node: ts.ObjectLiteralExpression, context: any) { + override visitObjectLiteralExpression(node: ts.ObjectLiteralExpression, context: any) { const resolvedValue = super.visitObjectLiteralExpression(node, {...context, insideProviderDef: true}); // do not collect nested object literals. e.g. a provider could use a diff --git a/packages/core/schematics/migrations/relative-link-resolution/collector.ts b/packages/core/schematics/migrations/relative-link-resolution/collector.ts index ee62dbc4a0..50c2d65b6c 100644 --- a/packages/core/schematics/migrations/relative-link-resolution/collector.ts +++ b/packages/core/schematics/migrations/relative-link-resolution/collector.ts @@ -52,7 +52,8 @@ export class RelativeLinkResolutionCollector { return null; } - if (symbolForIdentifier.declarations.length === 0) { + if (symbolForIdentifier.declarations === undefined || + symbolForIdentifier.declarations.length === 0) { return null; } diff --git a/packages/core/schematics/migrations/relative-link-resolution/update_recorder.ts b/packages/core/schematics/migrations/relative-link-resolution/update_recorder.ts index 6796262346..82e1787968 100644 --- a/packages/core/schematics/migrations/relative-link-resolution/update_recorder.ts +++ b/packages/core/schematics/migrations/relative-link-resolution/update_recorder.ts @@ -16,4 +16,4 @@ import * as ts from 'typescript'; export interface UpdateRecorder { updateNode(node: ts.Node, newText: string): void; commitUpdate(): void; -} \ No newline at end of file +} diff --git a/packages/core/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.ts b/packages/core/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.ts index ba01b7cdfa..0a06a6d326 100644 --- a/packages/core/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.ts +++ b/packages/core/schematics/migrations/static-queries/strategies/usage_strategy/declaration_usage_visitor.ts @@ -152,7 +152,7 @@ export class DeclarationUsageVisitor { node: ts.PropertyAccessExpression, checkSetter: boolean, checkGetter: boolean) { const propertySymbol = this._getPropertyAccessSymbol(node); - if (!propertySymbol || !propertySymbol.declarations.length || + if (propertySymbol?.declarations === undefined || propertySymbol.declarations.length === 0 || (propertySymbol.getFlags() & ts.SymbolFlags.Accessor) === 0) { return; } diff --git a/packages/core/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.ts b/packages/core/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.ts index 0d174244fa..136cc957aa 100644 --- a/packages/core/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.ts +++ b/packages/core/schematics/migrations/static-queries/strategies/usage_strategy/template_usage_visitor.ts @@ -32,7 +32,7 @@ export class TemplateUsageVisitor extends NullVisitor { return !this.hasQueryTemplateReference && this.expressionAstVisitor.hasQueryPropertyRead; } - visitElement(element: Element): void { + override visitElement(element: Element): void { // In case there is a template references variable that matches the query property // name, we can finish this visitor as such a template variable can be used in the // entire template and the query therefore can't be accessed from the template. @@ -47,7 +47,7 @@ export class TemplateUsageVisitor extends NullVisitor { visitAll(this, element.children); } - visitTemplate(template: Template): void { + override visitTemplate(template: Template): void { visitAll(this, template.attributes); visitAll(this, template.inputs); visitAll(this, template.outputs); @@ -57,15 +57,15 @@ export class TemplateUsageVisitor extends NullVisitor { // lifecycle hook at the earliest. } - visitBoundAttribute(attribute: BoundAttribute) { + override visitBoundAttribute(attribute: BoundAttribute) { attribute.value.visit(this.expressionAstVisitor, attribute.sourceSpan); } - visitBoundText(text: BoundText) { + override visitBoundText(text: BoundText) { text.value.visit(this.expressionAstVisitor, text.sourceSpan); } - visitBoundEvent(node: BoundEvent) { + override visitBoundEvent(node: BoundEvent) { node.handler.visit(this.expressionAstVisitor, node.handlerSpan); } } @@ -81,7 +81,7 @@ class ExpressionAstVisitor extends RecursiveAstVisitor { super(); } - visitPropertyRead(node: PropertyRead, span: ParseSourceSpan): any { + override visitPropertyRead(node: PropertyRead, span: ParseSourceSpan): any { // The receiver of the property read needs to be "implicit" as queries are accessed // from the component instance and not from other objects. if (node.receiver instanceof ImplicitReceiver && node.name === this.queryPropertyName) { diff --git a/packages/core/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.ts b/packages/core/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.ts index faa2193985..719c87ca08 100644 --- a/packages/core/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.ts +++ b/packages/core/schematics/migrations/template-var-assignment/angular/html_variable_assignment_visitor.ts @@ -26,12 +26,12 @@ export class HtmlVariableAssignmentVisitor extends NullVisitor { private expressionAstVisitor = new ExpressionAstVisitor(this.variableAssignments, this.currentVariables); - visitElement(element: Element): void { + override visitElement(element: Element): void { visitAll(this, element.outputs); visitAll(this, element.children); } - visitTemplate(template: Template): void { + override visitTemplate(template: Template): void { // Keep track of the template variables which can be accessed by the template // child nodes through the implicit receiver. this.currentVariables.push(...template.variables); @@ -52,7 +52,7 @@ export class HtmlVariableAssignmentVisitor extends NullVisitor { }); } - visitBoundEvent(node: BoundEvent) { + override visitBoundEvent(node: BoundEvent) { node.handler.visit(this.expressionAstVisitor, node.handlerSpan); } } @@ -65,7 +65,7 @@ class ExpressionAstVisitor extends RecursiveAstVisitor { super(); } - visitPropertyWrite(node: PropertyWrite, span: ParseSourceSpan) { + override visitPropertyWrite(node: PropertyWrite, span: ParseSourceSpan) { if (node.receiver instanceof ImplicitReceiver && this.currentVariables.some(v => v.name === node.name)) { this.variableAssignments.push({ diff --git a/packages/core/schematics/migrations/xhr-factory/index.ts b/packages/core/schematics/migrations/xhr-factory/index.ts index db04963e6f..919b56e1d5 100644 --- a/packages/core/schematics/migrations/xhr-factory/index.ts +++ b/packages/core/schematics/migrations/xhr-factory/index.ts @@ -129,4 +129,4 @@ function getNamedImports(importDeclaration: ts.ImportDeclaration|undefined): ts. } return undefined; -} \ No newline at end of file +} diff --git a/packages/core/schematics/test/BUILD.bazel b/packages/core/schematics/test/BUILD.bazel index 135467711d..0904e31590 100644 --- a/packages/core/schematics/test/BUILD.bazel +++ b/packages/core/schematics/test/BUILD.bazel @@ -11,6 +11,7 @@ ts_library( "//packages/core/schematics/migrations/abstract-control-parent", "//packages/core/schematics/migrations/activated-route-snapshot-fragment", "//packages/core/schematics/migrations/can-activate-with-redirect-to", + "//packages/core/schematics/migrations/deep-shadow-piercing-selector", "//packages/core/schematics/migrations/dynamic-queries", "//packages/core/schematics/migrations/initial-navigation", "//packages/core/schematics/migrations/missing-injectable", diff --git a/packages/core/schematics/test/deep-shadow-piercing-selector_spec.ts b/packages/core/schematics/test/deep-shadow-piercing-selector_spec.ts new file mode 100644 index 0000000000..912642c5a4 --- /dev/null +++ b/packages/core/schematics/test/deep-shadow-piercing-selector_spec.ts @@ -0,0 +1,69 @@ +/** + * @license + * 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 + */ + +import {tags} from '@angular-devkit/core'; +import {EmptyTree} from '@angular-devkit/schematics'; +import {SchematicTestRunner, UnitTestTree} from '@angular-devkit/schematics/testing'; + +describe('`/deep/` to `::ng-deep` migration', () => { + let tree: UnitTestTree; + const runner = new SchematicTestRunner('test', require.resolve('../migrations.json')); + + beforeEach(() => { + tree = new UnitTestTree(new EmptyTree()); + }); + + it(`should replace '/deep/' with '::ng-deep' in inline component styles`, async () => { + const fileName = '/index.ts'; + const getFileContent = (contentToReplace: string) => tags.stripIndents` + import { Component } from '@angular/core'; + + @Component({ + selector: 'app-root', + template: '', + styles: ['` + + contentToReplace + `'], + }) + export class AppComponent { } + `; + + tree.create(fileName, getFileContent(':host /deep/ * { cursor: pointer; }')); + await runMigration(); + expect(tree.readContent(fileName)) + .toBe(getFileContent(':host ::ng-deep * { cursor: pointer; }')); + }); + + for (const styleExtension of ['scss', 'sass', 'css', 'styl', 'less']) { + it(`should replace '/deep/' with '::ng-deep' in ${styleExtension} file`, async () => { + const fileName = `/index.${styleExtension}`; + tree.create(fileName, ':host /deep/ * { cursor: pointer; }'); + await runMigration(); + expect(tree.readContent(fileName)).toBe(':host ::ng-deep * { cursor: pointer; }'); + }); + } + + it(`should replace '/deep/' with '::ng-deep' when used as root selector`, async () => { + const fileName = '/index.css'; + tree.create(fileName, '/deep/ * { cursor: pointer; }'); + await runMigration(); + expect(tree.readContent(fileName)).toBe('::ng-deep * { cursor: pointer; }'); + }); + + it(`should not replace '/deep/' with '::ng-deep' in unknown file extension`, async () => { + const fileName = '/index.foo'; + const content = 'this is a not /deep/ selector'; + tree.create(fileName, content); + await runMigration(); + expect(tree.readContent(fileName)).toBe(content); + }); + + async function runMigration(): Promise { + await runner.runSchematicAsync('migration-v12-deep-shadow-piercing-selector', {}, tree) + .toPromise(); + } +}); diff --git a/packages/core/schematics/tsconfig.json b/packages/core/schematics/tsconfig.json index 53930ff133..89cfe2bb70 100644 --- a/packages/core/schematics/tsconfig.json +++ b/packages/core/schematics/tsconfig.json @@ -1,6 +1,7 @@ { "compilerOptions": { "noImplicitReturns": true, + "noImplicitOverride": true, "noFallthroughCasesInSwitch": true, "strict": true, "moduleResolution": "node", diff --git a/packages/core/schematics/utils/typescript/imports.ts b/packages/core/schematics/utils/typescript/imports.ts index bf33f0a258..1418021d5a 100644 --- a/packages/core/schematics/utils/typescript/imports.ts +++ b/packages/core/schematics/utils/typescript/imports.ts @@ -19,7 +19,7 @@ export function getImportOfIdentifier(typeChecker: ts.TypeChecker, node: ts.Iden null { const symbol = typeChecker.getSymbolAtLocation(node); - if (!symbol || !symbol.declarations.length) { + if (!symbol || symbol.declarations === undefined || !symbol.declarations.length) { return null; } diff --git a/packages/core/src/application_init.ts b/packages/core/src/application_init.ts index 69b6fe473d..b9a46d6f75 100644 --- a/packages/core/src/application_init.ts +++ b/packages/core/src/application_init.ts @@ -59,11 +59,11 @@ import {noop} from './util/noop'; * through DI. * * ``` - * function initializeApp(httpClient: HttpClient): Observable { - * return httpClient.get("https://someUrl.com/api/user") + * function initializeAppFactory(httpClient: HttpClient): () => Observable { + * return () => httpClient.get("https://someUrl.com/api/user") * .pipe( * tap(user => { ... }) - * ) + * ); * } * * @NgModule({ @@ -72,7 +72,7 @@ import {noop} from './util/noop'; * bootstrap: [AppComponent], * providers: [{ * provide: APP_INITIALIZER, - * useFactory: initializeApp, + * useFactory: initializeAppFactory, * deps: [HttpClient], * multi: true * }] diff --git a/packages/core/src/application_module.ts b/packages/core/src/application_module.ts index 1079d19812..5ad90e2e85 100644 --- a/packages/core/src/application_module.ts +++ b/packages/core/src/application_module.ts @@ -44,16 +44,16 @@ export function _localeFactory(locale?: string): string { /** * Work out the locale from the potential global properties. * - * * Closure Compiler: use `goog.LOCALE`. + * * Closure Compiler: use `goog.getLocale()`. * * Ivy enabled: use `$localize.locale` */ export function getGlobalLocale(): string { if (typeof ngI18nClosureMode !== 'undefined' && ngI18nClosureMode && - typeof goog !== 'undefined' && goog.LOCALE !== 'en') { - // * The default `goog.LOCALE` value is `en`, while Angular used `en-US`. + typeof goog !== 'undefined' && goog.getLocale() !== 'en') { + // * The default `goog.getLocale()` value is `en`, while Angular used `en-US`. // * In order to preserve backwards compatibility, we use Angular default value over // Closure Compiler's one. - return goog.LOCALE; + return goog.getLocale(); } else { // KEEP `typeof $localize !== 'undefined' && $localize.locale` IN SYNC WITH THE LOCALIZE // COMPILE-TIME INLINER. diff --git a/packages/core/src/application_ref.ts b/packages/core/src/application_ref.ts index 40d6bf6591..ea4de55bca 100644 --- a/packages/core/src/application_ref.ts +++ b/packages/core/src/application_ref.ts @@ -13,7 +13,7 @@ import {share} from 'rxjs/operators'; import {ApplicationInitStatus} from './application_init'; import {APP_BOOTSTRAP_LISTENER, PLATFORM_INITIALIZER} from './application_tokens'; -import {getCompilerFacade} from './compiler/compiler_facade'; +import {getCompilerFacade, JitCompilerUsage} from './compiler/compiler_facade'; import {Console} from './console'; import {Injectable} from './di/injectable'; import {InjectionToken} from './di/injection_token'; @@ -94,7 +94,11 @@ export function compileNgModuleFactory__POST_R3__( return Promise.resolve(moduleFactory); } - const compiler = getCompilerFacade(); + const compiler = getCompilerFacade({ + usage: JitCompilerUsage.Decorator, + kind: 'NgModule', + type: moduleType, + }); const compilerInjector = Injector.create({providers: compilerProviders}); const resourceLoader = compilerInjector.get(compiler.ResourceLoader); // The resource loader can also return a string while the "resolveComponentResources" @@ -682,20 +686,41 @@ export class ApplicationRef { } /** - * Bootstrap a new component at the root level of the application. + * Bootstrap a component onto the element identified by its selector or, optionally, to a + * specified element. * * @usageNotes * ### Bootstrap process * - * When bootstrapping a new root component into an application, Angular mounts the - * specified application component onto DOM elements identified by the componentType's - * selector and kicks off automatic change detection to finish initializing the component. + * When bootstrapping a component, Angular mounts it onto a target DOM element + * and kicks off automatic change detection. The target DOM element can be + * provided using the `rootSelectorOrNode` argument. * - * Optionally, a component can be mounted onto a DOM element that does not match the - * componentType's selector. + * If the target DOM element is not provided, Angular tries to find one on a page + * using the `selector` of the component that is being bootstrapped + * (first matched element is used). * * ### Example - * {@example core/ts/platform/platform.ts region='longform'} + * + * Generally, we define the component to bootstrap in the `bootstrap` array of `NgModule`, + * but it requires us to know the component while writing the application code. + * + * Imagine a situation where we have to wait for an API call to decide about the component to + * bootstrap. We can use the `ngDoBootstrap` hook of the `NgModule` and call this method to + * dynamically bootstrap a component. + * + * {@example core/ts/platform/platform.ts region='componentSelector'} + * + * Optionally, a component can be mounted onto a DOM element that does not match the + * selector of the bootstrapped component. + * + * In the following example, we are providing a CSS selector to match the target element. + * + * {@example core/ts/platform/platform.ts region='cssSelector'} + * + * While in this example, we are providing reference to a DOM node. + * + * {@example core/ts/platform/platform.ts region='domNode'} */ bootstrap(componentOrFactory: ComponentFactory|Type, rootSelectorOrNode?: string|any): ComponentRef { diff --git a/packages/core/src/change_detection/differs/iterable_differs.ts b/packages/core/src/change_detection/differs/iterable_differs.ts index edb6b1e3b0..5a5fe7bb94 100644 --- a/packages/core/src/change_detection/differs/iterable_differs.ts +++ b/packages/core/src/change_detection/differs/iterable_differs.ts @@ -113,15 +113,61 @@ export interface IterableChangeRecord { } /** - * An optional function passed into the `NgForOf` directive that defines how to track - * changes for items in an iterable. - * The function takes the iteration index and item ID. - * When supplied, Angular tracks changes by the return value of the function. + * A function optionally passed into the `NgForOf` directive to customize how `NgForOf` uniquely + * identifies items in an iterable. * + * `NgForOf` needs to uniquely identify items in the iterable to correctly perform DOM updates + * when items in the iterable are reordered, new items are added, or existing items are removed. + * + * + * In all of these scenarios it is usually desirable to only update the DOM elements associated + * with the items affected by the change. This behavior is important to: + * + * - preserve any DOM-specific UI state (like cursor position, focus, text selection) when the + * iterable is modified + * - enable animation of item addition, removal, and iterable reordering + * - preserve the value of the ` @@ -311,15 +308,15 @@ export class RootViewRef extends ViewRef { super(_view); } - detectChanges(): void { + override detectChanges(): void { detectChangesInRootView(this._view); } - checkNoChanges(): void { + override checkNoChanges(): void { checkNoChangesInRootView(this._view); } - get context(): T { + override get context(): T { return null!; } } diff --git a/packages/core/src/sanitization/bypass.ts b/packages/core/src/sanitization/bypass.ts index f45924688f..05364c268f 100644 --- a/packages/core/src/sanitization/bypass.ts +++ b/packages/core/src/sanitization/bypass.ts @@ -70,27 +70,27 @@ abstract class SafeValueImpl implements SafeValue { } class SafeHtmlImpl extends SafeValueImpl implements SafeHtml { - getTypeName() { + override getTypeName() { return BypassType.Html; } } class SafeStyleImpl extends SafeValueImpl implements SafeStyle { - getTypeName() { + override getTypeName() { return BypassType.Style; } } class SafeScriptImpl extends SafeValueImpl implements SafeScript { - getTypeName() { + override getTypeName() { return BypassType.Script; } } class SafeUrlImpl extends SafeValueImpl implements SafeUrl { - getTypeName() { + override getTypeName() { return BypassType.Url; } } class SafeResourceUrlImpl extends SafeValueImpl implements SafeResourceUrl { - getTypeName() { + override getTypeName() { return BypassType.ResourceUrl; } } diff --git a/packages/core/src/testability/testability.ts b/packages/core/src/testability/testability.ts index 55d6e1f9b3..6efffad809 100644 --- a/packages/core/src/testability/testability.ts +++ b/packages/core/src/testability/testability.ts @@ -50,8 +50,8 @@ interface WaitCallback { /** * The Testability service provides testing hooks that can be accessed from - * the browser and by services such as Protractor. Each bootstrapped Angular - * application on the page will have an instance of Testability. + * the browser. Each bootstrapped Angular application on the page will have + * an instance of Testability. * @publicApi */ @Injectable() diff --git a/packages/core/src/util/assert.ts b/packages/core/src/util/assert.ts index bf1092a99b..f907beaa7d 100644 --- a/packages/core/src/util/assert.ts +++ b/packages/core/src/util/assert.ts @@ -129,4 +129,4 @@ export function assertOneOf(value: any, ...validValues: any[]) { if (validValues.indexOf(value) !== -1) return true; throwError(`Expected value to be one of ${JSON.stringify(validValues)} but was ${ JSON.stringify(value)}.`); -} \ No newline at end of file +} diff --git a/packages/core/src/util/decorators.ts b/packages/core/src/util/decorators.ts index 92d4d0e04c..896460b8b6 100644 --- a/packages/core/src/util/decorators.ts +++ b/packages/core/src/util/decorators.ts @@ -65,7 +65,7 @@ export function makeDecorator( // prevents the property is copied during subclassing. const annotations = cls.hasOwnProperty(ANNOTATIONS) ? (cls as any)[ANNOTATIONS] : - Object.defineProperty(cls, ANNOTATIONS, {value: []})[ANNOTATIONS]; + (Object.defineProperty(cls, ANNOTATIONS, {value: []}) as any)[ANNOTATIONS]; annotations.push(annotationInstance); diff --git a/packages/core/src/util/dom.ts b/packages/core/src/util/dom.ts index f55098583e..4d03fe5e8e 100644 --- a/packages/core/src/util/dom.ts +++ b/packages/core/src/util/dom.ts @@ -48,4 +48,4 @@ const COMMENT_DELIMITER_ESCAPED = '\u200B$1\u200B'; export function escapeCommentText(value: string): string { return value.replace( COMMENT_DISALLOWED, (text) => text.replace(COMMENT_DELIMITER, COMMENT_DELIMITER_ESCAPED)); -} \ No newline at end of file +} diff --git a/packages/core/src/view/entrypoint.ts b/packages/core/src/view/entrypoint.ts index b66b51f7ba..0b96de0c32 100644 --- a/packages/core/src/view/entrypoint.ts +++ b/packages/core/src/view/entrypoint.ts @@ -64,7 +64,7 @@ class NgModuleFactory_ extends NgModuleFactory { super(); } - create(parentInjector: Injector|null): NgModuleRef { + override create(parentInjector: Injector|null): NgModuleRef { initServicesIfNeeded(); // Clone the NgModuleDefinition so that any tree shakeable provider definition // added to this instance of the NgModuleRef doesn't affect the cached copy. diff --git a/packages/core/src/view/ng_module.ts b/packages/core/src/view/ng_module.ts index 5a414d4548..27b6713654 100644 --- a/packages/core/src/view/ng_module.ts +++ b/packages/core/src/view/ng_module.ts @@ -10,7 +10,7 @@ import {resolveForwardRef} from '../di/forward_ref'; import {Injector} from '../di/injector'; import {setCurrentInjector} from '../di/injector_compatibility'; import {INJECTOR} from '../di/injector_token'; -import {getInjectableDef, ɵɵInjectableDef} from '../di/interface/defs'; +import {getInjectableDef, ɵɵInjectableDeclaration} from '../di/interface/defs'; import {INJECTOR_SCOPE} from '../di/scope'; import {NgModuleRef} from '../linker/ng_module_factory'; import {newArray} from '../util/array_utils'; @@ -102,7 +102,7 @@ export function resolveNgModuleDep( return data; } const providerDef = data._def.providersByKey[tokenKey]; - let injectableDef: ɵɵInjectableDef|null; + let injectableDef: ɵɵInjectableDeclaration|null; if (providerDef) { let providerInstance = data._providers[providerDef.index]; if (providerInstance === undefined) { @@ -137,8 +137,8 @@ function moduleTransitivelyPresent(ngModule: NgModuleData, scope: any): boolean return ngModule._def.modules.indexOf(scope) > -1; } -function targetsModule(ngModule: NgModuleData, def: ɵɵInjectableDef): boolean { - const providedIn = def.providedIn; +function targetsModule(ngModule: NgModuleData, def: ɵɵInjectableDeclaration): boolean { + const providedIn = resolveForwardRef(def.providedIn); return providedIn != null && (providedIn === 'any' || providedIn === ngModule._def.scope || moduleTransitivelyPresent(ngModule, providedIn)); diff --git a/packages/core/src/view/refs.ts b/packages/core/src/view/refs.ts index b724fcc800..b33327a2b6 100644 --- a/packages/core/src/view/refs.ts +++ b/packages/core/src/view/refs.ts @@ -58,7 +58,7 @@ class ComponentFactory_ extends ComponentFactory { this.viewDefFactory = viewDefFactory; } - get inputs() { + override get inputs() { const inputsArr: {propName: string, templateName: string}[] = []; const inputs = this._inputs!; for (let propName in inputs) { @@ -68,7 +68,7 @@ class ComponentFactory_ extends ComponentFactory { return inputsArr; } - get outputs() { + override get outputs() { const outputsArr: {propName: string, templateName: string}[] = []; for (let propName in this._outputs) { const templateName = this._outputs[propName]; @@ -80,7 +80,7 @@ class ComponentFactory_ extends ComponentFactory { /** * Creates a new component. */ - create( + override create( injector: Injector, projectableNodes?: any[][], rootSelectorOrNode?: string|any, ngModule?: NgModuleRef): ComponentRef { if (!ngModule) { @@ -100,9 +100,9 @@ class ComponentFactory_ extends ComponentFactory { } class ComponentRef_ extends ComponentRef { - public readonly hostView: ViewRef; - public readonly instance: any; - public readonly changeDetectorRef: ChangeDetectorRef; + public override readonly hostView: ViewRef; + public override readonly instance: any; + public override readonly changeDetectorRef: ChangeDetectorRef; private _elDef: NodeDef; constructor(private _view: ViewData, private _viewRef: ViewRef, private _component: any) { super(); @@ -111,20 +111,20 @@ class ComponentRef_ extends ComponentRef { this.changeDetectorRef = _viewRef; this.instance = _component; } - get location(): ElementRef { + override get location(): ElementRef { return new ElementRef(asElementData(this._view, this._elDef.nodeIndex).renderElement); } - get injector(): Injector { + override get injector(): Injector { return new Injector_(this._view, this._elDef); } - get componentType(): Type { + override get componentType(): Type { return this._component.constructor; } - destroy(): void { + override destroy(): void { this._viewRef.destroy(); } - onDestroy(callback: Function): void { + override onDestroy(callback: Function): void { this._viewRef.onDestroy(callback); } } @@ -350,12 +350,12 @@ class TemplateRef_ extends TemplateRef implements TemplateData { super(); } - createEmbeddedView(context: any): EmbeddedViewRef { + override createEmbeddedView(context: any): EmbeddedViewRef { return new ViewRef_(Services.createEmbeddedView( this._parentView, this._def, this._def.element!.template !, context)); } - get elementRef(): ElementRef { + override get elementRef(): ElementRef { return new ElementRef(asElementData(this._parentView, this._def.nodeIndex).renderElement); } } diff --git a/packages/core/src/view/services.ts b/packages/core/src/view/services.ts index c15f0a4aa1..d62efa68ea 100644 --- a/packages/core/src/view/services.ts +++ b/packages/core/src/view/services.ts @@ -7,8 +7,8 @@ */ import {DebugElement__PRE_R3__, DebugEventListener, DebugNode__PRE_R3__, getDebugNode, indexDebugNode, removeDebugNodeFromIndex} from '../debug/debug_node'; -import {Injector} from '../di'; -import {getInjectableDef, InjectableType, ɵɵInjectableDef} from '../di/interface/defs'; +import {Injector, resolveForwardRef} from '../di'; +import {getInjectableDef, InjectableType, ɵɵInjectableDeclaration} from '../di/interface/defs'; import {ErrorHandler} from '../error_handler'; import {Type} from '../interface/type'; import {ComponentFactory} from '../linker/component_factory'; @@ -174,7 +174,7 @@ const viewDefOverrides = new Map(); function debugOverrideProvider(override: ProviderOverride) { providerOverrides.set(override.token, override); - let injectableDef: ɵɵInjectableDef|null; + let injectableDef: ɵɵInjectableDeclaration|null; if (typeof override.token === 'function' && (injectableDef = getInjectableDef(override.token)) && typeof injectableDef.providedIn === 'function') { providerOverridesWithScope.set(override.token as InjectableType, override); @@ -197,7 +197,7 @@ function debugClearOverrides() { // 1) Locate the providers of an element and check if one of them was overwritten // 2) Change the providers of that element // -// We only create new datastructures if we need to, to keep perf impact +// We only create new data structures if we need to, to keep perf impact // reasonable. function applyProviderOverridesToView(def: ViewDefinition): ViewDefinition { if (providerOverrides.size === 0) { @@ -253,7 +253,7 @@ function applyProviderOverridesToView(def: ViewDefinition): ViewDefinition { } // Notes about the algorithm: -// We only create new datastructures if we need to, to keep perf impact +// We only create new data structures if we need to, to keep perf impact // reasonable. function applyProviderOverridesToNgModule(def: NgModuleDefinition): NgModuleDefinition { const {hasOverrides, hasDeprecatedOverrides} = calcHasOverrides(def); @@ -282,7 +282,7 @@ function applyProviderOverridesToNgModule(def: NgModuleDefinition): NgModuleDefi }); def.modules.forEach(module => { providerOverridesWithScope.forEach((override, token) => { - if (getInjectableDef(token)!.providedIn === module) { + if (resolveForwardRef(getInjectableDef(token)!.providedIn) === module) { hasOverrides = true; hasDeprecatedOverrides = hasDeprecatedOverrides || override.deprecatedBehavior; } @@ -310,7 +310,7 @@ function applyProviderOverridesToNgModule(def: NgModuleDefinition): NgModuleDefi if (providerOverridesWithScope.size > 0) { let moduleSet = new Set(def.modules); providerOverridesWithScope.forEach((override, token) => { - if (moduleSet.has(getInjectableDef(token)!.providedIn)) { + if (moduleSet.has(resolveForwardRef(getInjectableDef(token)!.providedIn))) { let provider = { token: token, flags: @@ -703,11 +703,15 @@ export class DebugRenderer2 implements Renderer2 { } destroyNode(node: any) { - const debugNode = getDebugNode(node)!; - removeDebugNodeFromIndex(debugNode); - if (debugNode instanceof DebugNode__PRE_R3__) { - debugNode.listeners.length = 0; + const debugNode = getDebugNode(node); + + if (debugNode) { + removeDebugNodeFromIndex(debugNode); + if (debugNode instanceof DebugNode__PRE_R3__) { + debugNode.listeners.length = 0; + } } + if (this.delegate.destroyNode) { this.delegate.destroyNode(node); } diff --git a/packages/core/src/view/util.ts b/packages/core/src/view/util.ts index c83b49360c..a7278bfdab 100644 --- a/packages/core/src/view/util.ts +++ b/packages/core/src/view/util.ts @@ -233,6 +233,8 @@ export function getParentRenderElement(view: ViewData, renderHost: any, def: Nod (renderParent.element!.componentRendererType!.encapsulation === ViewEncapsulation.ShadowDom || // TODO(FW-2290): remove the `encapsulation === 1` fallback logic in v12. + // @ts-ignore TODO: Remove as part of FW-2290. TS complains about us dealing with an enum + // value that is not known (but previously was the value for ViewEncapsulation.Native) renderParent.element!.componentRendererType!.encapsulation === 1))) { // only children of non components, or children of components with native encapsulation should // be attached. diff --git a/packages/core/test/acceptance/bootstrap_spec.ts b/packages/core/test/acceptance/bootstrap_spec.ts index edd8eaa43d..0f96eda3e0 100644 --- a/packages/core/test/acceptance/bootstrap_spec.ts +++ b/packages/core/test/acceptance/bootstrap_spec.ts @@ -7,7 +7,6 @@ */ import {ApplicationRef, COMPILER_OPTIONS, Component, destroyPlatform, NgModule, NgZone, TestabilityRegistry, ViewEncapsulation} from '@angular/core'; -import {expect} from '@angular/core/testing/src/testing_internal'; import {BrowserModule} from '@angular/platform-browser'; import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; import {onlyInIvy, withBody} from '@angular/private/testing'; diff --git a/packages/core/test/acceptance/change_detection_spec.ts b/packages/core/test/acceptance/change_detection_spec.ts index 36b07659ed..a360a5b581 100644 --- a/packages/core/test/acceptance/change_detection_spec.ts +++ b/packages/core/test/acceptance/change_detection_spec.ts @@ -1189,7 +1189,7 @@ describe('change detection', () => { // Custom error handler that just rethrows all the errors from the // view, rather than logging them out. Used to keep our logs clean. class RethrowErrorHandler extends ErrorHandler { - handleError(error: any) { + override handleError(error: any) { throw error; } } diff --git a/packages/core/test/acceptance/change_detection_transplanted_view_spec.ts b/packages/core/test/acceptance/change_detection_transplanted_view_spec.ts index 815aebcb5c..235e6933da 100644 --- a/packages/core/test/acceptance/change_detection_transplanted_view_spec.ts +++ b/packages/core/test/acceptance/change_detection_transplanted_view_spec.ts @@ -54,11 +54,11 @@ describe('change detection for transplanted views', () => { template: insertCompTemplate, }) class InsertForOnPushDeclareComp extends InsertComp { - constructor(public changeDetectorRef: ChangeDetectorRef) { + constructor(changeDetectorRef: ChangeDetectorRef) { super(changeDetectorRef); insertForOnPushDeclareComp = this; } - get template(): TemplateRef { + override get template(): TemplateRef { return onPushDeclareComp.myTmpl; } } @@ -105,7 +105,7 @@ describe('change detection for transplanted views', () => { changeDetection: ChangeDetectionStrategy.OnPush }) class OnPushDeclareComp extends DeclareComp { - constructor(readonly changeDetector: ChangeDetectorRef) { + constructor(changeDetector: ChangeDetectorRef) { super(changeDetector); onPushDeclareComp = this; } diff --git a/packages/core/test/acceptance/component_spec.ts b/packages/core/test/acceptance/component_spec.ts index 41c8208b78..31994aadac 100644 --- a/packages/core/test/acceptance/component_spec.ts +++ b/packages/core/test/acceptance/component_spec.ts @@ -14,6 +14,7 @@ import {expect} from '@angular/platform-browser/testing/src/matchers'; import {ivyEnabled, onlyInIvy} from '@angular/private/testing'; import {domRendererFactory3} from '../../src/render3/interfaces/renderer'; +import {global} from '../../src/util/global'; describe('component', () => { @@ -304,7 +305,7 @@ describe('component', () => { }); describe('with ngDevMode', () => { - const _global: {ngDevMode: any} = global as any; + const _global: {ngDevMode: any} = global; let saveNgDevMode!: typeof ngDevMode; beforeEach(() => saveNgDevMode = ngDevMode); afterEach(() => _global.ngDevMode = saveNgDevMode); diff --git a/packages/core/test/acceptance/copy_definition_feature_spec.ts b/packages/core/test/acceptance/copy_definition_feature_spec.ts index 36bfa2d0de..35a74ae42f 100644 --- a/packages/core/test/acceptance/copy_definition_feature_spec.ts +++ b/packages/core/test/acceptance/copy_definition_feature_spec.ts @@ -40,7 +40,7 @@ describe('Ivy CopyDefinitionFeature', () => { } class ChildComponent extends BaseComponent { - static ɵcmp = defineComponent({ + static override ɵcmp = defineComponent({ type: ChildComponent, selectors: [['some-cmp']], features: [InheritDefinitionFeature, CopyDefinitionFeature], @@ -49,7 +49,7 @@ describe('Ivy CopyDefinitionFeature', () => { template: function ChildComponent_Template(rf, ctx) {}, encapsulation: 2 }); - static ɵfac = function ChildComponent_Factory(t: any) { + static override ɵfac = function ChildComponent_Factory(t: any) { return new (t || ChildComponent)(); }; } diff --git a/packages/core/test/acceptance/di_spec.ts b/packages/core/test/acceptance/di_spec.ts index fe1fe122c8..91f49cc416 100644 --- a/packages/core/test/acceptance/di_spec.ts +++ b/packages/core/test/acceptance/di_spec.ts @@ -7,7 +7,7 @@ */ import {CommonModule} from '@angular/common'; -import {Attribute, ChangeDetectorRef, Component, ComponentFactoryResolver, ComponentRef, ContentChild, Directive, ElementRef, EventEmitter, forwardRef, Host, HostBinding, Inject, Injectable, InjectionToken, INJECTOR, Injector, Input, LOCALE_ID, NgModule, NgZone, Optional, Output, Pipe, PipeTransform, Self, SkipSelf, TemplateRef, ViewChild, ViewContainerRef, ViewRef, ɵDEFAULT_LOCALE_ID as DEFAULT_LOCALE_ID} from '@angular/core'; +import {Attribute, ChangeDetectorRef, Component, ComponentFactoryResolver, ComponentRef, Directive, ElementRef, EventEmitter, forwardRef, Host, HostBinding, Inject, Injectable, InjectionToken, INJECTOR, Injector, Input, LOCALE_ID, NgModule, NgZone, Optional, Output, Pipe, PipeTransform, Self, SkipSelf, TemplateRef, ViewChild, ViewContainerRef, ViewRef, ɵDEFAULT_LOCALE_ID as DEFAULT_LOCALE_ID} from '@angular/core'; import {ɵINJECTOR_SCOPE} from '@angular/core/src/core'; import {ViewRef as ViewRefInternal} from '@angular/core/src/render3/view_ref'; import {TestBed} from '@angular/core/testing'; @@ -599,6 +599,93 @@ describe('di', () => { expect(() => TestBed.createComponent(MyComp)).toThrowError(/No provider for DirectiveB/); }); + it('should not have access to the directive injector in a standalone injector from within a directive-level provider factory', + () => { + // https://github.com/angular/angular/issues/42651 + class TestA { + constructor(public injector: string) {} + } + class TestB { + constructor(public a: TestA) {} + } + + function createTestB() { + // Setup a standalone injector that provides `TestA`, which is resolved from a + // standalone child injector that requests `TestA` as a dependency for `TestB`. + // Although we're inside a directive factory and therefore have access to the + // directive-level injector, `TestA` has to be resolved from the standalone injector. + const parent = Injector.create({ + providers: [{provide: TestA, useFactory: () => new TestA('standalone'), deps: []}], + name: 'TestA', + }); + const child = Injector.create({ + providers: [{provide: TestB, useClass: TestB, deps: [TestA]}], + parent, + name: 'TestB', + }); + return child.get(TestB); + } + + @Component({ + template: '', + providers: [ + {provide: TestA, useFactory: () => new TestA('component'), deps: []}, + {provide: TestB, useFactory: createTestB}, + ], + }) + class MyComp { + constructor(public readonly testB: TestB) {} + } + + TestBed.configureTestingModule({declarations: [MyComp]}); + + const cmp = TestBed.createComponent(MyComp); + expect(cmp.componentInstance.testB).toBeInstanceOf(TestB); + expect(cmp.componentInstance.testB.a.injector).toBe('standalone'); + }); + + it('should not have access to the directive injector in a standalone injector from within a directive-level provider factory', + () => { + class TestA { + constructor(public injector: string) {} + } + class TestB { + constructor(public a: TestA|null) {} + } + + function createTestB() { + // Setup a standalone injector that provides `TestB` with an optional dependency of + // `TestA`. Since `TestA` is not provided by the standalone injector it should resolve + // to null; both the NgModule providers and the component-level providers should not + // be considered. + const injector = Injector.create({ + providers: [{provide: TestB, useClass: TestB, deps: [[TestA, new Optional()]]}], + name: 'TestB', + }); + return injector.get(TestB); + } + + @Component({ + template: '', + providers: [ + {provide: TestA, useFactory: () => new TestA('component'), deps: []}, + {provide: TestB, useFactory: createTestB}, + ], + }) + class MyComp { + constructor(public readonly testB: TestB) {} + } + + TestBed.configureTestingModule({ + declarations: [MyComp], + providers: [{provide: TestA, useFactory: () => new TestA('module'), deps: []}] + }); + + const cmp = TestBed.createComponent(MyComp); + expect(cmp.componentInstance.testB).toBeInstanceOf(TestB); + expect(cmp.componentInstance.testB.a).toBeNull(); + }); + onlyInIvy('Ivy has different error message for circular dependency') .it('should throw if directives try to inject each other', () => { @Directive({selector: '[dirB]'}) @@ -1951,6 +2038,34 @@ describe('di', () => { const platformService = childInjector.get(PlatformService); expect(platformService.injector.get(ɵINJECTOR_SCOPE)).toBe('platform'); }); + + it('should create a provider that uses `forwardRef` inside `providedIn`', () => { + @Injectable() + class ProviderDep { + getNumber() { + return 3; + } + } + + @Injectable({providedIn: forwardRef(() => Module)}) + class Provider { + constructor(private _dep: ProviderDep) {} + value = this._dep.getNumber() + 2; + } + + @Component({template: ''}) + class Comp { + constructor(public provider: Provider) {} + } + + @NgModule({declarations: [Comp], exports: [Comp], providers: [ProviderDep]}) + class Module { + } + + TestBed.configureTestingModule({imports: [Module]}); + const fixture = TestBed.createComponent(Comp); + expect(fixture.componentInstance.provider.value).toBe(5); + }); }); describe('service injection', () => { @@ -2012,7 +2127,7 @@ describe('di', () => { } class MyRootService extends MyService { - id = 2; + override id = 2; } @Component({template: ''}) diff --git a/packages/core/test/acceptance/discover_utils_spec.ts b/packages/core/test/acceptance/discover_utils_spec.ts index 26e6b09d9c..513bb26065 100644 --- a/packages/core/test/acceptance/discover_utils_spec.ts +++ b/packages/core/test/acceptance/discover_utils_spec.ts @@ -7,21 +7,24 @@ */ import {CommonModule} from '@angular/common'; import {Component, Directive, HostBinding, InjectionToken, ViewChild} from '@angular/core'; +import {ChangeDetectionStrategy} from '@angular/core/src/change_detection'; +import {EventEmitter} from '@angular/core/src/event_emitter'; +import {Input, Output, ViewEncapsulation} from '@angular/core/src/metadata'; import {isLView} from '@angular/core/src/render3/interfaces/type_checks'; import {CONTEXT} from '@angular/core/src/render3/interfaces/view'; import {ComponentFixture, TestBed} from '@angular/core/testing'; import {getElementStyles} from '@angular/core/testing/src/styling'; -import {expect} from '@angular/core/testing/src/testing_internal'; import {onlyInIvy} from '@angular/private/testing'; +import {getLContext} from '../../src/render3/context_discovery'; import {getHostElement, markDirty} from '../../src/render3/index'; -import {getComponent, getComponentLView, getContext, getDebugNode, getDirectives, getInjectionTokens, getInjector, getListeners, getLocalRefs, getOwningComponent, getRootComponents, loadLContext} from '../../src/render3/util/discovery_utils'; +import {ComponentDebugMetadata, getComponent, getComponentLView, getContext, getDebugNode, getDirectiveMetadata, getDirectives, getInjectionTokens, getInjector, getListeners, getLocalRefs, getOwningComponent, getRootComponents} from '../../src/render3/util/discovery_utils'; onlyInIvy('Ivy-specific utilities').describe('discovery utils', () => { let fixture: ComponentFixture; let myApp: MyApp; let dirA: DirectiveA[]; - let childComponent: DirectiveA[]; + let childComponent: (DirectiveA|Child)[]; let child: NodeListOf; let span: NodeListOf; let div: NodeListOf; @@ -55,6 +58,8 @@ onlyInIvy('Ivy-specific utilities').describe('discovery utils', () => { @Directive({selector: '[dirA]', exportAs: 'dirA'}) class DirectiveA { + @Input('a') b = 2; + @Output('c') d = new EventEmitter(); constructor() { dirA.push(this); } @@ -73,6 +78,8 @@ onlyInIvy('Ivy-specific utilities').describe('discovery utils', () => { }) class MyApp { text: string = 'INIT'; + @Input('a') b = 2; + @Output('c') d = new EventEmitter(); constructor() { myApp = this; } @@ -263,9 +270,9 @@ onlyInIvy('Ivy-specific utilities').describe('discovery utils', () => { }); }); - describe('loadLContext', () => { + describe('getLContext', () => { it('should work on components', () => { - const lContext = loadLContext(child[0]); + const lContext = getLContext(child[0])!; expect(lContext).toBeDefined(); expect(lContext.native as any).toBe(child[0]); }); @@ -273,7 +280,7 @@ onlyInIvy('Ivy-specific utilities').describe('discovery utils', () => { it('should work on templates', () => { const templateComment = Array.from((fixture.nativeElement as HTMLElement).childNodes) .find((node: ChildNode) => node.nodeType === Node.COMMENT_NODE)!; - const lContext = loadLContext(templateComment); + const lContext = getLContext(templateComment)!; expect(lContext).toBeDefined(); expect(lContext.native as any).toBe(templateComment); }); @@ -283,11 +290,28 @@ onlyInIvy('Ivy-specific utilities').describe('discovery utils', () => { .find( (node: ChildNode) => node.nodeType === Node.COMMENT_NODE && node.textContent === `ng-container`)!; - const lContext = loadLContext(ngContainerComment); + const lContext = getLContext(ngContainerComment)!; expect(lContext).toBeDefined(); expect(lContext.native as any).toBe(ngContainerComment); }); }); + + describe('getDirectiveMetadata', () => { + it('should work with components', () => { + const metadata = getDirectiveMetadata(myApp); + expect(metadata!.inputs).toEqual({a: 'b'}); + expect(metadata!.outputs).toEqual({c: 'd'}); + expect((metadata as ComponentDebugMetadata).changeDetection) + .toBe(ChangeDetectionStrategy.Default); + expect((metadata as ComponentDebugMetadata).encapsulation).toBe(ViewEncapsulation.None); + }); + + it('should work with directives', () => { + const metadata = getDirectiveMetadata(getDirectives(div[0])[0]); + expect(metadata!.inputs).toEqual({a: 'b'}); + expect(metadata!.outputs).toEqual({c: 'd'}); + }); + }); }); onlyInIvy('Ivy-specific utilities').describe('discovery utils deprecated', () => { @@ -359,6 +383,16 @@ onlyInIvy('Ivy-specific utilities').describe('discovery utils deprecated', () => const elm2Dirs = getDirectives(elm2); expect(elm2Dirs).toContain(fixture.componentInstance.myDir3Instance!); }); + + it('should not throw if it cannot find LContext', () => { + let result: any; + + expect(() => { + result = getDirectives(document.createElement('div')); + }).not.toThrow(); + + expect(result).toEqual([]); + }); }); describe('getInjector', () => { diff --git a/packages/core/test/acceptance/i18n_spec.ts b/packages/core/test/acceptance/i18n_spec.ts index cc7fb156ce..e7d53802f7 100644 --- a/packages/core/test/acceptance/i18n_spec.ts +++ b/packages/core/test/acceptance/i18n_spec.ts @@ -652,12 +652,15 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => { const lViewDebug = lView.debug!; fixture.detectChanges(); expect((fixture.nativeElement as Element).textContent).toEqual('just now'); - expect(lViewDebug.nodes.map(toTypeContent)).toEqual(['IcuContainer()']); + expect(lViewDebug.nodes.map(toTypeContent)).toEqual([ + `IcuContainer()` + ]); // We want to ensure that the ICU container does not have any content! // This is because the content is instance dependent and therefore can't be shared // across `TNode`s. expect(lViewDebug.nodes[0].children.map(toTypeContent)).toEqual([]); - expect(fixture.nativeElement.innerHTML).toEqual('just now'); + expect(fixture.nativeElement.innerHTML) + .toEqual(`just now`); }); it('should support multiple ICUs', () => { @@ -674,15 +677,16 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => { `); const lView = getComponentLView(fixture.componentInstance); expect(lView.debug!.nodes.map(toTypeContent)).toEqual([ - 'IcuContainer()', - 'IcuContainer()', + `IcuContainer()`, + `IcuContainer()`, ]); // We want to ensure that the ICU container does not have any content! // This is because the content is instance dependent and therefore can't be shared // across `TNode`s. expect(lView.debug!.nodes[0].children.map(toTypeContent)).toEqual([]); expect(fixture.nativeElement.innerHTML) - .toEqual('just nowMr. Angular'); + .toEqual(`just nowMr. Angular`); }); }); }); @@ -778,19 +782,21 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => { other {({{name}})} }
`); expect(fixture.nativeElement.innerHTML) - .toEqual(`
aucun email! - (Angular)
`); + .toEqual(`
aucun email! - (Angular)
`); fixture.componentRef.instance.count = 4; fixture.detectChanges(); expect(fixture.nativeElement.innerHTML) - .toEqual( - `
4 emails - (Angular)
`); + .toEqual(`
4 emails - (Angular)
`); fixture.componentRef.instance.count = 0; fixture.componentRef.instance.name = 'John'; fixture.detectChanges(); expect(fixture.nativeElement.innerHTML) - .toEqual(`
aucun email! - (John)
`); + .toEqual(`
aucun email! - (John)
`); }); it('with custom interpolation config', () => { @@ -829,9 +835,9 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => { expect(fixture.nativeElement.innerHTML) .toEqual( `
` + - `aucun email!` + + `aucun email!` + ` - ` + - `(Angular)` + + `(Angular)` + `
`); fixture.componentRef.instance.count = 4; @@ -839,9 +845,10 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => { expect(fixture.nativeElement.innerHTML) .toEqual( `
` + - `4 emails` + + `4 emails` + ` - ` + - `(Angular)` + + `(Angular)` + `
`); fixture.componentRef.instance.count = 0; @@ -850,9 +857,9 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => { expect(fixture.nativeElement.innerHTML) .toEqual( `
` + - `aucun email!` + + `aucun email!` + ` - ` + - `(John)` + + `(John)` + `
`); }); @@ -867,7 +874,7 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => { other {({{name}})} }
`); expect(fixture.nativeElement.innerHTML) - .toEqual(`
(Angular)
`); @@ -887,7 +894,7 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => { other {({{name}})} }`); expect(fixture.nativeElement.innerHTML) - .toEqual(`(Angular)`); + .toEqual(`(Angular)`); }); it('inside ', () => { @@ -922,12 +929,13 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => { other {animals} }!} }
`); - expect(fixture.nativeElement.innerHTML).toEqual(`
zero
`); + expect(fixture.nativeElement.innerHTML) + .toEqual(`
zero
`); fixture.componentRef.instance.count = 4; fixture.detectChanges(); expect(fixture.nativeElement.innerHTML) - .toEqual(`
4 animaux!
`); + .toEqual(`
4 animaux!
`); }); it('nested with interpolations in "other" blocks', () => { @@ -947,16 +955,18 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => { }!} other {other - {{count}}} }
`); - expect(fixture.nativeElement.innerHTML).toEqual(`
zero
`); + expect(fixture.nativeElement.innerHTML) + .toEqual(`
zero
`); fixture.componentRef.instance.count = 2; fixture.detectChanges(); expect(fixture.nativeElement.innerHTML) - .toEqual(`
2 animaux!
`); + .toEqual(`
2 animaux!
`); fixture.componentRef.instance.count = 4; fixture.detectChanges(); - expect(fixture.nativeElement.innerHTML).toEqual(`
autre - 4
`); + expect(fixture.nativeElement.innerHTML) + .toEqual(`
autre - 4
`); }); it('should return the correct plural form for ICU expressions when using "ro" locale', () => { @@ -989,31 +999,34 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => { =other {lots of emails} }`); - expect(fixture.nativeElement.innerHTML).toEqual('no email'); + expect(fixture.nativeElement.innerHTML).toEqual(`no email`); // Change detection cycle, no model changes fixture.detectChanges(); - expect(fixture.nativeElement.innerHTML).toEqual('no email'); + expect(fixture.nativeElement.innerHTML).toEqual(`no email`); fixture.componentInstance.count = 3; fixture.detectChanges(); - expect(fixture.nativeElement.innerHTML).toEqual('a few emails'); + expect(fixture.nativeElement.innerHTML) + .toEqual(`a few emails`); fixture.componentInstance.count = 1; fixture.detectChanges(); - expect(fixture.nativeElement.innerHTML).toEqual('one email'); + expect(fixture.nativeElement.innerHTML).toEqual(`one email`); fixture.componentInstance.count = 10; fixture.detectChanges(); - expect(fixture.nativeElement.innerHTML).toEqual('a few emails'); + expect(fixture.nativeElement.innerHTML) + .toEqual(`a few emails`); fixture.componentInstance.count = 20; fixture.detectChanges(); - expect(fixture.nativeElement.innerHTML).toEqual('lots of emails'); + expect(fixture.nativeElement.innerHTML) + .toEqual(`lots of emails`); fixture.componentInstance.count = 0; fixture.detectChanges(); - expect(fixture.nativeElement.innerHTML).toEqual('no email'); + expect(fixture.nativeElement.innerHTML).toEqual(`no email`); }); it(`should return the correct plural form for ICU expressions when using "es" locale`, () => { @@ -1040,31 +1053,34 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => { =other {lots of emails} }`); - expect(fixture.nativeElement.innerHTML).toEqual('no email'); + expect(fixture.nativeElement.innerHTML).toEqual(`no email`); // Change detection cycle, no model changes fixture.detectChanges(); - expect(fixture.nativeElement.innerHTML).toEqual('no email'); + expect(fixture.nativeElement.innerHTML).toEqual(`no email`); fixture.componentInstance.count = 3; fixture.detectChanges(); - expect(fixture.nativeElement.innerHTML).toEqual('lots of emails'); + expect(fixture.nativeElement.innerHTML) + .toEqual(`lots of emails`); fixture.componentInstance.count = 1; fixture.detectChanges(); - expect(fixture.nativeElement.innerHTML).toEqual('one email'); + expect(fixture.nativeElement.innerHTML).toEqual(`one email`); fixture.componentInstance.count = 10; fixture.detectChanges(); - expect(fixture.nativeElement.innerHTML).toEqual('lots of emails'); + expect(fixture.nativeElement.innerHTML) + .toEqual(`lots of emails`); fixture.componentInstance.count = 20; fixture.detectChanges(); - expect(fixture.nativeElement.innerHTML).toEqual('lots of emails'); + expect(fixture.nativeElement.innerHTML) + .toEqual(`lots of emails`); fixture.componentInstance.count = 0; fixture.detectChanges(); - expect(fixture.nativeElement.innerHTML).toEqual('no email'); + expect(fixture.nativeElement.innerHTML).toEqual(`no email`); }); it('projection', () => { @@ -1159,12 +1175,14 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => { const fixture = TestBed.createComponent(App); fixture.detectChanges(); expect(fixture.debugElement.nativeElement.innerHTML) - .toContain('
ONE
'); + .toContain( + `
ONE
`); fixture.componentRef.instance.count = 2; fixture.detectChanges(); expect(fixture.debugElement.nativeElement.innerHTML) - .toContain('
OTHER
'); + .toContain( + `
OTHER
`); // destroy component fixture.componentInstance.condition = false; @@ -1176,7 +1194,8 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => { fixture.componentInstance.count = 1; fixture.detectChanges(); expect(fixture.debugElement.nativeElement.innerHTML) - .toContain('
ONE
'); + .toContain( + `
ONE
`); }); it('with nested ICU expression and inside a container when creating a view via vcr.createEmbeddedView', @@ -1247,13 +1266,14 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => { dir!.attachEmbeddedView(); fixture.detectChanges(); expect(fixture.debugElement.nativeElement.innerHTML) - .toBe( - '
2 animals!
'); + .toBe(`
2 animals!
`); fixture.componentRef.instance.count = 1; fixture.detectChanges(); expect(fixture.debugElement.nativeElement.innerHTML) - .toBe('
ONE
'); + .toBe(`
ONE
`); }); it('with nested containers', () => { @@ -1604,17 +1624,23 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => { }); it('multiple attributes', () => { - loadTranslations({[computeMsgId('hello {$INTERPOLATION}')]: 'bonjour {$INTERPOLATION}'}); + loadTranslations({ + [computeMsgId('hello {$INTERPOLATION} - {$INTERPOLATION_1}')]: + 'bonjour {$INTERPOLATION} - {$INTERPOLATION_1}', + [computeMsgId('bye {$INTERPOLATION} - {$INTERPOLATION_1}')]: + 'au revoir {$INTERPOLATION} - {$INTERPOLATION_1}', + }); const fixture = initWithTemplate( AppComp, - ``); + ``); expect(fixture.nativeElement.innerHTML) - .toEqual(``); + .toEqual(``); fixture.componentRef.instance.name = 'John'; + fixture.componentRef.instance.count = 5; fixture.detectChanges(); expect(fixture.nativeElement.innerHTML) - .toEqual(``); + .toEqual(``); }); it('on removed elements', () => { @@ -2356,14 +2382,14 @@ onlyInIvy('Ivy i18n logic').describe('runtime i18n', () => { const fixture = TestBed.createComponent(Parent); fixture.detectChanges(); expect(fixture.nativeElement.innerHTML) - .toEqual( - `
Contenu enfant et projection depuis Parent
`); + .toEqual(`
Contenu enfant et projection depuis Parent
`); fixture.componentRef.instance.name = 'angular'; fixture.detectChanges(); expect(fixture.nativeElement.innerHTML) - .toEqual( - `
Contenu enfant et projection depuis Angular
`); + .toEqual(`
Contenu enfant et projection depuis Angular
`); }); it(`shouldn't project deleted projections in i18n blocks`, () => { diff --git a/packages/core/test/acceptance/inherit_definition_feature_spec.ts b/packages/core/test/acceptance/inherit_definition_feature_spec.ts index 876fc4c23f..4d569eae5d 100644 --- a/packages/core/test/acceptance/inherit_definition_feature_spec.ts +++ b/packages/core/test/acceptance/inherit_definition_feature_spec.ts @@ -321,7 +321,7 @@ describe('inheritance', () => { } abstract class UndecoratedBase extends Base { - abstract input: any; + abstract override input: any; ngOnChanges() { changes++; } @@ -329,7 +329,7 @@ describe('inheritance', () => { @Component({selector: 'my-comp', template: ''}) class MyComp extends UndecoratedBase { - @Input() input: any; + @Input() override input: any; } @Component({template: ''}) @@ -383,7 +383,7 @@ describe('inheritance', () => { selector: '[subDir]', }) class SubDirective extends SuperDirective { - ngOnInit() { + override ngOnInit() { fired.push('sub init'); } } @@ -424,7 +424,7 @@ describe('inheritance', () => { selector: '[subDir]', }) class SubDirective extends SuperDirective { - ngDoCheck() { + override ngDoCheck() { fired.push('sub do check'); } } @@ -465,7 +465,7 @@ describe('inheritance', () => { selector: '[subDir]', }) class SubDirective extends SuperDirective { - ngAfterContentInit() { + override ngAfterContentInit() { fired.push('sub after content init'); } } @@ -506,7 +506,7 @@ describe('inheritance', () => { selector: '[subDir]', }) class SubDirective extends SuperDirective { - ngAfterContentChecked() { + override ngAfterContentChecked() { fired.push('sub after content checked'); } } @@ -547,7 +547,7 @@ describe('inheritance', () => { selector: '[subDir]', }) class SubDirective extends SuperDirective { - ngAfterViewInit() { + override ngAfterViewInit() { fired.push('sub after view init'); } } @@ -588,7 +588,7 @@ describe('inheritance', () => { selector: '[subDir]', }) class SubDirective extends SuperDirective { - ngAfterViewChecked() { + override ngAfterViewChecked() { fired.push('sub after view checked'); } } @@ -629,7 +629,7 @@ describe('inheritance', () => { selector: '[subDir]', }) class SubDirective extends SuperDirective { - ngOnDestroy() { + override ngOnDestroy() { fired.push('sub destroy'); } } @@ -684,7 +684,7 @@ describe('inheritance', () => { selector: '[sub-dir]', }) class SubDirective extends SuperDirective { - @Input() baz = ''; + @Input() override baz = ''; @Input() qux = ''; } @@ -943,7 +943,7 @@ describe('inheritance', () => { selector: '[subDir]', }) class SubDirective extends SuperDirective { - ngOnInit() { + override ngOnInit() { fired.push('sub init'); } } @@ -984,7 +984,7 @@ describe('inheritance', () => { selector: '[subDir]', }) class SubDirective extends SuperDirective { - ngDoCheck() { + override ngDoCheck() { fired.push('sub do check'); } } @@ -1025,7 +1025,7 @@ describe('inheritance', () => { selector: '[subDir]', }) class SubDirective extends SuperDirective { - ngAfterContentInit() { + override ngAfterContentInit() { fired.push('sub after content init'); } } @@ -1066,7 +1066,7 @@ describe('inheritance', () => { selector: '[subDir]', }) class SubDirective extends SuperDirective { - ngAfterContentChecked() { + override ngAfterContentChecked() { fired.push('sub after content checked'); } } @@ -1107,7 +1107,7 @@ describe('inheritance', () => { selector: '[subDir]', }) class SubDirective extends SuperDirective { - ngAfterViewInit() { + override ngAfterViewInit() { fired.push('sub after view init'); } } @@ -1148,7 +1148,7 @@ describe('inheritance', () => { selector: '[subDir]', }) class SubDirective extends SuperDirective { - ngAfterViewChecked() { + override ngAfterViewChecked() { fired.push('sub after view checked'); } } @@ -1189,7 +1189,7 @@ describe('inheritance', () => { selector: '[subDir]', }) class SubDirective extends SuperDirective { - ngOnDestroy() { + override ngOnDestroy() { fired.push('sub destroy'); } } @@ -1245,7 +1245,7 @@ describe('inheritance', () => { selector: '[sub-dir]', }) class SubDirective extends SuperDirective { - @Input() baz = ''; + @Input() override baz = ''; @Input() qux = ''; } @@ -1513,7 +1513,7 @@ describe('inheritance', () => { selector: '[subDir]', }) class SubDirective extends SuperDirective { - ngOnInit() { + override ngOnInit() { fired.push('sub init'); } } @@ -1554,7 +1554,7 @@ describe('inheritance', () => { selector: '[subDir]', }) class SubDirective extends SuperDirective { - ngDoCheck() { + override ngDoCheck() { fired.push('sub do check'); } } @@ -1595,7 +1595,7 @@ describe('inheritance', () => { selector: '[subDir]', }) class SubDirective extends SuperDirective { - ngAfterContentInit() { + override ngAfterContentInit() { fired.push('sub after content init'); } } @@ -1636,7 +1636,7 @@ describe('inheritance', () => { selector: '[subDir]', }) class SubDirective extends SuperDirective { - ngAfterContentChecked() { + override ngAfterContentChecked() { fired.push('sub after content checked'); } } @@ -1677,7 +1677,7 @@ describe('inheritance', () => { selector: '[subDir]', }) class SubDirective extends SuperDirective { - ngAfterViewInit() { + override ngAfterViewInit() { fired.push('sub after view init'); } } @@ -1718,7 +1718,7 @@ describe('inheritance', () => { selector: '[subDir]', }) class SubDirective extends SuperDirective { - ngAfterViewChecked() { + override ngAfterViewChecked() { fired.push('sub after view checked'); } } @@ -1759,7 +1759,7 @@ describe('inheritance', () => { selector: '[subDir]', }) class SubDirective extends SuperDirective { - ngOnDestroy() { + override ngOnDestroy() { fired.push('sub destroy'); } } @@ -1817,7 +1817,7 @@ describe('inheritance', () => { selector: '[sub-dir]', }) class SubDirective extends SuperDirective { - @Input() baz = ''; + @Input() override baz = ''; @Input() qux = ''; } @@ -2118,7 +2118,7 @@ describe('inheritance', () => { it('ngOnInit', () => { @Component({selector: 'my-comp', template: `

test

`}) class MyComponent extends SuperComponent { - ngOnInit() { + override ngOnInit() { fired.push('sub init'); } } @@ -2159,7 +2159,7 @@ describe('inheritance', () => { selector: 'my-comp', }) class MyComponent extends SuperComponent { - ngDoCheck() { + override ngDoCheck() { fired.push('sub do check'); } } @@ -2201,7 +2201,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperComponent { - ngAfterContentInit() { + override ngAfterContentInit() { fired.push('sub after content init'); } } @@ -2243,7 +2243,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperComponent { - ngAfterContentChecked() { + override ngAfterContentChecked() { fired.push('sub after content checked'); } } @@ -2285,7 +2285,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperComponent { - ngAfterViewInit() { + override ngAfterViewInit() { fired.push('sub after view init'); } } @@ -2327,7 +2327,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperComponent { - ngAfterViewChecked() { + override ngAfterViewChecked() { fired.push('sub after view checked'); } } @@ -2369,7 +2369,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperComponent { - ngOnDestroy() { + override ngOnDestroy() { fired.push('sub destroy'); } } @@ -2422,7 +2422,7 @@ describe('inheritance', () => { @Component({selector: 'my-comp', template: `

test

`}) class MyComponent extends SuperComponent { - @Input() baz = ''; + @Input() override baz = ''; @Input() qux = ''; } @@ -2675,7 +2675,7 @@ describe('inheritance', () => { it('ngOnInit', () => { @Component({selector: 'my-comp', template: `

test

`}) class MyComponent extends SuperDirective { - ngOnInit() { + override ngOnInit() { fired.push('sub init'); } } @@ -2717,7 +2717,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperDirective { - ngDoCheck() { + override ngDoCheck() { fired.push('sub do check'); } } @@ -2759,7 +2759,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperDirective { - ngAfterContentInit() { + override ngAfterContentInit() { fired.push('sub after content init'); } } @@ -2801,7 +2801,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperDirective { - ngAfterContentChecked() { + override ngAfterContentChecked() { fired.push('sub after content checked'); } } @@ -2843,7 +2843,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperDirective { - ngAfterViewInit() { + override ngAfterViewInit() { fired.push('sub after view init'); } } @@ -2885,7 +2885,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperDirective { - ngAfterViewChecked() { + override ngAfterViewChecked() { fired.push('sub after view checked'); } } @@ -2927,7 +2927,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperDirective { - ngOnDestroy() { + override ngOnDestroy() { fired.push('sub destroy'); } } @@ -2983,7 +2983,7 @@ describe('inheritance', () => { @Component({selector: 'my-comp', template: `

test

`}) class MyComponent extends SuperDirective { - @Input() baz = ''; + @Input() override baz = ''; @Input() qux = ''; } @@ -3296,7 +3296,7 @@ describe('inheritance', () => { it('ngOnInit', () => { @Component({selector: 'my-comp', template: `

test

`}) class MyComponent extends BareClass { - ngOnInit() { + override ngOnInit() { fired.push('sub init'); } } @@ -3337,7 +3337,7 @@ describe('inheritance', () => { selector: 'my-comp', }) class MyComponent extends BareClass { - ngDoCheck() { + override ngDoCheck() { fired.push('sub do check'); } } @@ -3379,7 +3379,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends BareClass { - ngAfterContentInit() { + override ngAfterContentInit() { fired.push('sub after content init'); } } @@ -3421,7 +3421,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends BareClass { - ngAfterContentChecked() { + override ngAfterContentChecked() { fired.push('sub after content checked'); } } @@ -3463,7 +3463,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends BareClass { - ngAfterViewInit() { + override ngAfterViewInit() { fired.push('sub after view init'); } } @@ -3505,7 +3505,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends BareClass { - ngAfterViewChecked() { + override ngAfterViewChecked() { fired.push('sub after view checked'); } } @@ -3547,7 +3547,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends BareClass { - ngOnDestroy() { + override ngOnDestroy() { fired.push('sub destroy'); } } @@ -3605,7 +3605,7 @@ describe('inheritance', () => { @Component({selector: 'my-comp', template: `

test

`}) class MyComponent extends BareClass { - @Input() baz = ''; + @Input() override baz = ''; @Input() qux = ''; } @@ -3941,7 +3941,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperComponent { - ngOnInit() { + override ngOnInit() { fired.push('sub init'); } } @@ -3983,7 +3983,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperComponent { - ngDoCheck() { + override ngDoCheck() { fired.push('sub do check'); } } @@ -4025,7 +4025,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperComponent { - ngAfterContentInit() { + override ngAfterContentInit() { fired.push('sub after content init'); } } @@ -4067,7 +4067,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperComponent { - ngAfterContentChecked() { + override ngAfterContentChecked() { fired.push('sub after content checked'); } } @@ -4109,7 +4109,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperComponent { - ngAfterViewInit() { + override ngAfterViewInit() { fired.push('sub after view init'); } } @@ -4151,7 +4151,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperComponent { - ngAfterViewChecked() { + override ngAfterViewChecked() { fired.push('sub after view checked'); } } @@ -4193,7 +4193,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperComponent { - ngOnDestroy() { + override ngOnDestroy() { fired.push('sub destroy'); } } @@ -4250,7 +4250,7 @@ describe('inheritance', () => { @Component({selector: 'my-comp', template: `

test

`}) class MyComponent extends SuperComponent { - @Input() baz = ''; + @Input() override baz = ''; @Input() qux = ''; } @@ -4623,7 +4623,7 @@ describe('inheritance', () => { focused() { } - clicked() { + override clicked() { events.push('ChildComponent.clicked'); } } @@ -4640,7 +4640,7 @@ describe('inheritance', () => { blurred() { } - clicked() { + override clicked() { events.push('GrandChildComponent.clicked'); } } @@ -4741,7 +4741,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperComponent { - ngOnInit() { + override ngOnInit() { fired.push('sub init'); } } @@ -4783,7 +4783,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperComponent { - ngDoCheck() { + override ngDoCheck() { fired.push('sub do check'); } } @@ -4825,7 +4825,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperComponent { - ngAfterContentInit() { + override ngAfterContentInit() { fired.push('sub after content init'); } } @@ -4867,7 +4867,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperComponent { - ngAfterContentChecked() { + override ngAfterContentChecked() { fired.push('sub after content checked'); } } @@ -4909,7 +4909,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperComponent { - ngAfterViewInit() { + override ngAfterViewInit() { fired.push('sub after view init'); } } @@ -4951,7 +4951,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperComponent { - ngAfterViewChecked() { + override ngAfterViewChecked() { fired.push('sub after view checked'); } } @@ -4993,7 +4993,7 @@ describe('inheritance', () => { template: `

test

`, }) class MyComponent extends SuperComponent { - ngOnDestroy() { + override ngOnDestroy() { fired.push('sub destroy'); } } @@ -5052,7 +5052,7 @@ describe('inheritance', () => { @Component({selector: 'my-comp', template: `

test

`}) class MyComponent extends BareClass { - @Input() baz = ''; + @Input() override baz = ''; @Input() qux = ''; } @@ -5182,8 +5182,8 @@ describe('inheritance', () => { ], }) class MyComponent extends IntermediateComponent { - colorExp = 'color'; - opacityExp = 'opacity'; + override colorExp = 'color'; + override opacityExp = 'opacity'; bgExp = 'bg'; } diff --git a/packages/core/test/acceptance/integration_spec.ts b/packages/core/test/acceptance/integration_spec.ts index bc4e911b9e..93bf1405d8 100644 --- a/packages/core/test/acceptance/integration_spec.ts +++ b/packages/core/test/acceptance/integration_spec.ts @@ -1929,6 +1929,151 @@ describe('acceptance integration tests', () => { expect(() => fixture.detectChanges()).toThrowError('this error is expected'); }); + it('should handle nullish coalescing inside templates', () => { + @Component({ + template: ` + + Hello, {{ firstName ?? 'Frodo' }}! + You are a Balrog: {{ falsyValue ?? true }} + + ` + }) + class App { + firstName: string|null = null; + lastName: string|null = null; + lastNameFallback = 'Baggins'; + falsyValue = false; + } + + TestBed.configureTestingModule({declarations: [App]}); + const fixture = TestBed.createComponent(App); + fixture.detectChanges(); + const content = fixture.nativeElement.innerHTML; + + expect(content).toContain('Hello, Frodo!'); + expect(content).toContain('You are a Balrog: false'); + expect(content).toContain(``); + }); + + it('should handle safe keyed reads inside templates', () => { + @Component({ + template: ` + + Hello, {{ knownNames?.[0]?.[1] }}! + You are a Balrog: {{ species?.[0]?.[1]?.[2]?.[3]?.[4]?.[5] || 'unknown' }} + You are an Elf: {{ speciesMap?.[keys?.[0] ?? 'key'] }} + You are an Orc: {{ speciesMap?.['key'] }} + + ` + }) + class App { + unknownNames: string[]|null = null; + knownNames: string[][] = [['Frodo', 'Bilbo']]; + species = null; + keys = null; + speciesMap: Record = {key: 'unknown'}; + } + + TestBed.configureTestingModule({declarations: [App]}); + const fixture = TestBed.createComponent(App); + fixture.detectChanges(); + const content = fixture.nativeElement.innerHTML; + + expect(content).toContain('Hello, Bilbo!'); + expect(content).toContain('You are a Balrog: unknown'); + expect(content).toContain('You are an Elf: unknown'); + expect(content).toContain(``); + }); + + it('should handle nullish coalescing inside host bindings', () => { + const logs: string[] = []; + + @Directive({ + selector: '[some-dir]', + host: { + '[attr.first-name]': `'Hello, ' + (firstName ?? 'Frodo') + '!'`, + '(click)': `logLastName(lastName ?? lastNameFallback ?? 'unknown')` + } + }) + class Dir { + firstName: string|null = null; + lastName: string|null = null; + lastNameFallback = 'Baggins'; + + logLastName(name: string) { + logs.push(name); + } + } + + @Component({template: ``}) + class App { + } + + TestBed.configureTestingModule({declarations: [App, Dir]}); + const fixture = TestBed.createComponent(App); + fixture.detectChanges(); + const button = fixture.nativeElement.querySelector('button'); + button.click(); + fixture.detectChanges(); + + expect(button.getAttribute('first-name')).toBe('Hello, Frodo!'); + expect(logs).toEqual(['Baggins']); + }); + + it('should render SVG nodes placed inside ng-template', () => { + @Component({ + template: ` + + + Hello + + + `, + }) + class MyComp { + condition = true; + } + + TestBed.configureTestingModule({declarations: [MyComp], imports: [CommonModule]}); + const fixture = TestBed.createComponent(MyComp); + fixture.detectChanges(); + + expect(fixture.nativeElement.innerHTML).toContain('Hello'); + }); + + it('should handle shorthand property declarations in templates', () => { + @Directive({selector: '[my-dir]'}) + class Dir { + @Input('my-dir') value: any; + } + + @Component({template: `
`}) + class App { + @ViewChild(Dir) directive!: Dir; + a = 1; + someProp = 3; + } + + TestBed.configureTestingModule({declarations: [App, Dir]}); + const fixture = TestBed.createComponent(App); + fixture.detectChanges(); + + expect(fixture.componentInstance.directive.value).toEqual({a: 1, b: 2, someProp: 3}); + }); + + it('should handle numeric separators in templates', () => { + @Component({template: 'Balance: ${{ 1_000_000 * multiplier }}'}) + class App { + multiplier = 5; + } + + TestBed.configureTestingModule({declarations: [App]}); + const fixture = TestBed.createComponent(App); + fixture.detectChanges(); + + expect(fixture.nativeElement.textContent).toBe('Balance: $5000000'); + }); + describe('tView.firstUpdatePass', () => { function isFirstUpdatePass() { const lView = getLView(); diff --git a/packages/core/test/acceptance/lifecycle_spec.ts b/packages/core/test/acceptance/lifecycle_spec.ts index e322a78aeb..1bd6ccd4e1 100644 --- a/packages/core/test/acceptance/lifecycle_spec.ts +++ b/packages/core/test/acceptance/lifecycle_spec.ts @@ -1253,17 +1253,17 @@ it('should call all hooks in correct order when several directives on same node' @Directive({selector: 'div'}) class DirA extends AllHooks { - @Input('a') id: number = 0; + @Input('a') override id: number = 0; } @Directive({selector: 'div'}) class DirB extends AllHooks { - @Input('b') id: number = 0; + @Input('b') override id: number = 0; } @Directive({selector: 'div'}) class DirC extends AllHooks { - @Input('c') id: number = 0; + @Input('c') override id: number = 0; } @Component({selector: 'app-comp', template: '
'}) diff --git a/packages/core/test/acceptance/listener_spec.ts b/packages/core/test/acceptance/listener_spec.ts index 671a8baf9b..fe574c23e5 100644 --- a/packages/core/test/acceptance/listener_spec.ts +++ b/packages/core/test/acceptance/listener_spec.ts @@ -6,7 +6,8 @@ * found in the LICENSE file at https://angular.io/license */ -import {Component, Directive, ErrorHandler, EventEmitter, HostListener, Input, Output, QueryList, ViewChild, ViewChildren} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {Component, Directive, ErrorHandler, EventEmitter, HostListener, Input, OnInit, Output, QueryList, TemplateRef, ViewChild, ViewChildren, ViewContainerRef} from '@angular/core'; import {TestBed} from '@angular/core/testing'; import {By} from '@angular/platform-browser'; import {onlyInIvy} from '@angular/private/testing'; @@ -154,7 +155,7 @@ describe('event listeners', () => { let noOfErrors = 0; class CountingErrorHandler extends ErrorHandler { - handleError(error: any): void { + override handleError(error: any): void { noOfErrors++; } } @@ -397,6 +398,108 @@ describe('event listeners', () => { expect(comp.counter).toBe(1); }); + onlyInIvy('global event listeners on non-node host elements are supported only in Ivy') + .it('should bind global event listeners on an ng-container directive host', () => { + let clicks = 0; + + @Directive({selector: '[add-global-listener]'}) + class AddGlobalListener { + @HostListener('document:click') + handleClick() { + clicks++; + } + } + + @Component({ + template: ` + + + + ` + }) + class MyComp { + } + + TestBed.configureTestingModule({declarations: [MyComp, AddGlobalListener]}); + const fixture = TestBed.createComponent(MyComp); + fixture.detectChanges(); + const button = fixture.nativeElement.querySelector('button'); + button.click(); + fixture.detectChanges(); + expect(clicks).toBe(1); + }); + + onlyInIvy('global event listeners on non-node host elements are supported only in Ivy') + .it('should bind global event listeners on an ng-template directive host', () => { + let clicks = 0; + + @Directive({selector: '[add-global-listener]'}) + class AddGlobalListener { + @HostListener('document:click') + handleClick() { + clicks++; + } + } + + @Component({ + template: ` + + + + + + ` + }) + class MyComp { + } + + TestBed.configureTestingModule( + {declarations: [MyComp, AddGlobalListener], imports: [CommonModule]}); + const fixture = TestBed.createComponent(MyComp); + fixture.detectChanges(); + const button = fixture.nativeElement.querySelector('button'); + button.click(); + fixture.detectChanges(); + expect(clicks).toBe(1); + }); + + onlyInIvy('global event listeners on non-node host elements are supported only in Ivy') + .it('should bind global event listeners on a structural directive host', () => { + let clicks = 0; + + @Directive({selector: '[add-global-listener]'}) + class AddGlobalListener implements OnInit { + @HostListener('document:click') + handleClick() { + clicks++; + } + + constructor(private _vcr: ViewContainerRef, private _templateRef: TemplateRef) {} + + ngOnInit() { + this._vcr.createEmbeddedView(this._templateRef); + } + } + + @Component({ + template: ` +
+ +
+ ` + }) + class MyComp { + } + + TestBed.configureTestingModule({declarations: [MyComp, AddGlobalListener]}); + const fixture = TestBed.createComponent(MyComp); + fixture.detectChanges(); + const button = fixture.nativeElement.querySelector('button'); + button.click(); + fixture.detectChanges(); + expect(clicks).toBe(1); + }); + onlyInIvy('issue has only been resolved for Ivy') .it('should be able to access a property called $event using `this`', () => { let eventVariable: number|undefined; @@ -425,4 +528,69 @@ describe('event listeners', () => { expect(eventVariable).toBe(10); expect(eventObject?.type).toBe('click'); }); + + it('should be able to use a keyed write on `this` from a listener inside an ng-template', () => { + @Component({ + template: ` + + + + + + ` + }) + class MyComp { + message = ''; + } + + TestBed.configureTestingModule({declarations: [MyComp], imports: [CommonModule]}); + const fixture = TestBed.createComponent(MyComp); + fixture.detectChanges(); + const button = fixture.nativeElement.querySelector('button'); + button.click(); + fixture.detectChanges(); + + expect(fixture.componentInstance.message).toBe('hello'); + }); + + it('should reference the correct context object if it is swapped out', () => { + @Component({ + template: ` + + + + + + ` + }) + class MyComp { + one = {value: 'one'}; + two = {value: 'two'}; + current = this.one; + } + + TestBed.configureTestingModule({declarations: [MyComp], imports: [CommonModule]}); + const fixture = TestBed.createComponent(MyComp); + const instance = fixture.componentInstance; + fixture.detectChanges(); + const button = fixture.nativeElement.querySelector('button'); + + expect(instance.one.value).toBe('one'); + expect(instance.two.value).toBe('two'); + + button.click(); + fixture.detectChanges(); + + expect(instance.one.value).toBe('one!'); + expect(instance.two.value).toBe('two'); + + instance.current = instance.two; + fixture.detectChanges(); + + button.click(); + fixture.detectChanges(); + + expect(instance.one.value).toBe('one!'); + expect(instance.two.value).toBe('two!'); + }); }); diff --git a/packages/core/test/acceptance/ngdevmode_debug_spec.ts b/packages/core/test/acceptance/ngdevmode_debug_spec.ts index ef07bb26ca..64763f7650 100644 --- a/packages/core/test/acceptance/ngdevmode_debug_spec.ts +++ b/packages/core/test/acceptance/ngdevmode_debug_spec.ts @@ -8,8 +8,8 @@ import {CommonModule} from '@angular/common'; import {Component} from '@angular/core'; -import {LView} from '@angular/core/src/render3/interfaces/view'; -import {getComponentLView, loadLContext} from '@angular/core/src/render3/util/discovery_utils'; +import {getLContext} from '@angular/core/src/render3/context_discovery'; +import {getComponentLView} from '@angular/core/src/render3/util/discovery_utils'; import {createNamedArrayType} from '@angular/core/src/util/named_array_type'; import {TestBed} from '@angular/core/testing'; import {onlyInIvy} from '@angular/private/testing'; @@ -32,7 +32,7 @@ onlyInIvy('Debug information exist in ivy only').describe('ngDevMode debug', () TestBed.configureTestingModule({declarations: [MyApp], imports: [CommonModule]}); const fixture = TestBed.createComponent(MyApp); - const rootLView = loadLContext(fixture.nativeElement).lView; + const rootLView = getLContext(fixture.nativeElement)!.lView; expect(rootLView.constructor.name).toEqual('LRootView'); const componentLView = getComponentLView(fixture.componentInstance); @@ -41,7 +41,7 @@ onlyInIvy('Debug information exist in ivy only').describe('ngDevMode debug', () const element: HTMLElement = fixture.nativeElement; fixture.detectChanges(); const li = element.querySelector('li')!; - const embeddedLView = loadLContext(li).lView; + const embeddedLView = getLContext(li)!.lView; expect(embeddedLView.constructor.name).toEqual('LEmbeddedView_MyApp_li_1'); }); }); diff --git a/packages/core/test/acceptance/profiler_spec.ts b/packages/core/test/acceptance/profiler_spec.ts index bec91977d4..1c07528cb5 100644 --- a/packages/core/test/acceptance/profiler_spec.ts +++ b/packages/core/test/acceptance/profiler_spec.ts @@ -8,10 +8,9 @@ import {ProfilerEvent, setProfiler} from '@angular/core/src/render3/profiler'; import {TestBed} from '@angular/core/testing'; -import {expect} from '@angular/core/testing/src/testing_internal'; import {onlyInIvy} from '@angular/private/testing'; -import {AfterContentChecked, AfterContentInit, AfterViewChecked, AfterViewInit, Component, DoCheck, ErrorHandler, EventEmitter, Input, OnChanges, OnInit, Output, ViewChild} from '../../src/core'; +import {AfterContentChecked, AfterContentInit, AfterViewChecked, AfterViewInit, Component, DoCheck, ErrorHandler, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, ViewChild} from '../../src/core'; onlyInIvy('Ivy-specific functionality').describe('profiler', () => { @@ -187,13 +186,19 @@ onlyInIvy('Ivy-specific functionality').describe('profiler', () => { describe('lifecycle hooks', () => { it('should call the profiler on lifecycle execution', () => { - @Component({selector: 'my-comp', template: '{{prop}}'}) + class Service implements OnDestroy { + ngOnDestroy() {} + } + @Component({selector: 'my-comp', template: '{{prop}}', providers: [Service]}) class MyComponent implements OnInit, AfterViewInit, AfterViewChecked, AfterContentInit, - AfterContentChecked, OnChanges, DoCheck { + AfterContentChecked, OnChanges, DoCheck, OnDestroy { @Input() prop = 1; + constructor(private service: Service) {} + ngOnInit() {} ngDoCheck() {} + ngOnDestroy() {} ngOnChanges() {} ngAfterViewInit() {} ngAfterViewChecked() {} @@ -293,6 +298,27 @@ onlyInIvy('Ivy-specific functionality').describe('profiler', () => { expect(onChangesSpy).toHaveBeenCalled(); expect(ngOnChangesStart).toBeTruthy(); expect(ngOnChangesEnd).toBeTruthy(); + + fixture.destroy(); + const ngOnDestroyStart = findProfilerCall( + (args: any[]) => + args[0] === ProfilerEvent.LifecycleHookStart && args[2] === myComp.ngOnDestroy); + const ngOnDestroyEnd = findProfilerCall( + (args: any[]) => + args[0] === ProfilerEvent.LifecycleHookEnd && args[2] === myComp.ngOnDestroy); + + expect(ngOnDestroyStart).toBeTruthy(); + expect(ngOnDestroyEnd).toBeTruthy(); + + const serviceNgOnDestroyStart = findProfilerCall( + (args: any[]) => args[0] === ProfilerEvent.LifecycleHookStart && + args[2] === Service.prototype.ngOnDestroy); + const serviceNgOnDestroyEnd = findProfilerCall( + (args: any[]) => args[0] === ProfilerEvent.LifecycleHookEnd && + args[2] === Service.prototype.ngOnDestroy); + + expect(serviceNgOnDestroyStart).toBeTruthy(); + expect(serviceNgOnDestroyEnd).toBeTruthy(); }); }); diff --git a/packages/core/test/acceptance/property_binding_spec.ts b/packages/core/test/acceptance/property_binding_spec.ts index fdf7ca9a4b..3a5b9645a3 100644 --- a/packages/core/test/acceptance/property_binding_spec.ts +++ b/packages/core/test/acceptance/property_binding_spec.ts @@ -187,7 +187,7 @@ describe('property bindings', () => { }) class OtherDir { @Input() id: number|undefined; - @Output('click') clickStream = new EventEmitter(); + @Output('click') clickStream = new EventEmitter(); } @Directive({ diff --git a/packages/core/test/acceptance/providers_spec.ts b/packages/core/test/acceptance/providers_spec.ts index ec0be8cf2e..b2f0f043cc 100644 --- a/packages/core/test/acceptance/providers_spec.ts +++ b/packages/core/test/acceptance/providers_spec.ts @@ -657,8 +657,10 @@ describe('providers', () => { constructor(public foo: SomeProvider) {} } - TestBed.configureTestingModule( - {declarations: [App], providers: [{provide: SomeProvider, useClass: SomeProviderImpl}]}); + // We don't configure the `SomeProvider` in the TestingModule so that it uses the + // tree-shakable provider given in the `@Injectable` decorator above, which makes use of the + // `forwardRef()`. + TestBed.configureTestingModule({declarations: [App]}); const fixture = TestBed.createComponent(App); fixture.detectChanges(); diff --git a/packages/core/test/acceptance/security_spec.ts b/packages/core/test/acceptance/security_spec.ts index afc8b9ccd4..28a26c2946 100644 --- a/packages/core/test/acceptance/security_spec.ts +++ b/packages/core/test/acceptance/security_spec.ts @@ -40,4 +40,4 @@ describe('comment node text escaping', () => { expect(script).toBeFalsy(); }); }); -}); \ No newline at end of file +}); diff --git a/packages/core/test/acceptance/view_container_ref_spec.ts b/packages/core/test/acceptance/view_container_ref_spec.ts index bc97b91aa2..16b1940b6b 100644 --- a/packages/core/test/acceptance/view_container_ref_spec.ts +++ b/packages/core/test/acceptance/view_container_ref_spec.ts @@ -2278,6 +2278,11 @@ describe('ViewContainerRef', () => { containerEl = document.createElement('div'); document.body.appendChild(containerEl); containerEl!.appendChild(rootEl); + }, + removeAllRootElements() { + if (containerEl) { + containerEl.parentNode?.removeChild(containerEl); + } } }; } diff --git a/packages/core/test/acceptance/view_insertion_spec.ts b/packages/core/test/acceptance/view_insertion_spec.ts index 5d20dc20f8..72a424c9d2 100644 --- a/packages/core/test/acceptance/view_insertion_spec.ts +++ b/packages/core/test/acceptance/view_insertion_spec.ts @@ -7,7 +7,7 @@ */ import {CommonModule} from '@angular/common'; -import {ChangeDetectorRef, Component, ComponentFactoryResolver, Directive, EmbeddedViewRef, Injector, Input, NgModule, TemplateRef, ViewChild, ViewContainerRef, ViewRef} from '@angular/core'; +import {ChangeDetectorRef, Component, ComponentFactoryResolver, Directive, EmbeddedViewRef, Injectable, Injector, Input, NgModule, TemplateRef, ViewChild, ViewContainerRef, ViewRef} from '@angular/core'; import {TestBed} from '@angular/core/testing'; import {By} from '@angular/platform-browser'; import {onlyInIvy} from '@angular/private/testing'; @@ -886,5 +886,46 @@ describe('view insertion', () => { fixture.detectChanges(); expect(fixture.nativeElement.textContent).toContain('2'); }); + + it('should consistently report errors raised by createEmbeddedView', () => { + // Intentionally hasn't been added to `providers` so that it throws a DI error. + @Injectable() + class DoesNotExist { + } + + @Directive({selector: 'dir'}) + class Dir { + constructor(willCauseError: DoesNotExist) {} + } + + @Component({ + template: ` + + + + `, + }) + class App { + @ViewChild('broken') template !: TemplateRef; + + constructor(private _viewContainerRef: ViewContainerRef) {} + + insertTemplate() { + this._viewContainerRef.createEmbeddedView(this.template); + } + } + + TestBed.configureTestingModule({declarations: [App, Dir]}); + const fixture = TestBed.createComponent(App); + const tryRender = () => { + fixture.componentInstance.insertTemplate(); + fixture.detectChanges(); + }; + fixture.detectChanges(); + + // We try to render the same template twice to ensure that we get consistent error messages. + expect(tryRender).toThrowError(/No provider for DoesNotExist/); + expect(tryRender).toThrowError(/No provider for DoesNotExist/); + }); }); }); diff --git a/packages/core/test/animation/animation_query_integration_spec.ts b/packages/core/test/animation/animation_query_integration_spec.ts index 527fb0f58f..ee403ec1da 100644 --- a/packages/core/test/animation/animation_query_integration_spec.ts +++ b/packages/core/test/animation/animation_query_integration_spec.ts @@ -2374,6 +2374,91 @@ describe('animation query tests', function() { ]); }); + it(`should emulate a leave animation on a nested sub component's inner elements when a parent leave animation occurs with animateChild`, + () => { + @Component({ + selector: 'ani-cmp', + template: ` +
+ +
+ `, + animations: [ + trigger( + 'myAnimation', + [ + transition( + ':leave', + [ + query('@*', animateChild()), + ]), + ]), + ] + }) + class ParentCmp { + public exp: boolean = true; + } + + @Component({ + selector: 'child-cmp', + template: ` + + ` + }) + class ChildCmp { + } + + @Component({ + selector: 'nested-child-cmp', + template: ` +
+
+
+ `, + animations: [ + trigger( + 'myChildAnimation', + [ + transition( + ':leave', + [ + style({opacity: 0}), + animate('1s', style({opacity: 1})), + ]), + ]), + ] + }) + class NestedChildCmp { + } + + TestBed.configureTestingModule({declarations: [ParentCmp, ChildCmp, NestedChildCmp]}); + + const engine = TestBed.inject(ɵAnimationEngine); + const fixture = TestBed.createComponent(ParentCmp); + const cmp = fixture.componentInstance; + + cmp.exp = true; + fixture.detectChanges(); + + cmp.exp = false; + fixture.detectChanges(); + + // Inspect the players of the AnimationEngine and not those from getLog. The latter only + // returns the actual animation players, which the parent leave animation is not part + // of given that it does not have animation instructions of its own. + const players = engine.players; + expect(players.length).toEqual(1); + const player = players[0] as TransitionAnimationPlayer; + const realPlayer = player.getRealPlayer() as MockAnimationPlayer; + + expect(player.element.classList.contains('parent')).toBeTruthy(); + expect(realPlayer.element.classList.contains('inner-div')).toBeTruthy(); + expect(realPlayer.keyframes).toEqual([ + {opacity: '0', offset: 0}, + {opacity: '1', offset: 1}, + ]); + }); + it('should not cause a removal of inner @trigger DOM nodes when a parent animation occurs', fakeAsync(() => { @Component({ diff --git a/packages/core/test/animation/animations_with_web_animations_integration_spec.ts b/packages/core/test/animation/animations_with_web_animations_integration_spec.ts index 5d3495973d..a4f1f52665 100644 --- a/packages/core/test/animation/animations_with_web_animations_integration_spec.ts +++ b/packages/core/test/animation/animations_with_web_animations_integration_spec.ts @@ -512,6 +512,48 @@ describe('animation integration tests using web animations', function() { expect(elm.style.getPropertyValue('display')).toEqual('inline-block'); expect(elm.style.getPropertyValue('position')).toEqual('fixed'); }); + + it('should set normalized style property values on animation end', () => { + @Component({ + selector: 'ani-cmp', + template: ` +
+ `, + animations: [ + trigger( + 'myAnimation', + [ + state('go', style({width: 300, 'font-size': 14})), + transition('* => go', [animate('1s')]) + ]), + ] + }) + class Cmp { + @ViewChild('elm', {static: true}) public element: any; + + public myAnimationExp = ''; + } + + TestBed.configureTestingModule({declarations: [Cmp]}); + + const engine = TestBed.inject(ɵAnimationEngine); + const fixture = TestBed.createComponent(Cmp); + const cmp = fixture.componentInstance; + + const elm = cmp.element.nativeElement; + expect(elm.style.getPropertyValue('width')).toEqual('100%'); + expect(elm.style.getPropertyValue('font-size')).toEqual('2rem'); + + cmp.myAnimationExp = 'go'; + fixture.detectChanges(); + + const player = engine.players.pop()!; + player.finish(); + player.destroy(); + + expect(elm.style.getPropertyValue('width')).toEqual('300px'); + expect(elm.style.getPropertyValue('font-size')).toEqual('14px'); + }); }); })(); diff --git a/packages/core/test/application_module_spec.ts b/packages/core/test/application_module_spec.ts index a802cb6aed..d4bf51945a 100644 --- a/packages/core/test/application_module_spec.ts +++ b/packages/core/test/application_module_spec.ts @@ -7,12 +7,12 @@ */ import {DEFAULT_CURRENCY_CODE, LOCALE_ID} from '@angular/core'; +import {inject} from '@angular/core/testing'; import {ivyEnabled} from '@angular/private/testing'; import {getLocaleId} from '../src/render3'; import {global} from '../src/util/global'; import {TestBed} from '../testing'; -import {describe, expect, inject, it} from '../testing/src/testing_internal'; { describe('Application module', () => { diff --git a/packages/core/test/bundling/forms_reactive/BUILD.bazel b/packages/core/test/bundling/forms_reactive/BUILD.bazel deleted file mode 100644 index cd49c7e669..0000000000 --- a/packages/core/test/bundling/forms_reactive/BUILD.bazel +++ /dev/null @@ -1,85 +0,0 @@ -package(default_visibility = ["//visibility:public"]) - -load("//tools:defaults.bzl", "jasmine_node_test", "ng_module", "ng_rollup_bundle", "ts_library") -load("//tools/symbol-extractor:index.bzl", "js_expected_symbol_test") -load("@npm//http-server:index.bzl", "http_server") - -ng_module( - name = "forms_reactive", - srcs = ["index.ts"], - tags = [ - "ivy-only", - ], - deps = [ - "//packages/core", - "//packages/forms", - "//packages/platform-browser", - ], -) - -ng_rollup_bundle( - name = "bundle", - entry_point = ":index.ts", - tags = [ - "ivy-only", - ], - deps = [ - ":forms_reactive", - "//packages/core", - "//packages/forms", - "//packages/platform-browser", - "@npm//rxjs", - ], -) - -ts_library( - name = "test_lib", - testonly = True, - srcs = glob(["*_spec.ts"]), - tags = [ - "ivy-only", - ], - deps = [ - "//packages:types", - "//packages/compiler", - "//packages/core", - "//packages/core/testing", - "//packages/private/testing", - ], -) - -jasmine_node_test( - name = "test", - data = [ - ":bundle.js", - ":bundle.min.js", - ":bundle.min.js.br", - ":bundle.min_debug.js", - ], - tags = [ - "ivy-only", - ], - deps = [":test_lib"], -) - -js_expected_symbol_test( - name = "symbol_test", - src = ":bundle.min_debug.js", - golden = ":bundle.golden_symbols.json", - tags = [ - "ivy-aot", - "ivy-only", - ], -) - -http_server( - name = "prodserver", - data = [ - "index.html", - ":bundle.min.js", - ":bundle.min_debug.js", - ], - tags = [ - "ivy-only", - ], -) diff --git a/packages/core/test/bundling/forms_reactive/bundle.golden_symbols.json b/packages/core/test/bundling/forms_reactive/bundle.golden_symbols.json deleted file mode 100644 index 25a9a2ee4e..0000000000 --- a/packages/core/test/bundling/forms_reactive/bundle.golden_symbols.json +++ /dev/null @@ -1,1649 +0,0 @@ -[ - { - "name": "ALLOW_MULTIPLE_PLATFORMS" - }, - { - "name": "APPLICATION_MODULE_PROVIDERS" - }, - { - "name": "APP_BOOTSTRAP_LISTENER" - }, - { - "name": "APP_ID" - }, - { - "name": "APP_ID_RANDOM_PROVIDER" - }, - { - "name": "APP_INITIALIZER" - }, - { - "name": "AbstractControl" - }, - { - "name": "AbstractControlDirective" - }, - { - "name": "AbstractControlStatus" - }, - { - "name": "AbstractFormGroupDirective" - }, - { - "name": "AnonymousSubject" - }, - { - "name": "ApplicationInitStatus" - }, - { - "name": "ApplicationModule" - }, - { - "name": "ApplicationRef" - }, - { - "name": "BROWSER_MODULE_PROVIDERS" - }, - { - "name": "BrowserDomAdapter" - }, - { - "name": "BrowserGetTestability" - }, - { - "name": "BrowserModule" - }, - { - "name": "BrowserXhr" - }, - { - "name": "BuiltInControlValueAccessor" - }, - { - "name": "CHECKBOX_VALUE_ACCESSOR" - }, - { - "name": "CIRCULAR" - }, - { - "name": "CLEAN_PROMISE" - }, - { - "name": "COMPONENT_REGEX" - }, - { - "name": "COMPOSITION_BUFFER_MODE" - }, - { - "name": "ChangeDetectionStrategy" - }, - { - "name": "CheckboxControlValueAccessor" - }, - { - "name": "CommonModule" - }, - { - "name": "Compiler" - }, - { - "name": "Compiler_compileModuleAndAllComponentsAsync" - }, - { - "name": "Compiler_compileModuleAndAllComponentsSync" - }, - { - "name": "Compiler_compileModuleAndAllComponentsSync__POST_R3__" - }, - { - "name": "Compiler_compileModuleAsync" - }, - { - "name": "Compiler_compileModuleSync" - }, - { - "name": "Compiler_compileModuleSync__POST_R3__" - }, - { - "name": "ComponentFactory" - }, - { - "name": "ComponentFactory" - }, - { - "name": "ComponentFactoryResolver" - }, - { - "name": "ComponentFactoryResolver" - }, - { - "name": "ComponentRef" - }, - { - "name": "ConnectableObservable" - }, - { - "name": "ConnectableSubscriber" - }, - { - "name": "Console" - }, - { - "name": "ControlContainer" - }, - { - "name": "DEFAULT_CURRENCY_CODE" - }, - { - "name": "DEFAULT_VALUE_ACCESSOR" - }, - { - "name": "DOCUMENT" - }, - { - "name": "DOCUMENT" - }, - { - "name": "DefaultDomRenderer2" - }, - { - "name": "DefaultIterableDiffer" - }, - { - "name": "DefaultIterableDifferFactory" - }, - { - "name": "DefaultKeyValueDiffer" - }, - { - "name": "DefaultKeyValueDifferFactory" - }, - { - "name": "DefaultValueAccessor" - }, - { - "name": "DomEventsPlugin" - }, - { - "name": "DomRendererFactory2" - }, - { - "name": "DomSharedStylesHost" - }, - { - "name": "EMAIL_REGEXP" - }, - { - "name": "EMPTY_ARRAY" - }, - { - "name": "EMPTY_OBJ" - }, - { - "name": "EMPTY_PAYLOAD" - }, - { - "name": "EVENT_MANAGER_PLUGINS" - }, - { - "name": "ElementRef" - }, - { - "name": "EmulatedEncapsulationDomRenderer2" - }, - { - "name": "ErrorHandler" - }, - { - "name": "EventEmitter" - }, - { - "name": "EventManager" - }, - { - "name": "EventManagerPlugin" - }, - { - "name": "FormArray" - }, - { - "name": "FormArrayName" - }, - { - "name": "FormBuilder" - }, - { - "name": "FormControl" - }, - { - "name": "FormControlName" - }, - { - "name": "FormGroup" - }, - { - "name": "FormGroupDirective" - }, - { - "name": "FormGroupName" - }, - { - "name": "FormsExampleModule" - }, - { - "name": "INJECTOR" - }, - { - "name": "INJECTOR_IMPL" - }, - { - "name": "INJECTOR_SCOPE" - }, - { - "name": "Inject" - }, - { - "name": "InjectFlags" - }, - { - "name": "InjectionToken" - }, - { - "name": "Injector" - }, - { - "name": "InnerSubscriber" - }, - { - "name": "IterableChangeRecord_" - }, - { - "name": "IterableDiffers" - }, - { - "name": "KeyEventsPlugin" - }, - { - "name": "KeyValueChangeRecord_" - }, - { - "name": "KeyValueDiffers" - }, - { - "name": "LOCALE_DATA" - }, - { - "name": "LOCALE_ID" - }, - { - "name": "LOCALE_ID" - }, - { - "name": "LifecycleHooksFeature" - }, - { - "name": "LocaleDataIndex" - }, - { - "name": "MODIFIER_KEYS" - }, - { - "name": "MODIFIER_KEY_GETTERS" - }, - { - "name": "MapOperator" - }, - { - "name": "MapSubscriber" - }, - { - "name": "MergeMapOperator" - }, - { - "name": "MergeMapSubscriber" - }, - { - "name": "ModuleWithComponentFactories" - }, - { - "name": "NAMESPACE_URIS" - }, - { - "name": "NEW_LINE" - }, - { - "name": "NG_ASYNC_VALIDATORS" - }, - { - "name": "NG_COMP_DEF" - }, - { - "name": "NG_DIR_DEF" - }, - { - "name": "NG_ELEMENT_ID" - }, - { - "name": "NG_FACTORY_DEF" - }, - { - "name": "NG_INJECTABLE_DEF" - }, - { - "name": "NG_INJECTOR_DEF" - }, - { - "name": "NG_INJ_DEF" - }, - { - "name": "NG_LOC_ID_DEF" - }, - { - "name": "NG_MODEL_WITH_FORM_CONTROL_WARNING" - }, - { - "name": "NG_MOD_DEF" - }, - { - "name": "NG_PIPE_DEF" - }, - { - "name": "NG_PROV_DEF" - }, - { - "name": "NG_VALIDATORS" - }, - { - "name": "NG_VALUE_ACCESSOR" - }, - { - "name": "NOT_FOUND" - }, - { - "name": "NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR" - }, - { - "name": "NOT_YET" - }, - { - "name": "NO_CHANGE" - }, - { - "name": "NULL_INJECTOR" - }, - { - "name": "NgControl" - }, - { - "name": "NgControlStatus" - }, - { - "name": "NgControlStatusGroup" - }, - { - "name": "NgForOf" - }, - { - "name": "NgForOfContext" - }, - { - "name": "NgLocaleLocalization" - }, - { - "name": "NgLocalization" - }, - { - "name": "NgModuleFactory" - }, - { - "name": "NgModuleRef" - }, - { - "name": "NgModuleRef" - }, - { - "name": "NgOnChangesFeatureImpl" - }, - { - "name": "NgZone" - }, - { - "name": "NodeInjector" - }, - { - "name": "NodeInjectorFactory" - }, - { - "name": "NoopNgZone" - }, - { - "name": "NullInjector" - }, - { - "name": "ObjectUnsubscribedError" - }, - { - "name": "Observable" - }, - { - "name": "Optional" - }, - { - "name": "OuterSubscriber" - }, - { - "name": "PLATFORM_ID" - }, - { - "name": "PLATFORM_INITIALIZER" - }, - { - "name": "PlatformRef" - }, - { - "name": "Plural" - }, - { - "name": "R3Injector" - }, - { - "name": "R3TemplateRef" - }, - { - "name": "R3ViewContainerRef" - }, - { - "name": "RadioControlRegistryModule" - }, - { - "name": "ReactiveFormsComponent" - }, - { - "name": "ReactiveFormsComponent_div_14_Template" - }, - { - "name": "ReactiveFormsModule" - }, - { - "name": "RecordViewTuple" - }, - { - "name": "RefCountOperator" - }, - { - "name": "RefCountSubscriber" - }, - { - "name": "Renderer2" - }, - { - "name": "RendererFactory2" - }, - { - "name": "RendererStyleFlags2" - }, - { - "name": "RootComponent" - }, - { - "name": "RootViewRef" - }, - { - "name": "RuntimeError" - }, - { - "name": "SCHEDULER" - }, - { - "name": "SERVER_TRANSITION_PROVIDERS" - }, - { - "name": "SWITCH_ELEMENT_REF_FACTORY" - }, - { - "name": "SWITCH_RENDERER2_FACTORY" - }, - { - "name": "SWITCH_TEMPLATE_REF_FACTORY" - }, - { - "name": "SWITCH_VIEW_CONTAINER_REF_FACTORY" - }, - { - "name": "SafeSubscriber" - }, - { - "name": "Sanitizer" - }, - { - "name": "ShadowDomRenderer" - }, - { - "name": "SharedStylesHost" - }, - { - "name": "SimpleChange" - }, - { - "name": "SkipSelf" - }, - { - "name": "Subject" - }, - { - "name": "SubjectSubscriber" - }, - { - "name": "SubjectSubscription" - }, - { - "name": "Subscriber" - }, - { - "name": "Subscription" - }, - { - "name": "THROW_IF_NOT_FOUND" - }, - { - "name": "TRANSITION_ID" - }, - { - "name": "TemplateRef" - }, - { - "name": "Testability" - }, - { - "name": "TestabilityRegistry" - }, - { - "name": "USE_VALUE" - }, - { - "name": "UnsubscriptionError" - }, - { - "name": "VERSION" - }, - { - "name": "VE_ViewContainerRef" - }, - { - "name": "Validators" - }, - { - "name": "Version" - }, - { - "name": "ViewContainerRef" - }, - { - "name": "ViewEncapsulation" - }, - { - "name": "ViewEngineTemplateRef" - }, - { - "name": "ViewRef" - }, - { - "name": "_DOM" - }, - { - "name": "_DuplicateItemRecordList" - }, - { - "name": "_DuplicateMap" - }, - { - "name": "_NoopGetTestability" - }, - { - "name": "_NullComponentFactoryResolver" - }, - { - "name": "__extends" - }, - { - "name": "__forward_ref__" - }, - { - "name": "__global" - }, - { - "name": "__globalThis" - }, - { - "name": "__self" - }, - { - "name": "__window" - }, - { - "name": "_chromeNumKeyPadMap" - }, - { - "name": "_currentInjector" - }, - { - "name": "_enable_super_gross_mode_that_will_cause_bad_things" - }, - { - "name": "_global" - }, - { - "name": "_hasInvalidParent" - }, - { - "name": "_keyMap" - }, - { - "name": "_randomChar" - }, - { - "name": "_renderCompCount" - }, - { - "name": "_symbolIterator" - }, - { - "name": "_testabilityGetter" - }, - { - "name": "addComponentLogic" - }, - { - "name": "addToArray" - }, - { - "name": "addToViewTree" - }, - { - "name": "allocExpando" - }, - { - "name": "allocLFrame" - }, - { - "name": "appendChild" - }, - { - "name": "applyNodes" - }, - { - "name": "applyProjectionRecursive" - }, - { - "name": "applyToElementOrContainer" - }, - { - "name": "applyView" - }, - { - "name": "attachInjectFlag" - }, - { - "name": "attachPatchData" - }, - { - "name": "autoRegisterModuleById" - }, - { - "name": "baseElement" - }, - { - "name": "bindingUpdated" - }, - { - "name": "bloomHasToken" - }, - { - "name": "callHook" - }, - { - "name": "callHooks" - }, - { - "name": "checkStable" - }, - { - "name": "classIndexOf" - }, - { - "name": "cleanUpControl" - }, - { - "name": "cleanUpValidators" - }, - { - "name": "cleanUpView" - }, - { - "name": "coerceToAsyncValidator" - }, - { - "name": "coerceToValidator" - }, - { - "name": "collectStylingFromDirectives" - }, - { - "name": "collectStylingFromTAttrs" - }, - { - "name": "compose" - }, - { - "name": "composeAsync" - }, - { - "name": "composeAsyncValidators" - }, - { - "name": "composeValidators" - }, - { - "name": "computeStaticStyling" - }, - { - "name": "concatStringsWithSpace" - }, - { - "name": "config" - }, - { - "name": "configureViewWithDirective" - }, - { - "name": "connectableObservableDescriptor" - }, - { - "name": "controlNameBinding" - }, - { - "name": "controlPath" - }, - { - "name": "createDirectivesInstances" - }, - { - "name": "createElementNode" - }, - { - "name": "createElementRef" - }, - { - "name": "createInjectorWithoutInjectorInstances" - }, - { - "name": "createLContainer" - }, - { - "name": "createLFrame" - }, - { - "name": "createLView" - }, - { - "name": "createNodeInjector" - }, - { - "name": "createPlatformFactory" - }, - { - "name": "createTView" - }, - { - "name": "decoratePreventDefault" - }, - { - "name": "deepForEach" - }, - { - "name": "defaultErrorLogger" - }, - { - "name": "defaultIterableDiffers" - }, - { - "name": "defaultIterableDiffersFactory" - }, - { - "name": "defaultKeyValueDiffers" - }, - { - "name": "defaultKeyValueDiffersFactory" - }, - { - "name": "defaultScheduler" - }, - { - "name": "destroyLView" - }, - { - "name": "detachMovedView" - }, - { - "name": "detachView" - }, - { - "name": "detectChangesInRootView" - }, - { - "name": "detectChangesInternal" - }, - { - "name": "diPublicInInjector" - }, - { - "name": "domRendererFactory3" - }, - { - "name": "empty" - }, - { - "name": "enterDI" - }, - { - "name": "enterView" - }, - { - "name": "executeCheckHooks" - }, - { - "name": "executeInitAndCheckHooks" - }, - { - "name": "executeListenerWithErrorHandling" - }, - { - "name": "executeTemplate" - }, - { - "name": "executeValidators" - }, - { - "name": "executeViewQueryFn" - }, - { - "name": "extendStatics" - }, - { - "name": "extractDirectiveDef" - }, - { - "name": "extractPipeDef" - }, - { - "name": "fillProperties" - }, - { - "name": "findAttrIndexInNode" - }, - { - "name": "findStylingValue" - }, - { - "name": "flattenStyles" - }, - { - "name": "flattenUnsubscriptionErrors" - }, - { - "name": "forkJoinInternal" - }, - { - "name": "formArrayNameProvider" - }, - { - "name": "formDirectiveProvider" - }, - { - "name": "formGroupNameProvider" - }, - { - "name": "forwardRef" - }, - { - "name": "from" - }, - { - "name": "fromArray" - }, - { - "name": "generateInitialInputs" - }, - { - "name": "generatePropertyAliases" - }, - { - "name": "getClosureSafeProperty" - }, - { - "name": "getComponentDef" - }, - { - "name": "getComponentLViewByIndex" - }, - { - "name": "getConstant" - }, - { - "name": "getControlAsyncValidators" - }, - { - "name": "getControlValidators" - }, - { - "name": "getCurrentTNode" - }, - { - "name": "getCurrentTNodePlaceholderOk" - }, - { - "name": "getDOM" - }, - { - "name": "getDebugContext" - }, - { - "name": "getDeclarationTNode" - }, - { - "name": "getFactoryDef" - }, - { - "name": "getFactoryOf" - }, - { - "name": "getFirstLContainer" - }, - { - "name": "getInjectableDef" - }, - { - "name": "getInjectorDef" - }, - { - "name": "getInjectorIndex" - }, - { - "name": "getLView" - }, - { - "name": "getLViewParent" - }, - { - "name": "getLocaleData" - }, - { - "name": "getNativeByTNode" - }, - { - "name": "getNearestLContainer" - }, - { - "name": "getNextLContainer" - }, - { - "name": "getNgModuleDef" - }, - { - "name": "getNodeInjectable" - }, - { - "name": "getNullInjector" - }, - { - "name": "getOrCreateInjectable" - }, - { - "name": "getOrCreateLViewCleanup" - }, - { - "name": "getOrCreateNodeInjectorForNode" - }, - { - "name": "getOrCreateTComponentView" - }, - { - "name": "getOrCreateTNode" - }, - { - "name": "getOrCreateViewRefs" - }, - { - "name": "getOriginalError" - }, - { - "name": "getOwnDefinition" - }, - { - "name": "getParentInjectorIndex" - }, - { - "name": "getParentInjectorLocation" - }, - { - "name": "getParentInjectorView" - }, - { - "name": "getPlatform" - }, - { - "name": "getPreviousIndex" - }, - { - "name": "getProjectionNodes" - }, - { - "name": "getPromiseCtor" - }, - { - "name": "getSelectedIndex" - }, - { - "name": "getSimpleChangesStore" - }, - { - "name": "getSymbolIterator" - }, - { - "name": "getSymbolIterator" - }, - { - "name": "getTNode" - }, - { - "name": "getTStylingRangeNext" - }, - { - "name": "getTStylingRangePrev" - }, - { - "name": "getTView" - }, - { - "name": "getViewRefs" - }, - { - "name": "handleError" - }, - { - "name": "hasParentInjector" - }, - { - "name": "hasTagAndTypeMatch" - }, - { - "name": "hasValidLength" - }, - { - "name": "hostReportError" - }, - { - "name": "icuContainerIterate" - }, - { - "name": "identity" - }, - { - "name": "includeViewProviders" - }, - { - "name": "incrementInitPhaseFlags" - }, - { - "name": "indexOf" - }, - { - "name": "inheritContentQueries" - }, - { - "name": "inheritHostBindings" - }, - { - "name": "inheritViewQuery" - }, - { - "name": "initTNodeFlags" - }, - { - "name": "injectArgs" - }, - { - "name": "injectInjectorOnly" - }, - { - "name": "injectRootLimpMode" - }, - { - "name": "injectableDefOrInjectorDefFactory" - }, - { - "name": "insertBloom" - }, - { - "name": "instructionState" - }, - { - "name": "invertObject" - }, - { - "name": "invokeHostBindingsInCreationMode" - }, - { - "name": "isAnimationProp" - }, - { - "name": "isArray" - }, - { - "name": "isArrayLike" - }, - { - "name": "isComponentDef" - }, - { - "name": "isComponentHost" - }, - { - "name": "isContentQueryHost" - }, - { - "name": "isCssClassMatching" - }, - { - "name": "isCurrentTNodeParent" - }, - { - "name": "isDirectiveHost" - }, - { - "name": "isEmptyInputValue" - }, - { - "name": "isForwardRef" - }, - { - "name": "isFunction" - }, - { - "name": "isInCheckNoChangesMode" - }, - { - "name": "isInlineTemplate" - }, - { - "name": "isJsObject" - }, - { - "name": "isLContainer" - }, - { - "name": "isLView" - }, - { - "name": "isListLikeIterable" - }, - { - "name": "isNodeMatchingSelector" - }, - { - "name": "isNodeMatchingSelectorList" - }, - { - "name": "isObject" - }, - { - "name": "isObservable" - }, - { - "name": "isOptionsObj" - }, - { - "name": "isPositive" - }, - { - "name": "isPresent" - }, - { - "name": "isProceduralRenderer" - }, - { - "name": "isPromise" - }, - { - "name": "isPromise" - }, - { - "name": "isScheduler" - }, - { - "name": "isStylingMatch" - }, - { - "name": "isStylingValuePresent" - }, - { - "name": "isTypeProvider" - }, - { - "name": "isValueProvider" - }, - { - "name": "iterator" - }, - { - "name": "keyValDiff" - }, - { - "name": "keyValueArrayGet" - }, - { - "name": "keyValueArrayIndexOf" - }, - { - "name": "keyValueArraySet" - }, - { - "name": "leaveDI" - }, - { - "name": "leaveView" - }, - { - "name": "leaveViewLight" - }, - { - "name": "localeEn" - }, - { - "name": "lookupTokenUsingModuleInjector" - }, - { - "name": "makeParamDecorator" - }, - { - "name": "makeRecord" - }, - { - "name": "map" - }, - { - "name": "markAsComponentHost" - }, - { - "name": "markDuplicates" - }, - { - "name": "markViewDirty" - }, - { - "name": "maybeUnwrapEmpty" - }, - { - "name": "maybeUnwrapFn" - }, - { - "name": "maybeWrapInNotSelector" - }, - { - "name": "mergeAll" - }, - { - "name": "mergeErrors" - }, - { - "name": "mergeHostAttribute" - }, - { - "name": "mergeHostAttrs" - }, - { - "name": "mergeValidators" - }, - { - "name": "modules" - }, - { - "name": "multiFactoryAdd" - }, - { - "name": "multiProvidersFactoryResolver" - }, - { - "name": "multiResolve" - }, - { - "name": "multiViewProvidersFactoryResolver" - }, - { - "name": "nativeAppendChild" - }, - { - "name": "nativeAppendOrInsertBefore" - }, - { - "name": "nativeInsertBefore" - }, - { - "name": "nativeParentNode" - }, - { - "name": "nextNgElementId" - }, - { - "name": "ngOnChangesSetInput" - }, - { - "name": "noSideEffects" - }, - { - "name": "noop" - }, - { - "name": "noop" - }, - { - "name": "normalizeValidators" - }, - { - "name": "notFoundValueOrThrow" - }, - { - "name": "nullValidator" - }, - { - "name": "observable" - }, - { - "name": "onEnter" - }, - { - "name": "onLeave" - }, - { - "name": "optionsReducer" - }, - { - "name": "pickAsyncValidators" - }, - { - "name": "pickValidators" - }, - { - "name": "pipeFromArray" - }, - { - "name": "platformBrowser" - }, - { - "name": "platformCore" - }, - { - "name": "promise" - }, - { - "name": "providerToFactory" - }, - { - "name": "readPatchedLView" - }, - { - "name": "refCount" - }, - { - "name": "refreshComponent" - }, - { - "name": "refreshContentQueries" - }, - { - "name": "refreshView" - }, - { - "name": "registerDestroyHooksIfSupported" - }, - { - "name": "registerHostBindingOpCodes" - }, - { - "name": "registerOnValidatorChange" - }, - { - "name": "registerPostOrderHooks" - }, - { - "name": "rememberChangeHistoryAndInvokeOnChangesHook" - }, - { - "name": "remove" - }, - { - "name": "removeFromArray" - }, - { - "name": "removeListItem" - }, - { - "name": "renderComponent" - }, - { - "name": "renderComponentOrTemplate" - }, - { - "name": "renderView" - }, - { - "name": "resetPreOrderHookFlags" - }, - { - "name": "resolveDirectives" - }, - { - "name": "resolveForwardRef" - }, - { - "name": "resolveProvider" - }, - { - "name": "rxSubscriber" - }, - { - "name": "saveNameToExportMap" - }, - { - "name": "saveResolvedLocalsInData" - }, - { - "name": "scheduleArray" - }, - { - "name": "scheduleMicroTask" - }, - { - "name": "searchTokensOnInjector" - }, - { - "name": "selectIndexInternal" - }, - { - "name": "setBindingRootForHostBindings" - }, - { - "name": "setCurrentDirectiveIndex" - }, - { - "name": "setCurrentInjector" - }, - { - "name": "setCurrentQueryIndex" - }, - { - "name": "setCurrentTNode" - }, - { - "name": "setDirectiveInputsWhichShadowsStyling" - }, - { - "name": "setIncludeViewProviders" - }, - { - "name": "setInjectImplementation" - }, - { - "name": "setInputsForProperty" - }, - { - "name": "setInputsFromAttrs" - }, - { - "name": "setIsInCheckNoChangesMode" - }, - { - "name": "setLocaleId" - }, - { - "name": "setSelectedIndex" - }, - { - "name": "setTStylingRangeNext" - }, - { - "name": "setTStylingRangeNextDuplicate" - }, - { - "name": "setTStylingRangePrevDuplicate" - }, - { - "name": "setUpAttributes" - }, - { - "name": "setUpControl" - }, - { - "name": "setUpValidators" - }, - { - "name": "shareSubjectFactory" - }, - { - "name": "shouldSearchParent" - }, - { - "name": "stringify" - }, - { - "name": "stringifyCSSSelector" - }, - { - "name": "stringifyForError" - }, - { - "name": "subscribeTo" - }, - { - "name": "subscribeToArray" - }, - { - "name": "throwProviderNotFoundError" - }, - { - "name": "toObservable" - }, - { - "name": "toRefArray" - }, - { - "name": "toTStylingRange" - }, - { - "name": "trackByIdentity" - }, - { - "name": "u" - }, - { - "name": "unwrapRNode" - }, - { - "name": "updateControl" - }, - { - "name": "updateMicroTaskStatus" - }, - { - "name": "updateTransplantedViewCount" - }, - { - "name": "viewAttachedToChangeDetector" - }, - { - "name": "wrapListener" - }, - { - "name": "writeDirectClass" - }, - { - "name": "writeDirectStyle" - }, - { - "name": "ɵInternalFormsSharedModule" - }, - { - "name": "ɵNgNoValidate" - }, - { - "name": "ɵɵInheritDefinitionFeature" - }, - { - "name": "ɵɵNgOnChangesFeature" - }, - { - "name": "ɵɵProvidersFeature" - }, - { - "name": "ɵɵclassProp" - }, - { - "name": "ɵɵdefineComponent" - }, - { - "name": "ɵɵdefineDirective" - }, - { - "name": "ɵɵdefineInjectable" - }, - { - "name": "ɵɵdefineInjector" - }, - { - "name": "ɵɵdefineNgModule" - }, - { - "name": "ɵɵdirectiveInject" - }, - { - "name": "ɵɵelement" - }, - { - "name": "ɵɵelementEnd" - }, - { - "name": "ɵɵelementStart" - }, - { - "name": "ɵɵinject" - }, - { - "name": "ɵɵlistener" - }, - { - "name": "ɵɵproperty" - }, - { - "name": "ɵɵtext" - } -] \ No newline at end of file diff --git a/packages/core/test/bundling/forms_reactive/forms_e2e_spec.ts b/packages/core/test/bundling/forms_reactive/forms_e2e_spec.ts deleted file mode 100644 index 65ee1ee746..0000000000 --- a/packages/core/test/bundling/forms_reactive/forms_e2e_spec.ts +++ /dev/null @@ -1,47 +0,0 @@ -/** - * @license - * 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 - */ - -import '@angular/compiler'; -import {ɵwhenRendered as whenRendered} from '@angular/core'; -import {withBody} from '@angular/private/testing'; -import * as path from 'path'; - -const PACKAGE = 'angular/packages/core/test/bundling/forms_reactive'; -const BUNDLES = ['bundle.js', 'bundle.min_debug.js', 'bundle.min.js']; - -describe('functional test for reactive forms', () => { - BUNDLES.forEach((bundle) => { - describe(`using ${bundle} bundle`, () => { - it('should render template form', withBody('', async () => { - require(path.join(PACKAGE, bundle)); - await (window as any).waitForApp; - - // Reactive forms - const reactiveFormsComponent = (window as any).reactiveFormsComponent; - await whenRendered(reactiveFormsComponent); - - const reactiveForm = document.querySelector('app-reactive-forms')!; - - // Check for inputs - const inputs = reactiveForm.querySelectorAll('input'); - expect(inputs.length).toBe(5); - - // Check for button - const reactiveButtons = reactiveForm.querySelectorAll('button'); - expect(reactiveButtons.length).toBe(1); - expect(reactiveButtons[0]).toBeDefined(); - - // Make sure button click works - const reactiveFormSpy = spyOn(reactiveFormsComponent, 'addCity').and.callThrough(); - reactiveButtons[0].click(); - expect(reactiveFormSpy).toHaveBeenCalled(); - expect(reactiveFormsComponent.addresses.length).toBe(2); - })); - }); - }); -}); diff --git a/packages/core/test/bundling/forms_reactive/index.html b/packages/core/test/bundling/forms_reactive/index.html deleted file mode 100644 index 389b4959af..0000000000 --- a/packages/core/test/bundling/forms_reactive/index.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - Angular Reactive Forms Example - - - - - - - - - - diff --git a/packages/core/test/bundling/forms_reactive/treeshaking_spec.ts b/packages/core/test/bundling/forms_reactive/treeshaking_spec.ts deleted file mode 100644 index 319a0fcb86..0000000000 --- a/packages/core/test/bundling/forms_reactive/treeshaking_spec.ts +++ /dev/null @@ -1,35 +0,0 @@ -/** - * @license - * 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 - */ - -import '@angular/compiler'; -import * as fs from 'fs'; -import * as path from 'path'; - -const UTF8 = { - encoding: 'utf-8' -}; -const PACKAGE = 'angular/packages/core/test/bundling/forms_reactive'; - -describe('treeshaking with uglify', () => { - let content: string; - // We use the debug version as otherwise symbols/identifiers would be mangled (and the test would - // always pass) - const contentPath = require.resolve(path.join(PACKAGE, 'bundle.min_debug.js')); - beforeAll(() => { - content = fs.readFileSync(contentPath, UTF8); - }); - - it('should drop unused TypeScript helpers', () => { - expect(content).not.toContain('__asyncGenerator'); - }); - - it('should not contain rxjs from commonjs distro', () => { - expect(content).not.toContain('commonjsGlobal'); - expect(content).not.toContain('createCommonjsModule'); - }); -}); diff --git a/packages/core/test/bundling/forms_template_driven/bundle.golden_symbols.json b/packages/core/test/bundling/forms_template_driven/bundle.golden_symbols.json index b725159dd1..5c1cb3f1eb 100644 --- a/packages/core/test/bundling/forms_template_driven/bundle.golden_symbols.json +++ b/packages/core/test/bundling/forms_template_driven/bundle.golden_symbols.json @@ -44,6 +44,9 @@ { "name": "BROWSER_MODULE_PROVIDERS" }, + { + "name": "BaseControlValueAccessor" + }, { "name": "BrowserDomAdapter" }, @@ -236,9 +239,6 @@ { "name": "Injector" }, - { - "name": "InnerSubscriber" - }, { "name": "IterableChangeRecord_" }, @@ -419,9 +419,6 @@ { "name": "Optional" }, - { - "name": "OuterSubscriber" - }, { "name": "PLATFORM_ID" }, @@ -512,6 +509,12 @@ { "name": "SimpleChange" }, + { + "name": "SimpleInnerSubscriber" + }, + { + "name": "SimpleOuterSubscriber" + }, { "name": "SkipSelf" }, @@ -638,6 +641,9 @@ { "name": "_testabilityGetter" }, + { + "name": "_wrapInTimeout" + }, { "name": "addComponentLogic" }, @@ -647,6 +653,9 @@ { "name": "addToViewTree" }, + { + "name": "addValidators" + }, { "name": "allocExpando" }, @@ -908,9 +917,6 @@ { "name": "getDOM" }, - { - "name": "getDebugContext" - }, { "name": "getDeclarationTNode" }, @@ -1043,6 +1049,9 @@ { "name": "hasTagAndTypeMatch" }, + { + "name": "hasValidator" + }, { "name": "hostReportError" }, @@ -1229,6 +1238,9 @@ { "name": "makeRecord" }, + { + "name": "makeValidatorsArray" + }, { "name": "map" }, @@ -1310,9 +1322,6 @@ { "name": "noop" }, - { - "name": "noop" - }, { "name": "normalizeValidators" }, @@ -1391,6 +1400,12 @@ { "name": "removeListItem" }, + { + "name": "removeStyle" + }, + { + "name": "removeValidators" + }, { "name": "renderComponent" }, @@ -1613,6 +1628,9 @@ { "name": "ɵɵelementStart" }, + { + "name": "ɵɵgetInheritedFactory" + }, { "name": "ɵɵinject" }, diff --git a/packages/core/test/bundling/injection/bundle.golden_symbols.json b/packages/core/test/bundling/injection/bundle.golden_symbols.json index 2333422a61..4ebbb42bb3 100644 --- a/packages/core/test/bundling/injection/bundle.golden_symbols.json +++ b/packages/core/test/bundling/injection/bundle.golden_symbols.json @@ -92,6 +92,9 @@ { "name": "injectArgs" }, + { + "name": "injectInjectorOnly" + }, { "name": "injectableDefOrInjectorDefFactory" }, @@ -110,6 +113,9 @@ { "name": "setCurrentInjector" }, + { + "name": "setInjectImplementation" + }, { "name": "stringify" }, diff --git a/packages/core/test/bundling/router/bundle.golden_symbols.json b/packages/core/test/bundling/router/bundle.golden_symbols.json index ef5302071d..ce42fcc345 100644 --- a/packages/core/test/bundling/router/bundle.golden_symbols.json +++ b/packages/core/test/bundling/router/bundle.golden_symbols.json @@ -737,6 +737,12 @@ { "name": "SimpleChange" }, + { + "name": "SimpleInnerSubscriber" + }, + { + "name": "SimpleOuterSubscriber" + }, { "name": "SkipSelf" }, @@ -926,6 +932,9 @@ { "name": "_testabilityGetter" }, + { + "name": "_wrapInTimeout" + }, { "name": "absoluteRedirect" }, @@ -1304,9 +1313,6 @@ { "name": "getData" }, - { - "name": "getDebugContext" - }, { "name": "getDeclarationTNode" }, @@ -1496,6 +1502,9 @@ { "name": "injectableDefOrInjectorDefFactory" }, + { + "name": "innerSubscribe" + }, { "name": "insertBloom" }, @@ -1820,6 +1829,9 @@ { "name": "removeFromArray" }, + { + "name": "removeStyle" + }, { "name": "renderComponent" }, diff --git a/packages/core/test/bundling/todo/bundle.golden_symbols.json b/packages/core/test/bundling/todo/bundle.golden_symbols.json index 057cd33ab4..191225f16d 100644 --- a/packages/core/test/bundling/todo/bundle.golden_symbols.json +++ b/packages/core/test/bundling/todo/bundle.golden_symbols.json @@ -365,9 +365,6 @@ { "name": "getCurrentTNodePlaceholderOk" }, - { - "name": "getDebugContext" - }, { "name": "getDeclarationTNode" }, diff --git a/packages/core/test/change_detection/differs/iterable_differs_spec.ts b/packages/core/test/change_detection/differs/iterable_differs_spec.ts index 19cdd0e691..396d09b229 100644 --- a/packages/core/test/change_detection/differs/iterable_differs_spec.ts +++ b/packages/core/test/change_detection/differs/iterable_differs_spec.ts @@ -9,8 +9,6 @@ import {Injector, IterableDiffer, IterableDifferFactory, IterableDiffers, NgModule, TrackByFunction} from '@angular/core'; import {TestBed} from '@angular/core/testing'; -import {SpyIterableDifferFactory} from '../../spies'; - { describe('IterableDiffers', function() { let factory1: any; @@ -18,9 +16,10 @@ import {SpyIterableDifferFactory} from '../../spies'; let factory3: any; beforeEach(() => { - factory1 = new SpyIterableDifferFactory(); - factory2 = new SpyIterableDifferFactory(); - factory3 = new SpyIterableDifferFactory(); + const getFactory = () => jasmine.createSpyObj('IterableDifferFactory', ['supports']); + factory1 = getFactory(); + factory2 = getFactory(); + factory3 = getFactory(); }); it('should throw when no suitable implementation found', () => { @@ -30,17 +29,17 @@ import {SpyIterableDifferFactory} from '../../spies'; }); it('should return the first suitable implementation', () => { - factory1.spy('supports').and.returnValue(false); - factory2.spy('supports').and.returnValue(true); - factory3.spy('supports').and.returnValue(true); + factory1.supports.and.returnValue(false); + factory2.supports.and.returnValue(true); + factory3.supports.and.returnValue(true); const differs = IterableDiffers.create([factory1, factory2, factory3]); expect(differs.find('some object')).toBe(factory2); }); it('should copy over differs from the parent repo', () => { - factory1.spy('supports').and.returnValue(true); - factory2.spy('supports').and.returnValue(false); + factory1.supports.and.returnValue(true); + factory2.supports.and.returnValue(false); const parent = IterableDiffers.create([factory1]); const child = IterableDiffers.create([factory2], parent); diff --git a/packages/core/test/compiler/BUILD.bazel b/packages/core/test/compiler/BUILD.bazel new file mode 100644 index 0000000000..95f8ca8b39 --- /dev/null +++ b/packages/core/test/compiler/BUILD.bazel @@ -0,0 +1,30 @@ +load("//tools:defaults.bzl", "jasmine_node_test", "karma_web_test_suite", "ts_library") + +package(default_visibility = ["//visibility:private"]) + +ts_library( + name = "compiler_lib", + testonly = True, + srcs = glob( + ["**/*.ts"], + ), + deps = [ + "//packages/core/src/compiler", + "//packages/core/src/util", + ], +) + +jasmine_node_test( + name = "compiler", + bootstrap = ["//tools/testing:node_es5"], + deps = [ + ":compiler_lib", + ], +) + +karma_web_test_suite( + name = "compiler_web", + deps = [ + ":compiler_lib", + ], +) diff --git a/packages/core/test/compiler/compiler_facade_spec.ts b/packages/core/test/compiler/compiler_facade_spec.ts new file mode 100644 index 0000000000..6878c86442 --- /dev/null +++ b/packages/core/test/compiler/compiler_facade_spec.ts @@ -0,0 +1,69 @@ +/** + * @license + * 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 + */ + +import {getCompilerFacade, JitCompilerUsage} from '../../src/compiler/compiler_facade'; +import {CompilerFacade, ExportedCompilerFacade} from '../../src/compiler/compiler_facade_interface'; +import {global} from '../../src/util/global'; + +describe('getCompilerFacade', () => { + describe('errors', () => { + beforeEach(clearCompilerFacade); + afterEach(restoreCompilerFacade); + + it('reports an error when requested for a decorator', () => { + try { + getCompilerFacade({usage: JitCompilerUsage.Decorator, kind: 'directive', type: TestClass}); + fail('Error expected as compiler facade is not available'); + } catch (e) { + expect(e.message).toEqual( + `The directive 'TestClass' needs to be compiled using the JIT compiler, but '@angular/compiler' is not available. + +JIT compilation is discouraged for production use-cases! Consider using AOT mode instead. +Alternatively, the JIT compiler should be loaded by bootstrapping using '@angular/platform-browser-dynamic' or '@angular/platform-server', +or manually provide the compiler with 'import "@angular/compiler";' before bootstrapping.`); + } + }); + + it('reports an error when requested for a partial declaration', () => { + try { + getCompilerFacade( + {usage: JitCompilerUsage.PartialDeclaration, kind: 'directive', type: TestClass}); + fail('Error expected as compiler facade is not available'); + } catch (e) { + expect(e.message).toEqual( + `The directive 'TestClass' needs to be compiled using the JIT compiler, but '@angular/compiler' is not available. + +The directive is part of a library that has been partially compiled. +However, the Angular Linker has not processed the library such that JIT compilation is used as fallback. + +Ideally, the library is processed using the Angular Linker to become fully AOT compiled. +Alternatively, the JIT compiler should be loaded by bootstrapping using '@angular/platform-browser-dynamic' or '@angular/platform-server', +or manually provide the compiler with 'import "@angular/compiler";' before bootstrapping.`); + } + }); + }); +}); + +class TestClass {} + +let ɵcompilerFacade: CompilerFacade|null = null; + +function clearCompilerFacade() { + const ng: ExportedCompilerFacade = global.ng; + ɵcompilerFacade = ng.ɵcompilerFacade; + ng.ɵcompilerFacade = undefined!; +} + +function restoreCompilerFacade() { + if (ɵcompilerFacade === null) { + return; + } + const ng: ExportedCompilerFacade = global.ng; + ng.ɵcompilerFacade = ɵcompilerFacade; + ɵcompilerFacade = null; +} diff --git a/packages/core/test/debug/debug_node_spec.ts b/packages/core/test/debug/debug_node_spec.ts index af6ffc0717..ca44fa6187 100644 --- a/packages/core/test/debug/debug_node_spec.ts +++ b/packages/core/test/debug/debug_node_spec.ts @@ -208,6 +208,7 @@ class TestApp { width = 200; color = 'red'; isClosed = true; + constructor(public renderer: Renderer2) {} } @Component({selector: 'test-cmpt', template: ``}) @@ -618,6 +619,22 @@ class TestCmptWithPropInterpolation { expect(fixture.debugElement.query(By.css('.myclass'))).toBeTruthy(); }); + it('should not throw when calling DebugRenderer2.destroyNode twice in a row', () => { + const fixture = TestBed.createComponent(TestApp); + fixture.detectChanges(); + const firstChild = fixture.debugElement.children[0]; + const renderer = fixture.componentInstance.renderer; + + expect(firstChild).toBeTruthy(); + expect(() => { + // `destroyNode` needs to be null checked, because only ViewEngine provides a + // `DebugRenderer2` which has the behavior we're testing for. Ivy provides + // `BaseAnimationRenderer` which doesn't have the issue. + renderer.destroyNode?.(firstChild); + renderer.destroyNode?.(firstChild); + }).not.toThrow(); + }); + describe('DebugElement.query with dynamically created descendant elements', () => { let fixture: ComponentFixture<{}>; beforeEach(() => { diff --git a/packages/core/test/di/forward_ref_spec.ts b/packages/core/test/di/forward_ref_spec.ts index 81c0dd0364..cc156bf637 100644 --- a/packages/core/test/di/forward_ref_spec.ts +++ b/packages/core/test/di/forward_ref_spec.ts @@ -8,7 +8,6 @@ import {Type} from '@angular/core'; import {forwardRef, resolveForwardRef} from '@angular/core/src/di'; -import {describe, expect, it} from '@angular/core/testing/src/testing_internal'; { describe('forwardRef', function() { diff --git a/packages/core/test/di/inject_flags_spec.ts b/packages/core/test/di/inject_flags_spec.ts index b680ff8c5f..ba939417d7 100644 --- a/packages/core/test/di/inject_flags_spec.ts +++ b/packages/core/test/di/inject_flags_spec.ts @@ -16,4 +16,4 @@ describe('InjectFlags', () => { expect(InjectFlags.SkipSelf).toEqual(InternalInjectFlags.SkipSelf as number); expect(InjectFlags.Optional).toEqual(InternalInjectFlags.Optional as number); }); -}); \ No newline at end of file +}); diff --git a/packages/core/test/di/injector_spec.ts b/packages/core/test/di/injector_spec.ts index a1dab42636..c72103b806 100644 --- a/packages/core/test/di/injector_spec.ts +++ b/packages/core/test/di/injector_spec.ts @@ -8,7 +8,6 @@ import {Injector} from '@angular/core'; -import {describe, expect, it} from '@angular/core/testing/src/testing_internal'; { describe('Injector.NULL', () => { diff --git a/packages/core/test/di/r3_injector_spec.ts b/packages/core/test/di/r3_injector_spec.ts index 07ade1cd4a..2a5fa6342b 100644 --- a/packages/core/test/di/r3_injector_spec.ts +++ b/packages/core/test/di/r3_injector_spec.ts @@ -64,7 +64,7 @@ describe('InjectorDef-based createInjector()', () => { providedIn: null, // ChildService is derived from ServiceWithDep, so the factory function here must do the right // thing and create an instance of the requested type if one is given. - factory: (t?: typeof ServiceWithDep) => new(t || ServiceWithDep)(ɵɵinject(Service)), + factory: (t?: any) => new(t || ServiceWithDep)(ɵɵinject(Service)), }); } diff --git a/packages/core/test/di/static_injector_spec.ts b/packages/core/test/di/static_injector_spec.ts index 3106edd9a5..5098e08814 100644 --- a/packages/core/test/di/static_injector_spec.ts +++ b/packages/core/test/di/static_injector_spec.ts @@ -33,7 +33,7 @@ class Dashboard { } class TurboEngine extends Engine { - static PROVIDER = {provide: Engine, useClass: TurboEngine, deps: []}; + static override PROVIDER = {provide: Engine, useClass: TurboEngine, deps: []}; } class Car { @@ -65,7 +65,7 @@ class CarWithDashboard { } class SportsCar extends Car { - static PROVIDER = {provide: Car, useClass: SportsCar, deps: [Engine]}; + static override PROVIDER = {provide: Car, useClass: SportsCar, deps: [Engine]}; } class CyclicEngine { diff --git a/packages/core/test/dom/dom_adapter_spec.ts b/packages/core/test/dom/dom_adapter_spec.ts index 859b12a716..97172b6c50 100644 --- a/packages/core/test/dom/dom_adapter_spec.ts +++ b/packages/core/test/dom/dom_adapter_spec.ts @@ -7,7 +7,6 @@ */ import {ɵgetDOM as getDOM} from '@angular/common'; -import {beforeEach, describe, expect, it} from '@angular/core/testing/src/testing_internal'; import {isTextNode} from '@angular/platform-browser/testing/src/browser_util'; { diff --git a/packages/core/test/dom/shim_spec.ts b/packages/core/test/dom/shim_spec.ts index deb135b11f..9f39856cef 100644 --- a/packages/core/test/dom/shim_spec.ts +++ b/packages/core/test/dom/shim_spec.ts @@ -6,7 +6,9 @@ * found in the LICENSE file at https://angular.io/license */ -import {describe, expect, it} from '@angular/core/testing/src/testing_internal'; +// This isn't used for anything, but for some reason Bazel won't +// serve the file if there isn't at least one import. +import '@angular/core/testing'; { describe('Shim', () => { diff --git a/packages/core/test/error_handler_spec.ts b/packages/core/test/error_handler_spec.ts index b02e68f405..3b75a9ce65 100644 --- a/packages/core/test/error_handler_spec.ts +++ b/packages/core/test/error_handler_spec.ts @@ -23,7 +23,7 @@ function errorToString(error: any) { const errorHandler = new ErrorHandler(); (errorHandler as any)._console = logger as any; errorHandler.handleError(error); - return logger.res.map(line => line.join('#')).join('\n'); + return logger.res.map(line => line.map(x => `${x}`).join('#')).join('\n'); } describe('ErrorHandler', () => { @@ -32,6 +32,16 @@ describe('ErrorHandler', () => { expect(e).toContain('message!'); }); + it('should correctly handle primitive values', () => { + expect(errorToString('message')).toBe('ERROR#message'); + expect(errorToString(404)).toBe('ERROR#404'); + expect(errorToString(0)).toBe('ERROR#0'); + expect(errorToString(true)).toBe('ERROR#true'); + expect(errorToString(false)).toBe('ERROR#false'); + expect(errorToString(null)).toBe('ERROR#null'); + expect(errorToString(undefined)).toBe('ERROR#undefined'); + }); + describe('context', () => { it('should print nested context', () => { const cause = new Error('message!'); diff --git a/packages/core/test/event_emitter_spec.ts b/packages/core/test/event_emitter_spec.ts index e822a62485..3715b0fc1b 100644 --- a/packages/core/test/event_emitter_spec.ts +++ b/packages/core/test/event_emitter_spec.ts @@ -6,7 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -import {AsyncTestCompleter, beforeEach, describe, expect, inject, it} from '@angular/core/testing/src/testing_internal'; import {filter} from 'rxjs/operators'; import {EventEmitter} from '../src/event_emitter'; @@ -19,51 +18,47 @@ import {EventEmitter} from '../src/event_emitter'; emitter = new EventEmitter(); }); - it('should call the next callback', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - emitter.subscribe({ - next: (value: any) => { - expect(value).toEqual(99); - async.done(); - } - }); - emitter.emit(99); - })); + it('should call the next callback', done => { + emitter.subscribe({ + next: (value: any) => { + expect(value).toEqual(99); + done(); + } + }); + emitter.emit(99); + }); - it('should call the throw callback', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - emitter.subscribe({ - next: () => {}, - error: (error: any) => { - expect(error).toEqual('Boom'); - async.done(); - } - }); - emitter.error('Boom'); - })); + it('should call the throw callback', done => { + emitter.subscribe({ + next: () => {}, + error: (error: any) => { + expect(error).toEqual('Boom'); + done(); + } + }); + emitter.error('Boom'); + }); - it('should work when no throw callback is provided', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - emitter.subscribe({ - next: () => {}, - error: (_: any) => { - async.done(); - } - }); - emitter.error('Boom'); - })); + it('should work when no throw callback is provided', done => { + emitter.subscribe({ + next: () => {}, + error: (_: any) => { + done(); + } + }); + emitter.error('Boom'); + }); - it('should call the return callback', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - emitter.subscribe({ - next: () => {}, - error: (_: any) => {}, - complete: () => { - async.done(); - } - }); - emitter.complete(); - })); + it('should call the return callback', done => { + emitter.subscribe({ + next: () => {}, + error: (_: any) => {}, + complete: () => { + done(); + } + }); + emitter.complete(); + }); it('should subscribe to the wrapper synchronously', () => { let called = false; @@ -77,27 +72,26 @@ import {EventEmitter} from '../src/event_emitter'; expect(called).toBe(true); }); - it('delivers next and error events synchronously', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const log: any[] /** TODO #9100 */ = []; + it('delivers next and error events synchronously', done => { + const log: any[] /** TODO #9100 */ = []; - emitter.subscribe({ - next: (x: any) => { - log.push(x); - expect(log).toEqual([1, 2]); - }, - error: (err: any) => { - log.push(err); - expect(log).toEqual([1, 2, 3, 4]); - async.done(); - } - }); - log.push(1); - emitter.emit(2); - log.push(3); - emitter.error(4); - log.push(5); - })); + emitter.subscribe({ + next: (x: any) => { + log.push(x); + expect(log).toEqual([1, 2]); + }, + error: (err: any) => { + log.push(err); + expect(log).toEqual([1, 2, 3, 4]); + done(); + } + }); + log.push(1); + emitter.emit(2); + log.push(3); + emitter.error(4); + log.push(5); + }); it('delivers next and complete events synchronously', () => { const log: any[] /** TODO #9100 */ = []; @@ -121,19 +115,18 @@ import {EventEmitter} from '../src/event_emitter'; expect(log).toEqual([1, 2, 3, 4, 5]); }); - it('delivers events asynchronously when forced to async mode', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const e = new EventEmitter(true); - const log: any[] /** TODO #9100 */ = []; - e.subscribe((x: any) => { - log.push(x); - expect(log).toEqual([1, 3, 2]); - async.done(); - }); - log.push(1); - e.emit(2); - log.push(3); - })); + it('delivers events asynchronously when forced to async mode', done => { + const e = new EventEmitter(true); + const log: any[] /** TODO #9100 */ = []; + e.subscribe((x: any) => { + log.push(x); + expect(log).toEqual([1, 3, 2]); + done(); + }); + log.push(1); + e.emit(2); + log.push(3); + }); it('reports whether it has subscribers', () => { const e = new EventEmitter(false); @@ -156,21 +149,17 @@ import {EventEmitter} from '../src/event_emitter'; expect(emitter.observers.length).toBe(0); }); - it('unsubscribing a subscriber invokes the dispose method', () => { - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const sub = emitter.subscribe(); - sub.add(() => async.done()); - sub.unsubscribe(); - }); + it('unsubscribing a subscriber invokes the dispose method', done => { + const sub = emitter.subscribe(); + sub.add(() => done()); + sub.unsubscribe(); }); it('unsubscribing a subscriber after applying operators with pipe() invokes the dispose method', - () => { - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const sub = emitter.pipe(filter(() => true)).subscribe(); - sub.add(() => async.done()); - sub.unsubscribe(); - }); + done => { + const sub = emitter.pipe(filter(() => true)).subscribe(); + sub.add(() => done()); + sub.unsubscribe(); }); it('error thrown inside an Rx chain propagates to the error handler and disposes the chain', diff --git a/packages/core/test/fake_async_spec.ts b/packages/core/test/fake_async_spec.ts index 54b494f84e..705d34669c 100644 --- a/packages/core/test/fake_async_spec.ts +++ b/packages/core/test/fake_async_spec.ts @@ -6,8 +6,8 @@ * found in the LICENSE file at https://angular.io/license */ -import {discardPeriodicTasks, fakeAsync, flush, flushMicrotasks, tick} from '@angular/core/testing'; -import {beforeEach, describe, inject, it, Log} from '@angular/core/testing/src/testing_internal'; +import {discardPeriodicTasks, fakeAsync, flush, flushMicrotasks, inject, tick} from '@angular/core/testing'; +import {Log} from '@angular/core/testing/src/testing_internal'; import {EventManager} from '@angular/platform-browser'; import {expect} from '@angular/platform-browser/testing/src/matchers'; diff --git a/packages/core/test/linker/inheritance_integration_spec.ts b/packages/core/test/linker/inheritance_integration_spec.ts index 3b9efcf117..a02b610d27 100644 --- a/packages/core/test/linker/inheritance_integration_spec.ts +++ b/packages/core/test/linker/inheritance_integration_spec.ts @@ -8,7 +8,6 @@ import {Component, Directive, HostBinding} from '@angular/core'; import {TestBed} from '@angular/core/testing'; -import {describe, expect, it} from '@angular/core/testing/src/testing_internal'; import {modifiedInIvy, onlyInIvy} from '@angular/private/testing'; @Directive({selector: '[directiveA]'}) diff --git a/packages/core/test/linker/ng_module_integration_spec.ts b/packages/core/test/linker/ng_module_integration_spec.ts index 6f3e70a3d4..e5f2b36329 100644 --- a/packages/core/test/linker/ng_module_integration_spec.ts +++ b/packages/core/test/linker/ng_module_integration_spec.ts @@ -7,7 +7,7 @@ */ import {ANALYZE_FOR_ENTRY_COMPONENTS, Compiler, Component, ComponentFactoryResolver, CUSTOM_ELEMENTS_SCHEMA, Directive, forwardRef, getModuleFactory, HostBinding, Inject, Injectable, InjectionToken, Injector, Input, NgModule, NgModuleRef, Optional, Pipe, Provider, Self, Type, ɵivyEnabled as ivyEnabled, ɵɵdefineNgModule as defineNgModule} from '@angular/core'; -import {ɵɵdefineInjectable, ɵɵInjectableDef} from '@angular/core/src/di/interface/defs'; +import {ɵɵdefineInjectable} from '@angular/core/src/di/interface/defs'; import {getNgModuleDef} from '@angular/core/src/render3/definition'; import {NgModuleData} from '@angular/core/src/view/types'; import {tokenKey} from '@angular/core/src/view/util'; diff --git a/packages/core/test/linker/projection_integration_spec.ts b/packages/core/test/linker/projection_integration_spec.ts index b6f43389c8..a0c6f3544e 100644 --- a/packages/core/test/linker/projection_integration_spec.ts +++ b/packages/core/test/linker/projection_integration_spec.ts @@ -10,6 +10,7 @@ import {CommonModule, ɵgetDOM as getDOM} from '@angular/common'; import {Component, ComponentFactoryResolver, ComponentRef, Directive, ElementRef, Injector, Input, NgModule, NO_ERRORS_SCHEMA, OnInit, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation} from '@angular/core'; import {ComponentFixture, TestBed} from '@angular/core/testing'; import {By} from '@angular/platform-browser/src/dom/debug/by'; +import {browserDetection} from '@angular/platform-browser/testing/src/browser_util'; import {expect} from '@angular/platform-browser/testing/src/matchers'; import {modifiedInIvy} from '@angular/private/testing'; @@ -490,7 +491,7 @@ describe('projection', () => { expect(main.nativeElement).toHaveText('TREE(0:TREE2(1:TREE(2:)))'); }); - if (supportsShadowDOM()) { + if (browserDetection.supportsShadowDom) { it('should support shadow dom content projection and isolate styles per component', () => { TestBed.configureTestingModule({declarations: [SimpleShadowDom1, SimpleShadowDom2]}); TestBed.overrideComponent(MainComp, { @@ -1042,7 +1043,3 @@ class CmpA1 { }) class CmpA2 { } - -function supportsShadowDOM(): boolean { - return typeof (document.body).attachShadow !== 'undefined'; -} diff --git a/packages/core/test/linker/query_list_spec.ts b/packages/core/test/linker/query_list_spec.ts index c5b1fb7070..9acfaf7ac8 100644 --- a/packages/core/test/linker/query_list_spec.ts +++ b/packages/core/test/linker/query_list_spec.ts @@ -10,7 +10,6 @@ import {ɵgetDOM as getDOM} from '@angular/common'; import {iterateListLike} from '@angular/core/src/change_detection/change_detection_util'; import {QueryList} from '@angular/core/src/linker/query_list'; import {fakeAsync, tick} from '@angular/core/testing'; -import {beforeEach, describe, expect, it} from '@angular/core/testing/src/testing_internal'; { describe('QueryList', () => { diff --git a/packages/core/test/linker/source_map_integration_node_only_spec.ts b/packages/core/test/linker/source_map_integration_node_only_spec.ts index 256fbf0e41..0b8ac82f4b 100644 --- a/packages/core/test/linker/source_map_integration_node_only_spec.ts +++ b/packages/core/test/linker/source_map_integration_node_only_spec.ts @@ -477,7 +477,7 @@ describe('jit source mapping', () => { class MockJitEvaluator extends JitEvaluator { sources: string[] = []; - executeFunction(fn: Function, args: any[]) { + override executeFunction(fn: Function, args: any[]) { // Capture the source that has been generated. this.sources.push(fn.toString()); // Then execute it anyway. diff --git a/packages/core/test/linker/system_ng_module_factory_loader_spec.ts b/packages/core/test/linker/system_ng_module_factory_loader_spec.ts index a3b780e038..516be3006c 100644 --- a/packages/core/test/linker/system_ng_module_factory_loader_spec.ts +++ b/packages/core/test/linker/system_ng_module_factory_loader_spec.ts @@ -9,7 +9,6 @@ import {Compiler, SystemJsNgModuleLoader} from '@angular/core'; import {global} from '@angular/core/src/util/global'; import {waitForAsync} from '@angular/core/testing'; -import {afterEach, beforeEach, describe, expect, it} from '@angular/core/testing/src/testing_internal'; import {modifiedInIvy, onlyInIvy} from '@angular/private/testing'; function mockSystem(modules: {[module: string]: any}) { diff --git a/packages/core/test/reflection/reflector_spec.ts b/packages/core/test/reflection/reflector_spec.ts index 137edb7f88..556182c4cd 100644 --- a/packages/core/test/reflection/reflector_spec.ts +++ b/packages/core/test/reflection/reflector_spec.ts @@ -423,7 +423,7 @@ class TestObj { class Child extends Parent { // TODO(issue/24571): remove '!'. - @PropDecorator('b2') b!: B; + @PropDecorator('b2') override b!: B; // TODO(issue/24571): remove '!'. @PropDecorator('c') c!: C; } @@ -455,7 +455,7 @@ class TestObj { } class Child extends Parent { - hook2() {} + override hook2() {} hook3() {} } @@ -477,7 +477,7 @@ class TestObj { } class Child extends Parent { - static decorators = [{type: ClassDecorator, args: [{value: 'child'}]}]; + static override decorators = [{type: ClassDecorator, args: [{value: 'child'}]}]; } class ChildNoDecorators extends Parent {} @@ -508,7 +508,7 @@ class TestObj { class Child extends Parent {} class ChildWithCtor extends Parent { - static ctorParameters = () => + static override ctorParameters = () => [{type: C, decorators: [{type: ParamDecorator, args: ['c']}]}, ] constructor() { @@ -541,7 +541,7 @@ class TestObj { } class Child extends Parent { - static propDecorators: any = { + static override propDecorators: any = { 'b': [{type: PropDecorator, args: ['b2']}], 'c': [{type: PropDecorator, args: ['c']}], }; @@ -568,7 +568,7 @@ class TestObj { } class Child extends Parent { - static annotations = [new ClassDecorator({value: 'child'})]; + static override annotations = [new ClassDecorator({value: 'child'})]; } class ChildNoDecorators extends Parent {} @@ -599,7 +599,7 @@ class TestObj { class Child extends Parent {} class ChildWithCtor extends Parent { - static parameters = [ + static override parameters = [ [C, new ParamDecorator('c')], ]; constructor() { @@ -632,7 +632,7 @@ class TestObj { } class Child extends Parent { - static propMetadata: any = { + static override propMetadata: any = { 'b': [new PropDecorator('b2')], 'c': [new PropDecorator('c')], }; diff --git a/packages/core/test/render3/global_utils_spec.ts b/packages/core/test/render3/global_utils_spec.ts index ea19965a1d..dfb1aca5a4 100644 --- a/packages/core/test/render3/global_utils_spec.ts +++ b/packages/core/test/render3/global_utils_spec.ts @@ -8,7 +8,7 @@ import {setProfiler} from '@angular/core/src/render3/profiler'; import {applyChanges} from '../../src/render3/util/change_detection_utils'; -import {getComponent, getContext, getDirectives, getHostElement, getInjector, getListeners, getOwningComponent, getRootComponents} from '../../src/render3/util/discovery_utils'; +import {getComponent, getContext, getDirectiveMetadata, getDirectives, getHostElement, getInjector, getListeners, getOwningComponent, getRootComponents} from '../../src/render3/util/discovery_utils'; import {GLOBAL_PUBLISH_EXPANDO_KEY, GlobalDevModeContainer, publishDefaultGlobalUtils, publishGlobalUtil} from '../../src/render3/util/global_utils'; import {global} from '../../src/util/global'; @@ -62,6 +62,10 @@ describe('global utils', () => { assertPublished('applyChanges', applyChanges); }); + it('should publish getDirectiveMetadata', () => { + assertPublished('getDirectiveMetadata', getDirectiveMetadata); + }); + it('should publish ɵsetProfiler', () => { assertPublished('ɵsetProfiler', setProfiler); }); diff --git a/packages/core/test/render3/i18n/i18n_insert_before_index_spec.ts b/packages/core/test/render3/i18n/i18n_insert_before_index_spec.ts index 2921d9a2e7..7817f24003 100644 --- a/packages/core/test/render3/i18n/i18n_insert_before_index_spec.ts +++ b/packages/core/test/render3/i18n/i18n_insert_before_index_spec.ts @@ -9,6 +9,7 @@ import {addTNodeAndUpdateInsertBeforeIndex} from '@angular/core/src/render3/i18n/i18n_insert_before_index'; import {createTNode} from '@angular/core/src/render3/instructions/shared'; import {TNode, TNodeType} from '@angular/core/src/render3/interfaces/node'; +import {HEADER_OFFSET} from '@angular/core/src/render3/interfaces/view'; import {matchTNode} from '../matchers'; @@ -29,9 +30,9 @@ describe('addTNodeAndUpdateInsertBeforeIndex', () => { it('should add first node', () => { const previousTNodes: TNode[] = []; - addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(20)); + addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(HEADER_OFFSET + 0)); expect(previousTNodes).toEqual([ - matchTNode({index: 20, insertBeforeIndex: null}), + matchTNode({index: HEADER_OFFSET + 0, insertBeforeIndex: null}), ]); }); @@ -39,14 +40,15 @@ describe('addTNodeAndUpdateInsertBeforeIndex', () => { describe('whose index is greater than those already there', () => { it('should not update the `insertBeforeIndex` values', () => { const previousTNodes: TNode[] = [ - tPlaceholderElementNode(20), - tPlaceholderElementNode(21), + tPlaceholderElementNode(HEADER_OFFSET + 0), + tPlaceholderElementNode(HEADER_OFFSET + 1), ]; - addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(22)); + addTNodeAndUpdateInsertBeforeIndex( + previousTNodes, tPlaceholderElementNode(HEADER_OFFSET + 2)); expect(previousTNodes).toEqual([ - matchTNode({index: 20, insertBeforeIndex: null}), - matchTNode({index: 21, insertBeforeIndex: null}), - matchTNode({index: 22, insertBeforeIndex: null}), + matchTNode({index: HEADER_OFFSET + 0, insertBeforeIndex: null}), + matchTNode({index: HEADER_OFFSET + 1, insertBeforeIndex: null}), + matchTNode({index: HEADER_OFFSET + 2, insertBeforeIndex: null}), ]); }); }); @@ -54,44 +56,47 @@ describe('addTNodeAndUpdateInsertBeforeIndex', () => { describe('whose index is smaller than current nodes', () => { it('should update the previous insertBeforeIndex', () => { const previousTNodes: TNode[] = [ - tPlaceholderElementNode(21), - tPlaceholderElementNode(22), + tPlaceholderElementNode(HEADER_OFFSET + 1), + tPlaceholderElementNode(HEADER_OFFSET + 2), ]; - addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(20)); + addTNodeAndUpdateInsertBeforeIndex( + previousTNodes, tPlaceholderElementNode(HEADER_OFFSET + 0)); expect(previousTNodes).toEqual([ - matchTNode({index: 21, insertBeforeIndex: 20}), - matchTNode({index: 22, insertBeforeIndex: 20}), - matchTNode({index: 20, insertBeforeIndex: null}), + matchTNode({index: HEADER_OFFSET + 1, insertBeforeIndex: HEADER_OFFSET + 0}), + matchTNode({index: HEADER_OFFSET + 2, insertBeforeIndex: HEADER_OFFSET + 0}), + matchTNode({index: HEADER_OFFSET + 0, insertBeforeIndex: null}), ]); }); it('should not update the previous insertBeforeIndex if it is already set', () => { const previousTNodes: TNode[] = [ - tPlaceholderElementNode(22, 21), - tPlaceholderElementNode(23, 21), - tPlaceholderElementNode(21), + tPlaceholderElementNode(HEADER_OFFSET + 2, HEADER_OFFSET + 1), + tPlaceholderElementNode(HEADER_OFFSET + 3, HEADER_OFFSET + 1), + tPlaceholderElementNode(HEADER_OFFSET + 1), ]; - addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(20)); + addTNodeAndUpdateInsertBeforeIndex( + previousTNodes, tPlaceholderElementNode(HEADER_OFFSET + 0)); expect(previousTNodes).toEqual([ - matchTNode({index: 22, insertBeforeIndex: 21}), - matchTNode({index: 23, insertBeforeIndex: 21}), - matchTNode({index: 21, insertBeforeIndex: 20}), - matchTNode({index: 20, insertBeforeIndex: null}), + matchTNode({index: HEADER_OFFSET + 2, insertBeforeIndex: HEADER_OFFSET + 1}), + matchTNode({index: HEADER_OFFSET + 3, insertBeforeIndex: HEADER_OFFSET + 1}), + matchTNode({index: HEADER_OFFSET + 1, insertBeforeIndex: HEADER_OFFSET + 0}), + matchTNode({index: HEADER_OFFSET + 0, insertBeforeIndex: null}), ]); }); it('should not update the previous insertBeforeIndex if it is created after', () => { const previousTNodes: TNode[] = [ - tPlaceholderElementNode(25, 20), - tPlaceholderElementNode(26, 20), - tPlaceholderElementNode(20), + tPlaceholderElementNode(HEADER_OFFSET + 5, HEADER_OFFSET + 0), + tPlaceholderElementNode(HEADER_OFFSET + 6, HEADER_OFFSET + 0), + tPlaceholderElementNode(HEADER_OFFSET + 0), ]; - addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(23)); + addTNodeAndUpdateInsertBeforeIndex( + previousTNodes, tPlaceholderElementNode(HEADER_OFFSET + 3)); expect(previousTNodes).toEqual([ - matchTNode({index: 25, insertBeforeIndex: 20}), - matchTNode({index: 26, insertBeforeIndex: 20}), - matchTNode({index: 20, insertBeforeIndex: null}), - matchTNode({index: 23, insertBeforeIndex: null}), + matchTNode({index: HEADER_OFFSET + 5, insertBeforeIndex: HEADER_OFFSET + 0}), + matchTNode({index: HEADER_OFFSET + 6, insertBeforeIndex: HEADER_OFFSET + 0}), + matchTNode({index: HEADER_OFFSET + 0, insertBeforeIndex: null}), + matchTNode({index: HEADER_OFFSET + 3, insertBeforeIndex: null}), ]); }); }); @@ -101,14 +106,14 @@ describe('addTNodeAndUpdateInsertBeforeIndex', () => { describe('whose index is greater than those already there', () => { it('should not update the `insertBeforeIndex` values', () => { const previousTNodes: TNode[] = [ - tPlaceholderElementNode(20), - tPlaceholderElementNode(21), + tPlaceholderElementNode(HEADER_OFFSET + 0), + tPlaceholderElementNode(HEADER_OFFSET + 1), ]; - addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tI18NTextNode(22)); + addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tI18NTextNode(HEADER_OFFSET + 2)); expect(previousTNodes).toEqual([ - matchTNode({index: 20, insertBeforeIndex: 22}), - matchTNode({index: 21, insertBeforeIndex: 22}), - matchTNode({index: 22, insertBeforeIndex: null}), + matchTNode({index: HEADER_OFFSET + 0, insertBeforeIndex: HEADER_OFFSET + 2}), + matchTNode({index: HEADER_OFFSET + 1, insertBeforeIndex: HEADER_OFFSET + 2}), + matchTNode({index: HEADER_OFFSET + 2, insertBeforeIndex: null}), ]); }); }); @@ -116,44 +121,44 @@ describe('addTNodeAndUpdateInsertBeforeIndex', () => { describe('whose index is smaller than current nodes', () => { it('should update the previous insertBeforeIndex', () => { const previousTNodes: TNode[] = [ - tPlaceholderElementNode(21), - tPlaceholderElementNode(22), + tPlaceholderElementNode(HEADER_OFFSET + 1), + tPlaceholderElementNode(HEADER_OFFSET + 2), ]; - addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tI18NTextNode(20)); + addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tI18NTextNode(HEADER_OFFSET + 0)); expect(previousTNodes).toEqual([ - matchTNode({index: 21, insertBeforeIndex: 20}), - matchTNode({index: 22, insertBeforeIndex: 20}), - matchTNode({index: 20, insertBeforeIndex: null}), + matchTNode({index: HEADER_OFFSET + 1, insertBeforeIndex: HEADER_OFFSET + 0}), + matchTNode({index: HEADER_OFFSET + 2, insertBeforeIndex: HEADER_OFFSET + 0}), + matchTNode({index: HEADER_OFFSET + 0, insertBeforeIndex: null}), ]); }); it('should not update the previous insertBeforeIndex if it is already set', () => { const previousTNodes: TNode[] = [ - tPlaceholderElementNode(22, 21), - tPlaceholderElementNode(23, 21), - tPlaceholderElementNode(21), + tPlaceholderElementNode(HEADER_OFFSET + 2, HEADER_OFFSET + 1), + tPlaceholderElementNode(HEADER_OFFSET + 3, HEADER_OFFSET + 1), + tPlaceholderElementNode(HEADER_OFFSET + 1), ]; - addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tI18NTextNode(20)); + addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tI18NTextNode(HEADER_OFFSET + 0)); expect(previousTNodes).toEqual([ - matchTNode({index: 22, insertBeforeIndex: 21}), - matchTNode({index: 23, insertBeforeIndex: 21}), - matchTNode({index: 21, insertBeforeIndex: 20}), - matchTNode({index: 20, insertBeforeIndex: null}), + matchTNode({index: HEADER_OFFSET + 2, insertBeforeIndex: HEADER_OFFSET + 1}), + matchTNode({index: HEADER_OFFSET + 3, insertBeforeIndex: HEADER_OFFSET + 1}), + matchTNode({index: HEADER_OFFSET + 1, insertBeforeIndex: HEADER_OFFSET + 0}), + matchTNode({index: HEADER_OFFSET + 0, insertBeforeIndex: null}), ]); }); it('should not update the previous insertBeforeIndex if it is created after', () => { const previousTNodes: TNode[] = [ - tPlaceholderElementNode(25, 20), - tPlaceholderElementNode(26, 20), - tPlaceholderElementNode(20), + tPlaceholderElementNode(HEADER_OFFSET + 5, HEADER_OFFSET + 0), + tPlaceholderElementNode(HEADER_OFFSET + 6, HEADER_OFFSET + 0), + tPlaceholderElementNode(HEADER_OFFSET + 0), ]; - addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tI18NTextNode(23)); + addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tI18NTextNode(HEADER_OFFSET + 3)); expect(previousTNodes).toEqual([ - matchTNode({index: 25, insertBeforeIndex: 20}), - matchTNode({index: 26, insertBeforeIndex: 20}), - matchTNode({index: 20, insertBeforeIndex: 23}), - matchTNode({index: 23, insertBeforeIndex: null}), + matchTNode({index: HEADER_OFFSET + 5, insertBeforeIndex: HEADER_OFFSET + 0}), + matchTNode({index: HEADER_OFFSET + 6, insertBeforeIndex: HEADER_OFFSET + 0}), + matchTNode({index: HEADER_OFFSET + 0, insertBeforeIndex: HEADER_OFFSET + 3}), + matchTNode({index: HEADER_OFFSET + 3, insertBeforeIndex: null}), ]); }); }); @@ -162,22 +167,28 @@ describe('addTNodeAndUpdateInsertBeforeIndex', () => { describe('scenario', () => { it('should rearrange the nodes', () => { const previousTNodes: TNode[] = []; - addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(22)); - addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(28)); - addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(24)); - addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(25)); - addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tI18NTextNode(29)); - addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(23)); - addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tPlaceholderElementNode(27)); + addTNodeAndUpdateInsertBeforeIndex( + previousTNodes, tPlaceholderElementNode(HEADER_OFFSET + 2)); + addTNodeAndUpdateInsertBeforeIndex( + previousTNodes, tPlaceholderElementNode(HEADER_OFFSET + 8)); + addTNodeAndUpdateInsertBeforeIndex( + previousTNodes, tPlaceholderElementNode(HEADER_OFFSET + 4)); + addTNodeAndUpdateInsertBeforeIndex( + previousTNodes, tPlaceholderElementNode(HEADER_OFFSET + 5)); + addTNodeAndUpdateInsertBeforeIndex(previousTNodes, tI18NTextNode(HEADER_OFFSET + 9)); + addTNodeAndUpdateInsertBeforeIndex( + previousTNodes, tPlaceholderElementNode(HEADER_OFFSET + 3)); + addTNodeAndUpdateInsertBeforeIndex( + previousTNodes, tPlaceholderElementNode(HEADER_OFFSET + 7)); expect(previousTNodes).toEqual([ - matchTNode({index: 22, insertBeforeIndex: 29}), - matchTNode({index: 28, insertBeforeIndex: 24}), - matchTNode({index: 24, insertBeforeIndex: 29}), - matchTNode({index: 25, insertBeforeIndex: 29}), - matchTNode({index: 29, insertBeforeIndex: null}), - matchTNode({index: 23, insertBeforeIndex: null}), - matchTNode({index: 27, insertBeforeIndex: null}), + matchTNode({index: HEADER_OFFSET + 2, insertBeforeIndex: HEADER_OFFSET + 9}), + matchTNode({index: HEADER_OFFSET + 8, insertBeforeIndex: HEADER_OFFSET + 4}), + matchTNode({index: HEADER_OFFSET + 4, insertBeforeIndex: HEADER_OFFSET + 9}), + matchTNode({index: HEADER_OFFSET + 5, insertBeforeIndex: HEADER_OFFSET + 9}), + matchTNode({index: HEADER_OFFSET + 9, insertBeforeIndex: null}), + matchTNode({index: HEADER_OFFSET + 3, insertBeforeIndex: null}), + matchTNode({index: HEADER_OFFSET + 7, insertBeforeIndex: null}), ]); }); }); -}); \ No newline at end of file +}); diff --git a/packages/core/test/render3/i18n/i18n_parse_spec.ts b/packages/core/test/render3/i18n/i18n_parse_spec.ts index 339453a1b0..d3317471af 100644 --- a/packages/core/test/render3/i18n/i18n_parse_spec.ts +++ b/packages/core/test/render3/i18n/i18n_parse_spec.ts @@ -11,8 +11,7 @@ import {applyCreateOpCodes} from '@angular/core/src/render3/i18n/i18n_apply'; import {i18nStartFirstCreatePass} from '@angular/core/src/render3/i18n/i18n_parse'; import {getTIcu} from '@angular/core/src/render3/i18n/i18n_util'; import {I18nUpdateOpCodes, IcuType, TI18n} from '@angular/core/src/render3/interfaces/i18n'; -import {HEADER_OFFSET} from '@angular/core/src/render3/interfaces/view'; -import {expect} from '@angular/core/testing/src/testing_internal'; +import {HEADER_OFFSET, HOST} from '@angular/core/src/render3/interfaces/view'; import {matchTI18n, matchTIcu} from '../matchers'; import {matchDebug} from '../utils'; import {ViewFixture} from '../view_fixture'; @@ -26,8 +25,8 @@ describe('i18n_parse', () => { const tI18n = toT18n('some text'); expect(tI18n).toEqual(matchTI18n({ create: matchDebug([ - 'lView[22] = document.createText("some text");', - 'parent.appendChild(lView[22]);', + `lView[${HEADER_OFFSET + 2}] = document.createText("some text");`, + `parent.appendChild(lView[${HEADER_OFFSET + 2}]);`, ]), update: [] as unknown as I18nUpdateOpCodes, })); @@ -57,30 +56,30 @@ describe('i18n_parse', () => { }|after`); expect(tI18n).toEqual(matchTI18n({ create: matchDebug([ - 'lView[22] = document.createText("before|");', - 'parent.appendChild(lView[22]);', - 'lView[23] = document.createComment("ICU 20:0");', - 'parent.appendChild(lView[23]);', - 'lView[27] = document.createText("|after");', - 'parent.appendChild(lView[27]);', + `lView[${HEADER_OFFSET + 2}] = document.createText("before|");`, + `parent.appendChild(lView[${HEADER_OFFSET + 2}]);`, + `lView[${HEADER_OFFSET + 3}] = document.createComment("ICU ${HEADER_OFFSET + 0}:0");`, + `parent.appendChild(lView[${HEADER_OFFSET + 3}]);`, + `lView[${HEADER_OFFSET + 7}] = document.createText("|after");`, + `parent.appendChild(lView[${HEADER_OFFSET + 7}]);`, ]), update: matchDebug([ - 'if (mask & 0b1) { icuSwitchCase(23, `${lView[i-1]}`); }', + `if (mask & 0b1) { icuSwitchCase(${HEADER_OFFSET + 3}, \`\${lView[i-1]}\`); }`, ]) })); - expect(getTIcu(fixture.tView, 23)).toEqual(matchTIcu({ + expect(getTIcu(fixture.tView, HEADER_OFFSET + 3)).toEqual(matchTIcu({ type: IcuType.select, - anchorIdx: 23, - currentCaseLViewIndex: 24, + anchorIdx: HEADER_OFFSET + 3, + currentCaseLViewIndex: HEADER_OFFSET + 4, cases: ['A', 'other'], create: [ matchDebug([ - 'lView[25] = document.createTextNode("caseA")', - '(lView[0] as Element).appendChild(lView[25])' + `lView[${HEADER_OFFSET + 5}] = document.createTextNode("caseA")`, + `(lView[${HOST}] as Element).appendChild(lView[${HEADER_OFFSET + 5}])` ]), matchDebug([ - 'lView[26] = document.createTextNode("otherCase")', - '(lView[0] as Element).appendChild(lView[26])', + `lView[${HEADER_OFFSET + 6}] = document.createTextNode("otherCase")`, + `(lView[${HOST}] as Element).appendChild(lView[${HEADER_OFFSET + 6}])`, ]) ], update: [ @@ -88,29 +87,32 @@ describe('i18n_parse', () => { matchDebug([]), ], remove: [ - matchDebug(['remove(lView[25])']), - matchDebug(['remove(lView[26])']), + matchDebug([`remove(lView[${HEADER_OFFSET + 5}])`]), + matchDebug([`remove(lView[${HEADER_OFFSET + 6}])`]), ], })); fixture.apply(() => { applyCreateOpCodes(fixture.lView, tI18n.create, fixture.host, null); - expect(fixture.host.innerHTML).toEqual('before||after'); + expect(fixture.host.innerHTML).toEqual(`before||after`); }); fixture.apply(() => { ɵɵi18nExp('A'); - ɵɵi18nApply(0); // index 0 + HEADER_OFFSET = 20; - expect(fixture.host.innerHTML).toEqual('before|caseA|after'); + ɵɵi18nApply(0); + expect(fixture.host.innerHTML) + .toEqual(`before|caseA|after`); }); fixture.apply(() => { ɵɵi18nExp('x'); - ɵɵi18nApply(0); // index 0 + HEADER_OFFSET = 20; - expect(fixture.host.innerHTML).toEqual('before|otherCase|after'); + ɵɵi18nApply(0); + expect(fixture.host.innerHTML) + .toEqual(`before|otherCase|after`); }); fixture.apply(() => { ɵɵi18nExp('A'); - ɵɵi18nApply(0); // index 0 + HEADER_OFFSET = 20; - expect(fixture.host.innerHTML).toEqual('before|caseA|after'); + ɵɵi18nApply(0); + expect(fixture.host.innerHTML) + .toEqual(`before|caseA|after`); }); }); @@ -122,23 +124,25 @@ describe('i18n_parse', () => { }`); fixture.apply(() => { applyCreateOpCodes(fixture.lView, tI18n.create, fixture.host, null); - expect(fixture.host.innerHTML).toEqual(''); + expect(fixture.host.innerHTML).toEqual(``); }); fixture.apply(() => { ɵɵi18nExp('A'); - ɵɵi18nApply(0); // index 0 + HEADER_OFFSET = 20; - expect(fixture.host.innerHTML).toEqual('Hello world!'); + ɵɵi18nApply(0); + expect(fixture.host.innerHTML) + .toEqual(`Hello world!`); }); fixture.apply(() => { ɵɵi18nExp('x'); - ɵɵi18nApply(0); // index 0 + HEADER_OFFSET = 20; + ɵɵi18nApply(0); expect(fixture.host.innerHTML) - .toEqual('
nestedOther
'); + .toEqual(`
nestedOther
`); }); fixture.apply(() => { ɵɵi18nExp('A'); - ɵɵi18nApply(0); // index 0 + HEADER_OFFSET = 20; - expect(fixture.host.innerHTML).toEqual('Hello world!'); + ɵɵi18nApply(0); + expect(fixture.host.innerHTML) + .toEqual(`Hello world!`); }); }); @@ -170,32 +174,32 @@ describe('i18n_parse', () => { }`); expect(tI18n).toEqual(matchTI18n({ create: matchDebug([ - 'lView[24] = document.createComment("ICU 20:0");', - 'parent.appendChild(lView[24]);', + `lView[${HEADER_OFFSET + 4}] = document.createComment("ICU ${HEADER_OFFSET + 0}:0");`, + `parent.appendChild(lView[${HEADER_OFFSET + 4}]);`, ]), update: matchDebug([ - 'if (mask & 0b1) { icuSwitchCase(24, `${lView[i-1]}`); }', - 'if (mask & 0b10) { icuSwitchCase(27, `${lView[i-2]}`); }', - 'if (mask & 0b100) { icuUpdateCase(27); }', + `if (mask & 0b1) { icuSwitchCase(${HEADER_OFFSET + 4}, \`\${lView[i-1]}\`); }`, + `if (mask & 0b10) { icuSwitchCase(${HEADER_OFFSET + 7}, \`\${lView[i-2]}\`); }`, + `if (mask & 0b100) { icuUpdateCase(${HEADER_OFFSET + 7}); }`, ]), })); - expect(getTIcu(fixture.tView, 24)).toEqual(matchTIcu({ + expect(getTIcu(fixture.tView, HEADER_OFFSET + 4)).toEqual(matchTIcu({ type: IcuType.select, - anchorIdx: 24, - currentCaseLViewIndex: 25, + anchorIdx: HEADER_OFFSET + 4, + currentCaseLViewIndex: HEADER_OFFSET + 5, cases: ['A', 'other'], create: [ matchDebug([ - 'lView[26] = document.createTextNode("parentA ")', - '(lView[0] as Element).appendChild(lView[26])', - 'lView[27] = document.createComment("nested ICU 0")', - '(lView[0] as Element).appendChild(lView[27])', - 'lView[31] = document.createTextNode("!")', - '(lView[0] as Element).appendChild(lView[31])', + `lView[${HEADER_OFFSET + 6}] = document.createTextNode("parentA ")`, + `(lView[${HOST}] as Element).appendChild(lView[${HEADER_OFFSET + 6}])`, + `lView[${HEADER_OFFSET + 7}] = document.createComment("nested ICU 0")`, + `(lView[${HOST}] as Element).appendChild(lView[${HEADER_OFFSET + 7}])`, + `lView[${HEADER_OFFSET + 11}] = document.createTextNode("!")`, + `(lView[${HOST}] as Element).appendChild(lView[${HEADER_OFFSET + 11}])`, ]), matchDebug([ - 'lView[32] = document.createTextNode("parentOther")', - '(lView[0] as Element).appendChild(lView[32])', + `lView[${HEADER_OFFSET + 12}] = document.createTextNode("parentOther")`, + `(lView[${HOST}] as Element).appendChild(lView[${HEADER_OFFSET + 12}])`, ]) ], update: [ @@ -204,76 +208,79 @@ describe('i18n_parse', () => { ], remove: [ matchDebug([ - 'remove(lView[26])', - 'removeNestedICU(27)', - 'remove(lView[27])', - 'remove(lView[31])', + `remove(lView[${HEADER_OFFSET + 6}])`, + `removeNestedICU(${HEADER_OFFSET + 7})`, + `remove(lView[${HEADER_OFFSET + 7}])`, + `remove(lView[${HEADER_OFFSET + 11}])`, ]), matchDebug([ - 'remove(lView[32])', + `remove(lView[${HEADER_OFFSET + 12}])`, ]) ], })); - expect(getTIcu(fixture.tView, 27)).toEqual(matchTIcu({ + expect(getTIcu(fixture.tView, HEADER_OFFSET + 7)).toEqual(matchTIcu({ type: IcuType.select, - anchorIdx: 27, - currentCaseLViewIndex: 28, + anchorIdx: HEADER_OFFSET + 7, + currentCaseLViewIndex: HEADER_OFFSET + 8, cases: ['0', 'other'], create: [ matchDebug([ - 'lView[29] = document.createTextNode("nested0")', - '(lView[0] as Element).appendChild(lView[29])' + `lView[${HEADER_OFFSET + 9}] = document.createTextNode("nested0")`, + `(lView[${HOST}] as Element).appendChild(lView[${HEADER_OFFSET + 9}])` ]), matchDebug([ - 'lView[30] = document.createTextNode("")', - '(lView[0] as Element).appendChild(lView[30])', + `lView[${HEADER_OFFSET + 10}] = document.createTextNode("")`, + `(lView[${HOST}] as Element).appendChild(lView[${HEADER_OFFSET + 10}])`, ]) ], update: [ matchDebug([]), matchDebug([ - 'if (mask & 0b100) { (lView[30] as Text).textContent = `${lView[i-3]}`; }', + `if (mask & 0b100) { (lView[${ + HEADER_OFFSET + 10}] as Text).textContent = \`\${lView[i-3]}\`; }`, ]), ], remove: [ - matchDebug(['remove(lView[29])']), - matchDebug(['remove(lView[30])']), + matchDebug([`remove(lView[${HEADER_OFFSET + 9}])`]), + matchDebug([`remove(lView[${HEADER_OFFSET + 10}])`]), ], })); fixture.apply(() => { applyCreateOpCodes(fixture.lView, tI18n.create, fixture.host, null); - expect(fixture.host.innerHTML).toEqual(''); + expect(fixture.host.innerHTML).toEqual(``); }); fixture.apply(() => { ɵɵi18nExp('A'); ɵɵi18nExp('0'); ɵɵi18nExp('value1'); - ɵɵi18nApply(0); // index 0 + HEADER_OFFSET = 20; + ɵɵi18nApply(0); expect(fixture.host.innerHTML) - .toEqual('parentA nested0!'); + .toEqual(`parentA nested0!`); }); fixture.apply(() => { ɵɵi18nExp('A'); ɵɵi18nExp('x'); ɵɵi18nExp('value1'); - ɵɵi18nApply(0); // index 0 + HEADER_OFFSET = 20; - expect(fixture.host.innerHTML).toEqual('parentA value1!'); + ɵɵi18nApply(0); + expect(fixture.host.innerHTML) + .toEqual(`parentA value1!`); }); fixture.apply(() => { ɵɵi18nExp('x'); ɵɵi18nExp('x'); ɵɵi18nExp('value2'); - ɵɵi18nApply(0); // index 0 + HEADER_OFFSET = 20; - expect(fixture.host.innerHTML).toEqual('parentOther'); + ɵɵi18nApply(0); + expect(fixture.host.innerHTML).toEqual(`parentOther`); }); fixture.apply(() => { ɵɵi18nExp('A'); ɵɵi18nExp('A'); ɵɵi18nExp('value2'); - ɵɵi18nApply(0); // index 0 + HEADER_OFFSET = 20; - expect(fixture.host.innerHTML).toEqual('parentA value2!'); + ɵɵi18nApply(0); + expect(fixture.host.innerHTML) + .toEqual(`parentA value2!`); }); }); }); diff --git a/packages/core/test/render3/i18n/i18n_spec.ts b/packages/core/test/render3/i18n/i18n_spec.ts index 26c2be6c2a..572c5248a1 100644 --- a/packages/core/test/render3/i18n/i18n_spec.ts +++ b/packages/core/test/render3/i18n/i18n_spec.ts @@ -127,9 +127,8 @@ describe('Runtime i18n', () => { ɵɵelementEnd(); }, undefined, nbConsts, HEADER_OFFSET + index); - expect((opCodes as any).update.debug).toEqual([ - 'if (mask & 0b1) { (lView[22] as Text).textContent = `Hello ${lView[i-1]}!`; }' - ]); + expect((opCodes as any).update.debug).toEqual([`if (mask & 0b1) { (lView[${ + HEADER_OFFSET + 2}] as Text).textContent = \`Hello \${lView[i-1]}!\`; }`]); expect(opCodes).toEqual({ create: matchDebug([ @@ -137,7 +136,8 @@ describe('Runtime i18n', () => { `parent.appendChild(lView[${HEADER_OFFSET + 2}]);`, ]), update: matchDebug([ - 'if (mask & 0b1) { (lView[22] as Text).textContent = `Hello ${lView[i-1]}!`; }', + `if (mask & 0b1) { (lView[${ + HEADER_OFFSET + 2}] as Text).textContent = \`Hello \${lView[i-1]}!\`; }`, ]), }); }); @@ -158,7 +158,9 @@ describe('Runtime i18n', () => { `parent.appendChild(lView[${HEADER_OFFSET + 2}]);`, ]), update: matchDebug([ - 'if (mask & 0b11) { (lView[22] as Text).textContent = `Hello ${lView[i-1]} and ${lView[i-2]}, again ${lView[i-1]}!`; }', + `if (mask & 0b11) { (lView[${ + HEADER_OFFSET + + 2}] as Text).textContent = \`Hello \${lView[i-1]} and \${lView[i-2]}, again \${lView[i-1]}!\`; }`, ]), }); }); @@ -193,7 +195,8 @@ describe('Runtime i18n', () => { `parent.appendChild(lView[${HEADER_OFFSET + 4}]);`, ]), update: matchDebug([ - 'if (mask & 0b1) { (lView[23] as Text).textContent = `${lView[i-1]} is rendered as: `; }', + `if (mask & 0b1) { (lView[${ + HEADER_OFFSET + 3}] as Text).textContent = \`\${lView[i-1]} is rendered as: \`; }`, ]), }); @@ -249,26 +252,26 @@ describe('Runtime i18n', () => { expect(opCodes).toEqual({ create: matchDebug([ - `lView[${HEADER_OFFSET + 2}] = document.createComment("ICU 21:0");`, + `lView[${HEADER_OFFSET + 2}] = document.createComment("ICU ${HEADER_OFFSET + 1}:0");`, `parent.appendChild(lView[${HEADER_OFFSET + 2}]);`, ]), update: matchDebug([ - 'if (mask & 0b1) { icuSwitchCase(22, `${lView[i-1]}`); }', - 'if (mask & 0b1) { icuUpdateCase(22); }', + `if (mask & 0b1) { icuSwitchCase(${HEADER_OFFSET + 2}, \`\${lView[i-1]}\`); }`, + `if (mask & 0b1) { icuUpdateCase(${HEADER_OFFSET + 2}); }`, ]), }); - expect(getTIcu(tView, 22)).toEqual({ + expect(getTIcu(tView, HEADER_OFFSET + 2)).toEqual({ type: 1, - currentCaseLViewIndex: 23, - anchorIdx: 22, + currentCaseLViewIndex: HEADER_OFFSET + 3, + anchorIdx: HEADER_OFFSET + 2, cases: ['0', '1', 'other'], create: [ matchDebug([ `lView[${HEADER_OFFSET + 4}] = document.createTextNode("no ")`, `(lView[${HEADER_OFFSET + 0}] as Element).appendChild(lView[${HEADER_OFFSET + 4}])`, - 'lView[25] = document.createElement("b")', + `lView[${HEADER_OFFSET + 5}] = document.createElement("b")`, `(lView[${HEADER_OFFSET + 0}] as Element).appendChild(lView[${HEADER_OFFSET + 5}])`, - '(lView[25] as Element).setAttribute("title", "none")', + `(lView[${HEADER_OFFSET + 5}] as Element).setAttribute("title", "none")`, `lView[${HEADER_OFFSET + 6}] = document.createTextNode("emails")`, `(lView[${HEADER_OFFSET + 5}] as Element).appendChild(lView[${HEADER_OFFSET + 6}])`, `lView[${HEADER_OFFSET + 7}] = document.createTextNode("!")`, @@ -277,41 +280,43 @@ describe('Runtime i18n', () => { matchDebug([ `lView[${HEADER_OFFSET + 8}] = document.createTextNode("one ")`, `(lView[${HEADER_OFFSET + 0}] as Element).appendChild(lView[${HEADER_OFFSET + 8}])`, - 'lView[29] = document.createElement("i")', + `lView[${HEADER_OFFSET + 9}] = document.createElement("i")`, `(lView[${HEADER_OFFSET + 0}] as Element).appendChild(lView[${HEADER_OFFSET + 9}])`, - 'lView[30] = document.createTextNode("email")', - '(lView[29] as Element).appendChild(lView[30])', + `lView[${HEADER_OFFSET + 10}] = document.createTextNode("email")`, + `(lView[${HEADER_OFFSET + 9}] as Element).appendChild(lView[${HEADER_OFFSET + 10}])`, ]), matchDebug([ - 'lView[31] = document.createTextNode("")', - '(lView[20] as Element).appendChild(lView[31])', - 'lView[32] = document.createElement("span")', - '(lView[20] as Element).appendChild(lView[32])', - 'lView[33] = document.createTextNode("emails")', - '(lView[32] as Element).appendChild(lView[33])', + `lView[${HEADER_OFFSET + 11}] = document.createTextNode("")`, + `(lView[${HEADER_OFFSET + 0}] as Element).appendChild(lView[${HEADER_OFFSET + 11}])`, + `lView[${HEADER_OFFSET + 12}] = document.createElement("span")`, + `(lView[${HEADER_OFFSET + 0}] as Element).appendChild(lView[${HEADER_OFFSET + 12}])`, + `lView[${HEADER_OFFSET + 13}] = document.createTextNode("emails")`, + `(lView[${HEADER_OFFSET + 12}] as Element).appendChild(lView[${HEADER_OFFSET + 13}])`, ]), ], remove: [ matchDebug([ - 'remove(lView[24])', - 'remove(lView[25])', - 'remove(lView[27])', + `remove(lView[${HEADER_OFFSET + 4}])`, + `remove(lView[${HEADER_OFFSET + 5}])`, + `remove(lView[${HEADER_OFFSET + 7}])`, ]), matchDebug([ - 'remove(lView[28])', - 'remove(lView[29])', + `remove(lView[${HEADER_OFFSET + 8}])`, + `remove(lView[${HEADER_OFFSET + 9}])`, ]), matchDebug([ - 'remove(lView[31])', - 'remove(lView[32])', + `remove(lView[${HEADER_OFFSET + 11}])`, + `remove(lView[${HEADER_OFFSET + 12}])`, ]), ], update: [ matchDebug([]), matchDebug([]), matchDebug([ - 'if (mask & 0b1) { (lView[31] as Text).textContent = `${lView[i-1]} `; }', - 'if (mask & 0b10) { (lView[32] as Element).setAttribute(\'title\', `${lView[i-2]}`); }', + `if (mask & 0b1) { (lView[${ + HEADER_OFFSET + 11}] as Text).textContent = \`\${lView[i-1]} \`; }`, + `if (mask & 0b10) { (lView[${ + HEADER_OFFSET + 12}] as Element).setAttribute('title', \`\${lView[i-2]}\`); }`, ]), ] }); @@ -336,19 +341,19 @@ describe('Runtime i18n', () => { expect(opCodes).toEqual({ create: matchDebug([ - `lView[${HEADER_OFFSET + 2}] = document.createComment("ICU 21:0");`, + `lView[${HEADER_OFFSET + 2}] = document.createComment("ICU ${HEADER_OFFSET + 1}:0");`, `parent.appendChild(lView[${HEADER_OFFSET + 2}]);`, ]), update: matchDebug([ - 'if (mask & 0b1) { icuSwitchCase(22, `${lView[i-1]}`); }', - 'if (mask & 0b10) { icuSwitchCase(26, `${lView[i-2]}`); }', - 'if (mask & 0b1) { icuUpdateCase(22); }', + `if (mask & 0b1) { icuSwitchCase(${HEADER_OFFSET + 2}, \`\${lView[i-1]}\`); }`, + `if (mask & 0b10) { icuSwitchCase(${HEADER_OFFSET + 6}, \`\${lView[i-2]}\`); }`, + `if (mask & 0b1) { icuUpdateCase(${HEADER_OFFSET + 2}); }`, ]), }); - expect(getTIcu(tView, 22)).toEqual({ + expect(getTIcu(tView, HEADER_OFFSET + 2)).toEqual({ type: 1, - anchorIdx: 22, - currentCaseLViewIndex: 23, + anchorIdx: HEADER_OFFSET + 2, + currentCaseLViewIndex: HEADER_OFFSET + 3, cases: ['0', 'other'], create: [ matchDebug([ @@ -358,34 +363,35 @@ describe('Runtime i18n', () => { matchDebug([ `lView[${HEADER_OFFSET + 5}] = document.createTextNode("")`, `(lView[${HEADER_OFFSET + 0}] as Element).appendChild(lView[${HEADER_OFFSET + 5}])`, - 'lView[26] = document.createComment("nested ICU 0")', + `lView[${HEADER_OFFSET + 6}] = document.createComment("nested ICU 0")`, `(lView[${HEADER_OFFSET + 0}] as Element).appendChild(lView[${HEADER_OFFSET + 6}])`, - 'lView[31] = document.createTextNode("!")', - '(lView[20] as Element).appendChild(lView[31])', + `lView[${HEADER_OFFSET + 11}] = document.createTextNode("!")`, + `(lView[${HEADER_OFFSET + 0}] as Element).appendChild(lView[${HEADER_OFFSET + 11}])`, ]), ], update: [ matchDebug([]), matchDebug([ - 'if (mask & 0b1) { (lView[25] as Text).textContent = `${lView[i-1]} `; }', + `if (mask & 0b1) { (lView[${ + HEADER_OFFSET + 5}] as Text).textContent = \`\${lView[i-1]} \`; }`, ]), ], remove: [ matchDebug([ - 'remove(lView[24])', + `remove(lView[${HEADER_OFFSET + 4}])`, ]), matchDebug([ - 'remove(lView[25])', - 'removeNestedICU(26)', - 'remove(lView[26])', - 'remove(lView[31])', + `remove(lView[${HEADER_OFFSET + 5}])`, + `removeNestedICU(${HEADER_OFFSET + 6})`, + `remove(lView[${HEADER_OFFSET + 6}])`, + `remove(lView[${HEADER_OFFSET + 11}])`, ]), ], }); - expect(tView.data[26]).toEqual({ + expect(tView.data[HEADER_OFFSET + 6]).toEqual({ type: 0, - anchorIdx: 26, - currentCaseLViewIndex: 27, + anchorIdx: HEADER_OFFSET + 6, + currentCaseLViewIndex: HEADER_OFFSET + 7, cases: ['cat', 'dog', 'other'], create: [ matchDebug([ @@ -397,8 +403,8 @@ describe('Runtime i18n', () => { `(lView[${HEADER_OFFSET + 0}] as Element).appendChild(lView[${HEADER_OFFSET + 9}])`, ]), matchDebug([ - 'lView[30] = document.createTextNode("animals")', - '(lView[20] as Element).appendChild(lView[30])', + `lView[${HEADER_OFFSET + 10}] = document.createTextNode("animals")`, + `(lView[${HEADER_OFFSET + 0}] as Element).appendChild(lView[${HEADER_OFFSET + 10}])`, ]), ], update: [ @@ -407,9 +413,9 @@ describe('Runtime i18n', () => { matchDebug([]), ], remove: [ - matchDebug(['remove(lView[28])']), - matchDebug(['remove(lView[29])']), - matchDebug(['remove(lView[30])']), + matchDebug([`remove(lView[${HEADER_OFFSET + 8}])`]), + matchDebug([`remove(lView[${HEADER_OFFSET + 9}])`]), + matchDebug([`remove(lView[${HEADER_OFFSET + 10}])`]), ], }); }); @@ -428,7 +434,8 @@ describe('Runtime i18n', () => { }, undefined, nbConsts, HEADER_OFFSET + index); expect(opCodes).toEqual(matchDebug([ - 'if (mask & 0b1) { (lView[20] as Element).setAttribute(\'title\', `Hello ${lView[i-1]}!`); }', + `if (mask & 0b1) { (lView[${ + HEADER_OFFSET + 0}] as Element).setAttribute('title', \`Hello \$\{lView[i-1]}!\`); }`, ])); }); @@ -444,14 +451,17 @@ describe('Runtime i18n', () => { }, undefined, nbConsts, HEADER_OFFSET + index); expect(opCodes).toEqual(matchDebug([ - 'if (mask & 0b11) { (lView[20] as Element).setAttribute(\'title\', `Hello ${lView[i-1]} and ${lView[i-2]}, again ${lView[i-1]}!`); }', + `if (mask & 0b11) { (lView[${ + HEADER_OFFSET + + 0}] as Element).setAttribute('title', \`Hello \$\{lView[i-1]} and \$\{lView[i-2]}, again \$\{lView[i-1]}!\`); }`, ])); }); it('for multiple attributes', () => { - const message = `Hello �0�!`; - const attrs = ['title', message, 'aria-label', message]; - const nbConsts = 2; + const message1 = `Hello �0� - �1�!`; + const message2 = `Bye �0� - �1�!`; + const attrs = ['title', message1, 'aria-label', message2]; + const nbConsts = 4; const index = 1; const opCodes = getOpCodes(attrs, () => { ɵɵelementStart(0, 'div'); @@ -460,8 +470,10 @@ describe('Runtime i18n', () => { }, undefined, nbConsts, HEADER_OFFSET + index); expect(opCodes).toEqual(matchDebug([ - 'if (mask & 0b1) { (lView[20] as Element).setAttribute(\'title\', `Hello ${lView[i-1]}!`); }', - 'if (mask & 0b1) { (lView[20] as Element).setAttribute(\'aria-label\', `Hello ${lView[i-1]}!`); }', + `if (mask & 0b11) { (lView[${HEADER_OFFSET + 0}] as Element).` + + 'setAttribute(\'title\', `Hello ${lView[i-1]} - ${lView[i-2]}!`); }', + `if (mask & 0b1100) { (lView[${HEADER_OFFSET + 0}] as Element).` + + 'setAttribute(\'aria-label\', `Bye ${lView[i-3]} - ${lView[i-4]}!`); }', ])); }); }); @@ -702,8 +714,10 @@ describe('Runtime i18n', () => { ], })); expect(ti18n.update).toEqual(matchDebug([ - 'if (mask & 0b1) { (lView[50] as Text).textContent = `${lView[i-1]} `; }', - 'if (mask & 0b10) { (lView[51] as Text).textContent = `${lView[i-2]}`; }' + `if (mask & 0b1) { (lView[${ + HEADER_OFFSET + 30}] as Text).textContent = \`\${lView[i-1]} \`; }`, + `if (mask & 0b10) { (lView[${ + HEADER_OFFSET + 31}] as Text).textContent = \`\${lView[i-2]}\`; }` ])); const lViewDebug = fixture.lView.debug!; expect(lViewDebug.template).toEqual('
{{?}}{{?}}!
'); @@ -714,16 +728,16 @@ describe('Runtime i18n', () => { fixture.tView, 0, fixture.lView, HEADER_OFFSET + 1, 'Hello �*2:1�World�/*2:1�!', -1); const ti18n = fixture.tView.data[HEADER_OFFSET + 1] as TI18n; expect(ti18n.create.debug).toEqual([ - 'lView[50] = document.createText("Hello ");', - 'parent.appendChild(lView[50]);', - 'lView[51] = document.createText("!");', - 'parent.appendChild(lView[51]);', + `lView[${HEADER_OFFSET + 30}] = document.createText("Hello ");`, + `parent.appendChild(lView[${HEADER_OFFSET + 30}]);`, + `lView[${HEADER_OFFSET + 31}] = document.createText("!");`, + `parent.appendChild(lView[${HEADER_OFFSET + 31}]);`, ]); // Leave behind `Placeholder` to be picked up by `TNode` creation. // It should insert itself in front of "!" expect(fixture.tView.data[HEADER_OFFSET + 2]).toEqual(matchTNode({ type: TNodeType.Placeholder, - insertBeforeIndex: 51, + insertBeforeIndex: HEADER_OFFSET + 31, })); }); }); diff --git a/packages/core/test/render3/imported_renderer2.ts b/packages/core/test/render3/imported_renderer2.ts index 51a4854739..1f99c0760f 100644 --- a/packages/core/test/render3/imported_renderer2.ts +++ b/packages/core/test/render3/imported_renderer2.ts @@ -21,11 +21,11 @@ export class SimpleDomEventsPlugin extends EventManagerPlugin { super(doc); } - supports(eventName: string): boolean { + override supports(eventName: string): boolean { return true; } - addEventListener(element: HTMLElement, eventName: string, handler: Function): Function { + override addEventListener(element: HTMLElement, eventName: string, handler: Function): Function { let callback: EventListener = handler as EventListener; element.addEventListener(eventName, callback, false); return () => this.removeEventListener(element, eventName, callback); diff --git a/packages/core/test/render3/instructions/lview_debug_spec.ts b/packages/core/test/render3/instructions/lview_debug_spec.ts index 56219550e3..e055c3ec80 100644 --- a/packages/core/test/render3/instructions/lview_debug_spec.ts +++ b/packages/core/test/render3/instructions/lview_debug_spec.ts @@ -13,7 +13,7 @@ import {ɵɵelement, ɵɵelementEnd, ɵɵelementStart} from '@angular/core/src/r import {TNodeDebug} from '@angular/core/src/render3/instructions/lview_debug'; import {createTNode, createTView} from '@angular/core/src/render3/instructions/shared'; import {TNodeType} from '@angular/core/src/render3/interfaces/node'; -import {LView, LViewDebug, TView, TViewType} from '@angular/core/src/render3/interfaces/view'; +import {HEADER_OFFSET, LView, LViewDebug, TView, TViewType} from '@angular/core/src/render3/interfaces/view'; import {enterView, leaveView} from '@angular/core/src/render3/state'; import {insertTStylingBinding} from '@angular/core/src/render3/styling/style_binding_list'; import {getComponentLView} from '@angular/core/src/render3/util/discovery_utils'; @@ -242,7 +242,7 @@ describe('lView_debug', () => { cumulativeBloom: jasmine.anything(), providers: [MyChild.ɵdir], viewProviders: [], - parentInjectorIndex: 22, + parentInjectorIndex: HEADER_OFFSET + 2, }); }); }); diff --git a/packages/core/test/render3/instructions/styling_spec.ts b/packages/core/test/render3/instructions/styling_spec.ts index 2e5abdf4ab..6e64cdab19 100644 --- a/packages/core/test/render3/instructions/styling_spec.ts +++ b/packages/core/test/render3/instructions/styling_spec.ts @@ -17,7 +17,6 @@ import {getNativeByIndex} from '@angular/core/src/render3/util/view_utils'; import {keyValueArraySet} from '@angular/core/src/util/array_utils'; import {ngDevModeResetPerfCounters} from '@angular/core/src/util/ng_dev_mode'; import {getElementClasses, getElementStyles} from '@angular/core/testing/src/styling'; -import {expect} from '@angular/core/testing/src/testing_internal'; import {clearFirstUpdatePass, enterViewWithOneDiv, rewindBindingIndex} from './shared_spec'; diff --git a/packages/core/test/render3/interfaces/node_spec.ts b/packages/core/test/render3/interfaces/node_spec.ts index 8107af523c..d00cd3b6a2 100644 --- a/packages/core/test/render3/interfaces/node_spec.ts +++ b/packages/core/test/render3/interfaces/node_spec.ts @@ -25,4 +25,4 @@ describe('node interfaces', () => { .toEqual('Element|Container|ElementContainer|Projection|IcuContainer'); }); }); -}); \ No newline at end of file +}); diff --git a/packages/core/test/render3/is_shape_of.ts b/packages/core/test/render3/is_shape_of.ts index 7248ccbd1f..babdb59211 100644 --- a/packages/core/test/render3/is_shape_of.ts +++ b/packages/core/test/render3/is_shape_of.ts @@ -199,4 +199,4 @@ export function isDOMElement(obj: any): obj is Element { */ export function isDOMText(obj: any): obj is Text { return obj instanceof Text; -} \ No newline at end of file +} diff --git a/packages/core/test/render3/is_shape_of_spec.ts b/packages/core/test/render3/is_shape_of_spec.ts index 43818a396d..b757cffb7e 100644 --- a/packages/core/test/render3/is_shape_of_spec.ts +++ b/packages/core/test/render3/is_shape_of_spec.ts @@ -34,4 +34,4 @@ describe('isShapeOf', () => { expect(isShapeOf({required: true, extra: 'is ok'}, {required: true, missing: true})) .toBeFalse(); }); -}); \ No newline at end of file +}); diff --git a/packages/core/test/render3/jit/declare_classmetadata_spec.ts b/packages/core/test/render3/jit/declare_classmetadata_spec.ts new file mode 100644 index 0000000000..69ac25e5b9 --- /dev/null +++ b/packages/core/test/render3/jit/declare_classmetadata_spec.ts @@ -0,0 +1,81 @@ +/** + * @license + * 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 + */ + +import {Injectable, Input, Type, ɵɵngDeclareClassMetadata} from '@angular/core'; + +interface Decorator { + type: any; + args?: any[]; +} + +interface CtorParameter { + type: any; + decorators?: Decorator[]; +} + +interface WithMetadata extends Type { + decorators?: Decorator[]; + ctorParameters?: () => CtorParameter[]; + propDecorators?: {[field: string]: Decorator[]}; +} + +describe('class metadata declaration jit compilation', () => { + it('should attach class decorators', () => { + const TestClass: WithMetadata = class TestClass {}; + ɵɵngDeclareClassMetadata({ + type: TestClass, + decorators: [{ + type: Injectable, + args: [], + }], + }); + + expect(TestClass.decorators!.length).toBe(1); + expect(TestClass.decorators![0].type).toBe(Injectable); + expect(TestClass.propDecorators).toBeUndefined(); + expect(TestClass.ctorParameters).toBeUndefined(); + }); + + it('should attach property decorators', () => { + const TestClass: WithMetadata = class TestClass {}; + ɵɵngDeclareClassMetadata({ + type: TestClass, + decorators: [{ + type: Injectable, + args: [], + }], + propDecorators: { + test: [{type: Input, args: []}], + }, + }); + + expect(TestClass.decorators!.length).toBe(1); + expect(TestClass.decorators![0].type).toBe(Injectable); + expect(TestClass.propDecorators).toEqual({ + test: [{type: Input, args: []}], + }); + expect(TestClass.ctorParameters).toBeUndefined(); + }); + + it('should attach constructor parameters', () => { + const TestClass: WithMetadata = class TestClass {}; + ɵɵngDeclareClassMetadata({ + type: TestClass, + decorators: [{ + type: Injectable, + args: [], + }], + ctorParameters: () => [{type: String}], + }); + + expect(TestClass.decorators!.length).toBe(1); + expect(TestClass.decorators![0].type).toBe(Injectable); + expect(TestClass.propDecorators).toBeUndefined(); + expect(TestClass.ctorParameters!()).toEqual([{type: String}]); + }); +}); diff --git a/packages/core/test/render3/jit/declare_factory_spec.ts b/packages/core/test/render3/jit/declare_factory_spec.ts index 29c4f3a4bd..c3bf765a8d 100644 --- a/packages/core/test/render3/jit/declare_factory_spec.ts +++ b/packages/core/test/render3/jit/declare_factory_spec.ts @@ -52,7 +52,7 @@ class DependingClass { } class ChildClass extends DependingClass { - static ɵfac = + static override ɵfac = ɵɵngDeclareFactory({type: ChildClass, deps: null, target: ɵɵFactoryTarget.Injectable}); } diff --git a/packages/core/test/render3/jit/declare_injectable_spec.ts b/packages/core/test/render3/jit/declare_injectable_spec.ts new file mode 100644 index 0000000000..f4d0b312a7 --- /dev/null +++ b/packages/core/test/render3/jit/declare_injectable_spec.ts @@ -0,0 +1,157 @@ +/** + * @license + * 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 + */ + +import {forwardRef, InjectionToken, Injector, ɵcreateInjector, ɵsetCurrentInjector, ɵɵdefineInjector, ɵɵInjectableDeclaration, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule} from '@angular/core'; + +describe('Injectable declaration jit compilation', () => { + let previousInjector: Injector|null|undefined; + beforeEach(() => previousInjector = ɵsetCurrentInjector(ɵcreateInjector(TestInjector))); + afterEach(() => ɵsetCurrentInjector(previousInjector)); + + it('should compile a minimal injectable declaration that delegates to `ɵfac`', () => { + const provider = Minimal.ɵprov as ɵɵInjectableDeclaration; + expect((provider.token as any).name).toEqual('Minimal'); + expect(provider.factory).toBe(Minimal.ɵfac); + const instance = provider.factory(); + expect(instance).toBeInstanceOf(Minimal); + }); + + it('should compile a simple `useClass` injectable declaration', () => { + const provider = UseClass.ɵprov as ɵɵInjectableDeclaration; + expect((provider.token as any).name).toEqual('UseClass'); + const instance = provider.factory(); + expect(instance).toBeInstanceOf(UseClass); + }); + + it('should compile a simple `useFactory` injectable declaration', () => { + const provider = UseFactory.ɵprov as ɵɵInjectableDeclaration; + expect((provider.token as any).name).toEqual('UseFactory'); + const instance = provider.factory(); + expect(instance).toBeInstanceOf(UseFactory); + expect(instance.msg).toEqual('from factory'); + }); + + it('should compile a simple `useValue` injectable declaration', () => { + const provider = UseValue.ɵprov as ɵɵInjectableDeclaration; + expect((provider.token as any).name).toEqual('UseValue'); + const instance = provider.factory(); + expect(instance).toEqual('a value'); + }); + + it('should compile a simple `useExisting` injectable declaration', () => { + const provider = UseExisting.ɵprov as ɵɵInjectableDeclaration; + expect((provider.token as any).name).toEqual('UseExisting'); + const instance = provider.factory(); + expect(instance).toEqual('existing'); + }); + + it('should compile a `useClass` injectable declaration with dependencies', () => { + const provider = DependingClass.ɵprov as ɵɵInjectableDeclaration; + expect((provider.token as any).name).toEqual('DependingClass'); + const instance = provider.factory(); + expect(instance).toBeInstanceOf(DependingClass); + expect(instance.testClass).toBeInstanceOf(UseClass); + }); + + it('should compile a `useFactory` injectable declaration with dependencies', () => { + const provider = DependingFactory.ɵprov as ɵɵInjectableDeclaration; + expect((provider.token as any).name).toEqual('DependingFactory'); + const instance = provider.factory(); + expect(instance).toBeInstanceOf(DependingFactory); + expect(instance.testClass).toBeInstanceOf(UseClass); + }); + + it('should unwrap a `ForwardRef` `useClass` injectable declaration', () => { + class TestClass { + static ɵprov = ɵɵngDeclareInjectable({ + type: TestClass, + useClass: forwardRef(function() { + return FutureClass; + }) + }); + } + class FutureClass { + static ɵfac = () => new FutureClass(); + } + const provider = TestClass.ɵprov as ɵɵInjectableDeclaration; + const instance = provider.factory(); + expect(instance).toBeInstanceOf(FutureClass); + }); + + it('should unwrap a `ForwardRef` `providedIn` injectable declaration', () => { + const expected = {}; + class TestClass { + static ɵprov = ɵɵngDeclareInjectable({ + type: TestClass, + providedIn: forwardRef(() => FutureModule), + useValue: expected, + }); + } + class FutureModule { + static ɵinj = ɵɵngDeclareInjector({type: FutureModule}); + } + + const injector = ɵcreateInjector(FutureModule); + const actual = injector.get(TestClass); + expect(actual).toBe(expected); + }); +}); + +class Minimal { + static ɵfac = () => new Minimal(); + static ɵprov = ɵɵngDeclareInjectable({type: Minimal}); +} + +class UseClass { + static ɵprov = ɵɵngDeclareInjectable({type: UseClass, useClass: UseClass}); +} + +class UseFactory { + constructor(readonly msg: string) {} + static ɵprov = + ɵɵngDeclareInjectable({type: UseFactory, useFactory: () => new UseFactory('from factory')}); +} + +class UseValue { + constructor(readonly msg: string) {} + static ɵprov = ɵɵngDeclareInjectable({type: UseValue, useValue: 'a value'}); +} + +const UseExistingToken = new InjectionToken('UseExistingToken'); + +class UseExisting { + static ɵprov = ɵɵngDeclareInjectable({type: UseExisting, useExisting: UseExistingToken}); +} + +class DependingClass { + constructor(readonly testClass: UseClass) {} + static ɵprov = ɵɵngDeclareInjectable( + {type: DependingClass, useClass: DependingClass, deps: [{token: UseClass}]}); +} + +class DependingFactory { + constructor(readonly testClass: UseClass) {} + static ɵprov = ɵɵngDeclareInjectable({ + type: DependingFactory, + useFactory: (dep: UseClass) => new DependingFactory(dep), + deps: [{token: UseClass}] + }); +} + +class TestInjector { + static ɵinj = ɵɵdefineInjector({ + providers: [ + UseClass, + UseFactory, + UseValue, + UseExisting, + DependingClass, + {provide: UseExistingToken, useValue: 'existing'}, + ], + }); +} diff --git a/packages/core/test/render3/jit/declare_ng_module_spec.ts b/packages/core/test/render3/jit/declare_ng_module_spec.ts index 8463a747e0..a15f0671d0 100644 --- a/packages/core/test/render3/jit/declare_ng_module_spec.ts +++ b/packages/core/test/render3/jit/declare_ng_module_spec.ts @@ -116,4 +116,4 @@ function expectNgModuleDef( function unwrap(values: Type[]|(() => Type[])): Type[] { return typeof values === 'function' ? values() : values; -} \ No newline at end of file +} diff --git a/packages/core/test/render3/jit_environment_spec.ts b/packages/core/test/render3/jit_environment_spec.ts index e3c12a83eb..9e08effdfa 100644 --- a/packages/core/test/render3/jit_environment_spec.ts +++ b/packages/core/test/render3/jit_environment_spec.ts @@ -14,6 +14,7 @@ import {angularCoreEnv} from '../../src/render3/jit/environment'; const INTERFACE_EXCEPTIONS = new Set([ 'ɵɵComponentDeclaration', 'ɵɵDirectiveDeclaration', + 'ɵɵInjectableDeclaration', 'ɵɵInjectorDeclaration', 'ɵɵInjectorDef', 'ɵɵNgModuleDeclaration', @@ -22,14 +23,24 @@ const INTERFACE_EXCEPTIONS = new Set([ 'ModuleWithProviders', ]); +/** + * The following symbols are only referenced from AOT compilation outputs so are allowed to be + * omitted from the JIT environment. + */ +const AOT_ONLY = new Set([ + 'ɵsetClassMetadata', +]); + /** * The following symbols are only referenced from partial declaration compilation outputs, which * will never be emitted by the JIT compiler so are allowed to be omitted from the JIT environment. */ const PARTIAL_ONLY = new Set([ 'ɵɵngDeclareDirective', + 'ɵɵngDeclareClassMetadata', 'ɵɵngDeclareComponent', 'ɵɵngDeclareFactory', + 'ɵɵngDeclareInjectable', 'ɵɵngDeclareInjector', 'ɵɵngDeclareNgModule', 'ɵɵngDeclarePipe', @@ -50,7 +61,9 @@ describe('r3 jit environment', () => { // A few such properties are string constants. Ignore them, and focus on ExternalReferences. .filter(isExternalReference) // Some references are to interface types. Only take properties which have runtime values. - .filter(sym => !INTERFACE_EXCEPTIONS.has(sym.name) && !PARTIAL_ONLY.has(sym.name)) + .filter( + sym => !INTERFACE_EXCEPTIONS.has(sym.name) && !AOT_ONLY.has(sym.name) && + !PARTIAL_ONLY.has(sym.name)) .forEach(sym => { // Assert that angularCoreEnv has a reference to the runtime symbol. expect(angularCoreEnv.hasOwnProperty(sym.name)) diff --git a/packages/core/test/render3/matchers.ts b/packages/core/test/render3/matchers.ts index 8fefab7515..8b6e7e6fec 100644 --- a/packages/core/test/render3/matchers.ts +++ b/packages/core/test/render3/matchers.ts @@ -252,4 +252,4 @@ export function matchI18nMutableOpCodes(expectedMutableOpCodes: string[]): }; return matcher; -} \ No newline at end of file +} diff --git a/packages/core/test/render3/matchers_spec.ts b/packages/core/test/render3/matchers_spec.ts index 01964b9140..88a6c024e0 100644 --- a/packages/core/test/render3/matchers_spec.ts +++ b/packages/core/test/render3/matchers_spec.ts @@ -93,4 +93,4 @@ describe('render3 matchers', () => { expect(matcher.jasmineToString!()).toEqual(`[#TEXT: "myText" != #TEXT: "other text"]`); }); }); -}); \ No newline at end of file +}); diff --git a/packages/core/test/render3/pipe_spec.ts b/packages/core/test/render3/pipe_spec.ts index 4cf1f8e841..9e0a2a1312 100644 --- a/packages/core/test/render3/pipe_spec.ts +++ b/packages/core/test/render3/pipe_spec.ts @@ -107,7 +107,7 @@ describe('pipe', () => { transform() { return this.sayHelloService.getHello(); } - static ɵfac = (t?: any) => ɵɵgetInheritedFactory(t || SayHelloPipe)(SayHelloPipe); + static override ɵfac = (t?: any) => ɵɵgetInheritedFactory(t || SayHelloPipe)(SayHelloPipe); static ɵpipe = ɵɵdefinePipe({name: 'sayHello', type: SayHelloPipe, pure: true}); } diff --git a/packages/core/test/render3/providers_spec.ts b/packages/core/test/render3/providers_spec.ts index 82d505b664..921e2c5b82 100644 --- a/packages/core/test/render3/providers_spec.ts +++ b/packages/core/test/render3/providers_spec.ts @@ -1293,11 +1293,11 @@ describe('providers', () => { @addFoo() class Parent extends GrandParent { - static ɵfac = function Parent_Factory() {}; + static override ɵfac = function Parent_Factory() {}; } class Child extends Parent { - static ɵfac = function Child_Factory() {}; + static override ɵfac = function Child_Factory() {}; } expect(ɵɵgetInheritedFactory(Child).name).toBe('Parent_Factory'); @@ -1311,12 +1311,12 @@ describe('providers', () => { } class Parent extends GrandParent { - static ɵfac = function Parent_Factory() {}; + static override ɵfac = function Parent_Factory() {}; } @addFoo() class Child extends Parent { - static ɵfac = function Child_Factory() {}; + static override ɵfac = function Child_Factory() {}; } expect(ɵɵgetInheritedFactory(Child).name).toBe('Parent_Factory'); @@ -1331,11 +1331,11 @@ describe('providers', () => { } class Parent extends GrandParent { - static ɵfac = function Parent_Factory() {}; + static override ɵfac = function Parent_Factory() {}; } class Child extends Parent { - static ɵfac = function Child_Factory() {}; + static override ɵfac = function Child_Factory() {}; } expect(ɵɵgetInheritedFactory(Child).name).toBe('Parent_Factory'); @@ -1351,12 +1351,12 @@ describe('providers', () => { @addFoo() class Parent extends GrandParent { - static ɵfac = function Parent_Factory() {}; + static override ɵfac = function Parent_Factory() {}; } @addFoo() class Child extends Parent { - static ɵfac = function Child_Factory() {}; + static override ɵfac = function Child_Factory() {}; } expect(ɵɵgetInheritedFactory(Child).name).toBe('Parent_Factory'); @@ -1373,11 +1373,11 @@ describe('providers', () => { @addFoo() class Parent extends GrandParent { - static ɵfac = function Parent_Factory() {}; + static override ɵfac = function Parent_Factory() {}; } class Child extends Parent { - static ɵfac = function Child_Factory() {}; + static override ɵfac = function Child_Factory() {}; } expect(ɵɵgetInheritedFactory(Child).name).toBe('Parent_Factory'); diff --git a/packages/core/test/render3/util/attr_util_spec.ts b/packages/core/test/render3/util/attr_util_spec.ts index e8910f4875..8502b9ffd9 100644 --- a/packages/core/test/render3/util/attr_util_spec.ts +++ b/packages/core/test/render3/util/attr_util_spec.ts @@ -9,7 +9,6 @@ import {AttributeMarker} from '@angular/core/src/render3'; import {TAttributes} from '@angular/core/src/render3/interfaces/node'; import {mergeHostAttribute, mergeHostAttrs} from '@angular/core/src/render3/util/attrs_utils'; -import {describe} from '@angular/core/testing/src/testing_internal'; describe('attr_util', () => { describe('mergeHostAttribute', () => { diff --git a/packages/core/test/render3/view_fixture.ts b/packages/core/test/render3/view_fixture.ts index f330e3f76c..e7dd36706b 100644 --- a/packages/core/test/render3/view_fixture.ts +++ b/packages/core/test/render3/view_fixture.ts @@ -81,4 +81,4 @@ export class ViewFixture { this.leaveView(); } } -} \ No newline at end of file +} diff --git a/packages/core/test/sanitization/url_sanitizer_spec.ts b/packages/core/test/sanitization/url_sanitizer_spec.ts index 026dbb77c2..41330e6317 100644 --- a/packages/core/test/sanitization/url_sanitizer_spec.ts +++ b/packages/core/test/sanitization/url_sanitizer_spec.ts @@ -6,16 +6,14 @@ * found in the LICENSE file at https://angular.io/license */ -import * as t from '@angular/core/testing/src/testing_internal'; - import {_sanitizeUrl, sanitizeSrcset} from '../../src/sanitization/url_sanitizer'; { - t.describe('URL sanitizer', () => { + describe('URL sanitizer', () => { let logMsgs: string[]; let originalLog: (msg: any) => any; - t.beforeEach(() => { + beforeEach(() => { logMsgs = []; originalLog = console.warn; // Monkey patch DOM.log. console.warn = (msg: any) => logMsgs.push(msg); @@ -25,12 +23,12 @@ import {_sanitizeUrl, sanitizeSrcset} from '../../src/sanitization/url_sanitizer console.warn = originalLog; }); - t.it('reports unsafe URLs', () => { - t.expect(_sanitizeUrl('javascript:evil()')).toBe('unsafe:javascript:evil()'); - t.expect(logMsgs.join('\n')).toMatch(/sanitizing unsafe URL value/); + it('reports unsafe URLs', () => { + expect(_sanitizeUrl('javascript:evil()')).toBe('unsafe:javascript:evil()'); + expect(logMsgs.join('\n')).toMatch(/sanitizing unsafe URL value/); }); - t.describe('valid URLs', () => { + describe('valid URLs', () => { const validUrls = [ '', 'http://abc', @@ -51,11 +49,11 @@ import {_sanitizeUrl, sanitizeSrcset} from '../../src/sanitization/url_sanitizer 'data:audio/opus;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/', ]; for (const url of validUrls) { - t.it(`valid ${url}`, () => t.expect(_sanitizeUrl(url)).toEqual(url)); + it(`valid ${url}`, () => expect(_sanitizeUrl(url)).toEqual(url)); } }); - t.describe('invalid URLs', () => { + describe('invalid URLs', () => { const invalidUrls = [ 'javascript:evil()', 'JavaScript:abc', @@ -75,11 +73,11 @@ import {_sanitizeUrl, sanitizeSrcset} from '../../src/sanitization/url_sanitizer 'data:application/x-msdownload;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/', ]; for (const url of invalidUrls) { - t.it(`valid ${url}`, () => t.expect(_sanitizeUrl(url)).toMatch(/^unsafe:/)); + it(`valid ${url}`, () => expect(_sanitizeUrl(url)).toMatch(/^unsafe:/)); } }); - t.describe('valid srcsets', () => { + describe('valid srcsets', () => { const validSrcsets = [ '', 'http://angular.io/images/test.png', @@ -102,17 +100,17 @@ import {_sanitizeUrl, sanitizeSrcset} from '../../src/sanitization/url_sanitizer 'http://angular.io/images/test.png?maxage=234, http://angular.io/images/test.png?maxage=234', ]; for (const srcset of validSrcsets) { - t.it(`valid ${srcset}`, () => t.expect(sanitizeSrcset(srcset)).toEqual(srcset)); + it(`valid ${srcset}`, () => expect(sanitizeSrcset(srcset)).toEqual(srcset)); } }); - t.describe('invalid srcsets', () => { + describe('invalid srcsets', () => { const invalidSrcsets = [ 'ht:tp://angular.io/images/test.png', 'http://angular.io/images/test.png, ht:tp://angular.io/images/test.png', ]; for (const srcset of invalidSrcsets) { - t.it(`valid ${srcset}`, () => t.expect(sanitizeSrcset(srcset)).toMatch(/unsafe:/)); + it(`valid ${srcset}`, () => expect(sanitizeSrcset(srcset)).toMatch(/unsafe:/)); } }); }); diff --git a/packages/core/test/spies.ts b/packages/core/test/spies.ts deleted file mode 100644 index 557bf44fe8..0000000000 --- a/packages/core/test/spies.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * @license - * 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 - */ - -import {DomAdapter} from '@angular/common/src/dom_adapter'; -import {ElementRef} from '@angular/core'; -import {ChangeDetectorRef} from '@angular/core/src/change_detection/change_detection'; -import {SpyObject} from '@angular/core/testing/src/testing_internal'; - -export class SpyChangeDetectorRef extends SpyObject { - constructor() { - super(ChangeDetectorRef); - this.spy('detectChanges'); - this.spy('checkNoChanges'); - } -} - -export class SpyIterableDifferFactory extends SpyObject {} - -export class SpyElementRef extends SpyObject { - constructor() { - super(ElementRef); - } -} diff --git a/packages/core/test/test_bed_async_spec.ts b/packages/core/test/test_bed_async_spec.ts deleted file mode 100644 index e4f11a9080..0000000000 --- a/packages/core/test/test_bed_async_spec.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @license - * 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 - */ - -import {TestBed} from '@angular/core/testing/src/test_bed'; -import {AsyncTestCompleter, ddescribe, describe, inject, it} from '@angular/core/testing/src/testing_internal'; - -describe('TestBed with async processing', () => { - beforeEach(() => { - TestBed.resetTestingModule(); - }); - - it('should allow injecting AsyncTestCompleter', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - async.done(); - })); -}); diff --git a/packages/core/test/test_bed_spec.ts b/packages/core/test/test_bed_spec.ts index 3031801161..9bd540a2a8 100644 --- a/packages/core/test/test_bed_spec.ts +++ b/packages/core/test/test_bed_spec.ts @@ -7,10 +7,11 @@ */ import {APP_INITIALIZER, ChangeDetectorRef, Compiler, Component, Directive, ErrorHandler, Inject, Injectable, InjectionToken, Injector, Input, LOCALE_ID, ModuleWithProviders, NgModule, Optional, Pipe, Type, ViewChild, ɵsetClassMetadata as setClassMetadata, ɵɵdefineComponent as defineComponent, ɵɵdefineInjector as defineInjector, ɵɵdefineNgModule as defineNgModule, ɵɵsetNgModuleScope as setNgModuleScope, ɵɵtext as text} from '@angular/core'; -import {getTestBed, TestBed} from '@angular/core/testing/src/test_bed'; +import {getTestBed, TestBed, TestBedViewEngine} from '@angular/core/testing/src/test_bed'; import {By} from '@angular/platform-browser'; import {expect} from '@angular/platform-browser/testing/src/matchers'; import {onlyInIvy} from '@angular/private/testing'; +import {TestBedRender3} from '../testing/src/r3_test_bed'; const NAME = new InjectionToken('name'); @@ -247,6 +248,25 @@ describe('TestBed', () => { expect(hello.nativeElement).toHaveText('Hello World!'); }); + // https://github.com/angular/angular/issues/42734 + it('should override a component which is declared in an NgModule which is imported as a `ModuleWithProviders`', + () => { + // This test verifies that an overridden component that is declared in an NgModule that has + // been imported as a `ModuleWithProviders` continues to have access to the declaration scope + // of the NgModule. + TestBed.resetTestingModule(); + + const moduleWithProviders: + ModuleWithProviders = {ngModule: HelloWorldModule}; + TestBed.configureTestingModule({imports: [moduleWithProviders]}); + TestBed.overrideComponent( + HelloWorld, {set: {template: 'Overridden '}}); + + const hello = TestBed.createComponent(HelloWorld); + hello.detectChanges(); + expect(hello.nativeElement).toHaveText('Overridden Hello World!'); + }); + it('should run `APP_INITIALIZER` before accessing `LOCALE_ID` provider', () => { let locale: string = ''; @NgModule({ @@ -306,6 +326,35 @@ describe('TestBed', () => { expect(SimpleService.ngOnDestroyCalls).toBe(0); }); + it('should be able to create a fixture if a test module is reset mid-compilation', async () => { + const token = new InjectionToken('value'); + + @Component({template: 'hello {{_token}}'}) + class TestComponent { + constructor(@Inject(token) public _token: number) {} + } + + TestBed.resetTestingModule(); // Reset the state from `beforeEach`. + + function compile(tokenValue: number) { + return TestBed + .configureTestingModule({ + declarations: [TestComponent], + providers: [{provide: token, useValue: tokenValue}], + teardown: {destroyAfterEach: true} + }) + .compileComponents(); + } + + const initialCompilation = compile(1); + TestBed.resetTestingModule(); + await initialCompilation; + await compile(2); + const fixture = TestBed.createComponent(TestComponent); + fixture.detectChanges(); + expect(fixture.nativeElement).toHaveText('hello 2'); + }); + describe('module overrides using TestBed.overrideModule', () => { @Component({ selector: 'test-cmp', @@ -1284,3 +1333,199 @@ describe('TestBed', () => { expect(fixture!.nativeElement.textContent).toContain('changed'); }); }); + + +describe('TestBed module teardown', () => { + // Cast the `TestBed` to the internal data type since we're testing private APIs. + let TestBed: TestBedRender3|TestBedViewEngine; + + beforeEach(() => { + TestBed = getTestBed() as unknown as (TestBedRender3 | TestBedViewEngine); + TestBed.resetTestingModule(); + }); + + it('should not tear down the test module by default', () => { + expect(TestBed.shouldTearDownTestingModule()).toBe(false); + }); + + it('should be able to configure the teardown behavior', () => { + TestBed.configureTestingModule({teardown: {destroyAfterEach: true}}); + expect(TestBed.shouldTearDownTestingModule()).toBe(true); + }); + + it('should reset the teardown behavior back to the default when TestBed is reset', () => { + TestBed.configureTestingModule({teardown: {destroyAfterEach: true}}); + expect(TestBed.shouldTearDownTestingModule()).toBe(true); + TestBed.resetTestingModule(); + expect(TestBed.shouldTearDownTestingModule()).toBe(false); + }); + + it('should destroy test module providers when test module teardown is enabled', () => { + SimpleService.ngOnDestroyCalls = 0; + TestBed.configureTestingModule({ + providers: [SimpleService], + declarations: [GreetingCmp], + teardown: {destroyAfterEach: true} + }); + TestBed.createComponent(GreetingCmp); + + expect(SimpleService.ngOnDestroyCalls).toBe(0); + TestBed.resetTestingModule(); + expect(SimpleService.ngOnDestroyCalls).toBe(1); + }); + + it('should remove the fixture root element from the DOM when module teardown is enabled', () => { + TestBed.configureTestingModule({ + declarations: [SimpleCmp], + teardown: {destroyAfterEach: true}, + }); + const fixture = TestBed.createComponent(SimpleCmp); + const fixtureDocument = fixture.nativeElement.ownerDocument; + + expect(fixtureDocument.body.contains(fixture.nativeElement)).toBe(true); + TestBed.resetTestingModule(); + expect(fixtureDocument.body.contains(fixture.nativeElement)).toBe(false); + }); + + it('should re-throw errors that were thrown during fixture cleanup', () => { + @Component({template: ''}) + class ThrowsOnDestroy { + ngOnDestroy() { + throw Error('oh no'); + } + } + + TestBed.configureTestingModule({ + declarations: [ThrowsOnDestroy], + teardown: {destroyAfterEach: true}, + }); + TestBed.createComponent(ThrowsOnDestroy); + + const spy = spyOn(console, 'error'); + expect(() => TestBed.resetTestingModule()) + .toThrowError('1 component threw errors during cleanup'); + expect(spy).toHaveBeenCalledTimes(1); + }); + + it('should not interrupt fixture destruction if an error is thrown', () => { + @Component({template: ''}) + class ThrowsOnDestroy { + ngOnDestroy() { + throw Error('oh no'); + } + } + + TestBed.configureTestingModule({ + declarations: [ThrowsOnDestroy], + teardown: {destroyAfterEach: true}, + }); + + for (let i = 0; i < 3; i++) { + TestBed.createComponent(ThrowsOnDestroy); + } + + const spy = spyOn(console, 'error'); + expect(() => TestBed.resetTestingModule()) + .toThrowError('3 components threw errors during cleanup'); + expect(spy).toHaveBeenCalledTimes(3); + }); + + it('should re-throw errors that were thrown during module teardown by default', () => { + @Injectable() + class ThrowsOnDestroy { + ngOnDestroy() { + throw Error('oh no'); + } + } + + @Component({template: ''}) + class App { + constructor(_service: ThrowsOnDestroy) {} + } + + TestBed.configureTestingModule({ + providers: [ThrowsOnDestroy], + declarations: [App], + teardown: {destroyAfterEach: true}, + }); + TestBed.createComponent(App); + + expect(() => TestBed.resetTestingModule()).toThrowError('oh no'); + }); + + it('should be able to opt out of rethrowing of errors coming from module teardown', () => { + @Injectable() + class ThrowsOnDestroy { + ngOnDestroy() { + throw Error('oh no'); + } + } + + @Component({template: ''}) + class App { + constructor(_service: ThrowsOnDestroy) {} + } + + TestBed.configureTestingModule({ + providers: [ThrowsOnDestroy], + declarations: [App], + teardown: {destroyAfterEach: true, rethrowErrors: false}, + }); + TestBed.createComponent(App); + + const spy = spyOn(console, 'error'); + expect(() => TestBed.resetTestingModule()).not.toThrow(); + expect(spy).toHaveBeenCalledTimes(1); + }); + + it('should remove the styles associated with a test component when the test module is torn down', + () => { + @Component({ + template: 'Hello', + styles: [`span {color: hotpink;}`], + }) + class StyledComp1 { + } + + @Component({ + template: '
Hello
', + styles: [`div {color: red;}`], + }) + class StyledComp2 { + } + + TestBed.configureTestingModule({ + declarations: [StyledComp1, StyledComp2], + teardown: {destroyAfterEach: true}, + }); + + const fixtures = [ + TestBed.createComponent(StyledComp1), + TestBed.createComponent(StyledComp2), + ]; + const fixtureDocument = fixtures[0].nativeElement.ownerDocument; + const styleCountBefore = fixtureDocument.querySelectorAll('style').length; + + // Note that we can only assert that the behavior works as expected by checking that the + // number of stylesheets has decreased. We can't expect that they'll be zero, because there + // may by stylesheets leaking in from other tests that don't use the module teardown + // behavior. + expect(styleCountBefore).toBeGreaterThan(0); + TestBed.resetTestingModule(); + expect(fixtureDocument.querySelectorAll('style').length).toBeLessThan(styleCountBefore); + }); + + + it('should remove the fixture root element from the DOM when module teardown is enabled', () => { + TestBed.configureTestingModule({ + declarations: [SimpleCmp], + teardown: {destroyAfterEach: true}, + }); + const fixture = TestBed.createComponent(SimpleCmp); + const fixtureDocument = fixture.nativeElement.ownerDocument; + + expect(fixtureDocument.body.contains(fixture.nativeElement)).toBe(true); + TestBed.resetTestingModule(); + expect(fixtureDocument.body.contains(fixture.nativeElement)).toBe(false); + }); +}); diff --git a/packages/core/test/testability/testability_spec.ts b/packages/core/test/testability/testability_spec.ts index d3415a85e8..907e64aa2e 100644 --- a/packages/core/test/testability/testability_spec.ts +++ b/packages/core/test/testability/testability_spec.ts @@ -11,7 +11,6 @@ import {Injectable} from '@angular/core/src/di'; import {PendingMacrotask, Testability, TestabilityRegistry} from '@angular/core/src/testability/testability'; import {NgZone} from '@angular/core/src/zone/ng_zone'; import {fakeAsync, flush, tick, waitForAsync} from '@angular/core/testing'; -import {beforeEach, describe, expect, it, SpyObject} from '@angular/core/testing/src/testing_internal'; import {scheduleMicroTask} from '../../src/util/microtask'; @@ -27,10 +26,10 @@ function microTask(fn: Function): void { @Injectable() class MockNgZone extends NgZone { /** @internal */ - onUnstable: EventEmitter; + override onUnstable: EventEmitter; /** @internal */ - onStable: EventEmitter; + override onStable: EventEmitter; constructor() { super({enableLongStackTrace: false}); @@ -58,9 +57,9 @@ class MockNgZone extends NgZone { beforeEach(waitForAsync(() => { ngZone = new MockNgZone(); testability = new Testability(ngZone); - execute = new SpyObject().spy('execute'); - execute2 = new SpyObject().spy('execute'); - updateCallback = new SpyObject().spy('execute'); + execute = jasmine.createSpy('execute'); + execute2 = jasmine.createSpy('execute'); + updateCallback = jasmine.createSpy('execute'); })); describe('Pending count logic', () => { diff --git a/packages/core/test/testing_internal_spec.ts b/packages/core/test/testing_internal_spec.ts deleted file mode 100644 index b6252ad164..0000000000 --- a/packages/core/test/testing_internal_spec.ts +++ /dev/null @@ -1,144 +0,0 @@ -/** - * @license - * 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 - */ - -import {SpyObject} from '@angular/core/testing/src/testing_internal'; - -class TestObj { - prop: any; - constructor(prop: any) { - this.prop = prop; - } - someFunc(): number { - return -1; - } - someComplexFunc(a: any) { - return a; - } -} - -{ - describe('testing', () => { - describe('should respect custom equality tester', () => { - beforeEach(() => { - const equalIfMarried = (first: any, second: any) => { - return first === 'kevin' && second === 'patricia'; - }; - jasmine.addCustomEqualityTester(equalIfMarried); - }); - - it('for positive test', () => { - expect('kevin').toEqual('patricia'); - }); - - it('for negative test', () => { - expect('kevin').not.toEqual('kevin'); - }); - }); - - describe('equality', () => { - it('should structurally compare objects', () => { - const expected = new TestObj(new TestObj({'one': [1, 2]})); - const actual = new TestObj(new TestObj({'one': [1, 2]})); - const falseActual = new TestObj(new TestObj({'one': [1, 3]})); - - expect(actual).toEqual(expected); - expect(falseActual).not.toEqual(expected); - }); - }); - - describe('toEqual for Maps', () => { - it('should detect equality for same reference', () => { - const m1: Map = new Map(); - m1.set('a', 1); - expect(m1).toEqual(m1); - }); - - it('should detect equality for same content', () => { - const m1: Map = new Map(); - m1.set('a', 1); - const m2: Map = new Map(); - m2.set('a', 1); - expect(m1).toEqual(m2); - }); - - it('should detect missing entries', () => { - const m1: Map = new Map(); - m1.set('a', 1); - const m2: Map = new Map(); - expect(m1).not.toEqual(m2); - }); - - it('should detect different values', () => { - const m1: Map = new Map(); - m1.set('a', 1); - const m2: Map = new Map(); - m2.set('a', 2); - expect(m1).not.toEqual(m2); - }); - - it('should detect additional entries', () => { - const m1: Map = new Map(); - m1.set('a', 1); - const m2: Map = new Map(); - m2.set('a', 1); - m2.set('b', 2); - expect(m1).not.toEqual(m2); - }); - }); - - describe('spy objects', () => { - let spyObj: any; - - beforeEach(() => { - spyObj = new SpyObject(TestObj); - }); - - it('should return a new spy func with no calls', () => { - expect(spyObj.spy('someFunc')).not.toHaveBeenCalled(); - }); - - it('should record function calls', () => { - spyObj.spy('someFunc').and.callFake((a: any, b: any) => a + b); - - expect(spyObj.someFunc(1, 2)).toEqual(3); - expect(spyObj.spy('someFunc')).toHaveBeenCalledWith(1, 2); - }); - - it('should match multiple function calls', () => { - spyObj.spy('someFunc'); - spyObj.someFunc(1, 2); - spyObj.someFunc(3, 4); - expect(spyObj.spy('someFunc')).toHaveBeenCalledWith(1, 2); - expect(spyObj.spy('someFunc')).toHaveBeenCalledWith(3, 4); - }); - - it('should match null arguments', () => { - spyObj.spy('someFunc'); - spyObj.someFunc(null, 'hello'); - expect(spyObj.spy('someFunc')).toHaveBeenCalledWith(null, 'hello'); - }); - - it('should match using deep equality', () => { - spyObj.spy('someComplexFunc'); - spyObj.someComplexFunc([1]); - expect(spyObj.spy('someComplexFunc')).toHaveBeenCalledWith([1]); - }); - - it('should support stubs', () => { - const s = SpyObject.stub({'a': 1}, {'b': 2}); - expect(s.a()).toEqual(1); - expect(s.b()).toEqual(2); - }); - - it('should create spys for all methods', () => { - spyObj.spy('someFunc'); - expect(() => spyObj.someFunc()).not.toThrow(); - }); - }); - }); -} diff --git a/packages/core/test/view/ng_module_spec.ts b/packages/core/test/view/ng_module_spec.ts index 29daf7da35..9d762b511e 100644 --- a/packages/core/test/view/ng_module_spec.ts +++ b/packages/core/test/view/ng_module_spec.ts @@ -151,11 +151,11 @@ describe('NgModuleRef_ injector', () => { expect(ref.injector.get(Foo) instanceof Foo).toBeTruthy(); }); - it('injects an InjectableDef value', () => { + it('injects an injectable value', () => { expect(ref.injector.get(Bar) instanceof Bar).toBeTruthy(); }); - it('caches InjectableDef values', () => { + it('caches injectable values', () => { expect(ref.injector.get(Bar)).toBe(ref.injector.get(Bar)); }); diff --git a/packages/core/test/zone/ng_zone_spec.ts b/packages/core/test/zone/ng_zone_spec.ts index dd9b6cc5ad..2cfd8fe0f9 100644 --- a/packages/core/test/zone/ng_zone_spec.ts +++ b/packages/core/test/zone/ng_zone_spec.ts @@ -7,17 +7,17 @@ */ import {EventEmitter, NgZone} from '@angular/core'; -import {fakeAsync, flushMicrotasks, waitForAsync} from '@angular/core/testing'; -import {AsyncTestCompleter, beforeEach, describe, expect, inject, it, Log, xit} from '@angular/core/testing/src/testing_internal'; +import {fakeAsync, flushMicrotasks, inject, waitForAsync} from '@angular/core/testing'; +import {Log} from '@angular/core/testing/src/testing_internal'; import {browserDetection} from '@angular/platform-browser/testing/src/browser_util'; +import {global} from '../../src/util/global'; import {scheduleMicroTask} from '../../src/util/microtask'; import {getNativeRequestAnimationFrame} from '../../src/util/raf'; import {NoopNgZone} from '../../src/zone/ng_zone'; const needsLongerTimers = browserDetection.isSlow || browserDetection.isEdge; const resultTimer = 1000; -const testTimeout = browserDetection.isEdge ? 1200 : 500; // Schedules a macrotask (using a timer) function macroTask(fn: (...args: any[]) => void, timer = 1): void { // adds longer timers for passing tests in IE and Edge @@ -87,55 +87,53 @@ function runNgZoneNoLog(fn: () => any) { commonTests(); - it('should produce long stack traces', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - macroTask(() => { - let resolve: (result: any) => void; - const promise: Promise = new Promise((res) => { - resolve = res; - }); + it('should produce long stack traces', done => { + macroTask(() => { + let resolve: (result: any) => void; + const promise: Promise = new Promise((res) => { + resolve = res; + }); - _zone.run(() => { - setTimeout(() => { - setTimeout(() => { - resolve(null); - throw new Error('ccc'); - }, 0); - }, 0); - }); + _zone.run(() => { + setTimeout(() => { + setTimeout(() => { + resolve(null); + throw new Error('ccc'); + }, 0); + }, 0); + }); - promise.then((_) => { - expect(_traces.length).toBe(1); - expect(_traces[0].length).toBeGreaterThan(1); - async.done(); - }); - }); - }), testTimeout); + promise.then((_) => { + expect(_traces.length).toBe(1); + expect(_traces[0].length).toBeGreaterThan(1); + done(); + }); + }); + }); - it('should produce long stack traces (when using microtasks)', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - macroTask(() => { - let resolve: (result: any) => void; - const promise: Promise = new Promise((res) => { - resolve = res; - }); + it('should produce long stack traces (when using microtasks)', done => { + macroTask(() => { + let resolve: (result: any) => void; + const promise: Promise = new Promise((res) => { + resolve = res; + }); - _zone.run(() => { - scheduleMicroTask(() => { - scheduleMicroTask(() => { - resolve(null); - throw new Error('ddd'); - }); - }); - }); + _zone.run(() => { + scheduleMicroTask(() => { + scheduleMicroTask(() => { + resolve(null); + throw new Error('ddd'); + }); + }); + }); - promise.then((_) => { - expect(_traces.length).toBe(1); - expect(_traces[0].length).toBeGreaterThan(1); - async.done(); - }); - }); - }), testTimeout); + promise.then((_) => { + expect(_traces.length).toBe(1); + expect(_traces[0].length).toBeGreaterThan(1); + done(); + }); + }); + }); }); describe('short stack trace', () => { @@ -149,33 +147,32 @@ function runNgZoneNoLog(fn: () => any) { commonTests(); - it('should disable long stack traces', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - macroTask(() => { - let resolve: (result: any) => void; - const promise: Promise = new Promise((res) => { - resolve = res; - }); + it('should disable long stack traces', done => { + macroTask(() => { + let resolve: (result: any) => void; + const promise: Promise = new Promise((res) => { + resolve = res; + }); - _zone.run(() => { - setTimeout(() => { - setTimeout(() => { - resolve(null); - throw new Error('ccc'); - }, 0); - }, 0); - }); + _zone.run(() => { + setTimeout(() => { + setTimeout(() => { + resolve(null); + throw new Error('ccc'); + }, 0); + }, 0); + }); - promise.then((_) => { - expect(_traces.length).toBe(1); - if (_traces[0] != null) { - // some browsers don't have stack traces. - expect(_traces[0].indexOf('---')).toEqual(-1); - } - async.done(); - }); - }); - }), testTimeout); + promise.then((_) => { + expect(_traces.length).toBe(1); + if (_traces[0] != null) { + // some browsers don't have stack traces. + expect(_traces[0].indexOf('---')).toEqual(-1); + } + done(); + }); + }); + }); }); }); @@ -286,173 +283,164 @@ function commonTests() { runNgZoneNoLog(() => { expect(NgZone.isInAngularZone()).toEqual(true); }); - }, testTimeout); + }); }); describe('run', () => { - it('should return the body return value from run', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - macroTask(() => { - expect(_zone.run(() => 6)).toEqual(6); - }); + it('should return the body return value from run', done => { + macroTask(() => { + expect(_zone.run(() => 6)).toEqual(6); + }); - macroTask(() => { - async.done(); - }); - }), testTimeout); + macroTask(() => { + done(); + }); + }); - it('should return the body return value from runTask', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - macroTask(() => { - expect(_zone.runTask(() => 6)).toEqual(6); - }); + it('should return the body return value from runTask', done => { + macroTask(() => { + expect(_zone.runTask(() => 6)).toEqual(6); + }); - macroTask(() => { - async.done(); - }); - }), testTimeout); + macroTask(() => { + done(); + }); + }); - it('should call onUnstable and onMicrotaskEmpty', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - runNgZoneNoLog(() => macroTask(_log.fn('run'))); - macroTask(() => { - expect(_log.result()).toEqual('onUnstable; run; onMicrotaskEmpty; onStable'); - async.done(); - }); - }), testTimeout); + it('should call onUnstable and onMicrotaskEmpty', done => { + runNgZoneNoLog(() => macroTask(_log.fn('run'))); + macroTask(() => { + expect(_log.result()).toEqual('onUnstable; run; onMicrotaskEmpty; onStable'); + done(); + }); + }); - it('should call onStable once at the end of event', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - // The test is set up in a way that causes the zone loop to run onMicrotaskEmpty twice - // then verified that onStable is only called once at the end + it('should call onStable once at the end of event', done => { + // The test is set up in a way that causes the zone loop to run onMicrotaskEmpty twice + // then verified that onStable is only called once at the end - runNgZoneNoLog(() => macroTask(_log.fn('run'))); + runNgZoneNoLog(() => macroTask(_log.fn('run'))); - let times = 0; - _zone.onMicrotaskEmpty.subscribe({ - next: () => { - times++; - _log.add(`onMicrotaskEmpty ${times}`); - if (times < 2) { - // Scheduling a microtask causes a second digest - runNgZoneNoLog(() => { - scheduleMicroTask(() => {}); - }); - } - } - }); - - macroTask(() => { - expect(_log.result()) - .toEqual( - 'onUnstable; run; onMicrotaskEmpty; onMicrotaskEmpty 1; ' + - 'onMicrotaskEmpty; onMicrotaskEmpty 2; onStable'); - async.done(); - }, resultTimer); - }), testTimeout); - - it('should call standalone onStable', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - runNgZoneNoLog(() => macroTask(_log.fn('run'))); - - macroTask(() => { - expect(_log.result()).toEqual('onUnstable; run; onMicrotaskEmpty; onStable'); - async.done(); - }, resultTimer); - }), testTimeout); - - xit('should run subscriber listeners in the subscription zone (outside)', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - // Each subscriber fires a microtask outside the Angular zone. The test - // then verifies that those microtasks do not cause additional digests. - - let turnStart = false; - _zone.onUnstable.subscribe({ - next: () => { - if (turnStart) throw 'Should not call this more than once'; - _log.add('onUnstable'); + let times = 0; + _zone.onMicrotaskEmpty.subscribe({ + next: () => { + times++; + _log.add(`onMicrotaskEmpty ${times}`); + if (times < 2) { + // Scheduling a microtask causes a second digest + runNgZoneNoLog(() => { scheduleMicroTask(() => {}); - turnStart = true; - } + }); + } + } + }); + + macroTask(() => { + expect(_log.result()) + .toEqual( + 'onUnstable; run; onMicrotaskEmpty; onMicrotaskEmpty 1; ' + + 'onMicrotaskEmpty; onMicrotaskEmpty 2; onStable'); + done(); + }, resultTimer); + }); + + it('should call standalone onStable', done => { + runNgZoneNoLog(() => macroTask(_log.fn('run'))); + + macroTask(() => { + expect(_log.result()).toEqual('onUnstable; run; onMicrotaskEmpty; onStable'); + done(); + }, resultTimer); + }); + + xit('should run subscriber listeners in the subscription zone (outside)', done => { + // Each subscriber fires a microtask outside the Angular zone. The test + // then verifies that those microtasks do not cause additional digests. + + let turnStart = false; + _zone.onUnstable.subscribe({ + next: () => { + if (turnStart) throw 'Should not call this more than once'; + _log.add('onUnstable'); + scheduleMicroTask(() => {}); + turnStart = true; + } + }); + + let turnDone = false; + _zone.onMicrotaskEmpty.subscribe({ + next: () => { + if (turnDone) throw 'Should not call this more than once'; + _log.add('onMicrotaskEmpty'); + scheduleMicroTask(() => {}); + turnDone = true; + } + }); + + let eventDone = false; + _zone.onStable.subscribe({ + next: () => { + if (eventDone) throw 'Should not call this more than once'; + _log.add('onStable'); + scheduleMicroTask(() => {}); + eventDone = true; + } + }); + + macroTask(() => { + _zone.run(_log.fn('run')); + }); + + macroTask(() => { + expect(_log.result()).toEqual('onUnstable; run; onMicrotaskEmpty; onStable'); + done(); + }, resultTimer); + }); + + it('should run subscriber listeners in the subscription zone (inside)', done => { + runNgZoneNoLog(() => macroTask(_log.fn('run'))); + + // the only practical use-case to run a callback inside the zone is + // change detection after "onMicrotaskEmpty". That's the only case tested. + let turnDone = false; + _zone.onMicrotaskEmpty.subscribe({ + next: () => { + _log.add('onMyMicrotaskEmpty'); + if (turnDone) return; + _zone.run(() => { + scheduleMicroTask(() => {}); }); + turnDone = true; + } + }); - let turnDone = false; - _zone.onMicrotaskEmpty.subscribe({ - next: () => { - if (turnDone) throw 'Should not call this more than once'; - _log.add('onMicrotaskEmpty'); - scheduleMicroTask(() => {}); - turnDone = true; - } - }); + macroTask(() => { + expect(_log.result()) + .toEqual( + 'onUnstable; run; onMicrotaskEmpty; onMyMicrotaskEmpty; ' + + 'onMicrotaskEmpty; onMyMicrotaskEmpty; onStable'); + done(); + }, resultTimer); + }); - let eventDone = false; - _zone.onStable.subscribe({ - next: () => { - if (eventDone) throw 'Should not call this more than once'; - _log.add('onStable'); - scheduleMicroTask(() => {}); - eventDone = true; - } - }); + it('should run async tasks scheduled inside onStable outside Angular zone', done => { + runNgZoneNoLog(() => macroTask(_log.fn('run'))); - macroTask(() => { - _zone.run(_log.fn('run')); - }); + _zone.onStable.subscribe({ + next: () => { + NgZone.assertNotInAngularZone(); + _log.add('onMyTaskDone'); + } + }); - macroTask(() => { - expect(_log.result()).toEqual('onUnstable; run; onMicrotaskEmpty; onStable'); - async.done(); - }, resultTimer); - }), testTimeout); - - it('should run subscriber listeners in the subscription zone (inside)', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - runNgZoneNoLog(() => macroTask(_log.fn('run'))); - - // the only practical use-case to run a callback inside the zone is - // change detection after "onMicrotaskEmpty". That's the only case tested. - let turnDone = false; - _zone.onMicrotaskEmpty.subscribe({ - next: () => { - _log.add('onMyMicrotaskEmpty'); - if (turnDone) return; - _zone.run(() => { - scheduleMicroTask(() => {}); - }); - turnDone = true; - } - }); - - macroTask(() => { - expect(_log.result()) - .toEqual( - 'onUnstable; run; onMicrotaskEmpty; onMyMicrotaskEmpty; ' + - 'onMicrotaskEmpty; onMyMicrotaskEmpty; onStable'); - async.done(); - }, resultTimer); - }), testTimeout); - - it('should run async tasks scheduled inside onStable outside Angular zone', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - runNgZoneNoLog(() => macroTask(_log.fn('run'))); - - _zone.onStable.subscribe({ - next: () => { - NgZone.assertNotInAngularZone(); - _log.add('onMyTaskDone'); - } - }); - - macroTask(() => { - expect(_log.result()) - .toEqual('onUnstable; run; onMicrotaskEmpty; onStable; onMyTaskDone'); - async.done(); - }); - }), testTimeout); + macroTask(() => { + expect(_log.result()).toEqual('onUnstable; run; onMicrotaskEmpty; onStable; onMyTaskDone'); + done(); + }); + }); it('should call onUnstable once before a turn and onMicrotaskEmpty once after the turn', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { + done => { runNgZoneNoLog(() => { macroTask(() => { _log.add('run start'); @@ -465,33 +453,32 @@ function commonTests() { // The microtask (async) is executed after the macrotask (run) expect(_log.result()) .toEqual('onUnstable; run start; run end; async; onMicrotaskEmpty; onStable'); - async.done(); + done(); }, resultTimer); - }), testTimeout); + }); - it('should not run onUnstable and onMicrotaskEmpty for nested Zone.run', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - runNgZoneNoLog(() => { - macroTask(() => { - _log.add('start run'); - _zone.run(() => { - _log.add('nested run'); - scheduleMicroTask(_log.fn('nested run microtask')); - }); - _log.add('end run'); - }); - }); + it('should not run onUnstable and onMicrotaskEmpty for nested Zone.run', done => { + runNgZoneNoLog(() => { + macroTask(() => { + _log.add('start run'); + _zone.run(() => { + _log.add('nested run'); + scheduleMicroTask(_log.fn('nested run microtask')); + }); + _log.add('end run'); + }); + }); - macroTask(() => { - expect(_log.result()) - .toEqual( - 'onUnstable; start run; nested run; end run; nested run microtask; onMicrotaskEmpty; onStable'); - async.done(); - }, resultTimer); - }), testTimeout); + macroTask(() => { + expect(_log.result()) + .toEqual( + 'onUnstable; start run; nested run; end run; nested run microtask; onMicrotaskEmpty; onStable'); + done(); + }, resultTimer); + }); it('should not run onUnstable and onMicrotaskEmpty for nested Zone.run invoked from onMicrotaskEmpty', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { + done => { runNgZoneNoLog(() => macroTask(_log.fn('start run'))); _zone.onMicrotaskEmpty.subscribe({ @@ -506,74 +493,71 @@ function commonTests() { expect(_log.result()) .toEqual( 'onUnstable; start run; onMicrotaskEmpty; onMicrotaskEmpty:started; nested run; onMicrotaskEmpty:finished; onStable'); - async.done(); + done(); }, resultTimer); - }), testTimeout); + }); - it('should call onUnstable and onMicrotaskEmpty before and after each top-level run', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - runNgZoneNoLog(() => macroTask(_log.fn('run1'))); - runNgZoneNoLog(() => macroTask(_log.fn('run2'))); + it('should call onUnstable and onMicrotaskEmpty before and after each top-level run', done => { + runNgZoneNoLog(() => macroTask(_log.fn('run1'))); + runNgZoneNoLog(() => macroTask(_log.fn('run2'))); - macroTask(() => { - expect(_log.result()) - .toEqual( - 'onUnstable; run1; onMicrotaskEmpty; onStable; onUnstable; run2; onMicrotaskEmpty; onStable'); - async.done(); - }, resultTimer); - }), testTimeout); + macroTask(() => { + expect(_log.result()) + .toEqual( + 'onUnstable; run1; onMicrotaskEmpty; onStable; onUnstable; run2; onMicrotaskEmpty; onStable'); + done(); + }, resultTimer); + }); - it('should call onUnstable and onMicrotaskEmpty before and after each turn', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - let aResolve: (result: string) => void; - let aPromise: Promise; - let bResolve: (result: string) => void; - let bPromise: Promise; + it('should call onUnstable and onMicrotaskEmpty before and after each turn', done => { + let aResolve: (result: string) => void; + let aPromise: Promise; + let bResolve: (result: string) => void; + let bPromise: Promise; - runNgZoneNoLog(() => { - macroTask(() => { - aPromise = new Promise(res => { - aResolve = res; - }); - bPromise = new Promise(res => { - bResolve = res; - }); + runNgZoneNoLog(() => { + macroTask(() => { + aPromise = new Promise(res => { + aResolve = res; + }); + bPromise = new Promise(res => { + bResolve = res; + }); - _log.add('run start'); - aPromise.then(_log.fn('a then')); - bPromise.then(_log.fn('b then')); - }); - }); + _log.add('run start'); + aPromise.then(_log.fn('a then')); + bPromise.then(_log.fn('b then')); + }); + }); - runNgZoneNoLog(() => { - macroTask(() => { - aResolve('a'); - bResolve('b'); - }); - }); + runNgZoneNoLog(() => { + macroTask(() => { + aResolve('a'); + bResolve('b'); + }); + }); - macroTask(() => { - expect(_log.result()) - .toEqual( - 'onUnstable; run start; onMicrotaskEmpty; onStable; onUnstable; a then; b then; onMicrotaskEmpty; onStable'); - async.done(); - }, resultTimer); - }), testTimeout); + macroTask(() => { + expect(_log.result()) + .toEqual( + 'onUnstable; run start; onMicrotaskEmpty; onStable; onUnstable; a then; b then; onMicrotaskEmpty; onStable'); + done(); + }, resultTimer); + }); - it('should run a function outside of the angular zone', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - macroTask(() => { - _zone.runOutsideAngular(_log.fn('run')); - }); + it('should run a function outside of the angular zone', done => { + macroTask(() => { + _zone.runOutsideAngular(_log.fn('run')); + }); - macroTask(() => { - expect(_log.result()).toEqual('run'); - async.done(); - }); - }), testTimeout); + macroTask(() => { + expect(_log.result()).toEqual('run'); + done(); + }); + }); it('should call onUnstable and onMicrotaskEmpty when an inner microtask is scheduled from outside angular', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { + done => { let resolve: (result: string|null) => void; let promise: Promise; @@ -607,13 +591,13 @@ function commonTests() { // Third VM Turn => execute the microtask (inside angular) // No onUnstable; because we don't own the task which started the turn. 'executedMicrotask; onMicrotaskEmpty; onStable'); - async.done(); + done(); }, resultTimer); - }), testTimeout); + }); it('should call onUnstable only before executing a microtask scheduled in onMicrotaskEmpty ' + 'and not onMicrotaskEmpty after executing the task', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { + done => { runNgZoneNoLog(() => macroTask(_log.fn('run'))); let ran = false; @@ -641,13 +625,13 @@ function commonTests() { 'onUnstable; run; onMicrotaskEmpty; onMicrotaskEmpty(begin); onMicrotaskEmpty(end); ' + // Second microtaskDrain Turn => microtask enqueued from onMicrotaskEmpty 'executedMicrotask; onMicrotaskEmpty; onMicrotaskEmpty(begin); onMicrotaskEmpty(end); onStable'); - async.done(); + done(); }, resultTimer); - }), testTimeout); + }); it('should call onUnstable and onMicrotaskEmpty for a scheduleMicroTask in onMicrotaskEmpty triggered by ' + 'a scheduleMicroTask in run', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { + done => { runNgZoneNoLog(() => { macroTask(() => { _log.add('scheduleMicroTask'); @@ -679,76 +663,75 @@ function commonTests() { 'onUnstable; scheduleMicroTask; run(executeMicrotask); onMicrotaskEmpty; onMicrotaskEmpty(begin); onMicrotaskEmpty(scheduleMicroTask); onMicrotaskEmpty(end); ' + // Second VM Turn => the microtask enqueued from onMicrotaskEmpty 'onMicrotaskEmpty(executeMicrotask); onMicrotaskEmpty; onMicrotaskEmpty(begin); onMicrotaskEmpty(end); onStable'); - async.done(); + done(); }, resultTimer); - }), testTimeout); + }); - it('should execute promises scheduled in onUnstable before promises scheduled in run', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - runNgZoneNoLog(() => { - macroTask(() => { - _log.add('run start'); - resolvedPromise - .then((_) => { - _log.add('promise then'); - resolvedPromise.then(_log.fn('promise foo')); - return Promise.resolve(null); - }) - .then(_log.fn('promise bar')); - _log.add('run end'); - }); - }); + it('should execute promises scheduled in onUnstable before promises scheduled in run', done => { + runNgZoneNoLog(() => { + macroTask(() => { + _log.add('run start'); + resolvedPromise + .then((_) => { + _log.add('promise then'); + resolvedPromise.then(_log.fn('promise foo')); + return Promise.resolve(null); + }) + .then(_log.fn('promise bar')); + _log.add('run end'); + }); + }); - let donePromiseRan = false; - let startPromiseRan = false; + let donePromiseRan = false; + let startPromiseRan = false; - _zone.onUnstable.subscribe({ - next: () => { - _log.add('onUnstable(begin)'); - if (!startPromiseRan) { - _log.add('onUnstable(schedulePromise)'); - _zone.run(() => { - scheduleMicroTask(_log.fn('onUnstable(executePromise)')); - }); - startPromiseRan = true; - } - _log.add('onUnstable(end)'); - } - }); + _zone.onUnstable.subscribe({ + next: () => { + _log.add('onUnstable(begin)'); + if (!startPromiseRan) { + _log.add('onUnstable(schedulePromise)'); + _zone.run(() => { + scheduleMicroTask(_log.fn('onUnstable(executePromise)')); + }); + startPromiseRan = true; + } + _log.add('onUnstable(end)'); + } + }); - _zone.onMicrotaskEmpty.subscribe({ - next: () => { - _log.add('onMicrotaskEmpty(begin)'); - if (!donePromiseRan) { - _log.add('onMicrotaskEmpty(schedulePromise)'); - _zone.run(() => { - scheduleMicroTask(_log.fn('onMicrotaskEmpty(executePromise)')); - }); - donePromiseRan = true; - } - _log.add('onMicrotaskEmpty(end)'); - } - }); + _zone.onMicrotaskEmpty.subscribe({ + next: () => { + _log.add('onMicrotaskEmpty(begin)'); + if (!donePromiseRan) { + _log.add('onMicrotaskEmpty(schedulePromise)'); + _zone.run(() => { + scheduleMicroTask(_log.fn('onMicrotaskEmpty(executePromise)')); + }); + donePromiseRan = true; + } + _log.add('onMicrotaskEmpty(end)'); + } + }); - macroTask(() => { - expect(_log.result()) - .toEqual( - // First VM turn: enqueue a microtask in onUnstable - 'onUnstable; onUnstable(begin); onUnstable(schedulePromise); onUnstable(end); ' + - // First VM turn: execute the macrotask which enqueues microtasks - 'run start; run end; ' + - // First VM turn: execute enqueued microtasks - 'onUnstable(executePromise); promise then; promise foo; promise bar; onMicrotaskEmpty; ' + - // First VM turn: onTurnEnd, enqueue a microtask - 'onMicrotaskEmpty(begin); onMicrotaskEmpty(schedulePromise); onMicrotaskEmpty(end); ' + - // Second VM turn: execute the microtask from onTurnEnd - 'onMicrotaskEmpty(executePromise); onMicrotaskEmpty; onMicrotaskEmpty(begin); onMicrotaskEmpty(end); onStable'); - async.done(); - }, resultTimer); - }), testTimeout); + macroTask(() => { + expect(_log.result()) + .toEqual( + // First VM turn: enqueue a microtask in onUnstable + 'onUnstable; onUnstable(begin); onUnstable(schedulePromise); onUnstable(end); ' + + // First VM turn: execute the macrotask which enqueues microtasks + 'run start; run end; ' + + // First VM turn: execute enqueued microtasks + 'onUnstable(executePromise); promise then; promise foo; promise bar; onMicrotaskEmpty; ' + + // First VM turn: onTurnEnd, enqueue a microtask + 'onMicrotaskEmpty(begin); onMicrotaskEmpty(schedulePromise); onMicrotaskEmpty(end); ' + + // Second VM turn: execute the microtask from onTurnEnd + 'onMicrotaskEmpty(executePromise); onMicrotaskEmpty; onMicrotaskEmpty(begin); onMicrotaskEmpty(end); onStable'); + done(); + }, resultTimer); + }); it('should call onUnstable and onMicrotaskEmpty before and after each turn, respectively', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { + done => { let aResolve: (result: string|null) => void; let aPromise: Promise; let bResolve: (result: string|null) => void; @@ -789,12 +772,12 @@ function commonTests() { 'onUnstable; a then; onMicrotaskEmpty; onStable; ' + // Third VM turn 'onUnstable; b then; onMicrotaskEmpty; onStable'); - async.done(); + done(); }, resultTimer); - }), testTimeout); + }); it('should call onUnstable and onMicrotaskEmpty before and after (respectively) all turns in a chain', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { + done => { runNgZoneNoLog(() => { macroTask(() => { _log.add('run start'); @@ -810,12 +793,12 @@ function commonTests() { expect(_log.result()) .toEqual( 'onUnstable; run start; run end; async1; async2; onMicrotaskEmpty; onStable'); - async.done(); + done(); }, resultTimer); - }), testTimeout); + }); it('should call onUnstable and onMicrotaskEmpty for promises created outside of run body', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { + done => { let promise: Promise; runNgZoneNoLog(() => { @@ -834,29 +817,28 @@ function commonTests() { .toEqual( 'onUnstable; zone run; onMicrotaskEmpty; onStable; ' + 'onUnstable; promise then; onMicrotaskEmpty; onStable'); - async.done(); + done(); }, resultTimer); - }), testTimeout); + }); }); describe('exceptions', () => { - it('should call the on error callback when it is invoked via zone.runGuarded', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - macroTask(() => { - const exception = new Error('sync'); + it('should call the on error callback when it is invoked via zone.runGuarded', done => { + macroTask(() => { + const exception = new Error('sync'); - _zone.runGuarded(() => { - throw exception; - }); + _zone.runGuarded(() => { + throw exception; + }); - expect(_errors.length).toBe(1); - expect(_errors[0]).toBe(exception); - async.done(); - }); - }), testTimeout); + expect(_errors.length).toBe(1); + expect(_errors[0]).toBe(exception); + done(); + }); + }); it('should not call the on error callback but rethrow when it is invoked via zone.run', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { + done => { macroTask(() => { const exception = new Error('sync'); expect(() => _zone.run(() => { @@ -864,28 +846,27 @@ function commonTests() { })).toThrowError('sync'); expect(_errors.length).toBe(0); - async.done(); + done(); }); - }), testTimeout); + }); - it('should call onError for errors from microtasks', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const exception = new Error('async'); + it('should call onError for errors from microtasks', done => { + const exception = new Error('async'); - macroTask(() => { - _zone.run(() => { - scheduleMicroTask(() => { - throw exception; - }); - }); - }); + macroTask(() => { + _zone.run(() => { + scheduleMicroTask(() => { + throw exception; + }); + }); + }); - macroTask(() => { - expect(_errors.length).toBe(1); - expect(_errors[0]).toEqual(exception); - async.done(); - }, resultTimer); - }), testTimeout); + macroTask(() => { + expect(_errors.length).toBe(1); + expect(_errors[0]).toEqual(exception); + done(); + }, resultTimer); + }); }); describe('bugs', () => { @@ -982,10 +963,10 @@ function commonTests() { describe('shouldCoalesceEventChangeDetection = true, shouldCoalesceRunChangeDetection = false', () => { let nativeRequestAnimationFrame: (fn: FrameRequestCallback) => void; - let nativeSetTimeout: any = (global as any)[Zone.__symbol__('setTimeout')]; - if (!(global as any).requestAnimationFrame) { + let nativeSetTimeout: any = global[Zone.__symbol__('setTimeout')]; + if (!global.requestAnimationFrame) { nativeRequestAnimationFrame = function(fn: Function) { - (global as any)[Zone.__symbol__('setTimeout')](fn, 16); + global[Zone.__symbol__('setTimeout')](fn, 16); }; } else { nativeRequestAnimationFrame = getNativeRequestAnimationFrame().nativeRequestAnimationFrame; @@ -996,7 +977,7 @@ function commonTests() { beforeEach(() => { patchedImmediate = setImmediate; - (global as any).setImmediate = (global as any)[Zone.__symbol__('setImmediate')]; + global.setImmediate = global[Zone.__symbol__('setImmediate')]; coalesceZone = new NgZone({shouldCoalesceEventChangeDetection: true}); logs = []; coalesceZone.onMicrotaskEmpty.subscribe(() => { @@ -1005,10 +986,10 @@ function commonTests() { }); afterEach(() => { - (global as any).setImmediate = patchedImmediate; + global.setImmediate = patchedImmediate; }); - it('should run in requestAnimationFrame async', (done: DoneFn) => { + it('should run in requestAnimationFrame async', done => { let task: Task|undefined = undefined; coalesceZone.run(() => { task = Zone.current.scheduleEventTask('myEvent', () => { @@ -1024,7 +1005,7 @@ function commonTests() { }); it('should only emit onMicroTaskEmpty once within the same event loop for multiple event tasks', - (done: DoneFn) => { + done => { const tasks: Task[] = []; coalesceZone.run(() => { tasks.push(Zone.current.scheduleEventTask('myEvent', () => { @@ -1044,7 +1025,7 @@ function commonTests() { }); it('should only emit onMicroTaskEmpty once within the same event loop for ngZone.run in onMicrotaskEmpty subscription', - (done: DoneFn) => { + done => { const tasks: Task[] = []; coalesceZone.onMicrotaskEmpty.subscribe(() => { coalesceZone.run(() => {}); @@ -1070,7 +1051,7 @@ function commonTests() { }); it('should emit onMicroTaskEmpty once within the same event loop for not only event tasks, but event tasks are before other tasks', - (done: DoneFn) => { + done => { const tasks: Task[] = []; coalesceZone.run(() => { tasks.push(Zone.current.scheduleEventTask('myEvent', () => { @@ -1093,7 +1074,7 @@ function commonTests() { }); it('should emit multiple onMicroTaskEmpty within the same event loop for not only event tasks, but event tasks are after other tasks', - (done: DoneFn) => { + done => { const tasks: Task[] = []; coalesceZone.run(() => { tasks.push(Zone.current.scheduleMacroTask('myMacro', () => { @@ -1121,10 +1102,10 @@ function commonTests() { describe('shouldCoalesceRunChangeDetection = true', () => { let nativeRequestAnimationFrame: (fn: FrameRequestCallback) => void; - let nativeSetTimeout: any = (global as any)[Zone.__symbol__('setTimeout')]; - if (!(global as any).requestAnimationFrame) { + let nativeSetTimeout: any = global[Zone.__symbol__('setTimeout')]; + if (!global.requestAnimationFrame) { nativeRequestAnimationFrame = function(fn: Function) { - (global as any)[Zone.__symbol__('setTimeout')](fn, 16); + global[Zone.__symbol__('setTimeout')](fn, 16); }; } else { nativeRequestAnimationFrame = getNativeRequestAnimationFrame().nativeRequestAnimationFrame; @@ -1135,7 +1116,7 @@ function commonTests() { beforeEach(() => { patchedImmediate = setImmediate; - (global as any).setImmediate = (global as any)[Zone.__symbol__('setImmediate')]; + global.setImmediate = global[Zone.__symbol__('setImmediate')]; coalesceZone = new NgZone({shouldCoalesceRunChangeDetection: true}); logs = []; coalesceZone.onMicrotaskEmpty.subscribe(() => { @@ -1144,10 +1125,10 @@ function commonTests() { }); afterEach(() => { - (global as any).setImmediate = patchedImmediate; + global.setImmediate = patchedImmediate; }); - it('should run in requestAnimationFrame async', (done: DoneFn) => { + it('should run in requestAnimationFrame async', done => { coalesceZone.run(() => {}); expect(logs).toEqual([]); nativeRequestAnimationFrame(() => { @@ -1157,7 +1138,7 @@ function commonTests() { }); it('should only emit onMicroTaskEmpty once within the same event loop for multiple ngZone.run', - (done: DoneFn) => { + done => { coalesceZone.run(() => {}); coalesceZone.run(() => {}); expect(logs).toEqual([]); @@ -1168,7 +1149,7 @@ function commonTests() { }); it('should only emit onMicroTaskEmpty once within the same event loop for ngZone.run in onMicrotaskEmpty subscription', - (done: DoneFn) => { + done => { coalesceZone.onMicrotaskEmpty.subscribe(() => { coalesceZone.run(() => {}); }); @@ -1182,7 +1163,7 @@ function commonTests() { }); it('should only emit onMicroTaskEmpty once within the same event loop for multiple tasks', - (done: DoneFn) => { + done => { const tasks: Task[] = []; coalesceZone.run(() => { tasks.push(Zone.current.scheduleMacroTask('myMacro', () => { diff --git a/packages/core/testing/src/async_test_completer.ts b/packages/core/testing/src/async_test_completer.ts deleted file mode 100644 index 2d2385a3de..0000000000 --- a/packages/core/testing/src/async_test_completer.ts +++ /dev/null @@ -1,32 +0,0 @@ -/** - * @license - * 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 - */ - -/** - * Injectable completer that allows signaling completion of an asynchronous test. Used internally. - */ -export class AsyncTestCompleter { - // TODO(issue/24571): remove '!'. - private _resolve!: (result: any) => void; - // TODO(issue/24571): remove '!'. - private _reject!: (err: any) => void; - private _promise: Promise = new Promise((res, rej) => { - this._resolve = res; - this._reject = rej; - }); - done(value?: any) { - this._resolve(value); - } - - fail(error?: any, stackTrace?: string) { - this._reject(error); - } - - get promise(): Promise { - return this._promise; - } -} diff --git a/packages/core/testing/src/fake_async.ts b/packages/core/testing/src/fake_async.ts index 1c57da22c3..5f0d1a014f 100644 --- a/packages/core/testing/src/fake_async.ts +++ b/packages/core/testing/src/fake_async.ts @@ -26,21 +26,25 @@ export function resetFakeAsyncZone(): void { } /** - * Wraps a function to be executed in the fakeAsync zone: - * - microtasks are manually executed by calling `flushMicrotasks()`, - * - timers are synchronous, `tick()` simulates the asynchronous passage of time. + * Wraps a function to be executed in the `fakeAsync` zone: + * - Microtasks are manually executed by calling `flushMicrotasks()`. + * - Timers are synchronous; `tick()` simulates the asynchronous passage of time. * - * If there are any pending timers at the end of the function, an exception will be thrown. + * If there are any pending timers at the end of the function, an exception is thrown. * - * Can be used to wrap inject() calls. + * Can be used to wrap `inject()` calls. + * + * @param fn The function that you want to wrap in the `fakeAysnc` zone. * * @usageNotes * ### Example * * {@example core/testing/ts/fake_async.ts region='basic'} * - * @param fn - * @returns The function wrapped to be executed in the fakeAsync zone + * + * @returns The function wrapped to be executed in the `fakeAsync` zone. + * Any arguments passed when calling this returned function will be passed through to the `fn` + * function in the parameters when it is called. * * @publicApi */ @@ -52,23 +56,36 @@ export function fakeAsync(fn: Function): (...args: any[]) => any { } /** - * Simulates the asynchronous passage of time for the timers in the fakeAsync zone. + * Simulates the asynchronous passage of time for the timers in the `fakeAsync` zone. * * The microtasks queue is drained at the very start of this function and after any timer callback * has been executed. * + * @param millis The number of milliseconds to advance the virtual timer. + * @param tickOptions The options to pass to the `tick()` function. + * * @usageNotes + * + * The `tick()` option is a flag called `processNewMacroTasksSynchronously`, + * which determines whether or not to invoke new macroTasks. + * + * If you provide a `tickOptions` object, but do not specify a + * `processNewMacroTasksSynchronously` property (`tick(100, {})`), + * then `processNewMacroTasksSynchronously` defaults to true. + * + * If you omit the `tickOptions` parameter (`tick(100))`), then + * `tickOptions` defaults to `{processNewMacroTasksSynchronously: true}`. + * * ### Example * * {@example core/testing/ts/fake_async.ts region='basic'} * - * @param millis, the number of millisecond to advance the virtual timer - * @param tickOptions, the options of tick with a flag called - * processNewMacroTasksSynchronously, whether to invoke the new macroTasks, by default is - * false, means the new macroTasks will be invoked - * - * For example, + * The following example includes a nested timeout (new macroTask), and + * the `tickOptions` parameter is allowed to default. In this case, + * `processNewMacroTasksSynchronously` defaults to true, and the nested + * function is executed on each tick. * + * ``` * it ('test with nested setTimeout', fakeAsync(() => { * let nestedTimeoutInvoked = false; * function funcWithNestedTimeout() { @@ -80,10 +97,12 @@ export function fakeAsync(fn: Function): (...args: any[]) => any { * tick(); * expect(nestedTimeoutInvoked).toBe(true); * })); + * ``` * - * in this case, we have a nested timeout (new macroTask), when we tick, both the - * funcWithNestedTimeout and the nested timeout both will be invoked. + * In the following case, `processNewMacroTasksSynchronously` is explicitly + * set to false, so the nested timeout function is not invoked. * + * ``` * it ('test with nested setTimeout', fakeAsync(() => { * let nestedTimeoutInvoked = false; * function funcWithNestedTimeout() { @@ -95,9 +114,7 @@ export function fakeAsync(fn: Function): (...args: any[]) => any { * tick(0, {processNewMacroTasksSynchronously: false}); * expect(nestedTimeoutInvoked).toBe(false); * })); - * - * if we pass the tickOptions with processNewMacroTasksSynchronously to be false, the nested timeout - * will not be invoked. + * ``` * * * @publicApi @@ -113,12 +130,12 @@ export function tick( } /** - * Simulates the asynchronous passage of time for the timers in the fakeAsync zone by - * draining the macrotask queue until it is empty. The returned value is the milliseconds - * of time that would have been elapsed. + * Simulates the asynchronous passage of time for the timers in the `fakeAsync` zone by + * draining the macrotask queue until it is empty. * - * @param maxTurns - * @returns The simulated time elapsed, in millis. + * @param maxTurns The maximum number of times the scheduler attempts to clear its queue before + * throwing an error. + * @returns The simulated time elapsed, in milliseconds. * * @publicApi */ diff --git a/packages/core/testing/src/ng_zone_mock.ts b/packages/core/testing/src/ng_zone_mock.ts index e6aae4a7c0..d0f4aa3da0 100644 --- a/packages/core/testing/src/ng_zone_mock.ts +++ b/packages/core/testing/src/ng_zone_mock.ts @@ -14,17 +14,17 @@ import {EventEmitter, Injectable, NgZone} from '@angular/core'; */ @Injectable() export class MockNgZone extends NgZone { - onStable: EventEmitter = new EventEmitter(false); + override onStable: EventEmitter = new EventEmitter(false); constructor() { super({enableLongStackTrace: false, shouldCoalesceEventChangeDetection: false}); } - run(fn: Function): any { + override run(fn: Function): any { return fn(); } - runOutsideAngular(fn: Function): any { + override runOutsideAngular(fn: Function): any { return fn(); } diff --git a/packages/core/testing/src/r3_test_bed.ts b/packages/core/testing/src/r3_test_bed.ts index 74804de7d6..8cc09a541a 100644 --- a/packages/core/testing/src/r3_test_bed.ts +++ b/packages/core/testing/src/r3_test_bed.ts @@ -12,7 +12,6 @@ /* clang-format off */ import { - AbstractType, Component, Directive, InjectFlags, @@ -22,6 +21,7 @@ import { NgZone, Pipe, PlatformRef, + ProviderToken, Type, ɵflushModuleScopingQueueAsMuchAsPossible as flushModuleScopingQueueAsMuchAsPossible, ɵRender3ComponentFactory as ComponentFactory, @@ -36,7 +36,7 @@ import {ComponentFixture} from './component_fixture'; import {MetadataOverride} from './metadata_override'; import {R3TestBedCompiler} from './r3_test_bed_compiler'; import {TestBed} from './test_bed'; -import {ComponentFixtureAutoDetect, ComponentFixtureNoNgZone, TestBedStatic, TestComponentRenderer, TestModuleMetadata} from './test_bed_common'; +import {ComponentFixtureAutoDetect, ComponentFixtureNoNgZone, ModuleTeardownOptions, TEARDOWN_TESTING_MODULE_ON_DESTROY_DEFAULT, TestBedStatic, TestComponentRenderer, TestEnvironmentOptions, TestModuleMetadata} from './test_bed_common'; let _nextRootElementId = 0; @@ -52,6 +52,18 @@ let _nextRootElementId = 0; * according to the compiler used. */ export class TestBedRender3 implements TestBed { + /** + * Teardown options that have been configured at the environment level. + * Used as a fallback if no instance-level options have been provided. + */ + private static _environmentTeardownOptions: ModuleTeardownOptions|undefined; + + /** + * Teardown options that have been configured at the `TestBed` instance level. + * These options take precedence over the environemnt-level ones. + */ + private _instanceTeardownOptions: ModuleTeardownOptions|undefined; + /** * Initialize the environment for testing with a compiler factory, a PlatformRef, and an * angular module. These are common to every test in the suite. @@ -66,9 +78,10 @@ export class TestBedRender3 implements TestBed { * @publicApi */ static initTestEnvironment( - ngModule: Type|Type[], platform: PlatformRef, aotSummaries?: () => any[]): TestBed { + ngModule: Type|Type[], platform: PlatformRef, + summariesOrOptions?: TestEnvironmentOptions|(() => any[])): TestBed { const testBed = _getTestBedRender3(); - testBed.initTestEnvironment(ngModule, platform, aotSummaries); + testBed.initTestEnvironment(ngModule, platform, summariesOrOptions); return testBed; } @@ -156,19 +169,14 @@ export class TestBedRender3 implements TestBed { return TestBedRender3 as any as TestBedStatic; } - static inject( - token: Type|InjectionToken|AbstractType, notFoundValue?: T, flags?: InjectFlags): T; - static inject( - token: Type|InjectionToken|AbstractType, notFoundValue: null, flags?: InjectFlags): T - |null; - static inject( - token: Type|InjectionToken|AbstractType, notFoundValue?: T|null, - flags?: InjectFlags): T|null { + static inject(token: ProviderToken, notFoundValue?: T, flags?: InjectFlags): T; + static inject(token: ProviderToken, notFoundValue: null, flags?: InjectFlags): T|null; + static inject(token: ProviderToken, notFoundValue?: T|null, flags?: InjectFlags): T|null { return _getTestBedRender3().inject(token, notFoundValue, flags); } /** @deprecated from v9.0.0 use TestBed.inject */ - static get(token: Type|InjectionToken, notFoundValue?: T, flags?: InjectFlags): any; + static get(token: ProviderToken, notFoundValue?: T, flags?: InjectFlags): any; /** @deprecated from v9.0.0 use TestBed.inject */ static get(token: any, notFoundValue?: any): any; /** @deprecated from v9.0.0 use TestBed.inject */ @@ -187,6 +195,14 @@ export class TestBedRender3 implements TestBed { return TestBedRender3 as any as TestBedStatic; } + static shouldTearDownTestingModule(): boolean { + return _getTestBedRender3().shouldTearDownTestingModule(); + } + + static tearDownTestingModule(): void { + _getTestBedRender3().tearDownTestingModule(); + } + // Properties platform: PlatformRef = null!; @@ -211,11 +227,18 @@ export class TestBedRender3 implements TestBed { * * @publicApi */ - initTestEnvironment( - ngModule: Type|Type[], platform: PlatformRef, aotSummaries?: () => any[]): void { + initTestEnvironment(ngModule: Type|Type[], platform: PlatformRef, summariesOrOptions?: { + teardown?: ModuleTeardownOptions + }|(() => any[])): void { if (this.platform || this.ngModule) { throw new Error('Cannot set base providers because it has already been called'); } + + // If `summariesOrOptions` is a function, it means that it's + // an AOT summaries factory which Ivy doesn't support. + TestBedRender3._environmentTeardownOptions = + typeof summariesOrOptions === 'function' ? undefined : summariesOrOptions?.teardown; + this.platform = platform; this.ngModule = ngModule; this._compiler = new R3TestBedCompiler(this.platform, this.ngModule); @@ -231,6 +254,7 @@ export class TestBedRender3 implements TestBed { this._compiler = null; this.platform = null!; this.ngModule = null!; + TestBedRender3._environmentTeardownOptions = undefined; } resetTestingModule(): void { @@ -240,8 +264,22 @@ export class TestBedRender3 implements TestBed { this.compiler.restoreOriginalState(); } this._compiler = new R3TestBedCompiler(this.platform, this.ngModule); - this._testModuleRef = null; - this.destroyActiveFixtures(); + + // We have to chain a couple of try/finally blocks, because each step can + // throw errors and we don't want it to interrupt the next step and we also + // want an error to be thrown at the end. + try { + this.destroyActiveFixtures(); + } finally { + try { + if (this.shouldTearDownTestingModule()) { + this.tearDownTestingModule(); + } + } finally { + this._testModuleRef = null; + this._instanceTeardownOptions = undefined; + } + } } configureCompiler(config: {providers?: any[]; useJit?: boolean;}): void { @@ -256,6 +294,9 @@ export class TestBedRender3 implements TestBed { configureTestingModule(moduleDef: TestModuleMetadata): void { this.assertNotInstantiated('R3TestBed.configureTestingModule', 'configure the test module'); + // Always re-assign the teardown options, even if they're undefined. + // This ensures that we don't carry the options between tests. + this._instanceTeardownOptions = moduleDef.teardown; this.compiler.configureTestingModule(moduleDef); } @@ -263,14 +304,9 @@ export class TestBedRender3 implements TestBed { return this.compiler.compileComponents(); } - inject( - token: Type|InjectionToken|AbstractType, notFoundValue?: T, flags?: InjectFlags): T; - inject( - token: Type|InjectionToken|AbstractType, notFoundValue: null, flags?: InjectFlags): T - |null; - inject( - token: Type|InjectionToken|AbstractType, notFoundValue?: T|null, - flags?: InjectFlags): T|null { + inject(token: ProviderToken, notFoundValue?: T, flags?: InjectFlags): T; + inject(token: ProviderToken, notFoundValue: null, flags?: InjectFlags): T|null; + inject(token: ProviderToken, notFoundValue?: T|null, flags?: InjectFlags): T|null { if (token as unknown === TestBedRender3) { return this as any; } @@ -281,7 +317,7 @@ export class TestBedRender3 implements TestBed { } /** @deprecated from v9.0.0 use TestBed.inject */ - get(token: Type|InjectionToken, notFoundValue?: T, flags?: InjectFlags): any; + get(token: ProviderToken, notFoundValue?: T, flags?: InjectFlags): any; /** @deprecated from v9.0.0 use TestBed.inject */ get(token: any, notFoundValue?: any): any; /** @deprecated from v9.0.0 use TestBed.inject */ @@ -412,10 +448,12 @@ export class TestBedRender3 implements TestBed { } private destroyActiveFixtures(): void { + let errorCount = 0; this._activeFixtures.forEach((fixture) => { try { fixture.destroy(); } catch (e) { + errorCount++; console.error('Error during cleanup of component', { component: fixture.componentInstance, stacktrace: e, @@ -423,6 +461,55 @@ export class TestBedRender3 implements TestBed { } }); this._activeFixtures = []; + + if (errorCount > 0 && this.shouldRethrowTeardownErrors()) { + throw Error( + `${errorCount} ${(errorCount === 1 ? 'component' : 'components')} ` + + `threw errors during cleanup`); + } + } + + private shouldRethrowTeardownErrors() { + const instanceOptions = this._instanceTeardownOptions; + const environmentOptions = TestBedRender3._environmentTeardownOptions; + + // If the new teardown behavior hasn't been configured, preserve the old behavior. + if (!instanceOptions && !environmentOptions) { + return false; + } + + // Otherwise use the configured behavior or default to rethrowing. + return instanceOptions?.rethrowErrors ?? environmentOptions?.rethrowErrors ?? true; + } + + shouldTearDownTestingModule(): boolean { + return this._instanceTeardownOptions?.destroyAfterEach ?? + TestBedRender3._environmentTeardownOptions?.destroyAfterEach ?? + TEARDOWN_TESTING_MODULE_ON_DESTROY_DEFAULT; + } + + tearDownTestingModule() { + // If the module ref has already been destroyed, we won't be able to get a test renderer. + if (this._testModuleRef === null) { + return; + } + // Resolve the renderer ahead of time, because we want to remove the root elements as the very + // last step, but the injector will be destroyed as a part of the module ref destruction. + const testRenderer = this.inject(TestComponentRenderer); + try { + this._testModuleRef.destroy(); + } catch (e) { + if (this.shouldRethrowTeardownErrors()) { + throw e; + } else { + console.error('Error during cleanup of a testing module', { + component: this._testModuleRef.instance, + stacktrace: e, + }); + } + } finally { + testRenderer.removeAllRootElements?.(); + } } } diff --git a/packages/core/testing/src/r3_test_bed_compiler.ts b/packages/core/testing/src/r3_test_bed_compiler.ts index 6c0c1f6fef..cc6690e797 100644 --- a/packages/core/testing/src/r3_test_bed_compiler.ts +++ b/packages/core/testing/src/r3_test_bed_compiler.ts @@ -7,7 +7,7 @@ */ import {ResourceLoader} from '@angular/compiler'; -import {ApplicationInitStatus, Compiler, COMPILER_OPTIONS, Component, Directive, Injector, InjectorType, LOCALE_ID, ModuleWithComponentFactories, ModuleWithProviders, NgModule, NgModuleFactory, NgZone, Pipe, PlatformRef, Provider, Type, ɵcompileComponent as compileComponent, ɵcompileDirective as compileDirective, ɵcompileNgModuleDefs as compileNgModuleDefs, ɵcompilePipe as compilePipe, ɵDEFAULT_LOCALE_ID as DEFAULT_LOCALE_ID, ɵDirectiveDef as DirectiveDef, ɵgetInjectableDef as getInjectableDef, ɵNG_COMP_DEF as NG_COMP_DEF, ɵNG_DIR_DEF as NG_DIR_DEF, ɵNG_INJ_DEF as NG_INJ_DEF, ɵNG_MOD_DEF as NG_MOD_DEF, ɵNG_PIPE_DEF as NG_PIPE_DEF, ɵNgModuleFactory as R3NgModuleFactory, ɵNgModuleTransitiveScopes as NgModuleTransitiveScopes, ɵNgModuleType as NgModuleType, ɵpatchComponentDefWithScope as patchComponentDefWithScope, ɵRender3ComponentFactory as ComponentFactory, ɵRender3NgModuleRef as NgModuleRef, ɵsetLocaleId as setLocaleId, ɵtransitiveScopesFor as transitiveScopesFor, ɵɵInjectableDef as InjectableDef} from '@angular/core'; +import {ApplicationInitStatus, Compiler, COMPILER_OPTIONS, Component, Directive, Injector, InjectorType, LOCALE_ID, ModuleWithComponentFactories, ModuleWithProviders, NgModule, NgModuleFactory, NgZone, Pipe, PlatformRef, Provider, resolveForwardRef, Type, ɵcompileComponent as compileComponent, ɵcompileDirective as compileDirective, ɵcompileNgModuleDefs as compileNgModuleDefs, ɵcompilePipe as compilePipe, ɵDEFAULT_LOCALE_ID as DEFAULT_LOCALE_ID, ɵDirectiveDef as DirectiveDef, ɵgetInjectableDef as getInjectableDef, ɵNG_COMP_DEF as NG_COMP_DEF, ɵNG_DIR_DEF as NG_DIR_DEF, ɵNG_INJ_DEF as NG_INJ_DEF, ɵNG_MOD_DEF as NG_MOD_DEF, ɵNG_PIPE_DEF as NG_PIPE_DEF, ɵNgModuleFactory as R3NgModuleFactory, ɵNgModuleTransitiveScopes as NgModuleTransitiveScopes, ɵNgModuleType as NgModuleType, ɵpatchComponentDefWithScope as patchComponentDefWithScope, ɵRender3ComponentFactory as ComponentFactory, ɵRender3NgModuleRef as NgModuleRef, ɵsetLocaleId as setLocaleId, ɵtransitiveScopesFor as transitiveScopesFor, ɵɵInjectableDeclaration as InjectableDeclaration} from '@angular/core'; import {clearResolutionOfComponentResourcesQueue, isComponentDefPendingResolution, resolveComponentResources, restoreComponentResolutionQueue} from '../../src/metadata/resource_loading'; @@ -174,21 +174,21 @@ export class R3TestBedCompiler { providerDef = {provide: token}; } - const injectableDef: InjectableDef|null = + const injectableDef: InjectableDeclaration|null = typeof token !== 'string' ? getInjectableDef(token) : null; - const isRoot = injectableDef !== null && injectableDef.providedIn === 'root'; - const overridesBucket = isRoot ? this.rootProviderOverrides : this.providerOverrides; + const providedIn = injectableDef === null ? null : resolveForwardRef(injectableDef.providedIn); + const overridesBucket = + providedIn === 'root' ? this.rootProviderOverrides : this.providerOverrides; overridesBucket.push(providerDef); // Keep overrides grouped by token as well for fast lookups using token this.providerOverridesByToken.set(token, providerDef); - if (injectableDef !== null && injectableDef.providedIn !== null && - typeof injectableDef.providedIn !== 'string') { - const existingOverrides = this.providerOverridesByModule.get(injectableDef.providedIn); + if (injectableDef !== null && providedIn !== null && typeof providedIn !== 'string') { + const existingOverrides = this.providerOverridesByModule.get(providedIn); if (existingOverrides !== undefined) { existingOverrides.push(providerDef); } else { - this.providerOverridesByModule.set(injectableDef.providedIn, [providerDef]); + this.providerOverridesByModule.set(providedIn, [providerDef]); } } } @@ -353,7 +353,7 @@ export class R3TestBedCompiler { if (this.overriddenModules.size > 0) { // Module overrides (via `TestBed.overrideModule`) might affect scopes that were previously // calculated and stored in `transitiveCompileScopes`. If module overrides are present, - // collect all affected modules and reset scopes to force their re-calculatation. + // collect all affected modules and reset scopes to force their re-calculation. const testingModuleDef = (this.testModuleType as any)[NG_MOD_DEF]; const affectedModules = this.collectModulesAffectedByOverrides(testingModuleDef.imports); if (affectedModules.size > 0) { @@ -538,6 +538,8 @@ export class R3TestBedCompiler { this.queueTypeArray(maybeUnwrapFn(def.declarations), value); queueTypesFromModulesArrayRecur(maybeUnwrapFn(def.imports)); queueTypesFromModulesArrayRecur(maybeUnwrapFn(def.exports)); + } else if (isModuleWithProviders(value)) { + queueTypesFromModulesArrayRecur([value.ngModule]); } } }; diff --git a/packages/core/testing/src/resolvers.ts b/packages/core/testing/src/resolvers.ts index 929acaecfc..ec58e2cb0d 100644 --- a/packages/core/testing/src/resolvers.ts +++ b/packages/core/testing/src/resolvers.ts @@ -86,25 +86,25 @@ abstract class OverrideResolver implements Resolver { export class DirectiveResolver extends OverrideResolver { - get type() { + override get type() { return Directive; } } export class ComponentResolver extends OverrideResolver { - get type() { + override get type() { return Component; } } export class PipeResolver extends OverrideResolver { - get type() { + override get type() { return Pipe; } } export class NgModuleResolver extends OverrideResolver { - get type() { + override get type() { return NgModule; } } diff --git a/packages/core/testing/src/test_bed.ts b/packages/core/testing/src/test_bed.ts index 5a40de6703..61c4a05357 100644 --- a/packages/core/testing/src/test_bed.ts +++ b/packages/core/testing/src/test_bed.ts @@ -6,13 +6,12 @@ * found in the LICENSE file at https://angular.io/license */ -import {AbstractType, ApplicationInitStatus, CompilerOptions, Component, Directive, InjectFlags, InjectionToken, Injector, NgModule, NgModuleFactory, NgModuleRef, NgZone, Optional, Pipe, PlatformRef, Provider, SchemaMetadata, SkipSelf, StaticProvider, Type, ɵclearOverrides as clearOverrides, ɵDepFlags as DepFlags, ɵgetInjectableDef as getInjectableDef, ɵINJECTOR_SCOPE as INJECTOR_SCOPE, ɵivyEnabled as ivyEnabled, ɵNodeFlags as NodeFlags, ɵoverrideComponentView as overrideComponentView, ɵoverrideProvider as overrideProvider, ɵstringify as stringify, ɵɵInjectableDef} from '@angular/core'; +import {ApplicationInitStatus, CompilerOptions, Component, Directive, InjectFlags, InjectionToken, Injector, NgModule, NgModuleFactory, NgModuleRef, NgZone, Optional, Pipe, PlatformRef, Provider, ProviderToken, SchemaMetadata, SkipSelf, StaticProvider, Type, ɵclearOverrides as clearOverrides, ɵDepFlags as DepFlags, ɵgetInjectableDef as getInjectableDef, ɵINJECTOR_SCOPE as INJECTOR_SCOPE, ɵivyEnabled as ivyEnabled, ɵNodeFlags as NodeFlags, ɵoverrideComponentView as overrideComponentView, ɵoverrideProvider as overrideProvider, ɵstringify as stringify, ɵɵInjectableDeclaration} from '@angular/core'; -import {AsyncTestCompleter} from './async_test_completer'; import {ComponentFixture} from './component_fixture'; import {MetadataOverride} from './metadata_override'; import {_getTestBedRender3, TestBedRender3} from './r3_test_bed'; -import {ComponentFixtureAutoDetect, ComponentFixtureNoNgZone, TestBedStatic, TestComponentRenderer, TestModuleMetadata} from './test_bed_common'; +import {ComponentFixtureAutoDetect, ComponentFixtureNoNgZone, ModuleTeardownOptions, TEARDOWN_TESTING_MODULE_ON_DESTROY_DEFAULT, TestBedStatic, TestComponentRenderer, TestEnvironmentOptions, TestModuleMetadata} from './test_bed_common'; import {TestingCompiler, TestingCompilerFactory} from './test_compiler'; @@ -37,6 +36,9 @@ export interface TestBed { * Test modules and platforms for individual platforms are available from * '@angular//testing'. */ + initTestEnvironment( + ngModule: Type|Type[], platform: PlatformRef, + options?: TestEnvironmentOptions): void; initTestEnvironment( ngModule: Type|Type[], platform: PlatformRef, aotSummaries?: () => any[]): void; @@ -53,14 +55,11 @@ export interface TestBed { compileComponents(): Promise; - inject( - token: Type|InjectionToken|AbstractType, notFoundValue?: T, flags?: InjectFlags): T; - inject( - token: Type|InjectionToken|AbstractType, notFoundValue: null, flags?: InjectFlags): T - |null; + inject(token: ProviderToken, notFoundValue?: T, flags?: InjectFlags): T; + inject(token: ProviderToken, notFoundValue: null, flags?: InjectFlags): T|null; /** @deprecated from v9.0.0 use TestBed.inject */ - get(token: Type|InjectionToken, notFoundValue?: T, flags?: InjectFlags): any; + get(token: ProviderToken, notFoundValue?: T, flags?: InjectFlags): any; /** @deprecated from v9.0.0 use TestBed.inject */ get(token: any, notFoundValue?: any): any; @@ -101,6 +100,18 @@ export interface TestBed { * according to the compiler used. */ export class TestBedViewEngine implements TestBed { + /** + * Teardown options that have been configured at the environment level. + * Used as a fallback if no instance-level options have been provided. + */ + private static _environmentTeardownOptions: ModuleTeardownOptions|undefined; + + /** + * Teardown options that have been configured at the `TestBed` instance level. + * These options take precedence over the environemnt-level ones. + */ + private _instanceTeardownOptions: ModuleTeardownOptions|undefined; + /** * Initialize the environment for testing with a compiler factory, a PlatformRef, and an * angular module. These are common to every test in the suite. @@ -114,9 +125,9 @@ export class TestBedViewEngine implements TestBed { */ static initTestEnvironment( ngModule: Type|Type[], platform: PlatformRef, - aotSummaries?: () => any[]): TestBedViewEngine { + summariesOrOptions?: TestEnvironmentOptions|(() => any[])): TestBedViewEngine { const testBed = _getTestBedViewEngine(); - testBed.initTestEnvironment(ngModule, platform, aotSummaries); + testBed.initTestEnvironment(ngModule, platform, summariesOrOptions); return testBed; } @@ -216,19 +227,14 @@ export class TestBedViewEngine implements TestBed { return TestBedViewEngine as any as TestBedStatic; } - static inject( - token: Type|InjectionToken|AbstractType, notFoundValue?: T, flags?: InjectFlags): T; - static inject( - token: Type|InjectionToken|AbstractType, notFoundValue: null, flags?: InjectFlags): T - |null; - static inject( - token: Type|InjectionToken|AbstractType, notFoundValue?: T|null, - flags?: InjectFlags): T|null { + static inject(token: ProviderToken, notFoundValue?: T, flags?: InjectFlags): T; + static inject(token: ProviderToken, notFoundValue: null, flags?: InjectFlags): T|null; + static inject(token: ProviderToken, notFoundValue?: T|null, flags?: InjectFlags): T|null { return _getTestBedViewEngine().inject(token, notFoundValue, flags); } /** @deprecated from v9.0.0 use TestBed.inject */ - static get(token: Type|InjectionToken, notFoundValue?: T, flags?: InjectFlags): any; + static get(token: ProviderToken, notFoundValue?: T, flags?: InjectFlags): any; /** * @deprecated from v9.0.0 use TestBed.inject * @suppress {duplicate} @@ -245,11 +251,20 @@ export class TestBedViewEngine implements TestBed { return _getTestBedViewEngine().createComponent(component); } + static shouldTearDownTestingModule(): boolean { + return _getTestBedViewEngine().shouldTearDownTestingModule(); + } + + static tearDownTestingModule(): void { + _getTestBedViewEngine().tearDownTestingModule(); + } + private _instantiated: boolean = false; private _compiler: TestingCompiler = null!; - private _moduleRef: NgModuleRef = null!; - private _moduleFactory: NgModuleFactory = null!; + private _moduleRef: NgModuleRef|null = null; + private _moduleFactory: NgModuleFactory|null = null; + private _pendingModuleFactory: Type|null = null; private _compilerOptions: CompilerOptions[] = []; @@ -287,14 +302,19 @@ export class TestBedViewEngine implements TestBed { * '@angular//testing'. */ initTestEnvironment( - ngModule: Type|Type[], platform: PlatformRef, aotSummaries?: () => any[]): void { + ngModule: Type|Type[], platform: PlatformRef, + summariesOrOptions?: TestEnvironmentOptions|(() => any[])): void { if (this.platform || this.ngModule) { throw new Error('Cannot set base providers because it has already been called'); } this.platform = platform; this.ngModule = ngModule; - if (aotSummaries) { - this._testEnvAotSummaries = aotSummaries; + if (typeof summariesOrOptions === 'function') { + this._testEnvAotSummaries = summariesOrOptions; + TestBedViewEngine._environmentTeardownOptions = undefined; + } else { + this._testEnvAotSummaries = (summariesOrOptions?.aotSummaries) || (() => []); + TestBedViewEngine._environmentTeardownOptions = summariesOrOptions?.teardown; } } @@ -306,6 +326,7 @@ export class TestBedViewEngine implements TestBed { this.platform = null!; this.ngModule = null!; this._testEnvAotSummaries = () => []; + TestBedViewEngine._environmentTeardownOptions = undefined; } resetTestingModule(): void { @@ -321,25 +342,30 @@ export class TestBedViewEngine implements TestBed { this._isRoot = true; this._rootProviderOverrides = []; - this._moduleRef = null!; - this._moduleFactory = null!; + this._moduleFactory = null; + this._pendingModuleFactory = null; this._compilerOptions = []; this._providers = []; this._declarations = []; this._imports = []; this._schemas = []; - this._instantiated = false; - this._activeFixtures.forEach((fixture) => { + + // We have to chain a couple of try/finally blocks, because each step can + // throw errors and we don't want it to interrupt the next step and we also + // want an error to be thrown at the end. + try { + this.destroyActiveFixtures(); + } finally { try { - fixture.destroy(); - } catch (e) { - console.error('Error during cleanup of component', { - component: fixture.componentInstance, - stacktrace: e, - }); + if (this.shouldTearDownTestingModule()) { + this.tearDownTestingModule(); + } + } finally { + this._moduleRef = null; + this._instanceTeardownOptions = undefined; + this._instantiated = false; } - }); - this._activeFixtures = []; + } } configureCompiler(config: {providers?: any[], useJit?: boolean}): void { @@ -364,6 +390,9 @@ export class TestBedViewEngine implements TestBed { if (moduleDef.aotSummaries) { this._aotSummaries.push(moduleDef.aotSummaries); } + // Always re-assign the teardown options, even if they're undefined. + // This ensures that we don't carry the options between tests. + this._instanceTeardownOptions = moduleDef.teardown; } compileComponents(): Promise { @@ -372,10 +401,16 @@ export class TestBedViewEngine implements TestBed { } const moduleType = this._createCompilerAndModule(); - return this._compiler.compileModuleAndAllComponentsAsync(moduleType) - .then((moduleAndComponentFactories) => { - this._moduleFactory = moduleAndComponentFactories.ngModuleFactory; - }); + this._pendingModuleFactory = moduleType; + return this._compiler.compileModuleAndAllComponentsAsync(moduleType).then(result => { + // If the module mismatches by the time the promise resolves, it means that the module has + // already been destroyed and a new compilation has started. If that's the case, avoid + // overwriting the module factory, because it can cause downstream errors. + if (this._pendingModuleFactory === moduleType) { + this._moduleFactory = result.ngModuleFactory; + this._pendingModuleFactory = null; + } + }); } private _initIfNeeded(): void { @@ -469,14 +504,9 @@ export class TestBedViewEngine implements TestBed { } } - inject( - token: Type|InjectionToken|AbstractType, notFoundValue?: T, flags?: InjectFlags): T; - inject( - token: Type|InjectionToken|AbstractType, notFoundValue: null, flags?: InjectFlags): T - |null; - inject( - token: Type|InjectionToken|AbstractType, notFoundValue?: T|null, - flags?: InjectFlags): T|null { + inject(token: ProviderToken, notFoundValue?: T, flags?: InjectFlags): T; + inject(token: ProviderToken, notFoundValue: null, flags?: InjectFlags): T|null; + inject(token: ProviderToken, notFoundValue?: T|null, flags?: InjectFlags): T|null { this._initIfNeeded(); if (token as unknown === TestBed) { return this as any; @@ -484,13 +514,13 @@ export class TestBedViewEngine implements TestBed { // Tests can inject things from the ng module and from the compiler, // but the ng module can't inject things from the compiler and vice versa. const UNDEFINED = {}; - const result = this._moduleRef.injector.get(token, UNDEFINED, flags); + const result = this._moduleRef!.injector.get(token, UNDEFINED, flags); return result === UNDEFINED ? this._compiler.injector.get(token, notFoundValue, flags) as any : result; } /** @deprecated from v9.0.0 use TestBed.inject */ - get(token: Type|InjectionToken, notFoundValue?: T, flags?: InjectFlags): any; + get(token: ProviderToken, notFoundValue?: T, flags?: InjectFlags): any; /** @deprecated from v9.0.0 use TestBed.inject */ get(token: any, notFoundValue?: any): any; /** @deprecated from v9.0.0 use TestBed.inject */ @@ -546,7 +576,7 @@ export class TestBedViewEngine implements TestBed { deps?: any[], }, deprecated = false): void { - let def: ɵɵInjectableDef|null = null; + let def: ɵɵInjectableDeclaration|null = null; if (typeof token !== 'string' && (def = getInjectableDef(token)) && def.providedIn === 'root') { if (provider.useFactory) { this._rootProviderOverrides.push( @@ -616,7 +646,7 @@ export class TestBedViewEngine implements TestBed { const initComponent = () => { const componentRef = - componentFactory.create(Injector.NULL, [], `#${rootElId}`, this._moduleRef); + componentFactory.create(Injector.NULL, [], `#${rootElId}`, this._moduleRef!); return new ComponentFixture(componentRef, ngZone, autoDetect); }; @@ -624,6 +654,73 @@ export class TestBedViewEngine implements TestBed { this._activeFixtures.push(fixture); return fixture; } + + private destroyActiveFixtures(): void { + let errorCount = 0; + this._activeFixtures.forEach((fixture) => { + try { + fixture.destroy(); + } catch (e) { + errorCount++; + console.error('Error during cleanup of component', { + component: fixture.componentInstance, + stacktrace: e, + }); + } + }); + this._activeFixtures = []; + + if (errorCount > 0 && this.shouldRethrowTeardownErrors()) { + throw Error( + `${errorCount} ${(errorCount === 1 ? 'component' : 'components')} ` + + `threw errors during cleanup`); + } + } + + private shouldRethrowTeardownErrors() { + const instanceOptions = this._instanceTeardownOptions; + const environmentOptions = TestBedViewEngine._environmentTeardownOptions; + + // If the new teardown behavior hasn't been configured, preserve the old behavior. + if (!instanceOptions && !environmentOptions) { + return false; + } + + // Otherwise use the configured behavior or default to rethrowing. + return instanceOptions?.rethrowErrors ?? environmentOptions?.rethrowErrors ?? true; + } + + shouldTearDownTestingModule(): boolean { + return this._instanceTeardownOptions?.destroyAfterEach ?? + TestBedViewEngine._environmentTeardownOptions?.destroyAfterEach ?? + TEARDOWN_TESTING_MODULE_ON_DESTROY_DEFAULT; + } + + tearDownTestingModule() { + // If the module ref has already been destroyed, we won't be able to get a test renderer. + if (this._moduleRef === null) { + return; + } + + // Resolve the renderer ahead of time, because we want to remove the root elements as the very + // last step, but the injector will be destroyed as a part of the module ref destruction. + const testRenderer = this.inject(TestComponentRenderer); + try { + this._moduleRef.destroy(); + } catch (e) { + if (this._instanceTeardownOptions?.rethrowErrors ?? + TestBedViewEngine._environmentTeardownOptions?.rethrowErrors ?? true) { + throw e; + } else { + console.error('Error during cleanup of a testing module', { + component: this._moduleRef.instance, + stacktrace: e, + }); + } + } finally { + testRenderer?.removeAllRootElements?.(); + } + } } /** @@ -673,32 +770,14 @@ function _getTestBedViewEngine(): TestBedViewEngine { * }) * ``` * - * Notes: - * - inject is currently a function because of some Traceur limitation the syntax should - * eventually - * becomes `it('...', @Inject (object: AClass, async: AsyncTestCompleter) => { ... });` - * * @publicApi */ export function inject(tokens: any[], fn: Function): () => any { const testBed = getTestBed(); - if (tokens.indexOf(AsyncTestCompleter) >= 0) { - // Not using an arrow function to preserve context passed from call site - return function(this: unknown) { - // Return an async test method that returns a Promise if AsyncTestCompleter is one of - // the injected tokens. - return testBed.compileComponents().then(() => { - const completer = testBed.inject(AsyncTestCompleter); - testBed.execute(tokens, fn, this); - return completer.promise; - }); - }; - } else { - // Not using an arrow function to preserve context passed from call site - return function(this: unknown) { - return testBed.execute(tokens, fn, this); - }; - } + // Not using an arrow function to preserve context passed from call site + return function(this: unknown) { + return testBed.execute(tokens, fn, this); + }; } /** diff --git a/packages/core/testing/src/test_bed_common.ts b/packages/core/testing/src/test_bed_common.ts index 48cfad0452..46ff0be28d 100644 --- a/packages/core/testing/src/test_bed_common.ts +++ b/packages/core/testing/src/test_bed_common.ts @@ -6,12 +6,18 @@ * found in the LICENSE file at https://angular.io/license */ -import {AbstractType, Component, Directive, InjectFlags, InjectionToken, NgModule, Pipe, PlatformRef, SchemaMetadata, Type} from '@angular/core'; +import {Component, Directive, InjectFlags, InjectionToken, NgModule, Pipe, PlatformRef, ProviderToken, SchemaMetadata, Type} from '@angular/core'; import {ComponentFixture} from './component_fixture'; import {MetadataOverride} from './metadata_override'; import {TestBed} from './test_bed'; +/** + * Whether test modules should be torn down by default. + * Currently disabled for backwards-compatibility reasons. + */ +export const TEARDOWN_TESTING_MODULE_ON_DESTROY_DEFAULT = false; + /** * An abstract class for inserting the root test component element in a platform independent way. * @@ -19,6 +25,7 @@ import {TestBed} from './test_bed'; */ export class TestComponentRenderer { insertRootElement(rootElementId: string) {} + removeAllRootElements?() {} } /** @@ -41,8 +48,29 @@ export type TestModuleMetadata = { imports?: any[], schemas?: Array, aotSummaries?: () => any[], + teardown?: ModuleTeardownOptions; }; +/** + * @publicApi + */ +export interface TestEnvironmentOptions { + aotSummaries?: () => any[]; + teardown?: ModuleTeardownOptions; +} + +/** + * Object used to configure the test module teardown behavior in `TestBed`. + * @publicApi + */ +export interface ModuleTeardownOptions { + /** Whether the test module should be destroyed after every test. */ + destroyAfterEach: boolean; + + /** Whether errors during test module destruction should be re-thrown. Defaults to `true`. */ + rethrowErrors?: boolean; +} + /** * Static methods implemented by the `TestBedViewEngine` and `TestBedRender3` * @@ -51,6 +79,9 @@ export type TestModuleMetadata = { export interface TestBedStatic { new(...args: any[]): TestBed; + initTestEnvironment(ngModule: Type|Type[], platform: PlatformRef, options?: { + teardown?: ModuleTeardownOptions + }): TestBed; initTestEnvironment( ngModule: Type|Type[], platform: PlatformRef, aotSummaries?: () => any[]): TestBed; @@ -114,14 +145,11 @@ export interface TestBedStatic { deps?: any[], }): TestBedStatic; - inject( - token: Type|InjectionToken|AbstractType, notFoundValue?: T, flags?: InjectFlags): T; - inject( - token: Type|InjectionToken|AbstractType, notFoundValue: null, flags?: InjectFlags): T - |null; + inject(token: ProviderToken, notFoundValue?: T, flags?: InjectFlags): T; + inject(token: ProviderToken, notFoundValue: null, flags?: InjectFlags): T|null; /** @deprecated from v9.0.0 use TestBed.inject */ - get(token: Type|InjectionToken, notFoundValue?: T, flags?: InjectFlags): any; + get(token: ProviderToken, notFoundValue?: T, flags?: InjectFlags): any; /** @deprecated from v9.0.0 use TestBed.inject */ get(token: any, notFoundValue?: any): any; diff --git a/packages/core/testing/src/before_each.ts b/packages/core/testing/src/test_hooks.ts similarity index 61% rename from packages/core/testing/src/before_each.ts rename to packages/core/testing/src/test_hooks.ts index fe9427c87f..c76c17e385 100644 --- a/packages/core/testing/src/before_each.ts +++ b/packages/core/testing/src/test_hooks.ts @@ -13,7 +13,7 @@ */ import {resetFakeAsyncZone} from './fake_async'; -import {TestBed} from './test_bed'; +import {TestBed, TestBedViewEngine as TestBedInternal} from './test_bed'; declare var global: any; @@ -21,10 +21,24 @@ const _global = (typeof window === 'undefined' ? global : window); // Reset the test providers and the fake async zone before each test. if (_global.beforeEach) { - _global.beforeEach(() => { - TestBed.resetTestingModule(); - resetFakeAsyncZone(); - }); + _global.beforeEach(getCleanupHook(false)); +} + +// We provide both a `beforeEach` and `afterEach`, because the updated behavior for +// tearing down the module is supposed to run after the test so that we can associate +// teardown errors with the correct test. +if (_global.afterEach) { + _global.afterEach(getCleanupHook(true)); +} + +function getCleanupHook(expectedTeardownValue: boolean) { + return () => { + if ((TestBed as unknown as TestBedInternal).shouldTearDownTestingModule() === + expectedTeardownValue) { + TestBed.resetTestingModule(); + resetFakeAsyncZone(); + } + }; } /** diff --git a/packages/core/testing/src/testing.ts b/packages/core/testing/src/testing.ts index 220cbc9d43..c8ec6baae9 100644 --- a/packages/core/testing/src/testing.ts +++ b/packages/core/testing/src/testing.ts @@ -16,8 +16,8 @@ export * from './async'; export * from './component_fixture'; export * from './fake_async'; export {TestBed, getTestBed, inject, InjectSetupWrapper, withModule} from './test_bed'; -export * from './test_bed_common'; -export * from './before_each'; +export {TestComponentRenderer, ComponentFixtureAutoDetect, ComponentFixtureNoNgZone, TestModuleMetadata, TestEnvironmentOptions, ModuleTeardownOptions, TestBedStatic} from './test_bed_common'; +export * from './test_hooks'; export * from './metadata_override'; export {MetadataOverrider as ɵMetadataOverrider} from './metadata_overrider'; export * from './private_export_testing'; diff --git a/packages/core/testing/src/testing_internal.ts b/packages/core/testing/src/testing_internal.ts index 5cd971d5ec..1307ecf157 100644 --- a/packages/core/testing/src/testing_internal.ts +++ b/packages/core/testing/src/testing_internal.ts @@ -6,213 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {ɵisPromise as isPromise} from '@angular/core'; -import {global} from '@angular/core/src/util/global'; - -import {AsyncTestCompleter} from './async_test_completer'; -import {getTestBed, inject} from './test_bed'; - -export {AsyncTestCompleter} from './async_test_completer'; export {inject} from './test_bed'; export * from './logger'; export * from './ng_zone_mock'; - -export const proxy: ClassDecorator = (t: any) => t; - -const _global = (typeof window === 'undefined' ? global : window); - -export const afterEach: Function = _global.afterEach; -export const expect: (actual: T) => jasmine.Matchers = _global.expect; - -const jsmBeforeEach = _global.beforeEach; -const jsmDescribe = _global.describe; -const jsmDDescribe = _global.fdescribe; -const jsmXDescribe = _global.xdescribe; -const jsmIt = _global.it; -const jsmFIt = _global.fit; -const jsmXIt = _global.xit; - -const runnerStack: BeforeEachRunner[] = []; -jasmine.DEFAULT_TIMEOUT_INTERVAL = 3000; -const globalTimeOut = jasmine.DEFAULT_TIMEOUT_INTERVAL; - -const testBed = getTestBed(); - -export type TestFn = ((done: DoneFn) => any)|(() => any); - -/** - * Mechanism to run `beforeEach()` functions of Angular tests. - * - * Note: Jasmine own `beforeEach` is used by this library to handle DI providers. - */ -class BeforeEachRunner { - private _fns: Array = []; - - constructor(private _parent: BeforeEachRunner) {} - - beforeEach(fn: Function): void { - this._fns.push(fn); - } - - run(): void { - if (this._parent) this._parent.run(); - this._fns.forEach((fn) => { - fn(); - }); - } -} - -// Reset the test providers before each test -jsmBeforeEach(() => { - testBed.resetTestingModule(); -}); - -function _describe(jsmFn: Function, ...args: any[]) { - const parentRunner = runnerStack.length === 0 ? null : runnerStack[runnerStack.length - 1]; - const runner = new BeforeEachRunner(parentRunner!); - runnerStack.push(runner); - const suite = jsmFn(...args); - runnerStack.pop(); - return suite; -} - -export function describe(...args: any[]): void { - return _describe(jsmDescribe, ...args); -} - -export function ddescribe(...args: any[]): void { - return _describe(jsmDDescribe, ...args); -} - -export function xdescribe(...args: any[]): void { - return _describe(jsmXDescribe, ...args); -} - -export function beforeEach(fn: Function): void { - if (runnerStack.length > 0) { - // Inside a describe block, beforeEach() uses a BeforeEachRunner - runnerStack[runnerStack.length - 1].beforeEach(fn); - } else { - // Top level beforeEach() are delegated to jasmine - jsmBeforeEach(fn); - } -} - -/** - * Allows overriding default providers defined in test_injector.js. - * - * The given function must return a list of DI providers. - * - * Example: - * - * beforeEachProviders(() => [ - * {provide: Compiler, useClass: MockCompiler}, - * {provide: SomeToken, useValue: myValue}, - * ]); - */ -export function beforeEachProviders(fn: Function): void { - jsmBeforeEach(() => { - const providers = fn(); - if (!providers) return; - testBed.configureTestingModule({providers: providers}); - }); -} - - -function _it(jsmFn: Function, testName: string, testFn: TestFn, testTimeout = 0): void { - if (runnerStack.length == 0) { - // This left here intentionally, as we should never get here, and it aids debugging. - // tslint:disable-next-line - debugger; - throw new Error('Empty Stack!'); - } - const runner = runnerStack[runnerStack.length - 1]; - const timeout = Math.max(globalTimeOut, testTimeout); - - jsmFn(testName, (done: DoneFn) => { - const completerProvider = { - provide: AsyncTestCompleter, - useFactory: () => { - // Mark the test as async when an AsyncTestCompleter is injected in an it() - return new AsyncTestCompleter(); - } - }; - testBed.configureTestingModule({providers: [completerProvider]}); - runner.run(); - - if (testFn.length === 0) { - // TypeScript doesn't infer the TestFn type without parameters here, so we - // need to manually cast it. - const retVal = (testFn as () => any)(); - if (isPromise(retVal)) { - // Asynchronous test function that returns a Promise - wait for completion. - retVal.then(done, done.fail); - } else { - // Synchronous test function - complete immediately. - done(); - } - } else { - // Asynchronous test function that takes in 'done' parameter. - testFn(done); - } - }, timeout); -} - -export function it(expectation: string, assertion: TestFn, timeout?: number): void { - return _it(jsmIt, expectation, assertion, timeout); -} - -export function fit(expectation: string, assertion: TestFn, timeout?: number): void { - return _it(jsmFIt, expectation, assertion, timeout); -} - -export function xit(expectation: string, assertion: TestFn, timeout?: number): void { - return _it(jsmXIt, expectation, assertion, timeout); -} - -export class SpyObject { - constructor(type?: any) { - if (type) { - for (const prop in type.prototype) { - let m: any = null; - try { - m = type.prototype[prop]; - } catch { - // As we are creating spys for abstract classes, - // these classes might have getters that throw when they are accessed. - // As we are only auto creating spys for methods, this - // should not matter. - } - if (typeof m === 'function') { - this.spy(prop); - } - } - } - } - - spy(name: string) { - if (!(this as any)[name]) { - (this as any)[name] = jasmine.createSpy(name); - } - return (this as any)[name]; - } - - prop(name: string, value: any) { - (this as any)[name] = value; - } - - static stub(object: any = null, config: any = null, overrides: any = null) { - if (!(object instanceof SpyObject)) { - overrides = config; - config = object; - object = new SpyObject(); - } - - const m = {...config, ...overrides}; - Object.keys(m).forEach(key => { - object.spy(key).and.returnValue(m[key]); - }); - return object; - } -} diff --git a/packages/docs/web_workers/web_workers.md b/packages/docs/web_workers/web_workers.md index 086dee9de9..17fb7eeac4 100644 --- a/packages/docs/web_workers/web_workers.md +++ b/packages/docs/web_workers/web_workers.md @@ -167,10 +167,6 @@ Additionally, the [MessageBroker](#messagebroker) sits on top of the [MessageBus MessageBus is a low level abstraction that provides a language agnostic API for communicating with angular components across any runtime boundary such as `WebWorker <--> UI` communication, `UI <--> Server` communication, or `Window <--> Window` communication. -See the diagram below for a high level overview of how this code is structured: - -![WebWorker Diagram](http://stanford.edu/~jteplitz/ng_2_worker.png) - ## Running Code on the UI If your application needs to run code on the UI, there are a few options. The easiest way is to use a CustomElement in your view. You can then register this custom element from your html file and run code in response diff --git a/packages/elements/BUILD.bazel b/packages/elements/BUILD.bazel index 465b8cbeaa..2574d84676 100644 --- a/packages/elements/BUILD.bazel +++ b/packages/elements/BUILD.bazel @@ -1,4 +1,4 @@ -load("//tools:defaults.bzl", "ng_module", "ng_package", "ts_api_guardian_test_npm_package") +load("//tools:defaults.bzl", "api_golden_test_npm_package", "ng_module", "ng_package") package(default_visibility = ["//visibility:public"]) @@ -35,12 +35,12 @@ ng_package( ], ) -ts_api_guardian_test_npm_package( +api_golden_test_npm_package( name = "elements_api", - actualDir = "angular/packages/elements/npm_package", data = [ ":npm_package", "//goldens:public-api", ], - goldenDir = "angular/goldens/public-api/elements", + golden_dir = "angular/goldens/public-api/elements", + npm_package = "angular/packages/elements/npm_package", ) diff --git a/packages/elements/package.json b/packages/elements/package.json index e1a1dd38bd..3da5fa0277 100644 --- a/packages/elements/package.json +++ b/packages/elements/package.json @@ -4,13 +4,16 @@ "description": "Angular - library for using Angular Components as Custom Elements", "author": "angular", "license": "MIT", + "engines": { + "node": "^12.14.1 || >=14.0.0" + }, "dependencies": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" }, "peerDependencies": { "@angular/core": "0.0.0-PLACEHOLDER", "@angular/platform-browser": "0.0.0-PLACEHOLDER", - "rxjs": "^6.5.3" + "rxjs": "^6.5.3 || ^7.0.0" }, "repository": { "type": "git", @@ -21,8 +24,5 @@ "packageGroup": "NG_UPDATE_PACKAGE_GROUP" }, "sideEffects": false, - "schematics": "./schematics/collection.json", - "publishConfig":{ - "registry":"https://wombat-dressing-room.appspot.com" - } + "schematics": "./schematics/collection.json" } diff --git a/packages/elements/schematics/ng-add/schema.json b/packages/elements/schematics/ng-add/schema.json index 42d57ecf1d..0debc51897 100644 --- a/packages/elements/schematics/ng-add/schema.json +++ b/packages/elements/schematics/ng-add/schema.json @@ -1,6 +1,6 @@ { - "$schema": "http://json-schema.org/schema", - "id": "SchematicsAngularElementsNgAdd", + "$schema": "http://json-schema.org/draft-07/schema", + "$id": "SchematicsAngularElementsNgAdd", "title": "Angular Elements Ng Add Schema", "type": "object", "properties": { diff --git a/packages/elements/src/create-custom-element.ts b/packages/elements/src/create-custom-element.ts index 3198d07f79..0da96e7f65 100644 --- a/packages/elements/src/create-custom-element.ts +++ b/packages/elements/src/create-custom-element.ts @@ -139,7 +139,7 @@ export function createCustomElement

( // field externs. So using quoted access to explicitly prevent renaming. static readonly['observedAttributes'] = Object.keys(attributeToPropertyInputs); - protected get ngElementStrategy(): NgElementStrategy { + protected override get ngElementStrategy(): NgElementStrategy { // NOTE: // Some polyfills (e.g. `document-register-element`) do not call the constructor, therefore // it is not safe to set `ngElementStrategy` in the constructor and assume it will be @@ -175,13 +175,13 @@ export function createCustomElement

( super(); } - attributeChangedCallback( + override attributeChangedCallback( attrName: string, oldValue: string|null, newValue: string, namespace?: string): void { const propName = attributeToPropertyInputs[attrName]!; this.ngElementStrategy.setInputValue(propName, newValue); } - connectedCallback(): void { + override connectedCallback(): void { // For historical reasons, some strategies may not have initialized the `events` property // until after `connect()` is run. Subscribe to `events` if it is available before running // `connect()` (in order to capture events emitted suring inittialization), otherwise @@ -208,7 +208,7 @@ export function createCustomElement

( } } - disconnectedCallback(): void { + override disconnectedCallback(): void { // Not using `this.ngElementStrategy` to avoid unnecessarily creating the `NgElementStrategy`. if (this._ngElementStrategy) { this._ngElementStrategy.disconnect(); diff --git a/packages/elements/src/version.ts b/packages/elements/src/version.ts index 0e217dabbf..11ef0224ee 100644 --- a/packages/elements/src/version.ts +++ b/packages/elements/src/version.ts @@ -7,6 +7,7 @@ */ import {Version} from '@angular/core'; + /** * @publicApi */ diff --git a/packages/elements/test/BUILD.bazel b/packages/elements/test/BUILD.bazel index 491f6fd091..ebfcbe37d2 100644 --- a/packages/elements/test/BUILD.bazel +++ b/packages/elements/test/BUILD.bazel @@ -38,7 +38,7 @@ filegroup( testonly = True, # do not sort srcs = [ - "@npm//:node_modules/core-js/client/core.js", + "@npm//:node_modules/core-js-bundle/index.js", # Required for browsers that do not natively support Custom Elements. "@npm//:node_modules/@webcomponents/custom-elements/custom-elements.min.js", # Required for ES5 code to work with a native Custom Elements implementation. diff --git a/packages/elements/test/component-factory-strategy_spec.ts b/packages/elements/test/component-factory-strategy_spec.ts index 00bcb97a50..41af6a31a9 100644 --- a/packages/elements/test/component-factory-strategy_spec.ts +++ b/packages/elements/test/component-factory-strategy_spec.ts @@ -451,16 +451,16 @@ export class FakeComponentFactory> extends ComponentFactory< instance: new this.ComponentClass(), }); - get selector(): string { + override get selector(): string { return 'fake-component'; } - get componentType(): Type { + override get componentType(): Type { return this.ComponentClass; } - get ngContentSelectors(): string[] { + override get ngContentSelectors(): string[] { return ['content-1', 'content-2']; } - get inputs(): {propName: string; templateName: string}[] { + override get inputs(): {propName: string; templateName: string}[] { return [ {propName: 'fooFoo', templateName: 'fooFoo'}, {propName: 'barBar', templateName: 'my-bar-bar'}, @@ -471,7 +471,7 @@ export class FakeComponentFactory> extends ComponentFactory< {propName: 'falsyZero', templateName: 'falsyZero'}, ]; } - get outputs(): {propName: string; templateName: string}[] { + override get outputs(): {propName: string; templateName: string}[] { return [ {propName: 'output1', templateName: 'templateOutput1'}, {propName: 'output2', templateName: 'templateOutput2'}, @@ -482,7 +482,7 @@ export class FakeComponentFactory> extends ComponentFactory< super(); } - create( + override create( injector: Injector, projectableNodes?: any[][], rootSelectorOrNode?: string|any, ngModule?: NgModuleRef): ComponentRef { return this.componentRef; diff --git a/packages/elements/test/create-custom-element_spec.ts b/packages/elements/test/create-custom-element_spec.ts index 45491db51b..d1a5ddbc3c 100644 --- a/packages/elements/test/create-custom-element_spec.ts +++ b/packages/elements/test/create-custom-element_spec.ts @@ -125,9 +125,9 @@ if (browserDetection.supportsCustomElements) { it('should not break if `NgElementStrategy#events` is not available before calling `NgElementStrategy#connect()`', () => { class TestStrategyWithLateEvents extends TestStrategy { - events: Subject = undefined!; + override events: Subject = undefined!; - connect(element: HTMLElement): void { + override connect(element: HTMLElement): void { this.connectedElement = element; this.events = new Subject(); this.events.next({name: 'strategy-event', value: 'connect'}); diff --git a/packages/examples/compiler/ts/url_resolver/url_resolver.ts b/packages/examples/compiler/ts/url_resolver/url_resolver.ts index e2f20fb047..b4ea8a30af 100644 --- a/packages/examples/compiler/ts/url_resolver/url_resolver.ts +++ b/packages/examples/compiler/ts/url_resolver/url_resolver.ts @@ -11,12 +11,12 @@ import {Component, NgModule} from '@angular/core'; import {BrowserModule} from '@angular/platform-browser'; import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; -@Component({selector: 'my-app', template: 'empty'}) +@Component({selector: 'app-root', template: 'empty'}) class MyApp { } class MyUrlResolver extends UrlResolver { - resolve(baseUrl: string, url: string): string { + override resolve(baseUrl: string, url: string): string { // Serve CSS files from a special CDN. if (url.substr(-4) === '.css') { return super.resolve('http://cdn.myapp.com/css/', url); diff --git a/packages/examples/core/di/ts/injector_spec.ts b/packages/examples/core/di/ts/injector_spec.ts index dcb0037298..01fb555e7e 100644 --- a/packages/examples/core/di/ts/injector_spec.ts +++ b/packages/examples/core/di/ts/injector_spec.ts @@ -6,14 +6,12 @@ * found in the LICENSE file at https://angular.io/license */ -import {AbstractType, inject, InjectFlags, InjectionToken, Injector, Type, ɵsetCurrentInjector as setCurrentInjector} from '@angular/core'; +import {inject, InjectFlags, InjectionToken, Injector, ProviderToken, ɵsetCurrentInjector as setCurrentInjector} from '@angular/core'; class MockRootScopeInjector implements Injector { constructor(readonly parent: Injector) {} - get( - token: Type|AbstractType|InjectionToken, defaultValue?: any, - flags: InjectFlags = InjectFlags.Default): T { + get(token: ProviderToken, defaultValue?: any, flags: InjectFlags = InjectFlags.Default): T { if ((token as any).ɵprov && (token as any).ɵprov.providedIn === 'root') { const old = setCurrentInjector(this); try { diff --git a/packages/examples/core/di/ts/provider_spec.ts b/packages/examples/core/di/ts/provider_spec.ts index 40f15c46e7..8ed044b059 100644 --- a/packages/examples/core/di/ts/provider_spec.ts +++ b/packages/examples/core/di/ts/provider_spec.ts @@ -30,7 +30,7 @@ import {Injectable, InjectionToken, Injector, Optional, ReflectiveInjector} from describe('ValueProvider', () => { it('works', () => { // #docregion ValueProvider - const injector = Injector.create([{provide: String, useValue: 'Hello'}]); + const injector = Injector.create({providers: [{provide: String, useValue: 'Hello'}]}); expect(injector.get(String)).toEqual('Hello'); // #enddocregion @@ -41,10 +41,12 @@ import {Injectable, InjectionToken, Injector, Optional, ReflectiveInjector} from it('works', () => { // #docregion MultiProviderAspect const locale = new InjectionToken('locale'); - const injector = Injector.create([ - {provide: locale, multi: true, useValue: 'en'}, - {provide: locale, multi: true, useValue: 'sk'}, - ]); + const injector = Injector.create({ + providers: [ + {provide: locale, multi: true, useValue: 'en'}, + {provide: locale, multi: true, useValue: 'sk'}, + ] + }); const locales: string[] = injector.get(locale); expect(locales).toEqual(['en', 'sk']); @@ -60,7 +62,7 @@ import {Injectable, InjectionToken, Injector, Optional, ReflectiveInjector} from } class Square extends Shape { - name = 'square'; + override name = 'square'; } const injector = ReflectiveInjector.resolveAndCreate([{provide: Shape, useClass: Square}]); @@ -78,7 +80,7 @@ import {Injectable, InjectionToken, Injector, Optional, ReflectiveInjector} from } class FormalGreeting extends Greeting { - salutation = 'Greetings'; + override salutation = 'Greetings'; } const injector = ReflectiveInjector.resolveAndCreate( @@ -99,10 +101,11 @@ import {Injectable, InjectionToken, Injector, Optional, ReflectiveInjector} from } class Square extends Shape { - name = 'square'; + override name = 'square'; } - const injector = Injector.create([{provide: Shape, useClass: Square, deps: []}]); + const injector = + Injector.create({providers: [{provide: Shape, useClass: Square, deps: []}]}); const shape: Shape = injector.get(Shape); expect(shape.name).toEqual('square'); @@ -117,13 +120,15 @@ import {Injectable, InjectionToken, Injector, Optional, ReflectiveInjector} from } class FormalGreeting extends Greeting { - salutation = 'Greetings'; + override salutation = 'Greetings'; } - const injector = Injector.create([ - {provide: FormalGreeting, useClass: FormalGreeting, deps: []}, - {provide: Greeting, useClass: FormalGreeting, deps: []} - ]); + const injector = Injector.create({ + providers: [ + {provide: FormalGreeting, useClass: FormalGreeting, deps: []}, + {provide: Greeting, useClass: FormalGreeting, deps: []} + ] + }); // The injector returns different instances. // See: {provide: ?, useExisting: ?} if you want the same instance. @@ -156,12 +161,14 @@ import {Injectable, InjectionToken, Injector, Optional, ReflectiveInjector} from } class FormalGreeting extends Greeting { - salutation = 'Greetings'; + override salutation = 'Greetings'; } - const injector = Injector.create([ - {provide: FormalGreeting, deps: []}, {provide: Greeting, useExisting: FormalGreeting} - ]); + const injector = Injector.create({ + providers: [ + {provide: FormalGreeting, deps: []}, {provide: Greeting, useExisting: FormalGreeting} + ] + }); expect(injector.get(Greeting).salutation).toEqual('Greetings'); expect(injector.get(FormalGreeting).salutation).toEqual('Greetings'); @@ -176,13 +183,15 @@ import {Injectable, InjectionToken, Injector, Optional, ReflectiveInjector} from const Location = new InjectionToken('location'); const Hash = new InjectionToken('hash'); - const injector = Injector.create([ - {provide: Location, useValue: 'https://angular.io/#someLocation'}, { - provide: Hash, - useFactory: (location: string) => location.split('#')[1], - deps: [Location] - } - ]); + const injector = Injector.create({ + providers: [ + {provide: Location, useValue: 'https://angular.io/#someLocation'}, { + provide: Hash, + useFactory: (location: string) => location.split('#')[1], + deps: [Location] + } + ] + }); expect(injector.get(Hash)).toEqual('someLocation'); // #enddocregion @@ -193,12 +202,14 @@ import {Injectable, InjectionToken, Injector, Optional, ReflectiveInjector} from const Location = new InjectionToken('location'); const Hash = new InjectionToken('hash'); - const injector = Injector.create([{ - provide: Hash, - useFactory: (location: string) => `Hash for: ${location}`, - // use a nested array to define metadata for dependencies. - deps: [[new Optional(), Location]] - }]); + const injector = Injector.create({ + providers: [{ + provide: Hash, + useFactory: (location: string) => `Hash for: ${location}`, + // use a nested array to define metadata for dependencies. + deps: [[new Optional(), Location]] + }] + }); expect(injector.get(Hash)).toEqual('Hash for: null'); // #enddocregion diff --git a/packages/examples/core/ts/bootstrap/bootstrap.ts b/packages/examples/core/ts/bootstrap/bootstrap.ts index 51d797f2cb..c20ec79fca 100644 --- a/packages/examples/core/ts/bootstrap/bootstrap.ts +++ b/packages/examples/core/ts/bootstrap/bootstrap.ts @@ -10,7 +10,7 @@ import {Component, NgModule} from '@angular/core'; import {BrowserModule} from '@angular/platform-browser'; import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; -@Component({selector: 'my-app', template: 'Hello {{ name }}!'}) +@Component({selector: 'app-root', template: 'Hello {{ name }}!'}) class MyApp { name: string = 'World'; } diff --git a/packages/examples/core/ts/change_detect/change-detection.ts b/packages/examples/core/ts/change_detect/change-detection.ts index c6d4960cc0..1f7446a5cf 100644 --- a/packages/examples/core/ts/change_detect/change-detection.ts +++ b/packages/examples/core/ts/change_detect/change-detection.ts @@ -12,7 +12,7 @@ import {FormsModule} from '@angular/forms'; // #docregion mark-for-check @Component({ - selector: 'my-app', + selector: 'app-root', template: `Number of ticks: {{numberOfTicks}}`, changeDetection: ChangeDetectionStrategy.OnPush, }) diff --git a/packages/examples/core/ts/metadata/encapsulation.ts b/packages/examples/core/ts/metadata/encapsulation.ts index 9babc13deb..5eafa29249 100644 --- a/packages/examples/core/ts/metadata/encapsulation.ts +++ b/packages/examples/core/ts/metadata/encapsulation.ts @@ -10,7 +10,7 @@ import {Component, ViewEncapsulation} from '@angular/core'; // #docregion longform @Component({ - selector: 'my-app', + selector: 'app-root', template: `

Hello World!

Shadow DOM Rocks! diff --git a/packages/examples/core/ts/metadata/lifecycle_hooks_spec.ts b/packages/examples/core/ts/metadata/lifecycle_hooks_spec.ts index 185d265d51..f1dc596cad 100644 --- a/packages/examples/core/ts/metadata/lifecycle_hooks_spec.ts +++ b/packages/examples/core/ts/metadata/lifecycle_hooks_spec.ts @@ -106,8 +106,7 @@ describe('lifecycle hooks examples', () => { // #docregion OnChanges @Component({selector: 'my-cmp', template: `...`}) class MyComponent implements OnChanges { - // TODO(issue/24571): remove '!'. - @Input() prop!: number; + @Input() prop: number = 0; ngOnChanges(changes: SimpleChanges) { // changes.prop contains the old and the new value... diff --git a/packages/examples/core/ts/pipes/simple_truncate.ts b/packages/examples/core/ts/pipes/simple_truncate.ts index cf13f99663..4f30cd447f 100644 --- a/packages/examples/core/ts/pipes/simple_truncate.ts +++ b/packages/examples/core/ts/pipes/simple_truncate.ts @@ -5,12 +5,12 @@ * 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 */ - +// #docregion import {Pipe, PipeTransform} from '@angular/core'; @Pipe({name: 'truncate'}) export class TruncatePipe implements PipeTransform { - transform(value: any) { + transform(value: string) { return value.split(' ').slice(0, 2).join(' ') + '...'; } } diff --git a/packages/examples/core/ts/pipes/truncate.ts b/packages/examples/core/ts/pipes/truncate.ts index c37eaa96b6..8e6ac5217f 100644 --- a/packages/examples/core/ts/pipes/truncate.ts +++ b/packages/examples/core/ts/pipes/truncate.ts @@ -5,12 +5,12 @@ * 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 */ - +// #docregion import {Pipe, PipeTransform} from '@angular/core'; @Pipe({name: 'truncate'}) export class TruncatePipe implements PipeTransform { - transform(value: any, length: number, symbol: string) { + transform(value: string, length: number, symbol: string) { return value.split(' ').slice(0, length).join(' ') + symbol; } } diff --git a/packages/examples/core/ts/platform/platform.ts b/packages/examples/core/ts/platform/platform.ts index 361545bc86..3b3a01e8a0 100644 --- a/packages/examples/core/ts/platform/platform.ts +++ b/packages/examples/core/ts/platform/platform.ts @@ -6,14 +6,75 @@ * found in the LICENSE file at https://angular.io/license */ -import {Component, createPlatformFactory} from '@angular/core'; -import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; +import {ApplicationRef, Component, DoBootstrap, NgModule, Type} from '@angular/core'; +import {BrowserModule} from '@angular/platform-browser'; -// #docregion longform -@Component({selector: 'my-app', template: 'Hello World'}) -class MyApp { +@Component({ + selector: 'app-root', + template: `

Component One

`, +}) +export class ComponentOne { } -const myPlatformFactory = createPlatformFactory(platformBrowserDynamic, 'myPlatform'); -myPlatformFactory().bootstrapModule(MyApp); -// #enddocregion +@Component({ + selector: 'app-root', + template: `

Component Two

`, +}) +export class ComponentTwo { +} + +@Component({ + selector: 'app-root', + template: `

Component Three

`, +}) +export class ComponentThree { +} + +@Component({ + selector: 'app-root', + template: `

Component Four

`, +}) +export class ComponentFour { +} + +@NgModule({imports: [BrowserModule], declarations: [ComponentOne, ComponentTwo]}) +export class AppModule implements DoBootstrap { + // #docregion componentSelector + ngDoBootstrap(appRef: ApplicationRef) { + this.fetchDataFromApi().then((componentName: string) => { + if (componentName === 'ComponentOne') { + appRef.bootstrap(ComponentOne); + } else { + appRef.bootstrap(ComponentTwo); + } + }); + } + // #enddocregion + + fetchDataFromApi(): Promise { + return new Promise((resolve) => { + setTimeout(() => { + resolve('ComponentTwo'); + }, 2000); + }); + } +} + +@NgModule({imports: [BrowserModule], declarations: [ComponentThree]}) +export class AppModuleTwo implements DoBootstrap { + // #docregion cssSelector + ngDoBootstrap(appRef: ApplicationRef) { + appRef.bootstrap(ComponentThree, '#root-element'); + } + // #enddocregion cssSelector +} + +@NgModule({imports: [BrowserModule], declarations: [ComponentFour]}) +export class AppModuleThree implements DoBootstrap { + // #docregion domNode + ngDoBootstrap(appRef: ApplicationRef) { + const element = document.querySelector('#root-element'); + appRef.bootstrap(ComponentFour, element); + } + // #enddocregion domNode +} diff --git a/packages/examples/forms/ts/ngModelGroup/e2e_test/ng_model_group_spec.ts b/packages/examples/forms/ts/ngModelGroup/e2e_test/ng_model_group_spec.ts index e725564fab..224c61be0e 100644 --- a/packages/examples/forms/ts/ngModelGroup/e2e_test/ng_model_group_spec.ts +++ b/packages/examples/forms/ts/ngModelGroup/e2e_test/ng_model_group_spec.ts @@ -23,7 +23,8 @@ describe('ngModelGroup example', () => { it('should populate the UI with initial values', () => { expect(inputs.get(0).getAttribute('value')).toEqual('Nancy'); - expect(inputs.get(1).getAttribute('value')).toEqual('Drew'); + expect(inputs.get(1).getAttribute('value')).toEqual('J'); + expect(inputs.get(2).getAttribute('value')).toEqual('Drew'); }); it('should show the error when name is invalid', () => { @@ -37,6 +38,7 @@ describe('ngModelGroup example', () => { it('should set the value when changing the domain model', () => { buttons.get(1).click(); expect(inputs.get(0).getAttribute('value')).toEqual('Bess'); - expect(inputs.get(1).getAttribute('value')).toEqual('Marvin'); + expect(inputs.get(1).getAttribute('value')).toEqual('S'); + expect(inputs.get(2).getAttribute('value')).toEqual('Marvin'); }); }); diff --git a/packages/examples/forms/ts/ngModelGroup/ng_model_group_example.ts b/packages/examples/forms/ts/ngModelGroup/ng_model_group_example.ts index f610aafa90..ece8865f65 100644 --- a/packages/examples/forms/ts/ngModelGroup/ng_model_group_example.ts +++ b/packages/examples/forms/ts/ngModelGroup/ng_model_group_example.ts @@ -19,6 +19,7 @@ import {NgForm} from '@angular/forms';
+
@@ -30,15 +31,15 @@ import {NgForm} from '@angular/forms'; `, }) export class NgModelGroupComp { - name = {first: 'Nancy', last: 'Drew'}; + name = {first: 'Nancy', middle: 'J', last: 'Drew'}; onSubmit(f: NgForm) { - console.log(f.value); // {name: {first: 'Nancy', last: 'Drew'}, email: ''} + console.log(f.value); // {name: {first: 'Nancy', middle: 'J', last: 'Drew'}, email: ''} console.log(f.valid); // true } setValue() { - this.name = {first: 'Bess', last: 'Marvin'}; + this.name = {first: 'Bess', middle: 'S', last: 'Marvin'}; } } // #enddocregion diff --git a/packages/examples/testing/ts/testing.ts b/packages/examples/testing/ts/testing.ts index 16db49e745..6687375e89 100644 --- a/packages/examples/testing/ts/testing.ts +++ b/packages/examples/testing/ts/testing.ts @@ -18,7 +18,7 @@ describe('some component', () => { }); }); -/* tslint:disable-next-line:no-jasmine-focus */ +// tslint:disable-next-line:ban fdescribe('some component', () => { it('has a test', () => { @@ -44,7 +44,7 @@ describe('another component', () => { }); describe('some component', () => { - /* tslint:disable-next-line:no-jasmine-focus */ + // tslint:disable-next-line:ban fit('has a test', () => { // This test will run. diff --git a/packages/examples/upgrade/upgrade_example.bzl b/packages/examples/upgrade/upgrade_example.bzl index d3bca942a7..cd820eee2e 100644 --- a/packages/examples/upgrade/upgrade_example.bzl +++ b/packages/examples/upgrade/upgrade_example.bzl @@ -45,7 +45,7 @@ def create_upgrade_example_targets(name, srcs, e2e_srcs, entry_module, assets = additional_root_paths = ["angular/packages/examples"], bootstrap = [ "//packages/zone.js/bundles:zone.umd.js", - "@npm//:node_modules/angular/angular.js", + "@npm//:node_modules/angular-1.8/angular.js", "@npm//:node_modules/reflect-metadata/Reflect.js", ], static_files = [ diff --git a/packages/forms/BUILD.bazel b/packages/forms/BUILD.bazel index 6466bc700f..90fb3fb7f2 100644 --- a/packages/forms/BUILD.bazel +++ b/packages/forms/BUILD.bazel @@ -1,4 +1,4 @@ -load("//tools:defaults.bzl", "ng_module", "ng_package", "ts_api_guardian_test_npm_package") +load("//tools:defaults.bzl", "api_golden_test_npm_package", "ng_module", "ng_package") package(default_visibility = ["//visibility:public"]) @@ -38,12 +38,12 @@ ng_package( ], ) -ts_api_guardian_test_npm_package( +api_golden_test_npm_package( name = "forms_api", - actualDir = "angular/packages/forms/npm_package", data = [ ":npm_package", "//goldens:public-api", ], - goldenDir = "angular/goldens/public-api/forms", + golden_dir = "angular/goldens/public-api/forms", + npm_package = "angular/packages/forms/npm_package", ) diff --git a/packages/forms/package.json b/packages/forms/package.json index 5797bbeb80..33cb036b42 100644 --- a/packages/forms/package.json +++ b/packages/forms/package.json @@ -4,14 +4,17 @@ "description": "Angular - directives and services for creating forms", "author": "angular", "license": "MIT", + "engines": { + "node": "^12.14.1 || >=14.0.0" + }, "dependencies": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" }, "peerDependencies": { "@angular/core": "0.0.0-PLACEHOLDER", "@angular/common": "0.0.0-PLACEHOLDER", "@angular/platform-browser": "0.0.0-PLACEHOLDER", - "rxjs": "^6.5.3" + "rxjs": "^6.5.3 || ^7.0.0" }, "repository": { "type": "git", @@ -21,8 +24,5 @@ "ng-update": { "packageGroup": "NG_UPDATE_PACKAGE_GROUP" }, - "sideEffects": false, - "publishConfig":{ - "registry":"https://wombat-dressing-room.appspot.com" - } + "sideEffects": false } diff --git a/packages/forms/src/directives/abstract_form_group_directive.ts b/packages/forms/src/directives/abstract_form_group_directive.ts index d5497344ec..4c48a7a3bd 100644 --- a/packages/forms/src/directives/abstract_form_group_directive.ts +++ b/packages/forms/src/directives/abstract_form_group_directive.ts @@ -52,7 +52,7 @@ export class AbstractFormGroupDirective extends ControlContainer implements OnIn * @description * The `FormGroup` bound to this directive. */ - get control(): FormGroup { + override get control(): FormGroup { return this.formDirective!.getFormGroup(this); } @@ -60,7 +60,7 @@ export class AbstractFormGroupDirective extends ControlContainer implements OnIn * @description * The path to this group from the top-level directive. */ - get path(): string[] { + override get path(): string[] { return controlPath(this.name == null ? this.name : this.name.toString(), this._parent); } @@ -68,7 +68,7 @@ export class AbstractFormGroupDirective extends ControlContainer implements OnIn * @description * The top-level directive for this group if present, otherwise null. */ - get formDirective(): Form|null { + override get formDirective(): Form|null { return this._parent ? this._parent.formDirective : null; } diff --git a/packages/forms/src/directives/checkbox_value_accessor.ts b/packages/forms/src/directives/checkbox_value_accessor.ts index c2d97e19c8..ed126c20b7 100644 --- a/packages/forms/src/directives/checkbox_value_accessor.ts +++ b/packages/forms/src/directives/checkbox_value_accessor.ts @@ -47,51 +47,11 @@ export const CHECKBOX_VALUE_ACCESSOR: any = { }) export class CheckboxControlValueAccessor extends BuiltInControlValueAccessor implements ControlValueAccessor { - /** - * The registered callback function called when a change event occurs on the input element. - * @nodoc - */ - onChange = (_: any) => {}; - - /** - * The registered callback function called when a blur event occurs on the input element. - * @nodoc - */ - onTouched = () => {}; - - constructor(private _renderer: Renderer2, private _elementRef: ElementRef) { - super(); - } - /** * Sets the "checked" property on the input element. * @nodoc */ writeValue(value: any): void { - this._renderer.setProperty(this._elementRef.nativeElement, 'checked', value); - } - - /** - * Registers a function called when the control value changes. - * @nodoc - */ - registerOnChange(fn: (_: any) => {}): void { - this.onChange = fn; - } - - /** - * Registers a function called when the control is touched. - * @nodoc - */ - registerOnTouched(fn: () => {}): void { - this.onTouched = fn; - } - - /** - * Sets the "disabled" property on the input element. - * @nodoc - */ - setDisabledState(isDisabled: boolean): void { - this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled); + this.setProperty('checked', value); } } diff --git a/packages/forms/src/directives/control_container.ts b/packages/forms/src/directives/control_container.ts index 3b160a686f..9c88665dd4 100644 --- a/packages/forms/src/directives/control_container.ts +++ b/packages/forms/src/directives/control_container.ts @@ -37,7 +37,7 @@ export abstract class ControlContainer extends AbstractControlDirective { * @description * The path to this group. */ - get path(): string[]|null { + override get path(): string[]|null { return null; } } diff --git a/packages/forms/src/directives/control_value_accessor.ts b/packages/forms/src/directives/control_value_accessor.ts index 9c150ee2ea..01ac0d2741 100644 --- a/packages/forms/src/directives/control_value_accessor.ts +++ b/packages/forms/src/directives/control_value_accessor.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {InjectionToken} from '@angular/core'; +import {Directive, ElementRef, InjectionToken, Renderer2} from '@angular/core'; /** * @description @@ -132,13 +132,75 @@ export interface ControlValueAccessor { } /** - * Base class for all built-in ControlValueAccessor classes. We use this class to distinguish - * between built-in and custom CVAs, so that Forms logic can recognize built-in CVAs and treat - * custom ones with higher priority (when both built-in and custom CVAs are present). + * Base class for all ControlValueAccessor classes defined in Forms package. + * Contains common logic and utility functions. + * * Note: this is an *internal-only* class and should not be extended or used directly in * applications code. */ -export class BuiltInControlValueAccessor {} +@Directive() +export class BaseControlValueAccessor { + /** + * The registered callback function called when a change or input event occurs on the input + * element. + * @nodoc + */ + onChange = (_: any) => {}; + + /** + * The registered callback function called when a blur event occurs on the input element. + * @nodoc + */ + onTouched = () => {}; + + constructor(private _renderer: Renderer2, private _elementRef: ElementRef) {} + + /** + * Helper method that sets a property on a target element using the current Renderer + * implementation. + * @nodoc + */ + protected setProperty(key: string, value: any): void { + this._renderer.setProperty(this._elementRef.nativeElement, key, value); + } + + /** + * Registers a function called when the control is touched. + * @nodoc + */ + registerOnTouched(fn: () => void): void { + this.onTouched = fn; + } + + /** + * Registers a function called when the control value changes. + * @nodoc + */ + registerOnChange(fn: (_: any) => {}): void { + this.onChange = fn; + } + + /** + * Sets the "disabled" property on the range input element. + * @nodoc + */ + setDisabledState(isDisabled: boolean): void { + this.setProperty('disabled', isDisabled); + } +} + +/** + * Base class for all built-in ControlValueAccessor classes (except DefaultValueAccessor, which is + * used in case no other CVAs can be found). We use this class to distinguish between default CVA, + * built-in CVAs and custom CVAs, so that Forms logic can recognize built-in CVAs and treat custom + * ones with higher priority (when both built-in and custom CVAs are present). + * + * Note: this is an *internal-only* class and should not be extended or used directly in + * applications code. + */ +@Directive() +export class BuiltInControlValueAccessor extends BaseControlValueAccessor { +} /** * Used to provide a `ControlValueAccessor` for form controls. @@ -148,4 +210,4 @@ export class BuiltInControlValueAccessor {} * @publicApi */ export const NG_VALUE_ACCESSOR = - new InjectionToken>('NgValueAccessor'); \ No newline at end of file + new InjectionToken>('NgValueAccessor'); diff --git a/packages/forms/src/directives/default_value_accessor.ts b/packages/forms/src/directives/default_value_accessor.ts index de1883b45d..2c0fc9f132 100644 --- a/packages/forms/src/directives/default_value_accessor.ts +++ b/packages/forms/src/directives/default_value_accessor.ts @@ -9,7 +9,7 @@ import {ɵgetDOM as getDOM} from '@angular/common'; import {Directive, ElementRef, forwardRef, Inject, InjectionToken, Optional, Renderer2} from '@angular/core'; -import {ControlValueAccessor, NG_VALUE_ACCESSOR} from './control_value_accessor'; +import {BaseControlValueAccessor, ControlValueAccessor, NG_VALUE_ACCESSOR} from './control_value_accessor'; export const DEFAULT_VALUE_ACCESSOR: any = { provide: NG_VALUE_ACCESSOR, @@ -83,25 +83,14 @@ export const COMPOSITION_BUFFER_MODE = new InjectionToken('CompositionE }, providers: [DEFAULT_VALUE_ACCESSOR] }) -export class DefaultValueAccessor implements ControlValueAccessor { - /** - * The registered callback function called when an input event occurs on the input element. - * @nodoc - */ - onChange = (_: any) => {}; - - /** - * The registered callback function called when a blur event occurs on the input element. - * @nodoc - */ - onTouched = () => {}; - +export class DefaultValueAccessor extends BaseControlValueAccessor implements ControlValueAccessor { /** Whether the user is creating a composition string (IME events). */ private _composing = false; constructor( - private _renderer: Renderer2, private _elementRef: ElementRef, + renderer: Renderer2, elementRef: ElementRef, @Optional() @Inject(COMPOSITION_BUFFER_MODE) private _compositionMode: boolean) { + super(renderer, elementRef); if (this._compositionMode == null) { this._compositionMode = !_isAndroid(); } @@ -113,31 +102,7 @@ export class DefaultValueAccessor implements ControlValueAccessor { */ writeValue(value: any): void { const normalizedValue = value == null ? '' : value; - this._renderer.setProperty(this._elementRef.nativeElement, 'value', normalizedValue); - } - - /** - * Registers a function called when the control value changes. - * @nodoc - */ - registerOnChange(fn: (_: any) => void): void { - this.onChange = fn; - } - - /** - * Registers a function called when the control is touched. - * @nodoc - */ - registerOnTouched(fn: () => void): void { - this.onTouched = fn; - } - - /** - * Sets the "disabled" property on the input element. - * @nodoc - */ - setDisabledState(isDisabled: boolean): void { - this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled); + this.setProperty('value', normalizedValue); } /** @internal */ diff --git a/packages/forms/src/directives/ng_control_status.ts b/packages/forms/src/directives/ng_control_status.ts index a032484823..02417f44a3 100644 --- a/packages/forms/src/directives/ng_control_status.ts +++ b/packages/forms/src/directives/ng_control_status.ts @@ -12,7 +12,8 @@ import {AbstractControlDirective} from './abstract_control_directive'; import {ControlContainer} from './control_container'; import {NgControl} from './ng_control'; -type AnyControlStatus = 'untouched'|'touched'|'pristine'|'dirty'|'valid'|'invalid'|'pending'; +type AnyControlStatus = + 'untouched'|'touched'|'pristine'|'dirty'|'valid'|'invalid'|'pending'|'submitted'; export class AbstractControlStatus { private _cd: AbstractControlDirective|null; @@ -22,6 +23,17 @@ export class AbstractControlStatus { } is(status: AnyControlStatus): boolean { + // Currently with ViewEngine (in AOT mode) it's not possible to use private methods in host + // bindings. + // TODO: once ViewEngine is removed, this function should be refactored: + // - make the `is` method `protected`, so it's not accessible publicly + // - move the `submitted` status logic to the `NgControlStatusGroup` class + // and make it `private` or `protected` too. + if (status === 'submitted') { + // We check for the `submitted` field from `NgForm` and `FormGroupDirective` classes, but + // we avoid instanceof checks to prevent non-tree-shakable references to those types. + return !!(this._cd as unknown as {submitted: boolean} | null)?.submitted; + } return !!this._cd?.control?.[status]; } } @@ -36,6 +48,17 @@ export const ngControlStatusHost = { '[class.ng-pending]': 'is("pending")', }; +export const ngGroupStatusHost = { + '[class.ng-untouched]': 'is("untouched")', + '[class.ng-touched]': 'is("touched")', + '[class.ng-pristine]': 'is("pristine")', + '[class.ng-dirty]': 'is("dirty")', + '[class.ng-valid]': 'is("valid")', + '[class.ng-invalid]': 'is("invalid")', + '[class.ng-pending]': 'is("pending")', + '[class.ng-submitted]': 'is("submitted")', +}; + /** * @description * Directive automatically applied to Angular form controls that sets CSS classes @@ -69,7 +92,8 @@ export class NgControlStatus extends AbstractControlStatus { /** * @description * Directive automatically applied to Angular form groups that sets CSS classes - * based on control status (valid/invalid/dirty/etc). + * based on control status (valid/invalid/dirty/etc). On groups, this includes the additional + * class ng-submitted. * * @see `NgControlStatus` * @@ -80,7 +104,7 @@ export class NgControlStatus extends AbstractControlStatus { @Directive({ selector: '[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]', - host: ngControlStatusHost + host: ngGroupStatusHost }) export class NgControlStatusGroup extends AbstractControlStatus { constructor(@Optional() @Self() cd: ControlContainer) { diff --git a/packages/forms/src/directives/ng_form.ts b/packages/forms/src/directives/ng_form.ts index b91cf56786..1c7e34e56f 100644 --- a/packages/forms/src/directives/ng_form.ts +++ b/packages/forms/src/directives/ng_form.ts @@ -148,7 +148,7 @@ export class NgForm extends ControlContainer implements Form, AfterViewInit { * @description * The directive instance. */ - get formDirective(): Form { + override get formDirective(): Form { return this; } @@ -156,7 +156,7 @@ export class NgForm extends ControlContainer implements Form, AfterViewInit { * @description * The internal `FormGroup` instance. */ - get control(): FormGroup { + override get control(): FormGroup { return this.form; } @@ -165,7 +165,7 @@ export class NgForm extends ControlContainer implements Form, AfterViewInit { * Returns an array representing the path to this group. Because this directive * always lives at the top level of a form, it is always an empty array. */ - get path(): string[] { + override get path(): string[] { return []; } diff --git a/packages/forms/src/directives/ng_model.ts b/packages/forms/src/directives/ng_model.ts index db0b593505..827f95da69 100644 --- a/packages/forms/src/directives/ng_model.ts +++ b/packages/forms/src/directives/ng_model.ts @@ -136,7 +136,7 @@ const resolvedPromise = (() => Promise.resolve(null))(); exportAs: 'ngModel' }) export class NgModel extends NgControl implements OnChanges, OnDestroy { - public readonly control: FormControl = new FormControl(); + public override readonly control: FormControl = new FormControl(); // At runtime we coerce arbitrary values assigned to the "disabled" input to a "boolean". // This is not reflected in the type of the property because outside of templates, consumers @@ -162,7 +162,7 @@ export class NgModel extends NgControl implements OnChanges, OnDestroy { * uses this name as a key to retrieve this control's value. */ // TODO(issue/24571): remove '!'. - @Input() name!: string; + @Input() override name!: string; /** * @description @@ -240,7 +240,7 @@ export class NgModel extends NgControl implements OnChanges, OnDestroy { * Returns an array that represents the path from the top-level form to this control. * Each index is the string name of the control on that level. */ - get path(): string[] { + override get path(): string[] { return this._parent ? controlPath(this.name, this._parent) : [this.name]; } @@ -258,7 +258,7 @@ export class NgModel extends NgControl implements OnChanges, OnDestroy { * * @param newValue The new value emitted by `ngModelChange`. */ - viewToModelUpdate(newValue: any): void { + override viewToModelUpdate(newValue: any): void { this.viewModel = newValue; this.update.emit(newValue); } diff --git a/packages/forms/src/directives/ng_model_group.ts b/packages/forms/src/directives/ng_model_group.ts index 434a4de918..fd723939a4 100644 --- a/packages/forms/src/directives/ng_model_group.ts +++ b/packages/forms/src/directives/ng_model_group.ts @@ -55,7 +55,7 @@ export class NgModelGroup extends AbstractFormGroupDirective implements OnInit, * to a key in the parent `NgForm`. */ // TODO(issue/24571): remove '!'. - @Input('ngModelGroup') name!: string; + @Input('ngModelGroup') override name!: string; constructor( @Host() @SkipSelf() parent: ControlContainer, @@ -69,7 +69,7 @@ export class NgModelGroup extends AbstractFormGroupDirective implements OnInit, } /** @internal */ - _checkParentType(): void { + override _checkParentType(): void { if (!(this._parent instanceof NgModelGroup) && !(this._parent instanceof NgForm) && (typeof ngDevMode === 'undefined' || ngDevMode)) { TemplateDrivenErrors.modelGroupParentException(); diff --git a/packages/forms/src/directives/number_value_accessor.ts b/packages/forms/src/directives/number_value_accessor.ts index a90eda5d8f..103b4bc580 100644 --- a/packages/forms/src/directives/number_value_accessor.ts +++ b/packages/forms/src/directives/number_value_accessor.ts @@ -48,23 +48,6 @@ export const NUMBER_VALUE_ACCESSOR: any = { }) export class NumberValueAccessor extends BuiltInControlValueAccessor implements ControlValueAccessor { - /** - * The registered callback function called when a change or input event occurs on the input - * element. - * @nodoc - */ - onChange = (_: any) => {}; - - /** - * The registered callback function called when a blur event occurs on the input element. - * @nodoc - */ - onTouched = () => {}; - - constructor(private _renderer: Renderer2, private _elementRef: ElementRef) { - super(); - } - /** * Sets the "value" property on the input element. * @nodoc @@ -72,32 +55,16 @@ export class NumberValueAccessor extends BuiltInControlValueAccessor implements writeValue(value: number): void { // The value needs to be normalized for IE9, otherwise it is set to 'null' when null const normalizedValue = value == null ? '' : value; - this._renderer.setProperty(this._elementRef.nativeElement, 'value', normalizedValue); + this.setProperty('value', normalizedValue); } /** * Registers a function called when the control value changes. * @nodoc */ - registerOnChange(fn: (_: number|null) => void): void { + override registerOnChange(fn: (_: number|null) => void): void { this.onChange = (value) => { fn(value == '' ? null : parseFloat(value)); }; } - - /** - * Registers a function called when the control is touched. - * @nodoc - */ - registerOnTouched(fn: () => void): void { - this.onTouched = fn; - } - - /** - * Sets the "disabled" property on the input element. - * @nodoc - */ - setDisabledState(isDisabled: boolean): void { - this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled); - } } diff --git a/packages/forms/src/directives/radio_control_value_accessor.ts b/packages/forms/src/directives/radio_control_value_accessor.ts index f0b0e2e92f..e25a2a2477 100644 --- a/packages/forms/src/directives/radio_control_value_accessor.ts +++ b/packages/forms/src/directives/radio_control_value_accessor.ts @@ -124,15 +124,12 @@ export class RadioControlValueAccessor extends BuiltInControlValueAccessor imple /** * The registered callback function called when a change event occurs on the input element. + * Note: we declare `onChange` here (also used as host listener) as a function with no arguments + * to override the `onChange` function (which expects 1 argument) in the parent + * `BaseControlValueAccessor` class. * @nodoc */ - onChange = () => {}; - - /** - * The registered callback function called when a blur event occurs on the input element. - * @nodoc - */ - onTouched = () => {}; + override onChange = () => {}; /** * @description @@ -156,9 +153,9 @@ export class RadioControlValueAccessor extends BuiltInControlValueAccessor imple @Input() value: any; constructor( - private _renderer: Renderer2, private _elementRef: ElementRef, - private _registry: RadioControlRegistry, private _injector: Injector) { - super(); + renderer: Renderer2, elementRef: ElementRef, private _registry: RadioControlRegistry, + private _injector: Injector) { + super(renderer, elementRef); } /** @nodoc */ @@ -179,14 +176,14 @@ export class RadioControlValueAccessor extends BuiltInControlValueAccessor imple */ writeValue(value: any): void { this._state = value === this.value; - this._renderer.setProperty(this._elementRef.nativeElement, 'checked', this._state); + this.setProperty('checked', this._state); } /** * Registers a function called when the control value changes. * @nodoc */ - registerOnChange(fn: (_: any) => {}): void { + override registerOnChange(fn: (_: any) => {}): void { this._fn = fn; this.onChange = () => { fn(this.value); @@ -203,22 +200,6 @@ export class RadioControlValueAccessor extends BuiltInControlValueAccessor imple this.writeValue(value); } - /** - * Registers a function called when the control is touched. - * @nodoc - */ - registerOnTouched(fn: () => {}): void { - this.onTouched = fn; - } - - /** - * Sets the "disabled" property on the input element. - * @nodoc - */ - setDisabledState(isDisabled: boolean): void { - this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled); - } - private _checkName(): void { if (this.name && this.formControlName && this.name !== this.formControlName && (typeof ngDevMode === 'undefined' || ngDevMode)) { diff --git a/packages/forms/src/directives/range_value_accessor.ts b/packages/forms/src/directives/range_value_accessor.ts index 8cd487b1b5..6224a37b76 100644 --- a/packages/forms/src/directives/range_value_accessor.ts +++ b/packages/forms/src/directives/range_value_accessor.ts @@ -52,54 +52,21 @@ export const RANGE_VALUE_ACCESSOR: StaticProvider = { }) export class RangeValueAccessor extends BuiltInControlValueAccessor implements ControlValueAccessor { - /** - * The registered callback function called when a change or input event occurs on the input - * element. - * @nodoc - */ - onChange = (_: any) => {}; - - /** - * The registered callback function called when a blur event occurs on the input element. - * @nodoc - */ - onTouched = () => {}; - - constructor(private _renderer: Renderer2, private _elementRef: ElementRef) { - super(); - } - /** * Sets the "value" property on the input element. * @nodoc */ writeValue(value: any): void { - this._renderer.setProperty(this._elementRef.nativeElement, 'value', parseFloat(value)); + this.setProperty('value', parseFloat(value)); } /** * Registers a function called when the control value changes. * @nodoc */ - registerOnChange(fn: (_: number|null) => void): void { + override registerOnChange(fn: (_: number|null) => void): void { this.onChange = (value) => { fn(value == '' ? null : parseFloat(value)); }; } - - /** - * Registers a function called when the control is touched. - * @nodoc - */ - registerOnTouched(fn: () => void): void { - this.onTouched = fn; - } - - /** - * Sets the "disabled" property on the range input element. - * @nodoc - */ - setDisabledState(isDisabled: boolean): void { - this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled); - } } diff --git a/packages/forms/src/directives/reactive_directives/form_control_directive.ts b/packages/forms/src/directives/reactive_directives/form_control_directive.ts index ba7bace32d..ebcc91e2a4 100644 --- a/packages/forms/src/directives/reactive_directives/form_control_directive.ts +++ b/packages/forms/src/directives/reactive_directives/form_control_directive.ts @@ -149,7 +149,7 @@ export class FormControlDirective extends NgControl implements OnChanges, OnDest * Returns an array that represents the path from the top-level form to this control. * Each index is the string name of the control on that level. */ - get path(): string[] { + override get path(): string[] { return []; } @@ -157,7 +157,7 @@ export class FormControlDirective extends NgControl implements OnChanges, OnDest * @description * The `FormControl` bound to this directive. */ - get control(): FormControl { + override get control(): FormControl { return this.form; } @@ -167,7 +167,7 @@ export class FormControlDirective extends NgControl implements OnChanges, OnDest * * @param newValue The new value for the view model. */ - viewToModelUpdate(newValue: any): void { + override viewToModelUpdate(newValue: any): void { this.viewModel = newValue; this.update.emit(newValue); } diff --git a/packages/forms/src/directives/reactive_directives/form_control_name.ts b/packages/forms/src/directives/reactive_directives/form_control_name.ts index fe5044c6ed..183e1eb028 100644 --- a/packages/forms/src/directives/reactive_directives/form_control_name.ts +++ b/packages/forms/src/directives/reactive_directives/form_control_name.ts @@ -75,7 +75,7 @@ export class FormControlName extends NgControl implements OnChanges, OnDestroy { * Tracks the `FormControl` instance bound to the directive. */ // TODO(issue/24571): remove '!'. - readonly control!: FormControl; + override readonly control!: FormControl; /** * @description @@ -87,7 +87,7 @@ export class FormControlName extends NgControl implements OnChanges, OnDestroy { * to indices when iterating over controls in a `FormArray`. */ // TODO(issue/24571): remove '!'. - @Input('formControlName') name!: string|number|null; + @Input('formControlName') override name!: string|number|null; /** * @description @@ -166,7 +166,7 @@ export class FormControlName extends NgControl implements OnChanges, OnDestroy { * * @param newValue The new value for the view model. */ - viewToModelUpdate(newValue: any): void { + override viewToModelUpdate(newValue: any): void { this.viewModel = newValue; this.update.emit(newValue); } @@ -176,7 +176,7 @@ export class FormControlName extends NgControl implements OnChanges, OnDestroy { * Returns an array that represents the path from the top-level form to this control. * Each index is the string name of the control on that level. */ - get path(): string[] { + override get path(): string[] { return controlPath(this.name == null ? this.name : this.name.toString(), this._parent!); } diff --git a/packages/forms/src/directives/reactive_directives/form_group_directive.ts b/packages/forms/src/directives/reactive_directives/form_group_directive.ts index fb339db997..773771aa4f 100644 --- a/packages/forms/src/directives/reactive_directives/form_group_directive.ts +++ b/packages/forms/src/directives/reactive_directives/form_group_directive.ts @@ -114,7 +114,7 @@ export class FormGroupDirective extends ControlContainer implements Form, OnChan /** @nodoc */ ngOnDestroy() { if (this.form) { - cleanUpValidators(this.form, this, /* handleOnValidatorChange */ false); + cleanUpValidators(this.form, this); // Currently the `onCollectionChange` callback is rewritten each time the // `_registerOnCollectionChange` function is invoked. The implication is that cleanup should @@ -132,7 +132,7 @@ export class FormGroupDirective extends ControlContainer implements Form, OnChan * @description * Returns this directive's instance. */ - get formDirective(): Form { + override get formDirective(): Form { return this; } @@ -140,7 +140,7 @@ export class FormGroupDirective extends ControlContainer implements Form, OnChan * @description * Returns the `FormGroup` bound to this directive. */ - get control(): FormGroup { + override get control(): FormGroup { return this.form; } @@ -149,7 +149,7 @@ export class FormGroupDirective extends ControlContainer implements Form, OnChan * Returns an array representing the path to this group. Because this directive * always lives at the top level of a form, it always an empty array. */ - get path(): string[] { + override get path(): string[] { return []; } @@ -348,9 +348,9 @@ export class FormGroupDirective extends ControlContainer implements Form, OnChan } private _updateValidators() { - setUpValidators(this.form, this, /* handleOnValidatorChange */ false); + setUpValidators(this.form, this); if (this._oldForm) { - cleanUpValidators(this._oldForm, this, /* handleOnValidatorChange */ false); + cleanUpValidators(this._oldForm, this); } } diff --git a/packages/forms/src/directives/reactive_directives/form_group_name.ts b/packages/forms/src/directives/reactive_directives/form_group_name.ts index b941e65e72..1b2e8933b1 100644 --- a/packages/forms/src/directives/reactive_directives/form_group_name.ts +++ b/packages/forms/src/directives/reactive_directives/form_group_name.ts @@ -82,7 +82,7 @@ export class FormGroupName extends AbstractFormGroupDirective implements OnInit, * to indices when iterating over groups in a `FormArray`. */ // TODO(issue/24571): remove '!'. - @Input('formGroupName') name!: string|number|null; + @Input('formGroupName') override name!: string|number|null; constructor( @Optional() @Host() @SkipSelf() parent: ControlContainer, @@ -96,7 +96,7 @@ export class FormGroupName extends AbstractFormGroupDirective implements OnInit, } /** @internal */ - _checkParentType(): void { + override _checkParentType(): void { if (_hasInvalidParent(this._parent) && (typeof ngDevMode === 'undefined' || ngDevMode)) { ReactiveErrors.groupParentException(); } @@ -147,7 +147,7 @@ export class FormArrayName extends ControlContainer implements OnInit, OnDestroy * to indices when iterating over arrays in a `FormArray`. */ // TODO(issue/24571): remove '!'. - @Input('formArrayName') name!: string|number|null; + @Input('formArrayName') override name!: string|number|null; constructor( @Optional() @Host() @SkipSelf() parent: ControlContainer, @@ -184,7 +184,7 @@ export class FormArrayName extends ControlContainer implements OnInit, OnDestroy * @description * The `FormArray` bound to this directive. */ - get control(): FormArray { + override get control(): FormArray { return this.formDirective!.getFormArray(this); } @@ -192,7 +192,7 @@ export class FormArrayName extends ControlContainer implements OnInit, OnDestroy * @description * The top-level directive for this group if present, otherwise null. */ - get formDirective(): FormGroupDirective|null { + override get formDirective(): FormGroupDirective|null { return this._parent ? this._parent.formDirective : null; } @@ -201,7 +201,7 @@ export class FormArrayName extends ControlContainer implements OnInit, OnDestroy * Returns an array that represents the path from the top-level form to this control. * Each index is the string name of the control on that level. */ - get path(): string[] { + override get path(): string[] { return controlPath(this.name == null ? this.name : this.name.toString(), this._parent); } diff --git a/packages/forms/src/directives/select_control_value_accessor.ts b/packages/forms/src/directives/select_control_value_accessor.ts index d1c23eb1f4..3689bc8f75 100644 --- a/packages/forms/src/directives/select_control_value_accessor.ts +++ b/packages/forms/src/directives/select_control_value_accessor.ts @@ -99,18 +99,6 @@ export class SelectControlValueAccessor extends BuiltInControlValueAccessor impl /** @internal */ _idCounter: number = 0; - /** - * The registered callback function called when a change event occurs on the input element. - * @nodoc - */ - onChange = (_: any) => {}; - - /** - * The registered callback function called when a blur event occurs on the input element. - * @nodoc - */ - onTouched = () => {}; - /** * @description * Tracks the option comparison algorithm for tracking identities when @@ -126,10 +114,6 @@ export class SelectControlValueAccessor extends BuiltInControlValueAccessor impl private _compareWith: (o1: any, o2: any) => boolean = Object.is; - constructor(private _renderer: Renderer2, private _elementRef: ElementRef) { - super(); - } - /** * Sets the "value" property on the input element. The "selectedIndex" * property is also set if an ID is provided on the option element. @@ -139,39 +123,23 @@ export class SelectControlValueAccessor extends BuiltInControlValueAccessor impl this.value = value; const id: string|null = this._getOptionId(value); if (id == null) { - this._renderer.setProperty(this._elementRef.nativeElement, 'selectedIndex', -1); + this.setProperty('selectedIndex', -1); } const valueString = _buildValueString(id, value); - this._renderer.setProperty(this._elementRef.nativeElement, 'value', valueString); + this.setProperty('value', valueString); } /** * Registers a function called when the control value changes. * @nodoc */ - registerOnChange(fn: (value: any) => any): void { + override registerOnChange(fn: (value: any) => any): void { this.onChange = (valueString: string) => { this.value = this._getOptionValue(valueString); fn(this.value); }; } - /** - * Registers a function called when the control is touched. - * @nodoc - */ - registerOnTouched(fn: () => any): void { - this.onTouched = fn; - } - - /** - * Sets the "disabled" property on the select input element. - * @nodoc - */ - setDisabledState(isDisabled: boolean): void { - this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled); - } - /** @internal */ _registerOption(): string { return (this._idCounter++).toString(); diff --git a/packages/forms/src/directives/select_multiple_control_value_accessor.ts b/packages/forms/src/directives/select_multiple_control_value_accessor.ts index 1af649c777..151194afb1 100644 --- a/packages/forms/src/directives/select_multiple_control_value_accessor.ts +++ b/packages/forms/src/directives/select_multiple_control_value_accessor.ts @@ -95,18 +95,6 @@ export class SelectMultipleControlValueAccessor extends BuiltInControlValueAcces /** @internal */ _idCounter: number = 0; - /** - * The registered callback function called when a change event occurs on the input element. - * @nodoc - */ - onChange = (_: any) => {}; - - /** - * The registered callback function called when a blur event occurs on the input element. - * @nodoc - */ - onTouched = () => {}; - /** * @description * Tracks the option comparison algorithm for tracking identities when @@ -122,10 +110,6 @@ export class SelectMultipleControlValueAccessor extends BuiltInControlValueAcces private _compareWith: (o1: any, o2: any) => boolean = Object.is; - constructor(private _renderer: Renderer2, private _elementRef: ElementRef) { - super(); - } - /** * Sets the "value" property on one or of more of the select's options. * @nodoc @@ -152,7 +136,7 @@ export class SelectMultipleControlValueAccessor extends BuiltInControlValueAcces * and writes an array of the selected options. * @nodoc */ - registerOnChange(fn: (value: any) => any): void { + override registerOnChange(fn: (value: any) => any): void { this.onChange = (_: any) => { const selected: Array = []; if (_.selectedOptions !== undefined) { @@ -179,22 +163,6 @@ export class SelectMultipleControlValueAccessor extends BuiltInControlValueAcces }; } - /** - * Registers a function called when the control is touched. - * @nodoc - */ - registerOnTouched(fn: () => any): void { - this.onTouched = fn; - } - - /** - * Sets the "disabled" property on the select input element. - * @nodoc - */ - setDisabledState(isDisabled: boolean): void { - this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled); - } - /** @internal */ _registerOption(value: ɵNgSelectMultipleOption): string { const id: string = (this._idCounter++).toString(); diff --git a/packages/forms/src/directives/shared.ts b/packages/forms/src/directives/shared.ts index a2dbbe667d..e8025b2327 100644 --- a/packages/forms/src/directives/shared.ts +++ b/packages/forms/src/directives/shared.ts @@ -37,7 +37,7 @@ export function setUpControl(control: FormControl, dir: NgControl): void { if (!dir.valueAccessor) _throwError(dir, 'No value accessor for form control with'); } - setUpValidators(control, dir, /* handleOnValidatorChange */ true); + setUpValidators(control, dir); dir.valueAccessor!.writeValue(control.value); @@ -79,7 +79,7 @@ export function cleanUpControl( dir.valueAccessor.registerOnTouched(noop); } - cleanUpValidators(control, dir, /* handleOnValidatorChange */ true); + cleanUpValidators(control, dir); if (control) { dir._invokeOnDestroyCallbacks(); @@ -122,12 +122,8 @@ export function setUpDisabledChangeHandler(control: FormControl, dir: NgControl) * * @param control Form control where directive validators should be setup. * @param dir Directive instance that contains validators to be setup. - * @param handleOnValidatorChange Flag that determines whether directive validators should be setup - * to handle validator input change. */ -export function setUpValidators( - control: AbstractControl, dir: AbstractControlDirective, - handleOnValidatorChange: boolean): void { +export function setUpValidators(control: AbstractControl, dir: AbstractControlDirective): void { const validators = getControlValidators(control); if (dir.validator !== null) { control.setValidators(mergeValidators(validators, dir.validator)); @@ -151,11 +147,9 @@ export function setUpValidators( } // Re-run validation when validator binding changes, e.g. minlength=3 -> minlength=4 - if (handleOnValidatorChange) { - const onValidatorChange = () => control.updateValueAndValidity(); - registerOnValidatorChange(dir._rawValidators, onValidatorChange); - registerOnValidatorChange(dir._rawAsyncValidators, onValidatorChange); - } + const onValidatorChange = () => control.updateValueAndValidity(); + registerOnValidatorChange(dir._rawValidators, onValidatorChange); + registerOnValidatorChange(dir._rawAsyncValidators, onValidatorChange); } /** @@ -165,13 +159,10 @@ export function setUpValidators( * * @param control Form control from where directive validators should be removed. * @param dir Directive instance that contains validators to be removed. - * @param handleOnValidatorChange Flag that determines whether directive validators should also be - * cleaned up to stop handling validator input change (if previously configured to do so). * @returns true if a control was updated as a result of this action. */ export function cleanUpValidators( - control: AbstractControl|null, dir: AbstractControlDirective, - handleOnValidatorChange: boolean): boolean { + control: AbstractControl|null, dir: AbstractControlDirective): boolean { let isControlUpdated = false; if (control !== null) { if (dir.validator !== null) { @@ -200,12 +191,10 @@ export function cleanUpValidators( } } - if (handleOnValidatorChange) { - // Clear onValidatorChange callbacks by providing a noop function. - const noop = () => {}; - registerOnValidatorChange(dir._rawValidators, noop); - registerOnValidatorChange(dir._rawAsyncValidators, noop); - } + // Clear onValidatorChange callbacks by providing a noop function. + const noop = () => {}; + registerOnValidatorChange(dir._rawValidators, noop); + registerOnValidatorChange(dir._rawAsyncValidators, noop); return isControlUpdated; } @@ -264,7 +253,7 @@ export function setUpFormContainer( control: FormGroup|FormArray, dir: AbstractFormGroupDirective|FormArrayName) { if (control == null && (typeof ngDevMode === 'undefined' || ngDevMode)) _throwError(dir, 'Cannot find control with'); - setUpValidators(control, dir, /* handleOnValidatorChange */ false); + setUpValidators(control, dir); } /** @@ -276,7 +265,7 @@ export function setUpFormContainer( */ export function cleanUpFormContainer( control: FormGroup|FormArray, dir: AbstractFormGroupDirective|FormArrayName): boolean { - return cleanUpValidators(control, dir, /* handleOnValidatorChange */ false); + return cleanUpValidators(control, dir); } function _noControlError(dir: NgControl) { diff --git a/packages/forms/src/directives/validators.ts b/packages/forms/src/directives/validators.ts index eff697b128..cc83219bdf 100644 --- a/packages/forms/src/directives/validators.ts +++ b/packages/forms/src/directives/validators.ts @@ -12,6 +12,16 @@ import {Observable} from 'rxjs'; import {AbstractControl} from '../model'; import {emailValidator, maxLengthValidator, maxValidator, minLengthValidator, minValidator, NG_VALIDATORS, nullValidator, patternValidator, requiredTrueValidator, requiredValidator} from '../validators'; +/** + * @description + * Method that updates string to integer if not alread a number + * + * @param value The value to convert to integer + * @returns value of parameter in number or integer. + */ +function toNumber(value: string|number): number { + return typeof value === 'number' ? value : parseInt(value, 10); +} /** * @description @@ -167,7 +177,7 @@ export const MAX_VALIDATOR: StaticProvider = { selector: 'input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]', providers: [MAX_VALIDATOR], - host: {'[attr.max]': 'max ? max : null'} + host: {'[attr.max]': 'max ?? null'} }) export class MaxValidator extends AbstractValidatorDirective implements OnChanges { /** @@ -176,11 +186,11 @@ export class MaxValidator extends AbstractValidatorDirective implements OnChange */ @Input() max!: string|number; /** @internal */ - inputName = 'max'; + override inputName = 'max'; /** @internal */ - normalizeInput = (input: string): number => parseInt(input, 10); + override normalizeInput = (input: string): number => parseFloat(input); /** @internal */ - createValidator = (max: number): ValidatorFn => maxValidator(max); + override createValidator = (max: number): ValidatorFn => maxValidator(max); /** * Declare `ngOnChanges` lifecycle hook at the main directive level (vs keeping it in base class) * to avoid differences in handling inheritance of lifecycle hooks between Ivy and ViewEngine in @@ -227,7 +237,7 @@ export const MIN_VALIDATOR: StaticProvider = { selector: 'input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]', providers: [MIN_VALIDATOR], - host: {'[attr.min]': 'min ? min : null'} + host: {'[attr.min]': 'min ?? null'} }) export class MinValidator extends AbstractValidatorDirective implements OnChanges { /** @@ -236,11 +246,11 @@ export class MinValidator extends AbstractValidatorDirective implements OnChange */ @Input() min!: string|number; /** @internal */ - inputName = 'min'; + override inputName = 'min'; /** @internal */ - normalizeInput = (input: string): number => parseInt(input, 10); + override normalizeInput = (input: string): number => parseFloat(input); /** @internal */ - createValidator = (min: number): ValidatorFn => minValidator(min); + override createValidator = (min: number): ValidatorFn => minValidator(min); /** * Declare `ngOnChanges` lifecycle hook at the main directive level (vs keeping it in base class) * to avoid differences in handling inheritance of lifecycle hooks between Ivy and ViewEngine in @@ -410,7 +420,7 @@ export class CheckboxRequiredValidator extends RequiredValidator { * Returns the validation result if enabled, otherwise null. * @nodoc */ - validate(control: AbstractControl): ValidationErrors|null { + override validate(control: AbstractControl): ValidationErrors|null { return this.required ? requiredTrueValidator(control) : null; } } @@ -540,7 +550,7 @@ export const MIN_LENGTH_VALIDATOR: any = { @Directive({ selector: '[minlength][formControlName],[minlength][formControl],[minlength][ngModel]', providers: [MIN_LENGTH_VALIDATOR], - host: {'[attr.minlength]': 'minlength ? minlength : null'} + host: {'[attr.minlength]': 'enabled() ? minlength : null'} }) export class MinLengthValidator implements Validator, OnChanges { private _validator: ValidatorFn = nullValidator; @@ -551,7 +561,7 @@ export class MinLengthValidator implements Validator, OnChanges { * Tracks changes to the minimum length bound to this directive. */ @Input() - minlength!: string|number; // This input is always defined, since the name matches selector. + minlength!: string|number|null; // This input is always defined, since the name matches selector. /** @nodoc */ ngOnChanges(changes: SimpleChanges): void { @@ -567,7 +577,7 @@ export class MinLengthValidator implements Validator, OnChanges { * @nodoc */ validate(control: AbstractControl): ValidationErrors|null { - return this.minlength == null ? null : this._validator(control); + return this.enabled() ? this._validator(control) : null; } /** @@ -579,8 +589,13 @@ export class MinLengthValidator implements Validator, OnChanges { } private _createValidator(): void { - this._validator = minLengthValidator( - typeof this.minlength === 'number' ? this.minlength : parseInt(this.minlength, 10)); + this._validator = + this.enabled() ? minLengthValidator(toNumber(this.minlength!)) : nullValidator; + } + + /** @nodoc */ + enabled(): boolean { + return this.minlength != null /* both `null` and `undefined` */; } } @@ -618,7 +633,7 @@ export const MAX_LENGTH_VALIDATOR: any = { @Directive({ selector: '[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]', providers: [MAX_LENGTH_VALIDATOR], - host: {'[attr.maxlength]': 'maxlength ? maxlength : null'} + host: {'[attr.maxlength]': 'enabled() ? maxlength : null'} }) export class MaxLengthValidator implements Validator, OnChanges { private _validator: ValidatorFn = nullValidator; @@ -629,7 +644,7 @@ export class MaxLengthValidator implements Validator, OnChanges { * Tracks changes to the maximum length bound to this directive. */ @Input() - maxlength!: string|number; // This input is always defined, since the name matches selector. + maxlength!: string|number|null; // This input is always defined, since the name matches selector. /** @nodoc */ ngOnChanges(changes: SimpleChanges): void { @@ -644,7 +659,7 @@ export class MaxLengthValidator implements Validator, OnChanges { * @nodoc */ validate(control: AbstractControl): ValidationErrors|null { - return this.maxlength != null ? this._validator(control) : null; + return this.enabled() ? this._validator(control) : null; } /** @@ -656,8 +671,13 @@ export class MaxLengthValidator implements Validator, OnChanges { } private _createValidator(): void { - this._validator = maxLengthValidator( - typeof this.maxlength === 'number' ? this.maxlength : parseInt(this.maxlength, 10)); + this._validator = + this.enabled() ? maxLengthValidator(toNumber(this.maxlength!)) : nullValidator; + } + + /** @nodoc */ + enabled(): boolean { + return this.maxlength != null /* both `null` and `undefined` */; } } diff --git a/packages/forms/src/model.ts b/packages/forms/src/model.ts index ae6550a82b..c84ea4565b 100644 --- a/packages/forms/src/model.ts +++ b/packages/forms/src/model.ts @@ -11,7 +11,7 @@ import {Observable} from 'rxjs'; import {removeListItem} from './directives/shared'; import {AsyncValidatorFn, ValidationErrors, ValidatorFn} from './directives/validators'; -import {composeAsyncValidators, composeValidators, toObservable} from './validators'; +import {addValidators, composeAsyncValidators, composeValidators, hasValidator, makeValidatorsArray, removeValidators, toObservable} from './validators'; /** * Reports that a FormControl is valid, meaning that no errors exist in the input value. @@ -45,6 +45,23 @@ export const PENDING = 'PENDING'; */ export const DISABLED = 'DISABLED'; +/** + * A form can have several different statuses. Each + * possible status is returned as a string literal. + * + * * **VALID**: Reports that a FormControl is valid, meaning that no errors exist in the input + * value. + * * **INVALID**: Reports that a FormControl is invalid, meaning that an error exists in the input + * value. + * * **PENDING**: Reports that a FormControl is pending, meaning that that async validation is + * occurring and errors are not yet available for the input value. + * * **DISABLED**: Reports that a FormControl is + * disabled, meaning that the control is exempt from ancestor calculations of validity or value. + * + * @publicApi + */ +export type FormControlStatus = 'VALID'|'INVALID'|'PENDING'|'DISABLED'; + function _find(control: AbstractControl, path: Array|string, delimiter: string) { if (path == null) return null; @@ -129,14 +146,12 @@ export interface AbstractControlOptions { updateOn?: 'change'|'blur'|'submit'; } - function isOptionsObj(validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions| null): validatorOrOpts is AbstractControlOptions { return validatorOrOpts != null && !Array.isArray(validatorOrOpts) && typeof validatorOrOpts === 'object'; } - /** * This is the base class for `FormControl`, `FormGroup`, and `FormArray`. * @@ -245,7 +260,9 @@ export abstract class AbstractControl { } /** - * The function that is used to determine the validity of this control synchronously. + * Returns the function that is used to determine the validity of this control synchronously. + * If multiple validators have been added, this will be a single composed function. + * See `Validators.compose()` for additional information. */ get validator(): ValidatorFn|null { return this._composedValidatorFn; @@ -255,7 +272,9 @@ export abstract class AbstractControl { } /** - * The function that is used to determine the validity of this control asynchronously. + * Returns the function that is used to determine the validity of this control asynchronously. + * If multiple validators have been added, this will be a single composed function. + * See `Validators.compose()` for additional information. */ get asyncValidator(): AsyncValidatorFn|null { return this._composedAsyncValidatorFn; @@ -272,19 +291,15 @@ export abstract class AbstractControl { } /** - * The validation status of the control. There are four possible - * validation status values: + * The validation status of the control. * - * * **VALID**: This control has passed all validation checks. - * * **INVALID**: This control has failed at least one validation check. - * * **PENDING**: This control is in the midst of conducting a validation check. - * * **DISABLED**: This control is exempt from validation checks. + * @see `FormControlStatus` * * These status values are mutually exclusive, so a control cannot be * both valid AND invalid or invalid AND disabled. */ // TODO(issue/24571): remove '!'. - public readonly status!: string; + public readonly status!: FormControlStatus; /** * A control is `valid` when its `status` is `VALID`. @@ -407,11 +422,12 @@ export abstract class AbstractControl { * A multicasting observable that emits an event every time the validation `status` of the control * recalculates. * + * @see `FormControlStatus` * @see {@link AbstractControl.status} * */ // TODO(issue/24571): remove '!'. - public readonly statusChanges!: Observable; + public readonly statusChanges!: Observable; /** * Reports the update strategy of the `AbstractControl` (meaning @@ -425,32 +441,120 @@ export abstract class AbstractControl { /** * Sets the synchronous validators that are active on this control. Calling - * this overwrites any existing sync validators. + * this overwrites any existing synchronous validators. * * When you add or remove a validator at run time, you must call * `updateValueAndValidity()` for the new validation to take effect. * + * If you want to add a new validator without affecting existing ones, consider + * using `addValidators()` method instead. */ - setValidators(newValidator: ValidatorFn|ValidatorFn[]|null): void { - this._rawValidators = newValidator; - this._composedValidatorFn = coerceToValidator(newValidator); + setValidators(validators: ValidatorFn|ValidatorFn[]|null): void { + this._rawValidators = validators; + this._composedValidatorFn = coerceToValidator(validators); } /** - * Sets the async validators that are active on this control. Calling this - * overwrites any existing async validators. + * Sets the asynchronous validators that are active on this control. Calling this + * overwrites any existing asynchronous validators. * * When you add or remove a validator at run time, you must call * `updateValueAndValidity()` for the new validation to take effect. * + * If you want to add a new validator without affecting existing ones, consider + * using `addAsyncValidators()` method instead. */ - setAsyncValidators(newValidator: AsyncValidatorFn|AsyncValidatorFn[]|null): void { - this._rawAsyncValidators = newValidator; - this._composedAsyncValidatorFn = coerceToAsyncValidator(newValidator); + setAsyncValidators(validators: AsyncValidatorFn|AsyncValidatorFn[]|null): void { + this._rawAsyncValidators = validators; + this._composedAsyncValidatorFn = coerceToAsyncValidator(validators); } /** - * Empties out the sync validator list. + * Add a synchronous validator or validators to this control, without affecting other validators. + * + * When you add or remove a validator at run time, you must call + * `updateValueAndValidity()` for the new validation to take effect. + * + * Adding a validator that already exists will have no effect. If duplicate validator functions + * are present in the `validators` array, only the first instance would be added to a form + * control. + * + * @param validators The new validator function or functions to add to this control. + */ + addValidators(validators: ValidatorFn|ValidatorFn[]): void { + this.setValidators(addValidators(validators, this._rawValidators)); + } + + /** + * Add an asynchronous validator or validators to this control, without affecting other + * validators. + * + * When you add or remove a validator at run time, you must call + * `updateValueAndValidity()` for the new validation to take effect. + * + * Adding a validator that already exists will have no effect. + * + * @param validators The new asynchronous validator function or functions to add to this control. + */ + addAsyncValidators(validators: AsyncValidatorFn|AsyncValidatorFn[]): void { + this.setAsyncValidators(addValidators(validators, this._rawAsyncValidators)); + } + + /** + * Remove a synchronous validator from this control, without affecting other validators. + * Validators are compared by function reference; you must pass a reference to the exact same + * validator function as the one that was originally set. If a provided validator is not found, + * it is ignored. + * + * When you add or remove a validator at run time, you must call + * `updateValueAndValidity()` for the new validation to take effect. + * + * @param validators The validator or validators to remove. + */ + removeValidators(validators: ValidatorFn|ValidatorFn[]): void { + this.setValidators(removeValidators(validators, this._rawValidators)); + } + + /** + * Remove an asynchronous validator from this control, without affecting other validators. + * Validators are compared by function reference; you must pass a reference to the exact same + * validator function as the one that was originally set. If a provided validator is not found, it + * is ignored. + * + * When you add or remove a validator at run time, you must call + * `updateValueAndValidity()` for the new validation to take effect. + * + * @param validators The asynchronous validator or validators to remove. + */ + removeAsyncValidators(validators: AsyncValidatorFn|AsyncValidatorFn[]): void { + this.setAsyncValidators(removeValidators(validators, this._rawAsyncValidators)); + } + + /** + * Check whether a synchronous validator function is present on this control. The provided + * validator must be a reference to the exact same function that was provided. + * + * @param validator The validator to check for presence. Compared by function reference. + * @returns Whether the provided validator was found on this control. + */ + hasValidator(validator: ValidatorFn): boolean { + return hasValidator(this._rawValidators, validator); + } + + /** + * Check whether an asynchronous validator function is present on this control. The provided + * validator must be a reference to the exact same function that was provided. + * + * @param validator The asynchronous validator to check for presence. Compared by function + * reference. + * @returns Whether the provided asynchronous validator was found on this control. + */ + hasAsyncValidator(validator: AsyncValidatorFn): boolean { + return hasValidator(this._rawAsyncValidators, validator); + } + + /** + * Empties out the synchronous validator list. * * When you add or remove a validator at run time, you must call * `updateValueAndValidity()` for the new validation to take effect. @@ -597,10 +701,10 @@ export abstract class AbstractControl { * */ markAsPending(opts: {onlySelf?: boolean, emitEvent?: boolean} = {}): void { - (this as {status: string}).status = PENDING; + (this as {status: FormControlStatus}).status = PENDING; if (opts.emitEvent !== false) { - (this.statusChanges as EventEmitter).emit(this.status); + (this.statusChanges as EventEmitter).emit(this.status); } if (this._parent && !opts.onlySelf) { @@ -630,7 +734,7 @@ export abstract class AbstractControl { // parent's dirtiness based on the children. const skipPristineCheck = this._parentMarkedDirty(opts.onlySelf); - (this as {status: string}).status = DISABLED; + (this as {status: FormControlStatus}).status = DISABLED; (this as {errors: ValidationErrors | null}).errors = null; this._forEachChild((control: AbstractControl) => { control.disable({...opts, onlySelf: true}); @@ -639,7 +743,7 @@ export abstract class AbstractControl { if (opts.emitEvent !== false) { (this.valueChanges as EventEmitter).emit(this.value); - (this.statusChanges as EventEmitter).emit(this.status); + (this.statusChanges as EventEmitter).emit(this.status); } this._updateAncestors({...opts, skipPristineCheck}); @@ -669,7 +773,7 @@ export abstract class AbstractControl { // parent's dirtiness based on the children. const skipPristineCheck = this._parentMarkedDirty(opts.onlySelf); - (this as {status: string}).status = VALID; + (this as {status: FormControlStatus}).status = VALID; this._forEachChild((control: AbstractControl) => { control.enable({...opts, onlySelf: true}); }); @@ -733,7 +837,7 @@ export abstract class AbstractControl { if (this.enabled) { this._cancelExistingSubscription(); (this as {errors: ValidationErrors | null}).errors = this._runValidator(); - (this as {status: string}).status = this._calculateStatus(); + (this as {status: FormControlStatus}).status = this._calculateStatus(); if (this.status === VALID || this.status === PENDING) { this._runAsyncValidator(opts.emitEvent); @@ -742,7 +846,7 @@ export abstract class AbstractControl { if (opts.emitEvent !== false) { (this.valueChanges as EventEmitter).emit(this.value); - (this.statusChanges as EventEmitter).emit(this.status); + (this.statusChanges as EventEmitter).emit(this.status); } if (this._parent && !opts.onlySelf) { @@ -757,7 +861,7 @@ export abstract class AbstractControl { } private _setInitialStatus() { - (this as {status: string}).status = this._allControlsDisabled() ? DISABLED : VALID; + (this as {status: FormControlStatus}).status = this._allControlsDisabled() ? DISABLED : VALID; } private _runValidator(): ValidationErrors|null { @@ -766,7 +870,7 @@ export abstract class AbstractControl { private _runAsyncValidator(emitEvent?: boolean): void { if (this.asyncValidator) { - (this as {status: string}).status = PENDING; + (this as {status: FormControlStatus}).status = PENDING; this._hasOwnPendingAsyncValidator = true; const obs = toObservable(this.asyncValidator(this)); this._asyncValidationSubscription = obs.subscribe((errors: ValidationErrors|null) => { @@ -927,10 +1031,10 @@ export abstract class AbstractControl { /** @internal */ _updateControlsErrors(emitEvent: boolean): void { - (this as {status: string}).status = this._calculateStatus(); + (this as {status: FormControlStatus}).status = this._calculateStatus(); if (emitEvent) { - (this.statusChanges as EventEmitter).emit(this.status); + (this.statusChanges as EventEmitter).emit(this.status); } if (this._parent) { @@ -941,11 +1045,11 @@ export abstract class AbstractControl { /** @internal */ _initObservables() { (this as {valueChanges: Observable}).valueChanges = new EventEmitter(); - (this as {statusChanges: Observable}).statusChanges = new EventEmitter(); + (this as {statusChanges: Observable}).statusChanges = new EventEmitter(); } - private _calculateStatus(): string { + private _calculateStatus(): FormControlStatus { if (this._allControlsDisabled()) return DISABLED; if (this.errors) return INVALID; if (this._hasOwnPendingAsyncValidator || this._anyControlsHaveStatus(PENDING)) return PENDING; @@ -969,7 +1073,7 @@ export abstract class AbstractControl { abstract _syncPendingControls(): boolean; /** @internal */ - _anyControlsHaveStatus(status: string): boolean { + _anyControlsHaveStatus(status: FormControlStatus): boolean { return this._anyControls((control: AbstractControl) => control.status === status); } @@ -1065,7 +1169,7 @@ export abstract class AbstractControl { * console.log(control.status); // 'DISABLED' * ``` * - * The following example initializes the control with a sync validator. + * The following example initializes the control with a synchronous validator. * * ```ts * const control = new FormControl('', Validators.required); @@ -1167,7 +1271,7 @@ export class FormControl extends AbstractControl { // `VALID` or `INVALID`. // The status should be broadcasted via the `statusChanges` observable, so we set `emitEvent` // to `true` to allow that during the control creation process. - emitEvent: !!asyncValidator + emitEvent: !!this.asyncValidator }); } @@ -1194,7 +1298,7 @@ export class FormControl extends AbstractControl { * event to update the model. * */ - setValue(value: any, options: { + override setValue(value: any, options: { onlySelf?: boolean, emitEvent?: boolean, emitModelToViewChange?: boolean, @@ -1217,7 +1321,7 @@ export class FormControl extends AbstractControl { * * @see `setValue` for options */ - patchValue(value: any, options: { + override patchValue(value: any, options: { onlySelf?: boolean, emitEvent?: boolean, emitModelToViewChange?: boolean, @@ -1244,7 +1348,8 @@ export class FormControl extends AbstractControl { * When false, no events are emitted. * */ - reset(formState: any = null, options: {onlySelf?: boolean, emitEvent?: boolean} = {}): void { + override reset(formState: any = null, options: {onlySelf?: boolean, emitEvent?: boolean} = {}): + void { this._applyFormState(formState); this.markAsPristine(options); this.markAsUntouched(options); @@ -1255,19 +1360,19 @@ export class FormControl extends AbstractControl { /** * @internal */ - _updateValue() {} + override _updateValue() {} /** * @internal */ - _anyControls(condition: Function): boolean { + override _anyControls(condition: Function): boolean { return false; } /** * @internal */ - _allControlsDisabled(): boolean { + override _allControlsDisabled(): boolean { return this.disabled; } @@ -1308,10 +1413,10 @@ export class FormControl extends AbstractControl { /** * @internal */ - _forEachChild(cb: Function): void {} + override _forEachChild(cb: Function): void {} /** @internal */ - _syncPendingControls(): boolean { + override _syncPendingControls(): boolean { if (this.updateOn === 'submit') { if (this._pendingDirty) this.markAsDirty(); if (this._pendingTouched) this.markAsTouched(); @@ -1433,7 +1538,7 @@ export class FormGroup extends AbstractControl { // If `asyncValidator` is present, it will trigger control status change from `PENDING` to // `VALID` or `INVALID`. The status should be broadcasted via the `statusChanges` observable, // so we set `emitEvent` to `true` to allow that during the control creation process. - emitEvent: !!asyncValidator + emitEvent: !!this.asyncValidator }); } @@ -1457,7 +1562,9 @@ export class FormGroup extends AbstractControl { /** * Add a control to this group. * - * This method also updates the value and validity of the control. + * If a control with a given name already exists, it would *not* be replaced with a new one. + * If you want to replace an existing control, use the {@link FormGroup#setControl setControl} + * method instead. This method also updates the value and validity of the control. * * @param name The control name to add to the collection * @param control Provides the control for the given name @@ -1495,6 +1602,8 @@ export class FormGroup extends AbstractControl { /** * Replace an existing control. * + * If a control with a given name does not exist in this `FormGroup`, it will be added. + * * @param name The control name to replace in the collection * @param control Provides the control for the given name * @param options Specifies whether this FormGroup instance should emit events after an @@ -1560,8 +1669,8 @@ export class FormGroup extends AbstractControl { * observables emit events with the latest status and value when the control value is updated. * When false, no events are emitted. */ - setValue(value: {[key: string]: any}, options: {onlySelf?: boolean, emitEvent?: boolean} = {}): - void { + override setValue( + value: {[key: string]: any}, options: {onlySelf?: boolean, emitEvent?: boolean} = {}): void { this._checkAllValuesPresent(value); Object.keys(value).forEach(name => { this._throwIfControlMissing(name); @@ -1601,8 +1710,8 @@ export class FormGroup extends AbstractControl { * is updated. When false, no events are emitted. The configuration options are passed to * the {@link AbstractControl#updateValueAndValidity updateValueAndValidity} method. */ - patchValue(value: {[key: string]: any}, options: {onlySelf?: boolean, emitEvent?: boolean} = {}): - void { + override patchValue( + value: {[key: string]: any}, options: {onlySelf?: boolean, emitEvent?: boolean} = {}): void { // Even though the `value` argument type doesn't allow `null` and `undefined` values, the // `patchValue` can be called recursively and inner data structures might have these values, so // we just ignore such cases when a field containing FormGroup instance receives `null` or @@ -1674,7 +1783,7 @@ export class FormGroup extends AbstractControl { * console.log(form.get('first').status); // 'DISABLED' * ``` */ - reset(value: any = {}, options: {onlySelf?: boolean, emitEvent?: boolean} = {}): void { + override reset(value: any = {}, options: {onlySelf?: boolean, emitEvent?: boolean} = {}): void { this._forEachChild((control: AbstractControl, name: string) => { control.reset(value[name], {onlySelf: true, emitEvent: options.emitEvent}); }); @@ -1699,7 +1808,7 @@ export class FormGroup extends AbstractControl { } /** @internal */ - _syncPendingControls(): boolean { + override _syncPendingControls(): boolean { let subtreeUpdated = this._reduceChildren(false, (updated: boolean, child: AbstractControl) => { return child._syncPendingControls() ? true : updated; }); @@ -1721,7 +1830,7 @@ export class FormGroup extends AbstractControl { } /** @internal */ - _forEachChild(cb: (v: any, k: string) => void): void { + override _forEachChild(cb: (v: any, k: string) => void): void { Object.keys(this.controls).forEach(key => { // The list of controls can change (for ex. controls might be removed) while the loop // is running (as a result of invoking Forms API in `valueChanges` subscription), so we @@ -1740,12 +1849,12 @@ export class FormGroup extends AbstractControl { } /** @internal */ - _updateValue(): void { + override _updateValue(): void { (this as {value: any}).value = this._reduceValue(); } /** @internal */ - _anyControls(condition: Function): boolean { + override _anyControls(condition: Function): boolean { for (const controlName of Object.keys(this.controls)) { const control = this.controls[controlName]; if (this.contains(controlName) && condition(control)) { @@ -1776,7 +1885,7 @@ export class FormGroup extends AbstractControl { } /** @internal */ - _allControlsDisabled(): boolean { + override _allControlsDisabled(): boolean { for (const controlName of Object.keys(this.controls)) { if (this.controls[controlName].enabled) { return false; @@ -1887,7 +1996,7 @@ export class FormArray extends AbstractControl { // `VALID` or `INVALID`. // The status should be broadcasted via the `statusChanges` observable, so we set `emitEvent` // to `true` to allow that during the control creation process. - emitEvent: !!asyncValidator + emitEvent: !!this.asyncValidator }); } @@ -2017,7 +2126,7 @@ export class FormArray extends AbstractControl { * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity * updateValueAndValidity} method. */ - setValue(value: any[], options: {onlySelf?: boolean, emitEvent?: boolean} = {}): void { + override setValue(value: any[], options: {onlySelf?: boolean, emitEvent?: boolean} = {}): void { this._checkAllValuesPresent(value); value.forEach((newValue: any, index: number) => { this._throwIfControlMissing(index); @@ -2058,7 +2167,7 @@ export class FormArray extends AbstractControl { * is updated. When false, no events are emitted. The configuration options are passed to * the {@link AbstractControl#updateValueAndValidity updateValueAndValidity} method. */ - patchValue(value: any[], options: {onlySelf?: boolean, emitEvent?: boolean} = {}): void { + override patchValue(value: any[], options: {onlySelf?: boolean, emitEvent?: boolean} = {}): void { // Even though the `value` argument type doesn't allow `null` and `undefined` values, the // `patchValue` can be called recursively and inner data structures might have these values, so // we just ignore such cases when a field containing FormArray instance receives `null` or @@ -2091,19 +2200,19 @@ export class FormArray extends AbstractControl { * ]); * arr.reset(['name', 'last name']); * - * console.log(this.arr.value); // ['name', 'last name'] + * console.log(arr.value); // ['name', 'last name'] * ``` * * ### Reset the values in a form array and the disabled status for the first control * * ``` - * this.arr.reset([ + * arr.reset([ * {value: 'name', disabled: true}, * 'last' * ]); * - * console.log(this.arr.value); // ['name', 'last name'] - * console.log(this.arr.get(0).status); // 'DISABLED' + * console.log(arr.value); // ['last'] + * console.log(arr.at(0).status); // 'DISABLED' * ``` * * @param value Array of values for the controls @@ -2119,7 +2228,7 @@ export class FormArray extends AbstractControl { * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity * updateValueAndValidity} method. */ - reset(value: any = [], options: {onlySelf?: boolean, emitEvent?: boolean} = {}): void { + override reset(value: any = [], options: {onlySelf?: boolean, emitEvent?: boolean} = {}): void { this._forEachChild((control: AbstractControl, index: number) => { control.reset(value[index], {onlySelf: true, emitEvent: options.emitEvent}); }); @@ -2184,7 +2293,7 @@ export class FormArray extends AbstractControl { } /** @internal */ - _syncPendingControls(): boolean { + override _syncPendingControls(): boolean { let subtreeUpdated = this.controls.reduce((updated: boolean, child: AbstractControl) => { return child._syncPendingControls() ? true : updated; }, false); @@ -2206,21 +2315,21 @@ export class FormArray extends AbstractControl { } /** @internal */ - _forEachChild(cb: Function): void { + override _forEachChild(cb: Function): void { this.controls.forEach((control: AbstractControl, index: number) => { cb(control, index); }); } /** @internal */ - _updateValue(): void { + override _updateValue(): void { (this as {value: any}).value = this.controls.filter((control) => control.enabled || this.disabled) .map((control) => control.value); } /** @internal */ - _anyControls(condition: Function): boolean { + override _anyControls(condition: Function): boolean { return this.controls.some((control: AbstractControl) => control.enabled && condition(control)); } @@ -2239,7 +2348,7 @@ export class FormArray extends AbstractControl { } /** @internal */ - _allControlsDisabled(): boolean { + override _allControlsDisabled(): boolean { for (const control of this.controls) { if (control.enabled) return false; } diff --git a/packages/forms/src/validators.ts b/packages/forms/src/validators.ts index 009dbde39e..99200c8bca 100644 --- a/packages/forms/src/validators.ts +++ b/packages/forms/src/validators.ts @@ -663,3 +663,56 @@ export function getControlAsyncValidators(control: AbstractControl): AsyncValida AsyncValidatorFn[]|null { return (control as any)._rawAsyncValidators as AsyncValidatorFn | AsyncValidatorFn[] | null; } + +/** + * Accepts a singleton validator, an array, or null, and returns an array type with the provided + * validators. + * + * @param validators A validator, validators, or null. + * @returns A validators array. + */ +export function makeValidatorsArray(validators: T|T[]| + null): T[] { + if (!validators) return []; + return Array.isArray(validators) ? validators : [validators]; +} + +/** + * Determines whether a validator or validators array has a given validator. + * + * @param validators The validator or validators to compare against. + * @param validator The validator to check. + * @returns Whether the validator is present. + */ +export function hasValidator( + validators: T|T[]|null, validator: T): boolean { + return Array.isArray(validators) ? validators.includes(validator) : validators === validator; +} + +/** + * Combines two arrays of validators into one. If duplicates are provided, only one will be added. + * + * @param validators The new validators. + * @param currentValidators The base array of currrent validators. + * @returns An array of validators. + */ +export function addValidators( + validators: T|T[], currentValidators: T|T[]|null): T[] { + const current = makeValidatorsArray(currentValidators); + const validatorsToAdd = makeValidatorsArray(validators); + validatorsToAdd.forEach((v: T) => { + // Note: if there are duplicate entries in the new validators array, + // only the first one would be added to the current list of validarors. + // Duplicate ones would be ignored since `hasValidator` would detect + // the presence of a validator function and we update the current list in place. + if (!hasValidator(current, v)) { + current.push(v); + } + }); + return current; +} + +export function removeValidators( + validators: T|T[], currentValidators: T|T[]|null): T[] { + return makeValidatorsArray(currentValidators).filter(v => !hasValidator(validators, v)); +} diff --git a/packages/forms/src/version.ts b/packages/forms/src/version.ts index 4a5fcc12eb..e5aee2f651 100644 --- a/packages/forms/src/version.ts +++ b/packages/forms/src/version.ts @@ -9,7 +9,7 @@ /** * @module * @description - * Entry point for all public APIs of the common package. + * Entry point for all public APIs of the forms package. */ import {Version} from '@angular/core'; diff --git a/packages/forms/test/directives_spec.ts b/packages/forms/test/directives_spec.ts index 2b99f910e1..0b94bdc02b 100644 --- a/packages/forms/test/directives_spec.ts +++ b/packages/forms/test/directives_spec.ts @@ -8,11 +8,9 @@ import {SimpleChange} from '@angular/core'; import {fakeAsync, flushMicrotasks, tick} from '@angular/core/testing'; -import {beforeEach, describe, expect, it} from '@angular/core/testing/src/testing_internal'; import {AbstractControl, CheckboxControlValueAccessor, ControlValueAccessor, DefaultValueAccessor, FormArray, FormArrayName, FormControl, FormControlDirective, FormControlName, FormGroup, FormGroupDirective, FormGroupName, NgControl, NgForm, NgModel, NgModelGroup, SelectControlValueAccessor, SelectMultipleControlValueAccessor, ValidationErrors, Validator, Validators} from '@angular/forms'; import {selectValueAccessor} from '@angular/forms/src/directives/shared'; import {composeValidators} from '@angular/forms/src/validators'; -import {SpyNgControl, SpyValueAccessor} from './spies'; import {asyncValidator} from './util'; class DummyControlValueAccessor implements ControlValueAccessor { @@ -45,7 +43,7 @@ class CustomValidatorDirective implements Validator { let dir: NgControl; beforeEach(() => { - dir = new SpyNgControl(); + dir = {path: []} as any; }); it('should throw when given an empty array', () => { @@ -90,7 +88,7 @@ class CustomValidatorDirective implements Validator { }); it('should return custom accessor when provided', () => { - const customAccessor: ControlValueAccessor = new SpyValueAccessor() as any; + const customAccessor: ControlValueAccessor = {} as any; const checkboxAccessor = new CheckboxControlValueAccessor(null!, null!); expect(selectValueAccessor(dir, [ defaultAccessor, customAccessor, checkboxAccessor @@ -98,7 +96,7 @@ class CustomValidatorDirective implements Validator { }); it('should return custom accessor when provided with select multiple', () => { - const customAccessor: ControlValueAccessor = new SpyValueAccessor() as any; + const customAccessor: ControlValueAccessor = {} as any; const selectMultipleAccessor = new SelectMultipleControlValueAccessor(null!, null!); expect(selectValueAccessor(dir, [ defaultAccessor, customAccessor, selectMultipleAccessor @@ -106,7 +104,7 @@ class CustomValidatorDirective implements Validator { }); it('should throw when more than one custom accessor is provided', () => { - const customAccessor: ControlValueAccessor = new SpyValueAccessor(); + const customAccessor: ControlValueAccessor = {} as any; expect(() => selectValueAccessor(dir, [customAccessor, customAccessor])).toThrowError(); }); }); diff --git a/packages/forms/test/form_array_spec.ts b/packages/forms/test/form_array_spec.ts index c810230d17..0ddc42a564 100644 --- a/packages/forms/test/form_array_spec.ts +++ b/packages/forms/test/form_array_spec.ts @@ -7,7 +7,6 @@ */ import {fakeAsync, tick} from '@angular/core/testing'; -import {AsyncTestCompleter, beforeEach, describe, inject, it} from '@angular/core/testing/src/testing_internal'; import {AbstractControl, FormArray, FormControl, FormGroup, ValidationErrors, ValidatorFn} from '@angular/forms'; import {Validators} from '@angular/forms/src/validators'; import {of} from 'rxjs'; @@ -856,64 +855,60 @@ describe('FormArray', () => { a = new FormArray([c1, c2]); }); - it('should fire an event after the value has been updated', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - a.valueChanges.subscribe({ - next: (value: any) => { - expect(a.value).toEqual(['new1', 'old2']); - expect(value).toEqual(['new1', 'old2']); - async.done(); - } - }); - c1.setValue('new1'); - })); + it('should fire an event after the value has been updated', done => { + a.valueChanges.subscribe({ + next: (value: any) => { + expect(a.value).toEqual(['new1', 'old2']); + expect(value).toEqual(['new1', 'old2']); + done(); + } + }); + c1.setValue('new1'); + }); - it('should fire an event after the control\'s observable fired an event', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - let controlCallbackIsCalled = false; + it('should fire an event after the control\'s observable fired an event', done => { + let controlCallbackIsCalled = false; - c1.valueChanges.subscribe({ - next: (value: any) => { - controlCallbackIsCalled = true; - } - }); + c1.valueChanges.subscribe({ + next: (value: any) => { + controlCallbackIsCalled = true; + } + }); - a.valueChanges.subscribe({ - next: (value: any) => { - expect(controlCallbackIsCalled).toBe(true); - async.done(); - } - }); + a.valueChanges.subscribe({ + next: (value: any) => { + expect(controlCallbackIsCalled).toBe(true); + done(); + } + }); - c1.setValue('new1'); - })); + c1.setValue('new1'); + }); - it('should fire an event when a control is removed', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - a.valueChanges.subscribe({ - next: (value: any) => { - expect(value).toEqual(['old1']); - async.done(); - } - }); + it('should fire an event when a control is removed', done => { + a.valueChanges.subscribe({ + next: (value: any) => { + expect(value).toEqual(['old1']); + done(); + } + }); - a.removeAt(1); - })); + a.removeAt(1); + }); - it('should fire an event when a control is added', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - a.removeAt(1); + it('should fire an event when a control is added', done => { + a.removeAt(1); - a.valueChanges.subscribe({ - next: (value: any) => { - expect(value).toEqual(['old1', 'old2']); - async.done(); - } - }); + a.valueChanges.subscribe({ + next: (value: any) => { + expect(value).toEqual(['old1', 'old2']); + done(); + } + }); - a.push(c2); - })); + a.push(c2); + }); }); describe('get', () => { @@ -1060,6 +1055,23 @@ describe('FormArray', () => { expect(g.errors).toEqual({'async': true, 'other': true}); expect(g.pending).toEqual(false); })); + + it('should fire statusChanges events when async validators are added via options object', + fakeAsync(() => { + // The behavior is tested (in other spec files) for each of the model types (`FormControl`, + // `FormGroup` and `FormArray`). + let statuses: string[] = []; + + // Create a form control with an async validator added via options object. + const asc = new FormArray([], {asyncValidators: [() => Promise.resolve(null)]}); + + // Subscribe to status changes. + asc.statusChanges.subscribe((status: any) => statuses.push(status)); + + // After a tick, the async validator should change status PENDING -> VALID. + tick(); + expect(statuses).toEqual(['VALID']); + })); }); describe('disable() & enable()', () => { diff --git a/packages/forms/test/form_builder_spec.ts b/packages/forms/test/form_builder_spec.ts index e0d0da0b03..8fa6326e89 100644 --- a/packages/forms/test/form_builder_spec.ts +++ b/packages/forms/test/form_builder_spec.ts @@ -6,7 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ import {fakeAsync, tick} from '@angular/core/testing'; -import {beforeEach, describe, expect, it} from '@angular/core/testing/src/testing_internal'; import {FormBuilder, Validators} from '@angular/forms'; import {of} from 'rxjs'; @@ -70,6 +69,17 @@ describe('Form Builder', () => { expect(g.controls['login'].asyncValidator).toBe(asyncValidator); }); + it('should support controls with validators that are later modified', () => { + const g = b.group({'login': b.control(null, syncValidator, asyncValidator)}); + expect(g.controls['login'].value).toBeNull(); + expect(g.controls['login'].validator).toBe(syncValidator); + expect(g.controls['login'].asyncValidator).toBe(asyncValidator); + g.controls['login'].addValidators(Validators.required); + expect(g.controls['login'].hasValidator(Validators.required)).toBe(true); + g.controls['login'].removeValidators(Validators.required); + expect(g.controls['login'].hasValidator(Validators.required)).toBe(false); + }); + it('should support controls with no validators and whose form state is undefined', () => { const g = b.group({'login': b.control(undefined)}); expect(g.controls['login'].value).toBeNull(); diff --git a/packages/forms/test/form_control_spec.ts b/packages/forms/test/form_control_spec.ts index 7caff35c0b..0c8900a4d0 100644 --- a/packages/forms/test/form_control_spec.ts +++ b/packages/forms/test/form_control_spec.ts @@ -7,7 +7,6 @@ */ import {fakeAsync, tick} from '@angular/core/testing'; -import {AsyncTestCompleter, beforeEach, describe, inject, it} from '@angular/core/testing/src/testing_internal'; import {FormControl, FormGroup, Validators} from '@angular/forms'; import {FormArray} from '@angular/forms/src/model'; @@ -313,6 +312,57 @@ describe('FormControl', () => { c.setValidators([Validators.required]); expect(c.validator).not.toBe(null); }); + + it('should check presence of and remove a validator set in the control constructor', () => { + const c = new FormControl('', Validators.required); + expect(c.hasValidator(Validators.required)).toEqual(true); + + c.removeValidators(Validators.required); + expect(c.hasValidator(Validators.required)).toEqual(false); + + c.addValidators(Validators.required); + expect(c.hasValidator(Validators.required)).toEqual(true); + }); + + it('should check presence of and remove a validator set with addValidators', () => { + const c = new FormControl(''); + expect(c.hasValidator(Validators.required)).toEqual(false); + c.addValidators(Validators.required); + expect(c.hasValidator(Validators.required)).toEqual(true); + + c.removeValidators(Validators.required); + expect(c.hasValidator(Validators.required)).toEqual(false); + }); + + it('should check presence of and remove multiple validators set at the same time', () => { + const c = new FormControl('3'); + const minValidator = Validators.min(4); + c.addValidators([Validators.required, minValidator]); + expect(c.hasValidator(Validators.required)).toEqual(true); + expect(c.hasValidator(minValidator)).toEqual(true); + + c.removeValidators([Validators.required, minValidator]); + expect(c.hasValidator(Validators.required)).toEqual(false); + expect(c.hasValidator(minValidator)).toEqual(false); + }); + + it('should be able to remove a validator added multiple times', () => { + const c = new FormControl('', Validators.required); + c.addValidators(Validators.required); + c.addValidators(Validators.required); + expect(c.hasValidator(Validators.required)).toEqual(true); + + c.removeValidators(Validators.required); + expect(c.hasValidator(Validators.required)).toEqual(false); + }); + + it('should return false when checking presence of a validator not identical by reference', + () => { + const minValidator = Validators.min(5); + const c = new FormControl('1', minValidator); + expect(c.hasValidator(minValidator)).toEqual(true); + expect(c.hasValidator(Validators.min(5))).toEqual(false); + }); }); describe('asyncValidator', () => { @@ -509,6 +559,61 @@ describe('FormControl', () => { tick(); expect(c.status).toEqual('DISABLED'); })); + + it('should check presence of and remove a validator set in the control constructor', () => { + const asyncVal = asyncValidator('expected'); + const c = new FormControl('', null, asyncVal); + expect(c.hasAsyncValidator(asyncVal)).toEqual(true); + + c.removeAsyncValidators(asyncVal); + expect(c.hasAsyncValidator(asyncVal)).toEqual(false); + + c.addAsyncValidators(asyncVal); + expect(c.hasAsyncValidator(asyncVal)).toEqual(true); + }); + + it('should check presence of and remove a validator set with addValidators', () => { + const c = new FormControl(''); + const asyncVal = asyncValidator('expected'); + c.addAsyncValidators(asyncVal); + expect(c.hasAsyncValidator(asyncVal)).toEqual(true); + + c.removeAsyncValidators(asyncVal); + expect(c.hasAsyncValidator(asyncVal)).toEqual(false); + }); + + it('should check presence of and remove multiple validators set at the same time', () => { + const c = new FormControl('3'); + const asyncVal1 = asyncValidator('expected1'); + const asyncVal2 = asyncValidator('expected2'); + c.addAsyncValidators([asyncVal1, asyncVal2]); + expect(c.hasAsyncValidator(asyncVal1)).toEqual(true); + expect(c.hasAsyncValidator(asyncVal2)).toEqual(true); + + c.removeAsyncValidators([asyncVal1, asyncVal2]); + expect(c.hasAsyncValidator(asyncVal1)).toEqual(false); + expect(c.hasAsyncValidator(asyncVal2)).toEqual(false); + }); + + it('should be able to remove a validator added multiple times', () => { + const asyncVal = asyncValidator('expected'); + const c = new FormControl('', null, asyncVal); + c.addAsyncValidators(asyncVal); + c.addAsyncValidators(asyncVal); + expect(c.hasAsyncValidator(asyncVal)).toEqual(true); + + c.removeAsyncValidators(asyncVal); + expect(c.hasAsyncValidator(asyncVal)).toEqual(false); + }); + + it('should return false when checking presence of a validator not identical by reference', + () => { + const asyncVal = asyncValidator('expected'); + const asyncValDifferentFn = asyncValidator('expected'); + const c = new FormControl('1', null, asyncVal); + expect(c.hasAsyncValidator(asyncVal)).toEqual(true); + expect(c.hasAsyncValidator(asyncValDifferentFn)).toEqual(false); + }); }); describe('dirty', () => { @@ -857,17 +962,16 @@ describe('FormControl', () => { c = new FormControl('old', Validators.required); }); - it('should fire an event after the value has been updated', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - c.valueChanges.subscribe({ - next: (value: any) => { - expect(c.value).toEqual('new'); - expect(value).toEqual('new'); - async.done(); - } - }); - c.setValue('new'); - })); + it('should fire an event after the value has been updated', done => { + c.valueChanges.subscribe({ + next: (value: any) => { + expect(c.value).toEqual('new'); + expect(value).toEqual('new'); + done(); + } + }); + c.setValue('new'); + }); it('should fire an event after the status has been updated to invalid', fakeAsync(() => { c.statusChanges.subscribe({ @@ -881,6 +985,22 @@ describe('FormControl', () => { tick(); })); + it('should fire statusChanges events for async validators added via options object', + fakeAsync(() => { + // The behavior can be tested for each of the model types. + let statuses: string[] = []; + + // Create a form control with an async validator added via options object. + const asc = new FormControl('', {asyncValidators: [() => Promise.resolve(null)]}); + + // Subscribe to status changes. + asc.statusChanges.subscribe((status: any) => statuses.push(status)); + + // After a tick, the async validator should change status PENDING -> VALID. + tick(); + expect(statuses).toEqual(['VALID']); + })); + it('should fire an event after the status has been updated to pending', fakeAsync(() => { const c = new FormControl('old', Validators.required, asyncValidator('expected')); @@ -911,27 +1031,25 @@ describe('FormControl', () => { })); // TODO: remove the if statement after making observable delivery sync - it('should update set errors and status before emitting an event', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - c.valueChanges.subscribe((value: any /** TODO #9100 */) => { - expect(c.valid).toEqual(false); - expect(c.errors).toEqual({'required': true}); - async.done(); - }); - c.setValue(''); - })); + it('should update set errors and status before emitting an event', done => { + c.valueChanges.subscribe((value: any /** TODO #9100 */) => { + expect(c.valid).toEqual(false); + expect(c.errors).toEqual({'required': true}); + done(); + }); + c.setValue(''); + }); - it('should return a cold observable', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - c.setValue('will be ignored'); - c.valueChanges.subscribe({ - next: (value: any) => { - expect(value).toEqual('new'); - async.done(); - } - }); - c.setValue('new'); - })); + it('should return a cold observable', done => { + c.setValue('will be ignored'); + c.valueChanges.subscribe({ + next: (value: any) => { + expect(value).toEqual('new'); + done(); + } + }); + c.setValue('new'); + }); }); describe('setErrors', () => { diff --git a/packages/forms/test/form_group_spec.ts b/packages/forms/test/form_group_spec.ts index 6a8578bef1..37de069850 100644 --- a/packages/forms/test/form_group_spec.ts +++ b/packages/forms/test/form_group_spec.ts @@ -7,7 +7,6 @@ */ import {fakeAsync, tick, waitForAsync} from '@angular/core/testing'; -import {AsyncTestCompleter, beforeEach, describe, inject, it} from '@angular/core/testing/src/testing_internal'; import {AbstractControl, FormArray, FormControl, FormGroup, ValidationErrors, Validators} from '@angular/forms'; import {of} from 'rxjs'; @@ -820,22 +819,36 @@ describe('FormGroup', () => { group = new FormGroup({'one': control}); })); + it('should fire statusChanges events for async validators added via options object', + fakeAsync(() => { + // The behavior can be tested for each of the model types. + let statuses: string[] = []; + + // Create a form control with an async validator added via options object. + const asc = new FormGroup({}, {asyncValidators: [() => Promise.resolve(null)]}); + + // Subscribe to status changes. + asc.statusChanges.subscribe((status: any) => statuses.push(status)); + + // After a tick, the async validator should change status PENDING -> VALID. + tick(); + expect(statuses).toEqual(['VALID']); + })); // TODO(kara): update these tests to use fake Async - it('should fire a statusChange if child has async validation change', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const loggedValues: string[] = []; - group.statusChanges.subscribe({ - next: (status: string) => { - loggedValues.push(status); - if (loggedValues.length === 2) { - expect(loggedValues).toEqual(['PENDING', 'INVALID']); - } - async.done(); - } - }); - control.setValue(''); - })); + it('should fire a statusChange if child has async validation change', done => { + const loggedValues: string[] = []; + group.statusChanges.subscribe({ + next: (status: string) => { + loggedValues.push(status); + if (loggedValues.length === 2) { + expect(loggedValues).toEqual(['PENDING', 'INVALID']); + } + done(); + } + }); + control.setValue(''); + }); }); describe('getError', () => { diff --git a/packages/forms/test/reactive_integration_spec.ts b/packages/forms/test/reactive_integration_spec.ts index 7cecc14201..118e1fdbe0 100644 --- a/packages/forms/test/reactive_integration_spec.ts +++ b/packages/forms/test/reactive_integration_spec.ts @@ -9,8 +9,7 @@ import {ɵgetDOM as getDOM} from '@angular/common'; import {Component, Directive, forwardRef, Input, NgModule, OnDestroy, Type} from '@angular/core'; import {ComponentFixture, fakeAsync, TestBed, tick} from '@angular/core/testing'; -import {expect} from '@angular/core/testing/src/testing_internal'; -import {AbstractControl, AsyncValidator, AsyncValidatorFn, COMPOSITION_BUFFER_MODE, ControlValueAccessor, DefaultValueAccessor, FormArray, FormControl, FormControlDirective, FormControlName, FormGroup, FormGroupDirective, FormsModule, MaxValidator, MinValidator, NG_ASYNC_VALIDATORS, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validator, Validators} from '@angular/forms'; +import {AbstractControl, AsyncValidator, AsyncValidatorFn, COMPOSITION_BUFFER_MODE, ControlValueAccessor, DefaultValueAccessor, FormArray, FormControl, FormControlDirective, FormControlName, FormGroup, FormGroupDirective, FormsModule, MaxValidator, MinLengthValidator, MinValidator, NG_ASYNC_VALIDATORS, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validator, Validators} from '@angular/forms'; import {By} from '@angular/platform-browser/src/dom/debug/by'; import {dispatchEvent, sortedClassList} from '@angular/platform-browser/testing/src/browser_util'; import {merge, NEVER, of, Subscription, timer} from 'rxjs'; @@ -191,7 +190,7 @@ const ValueAccessorB = createControlValueAccessor('[cva-b]'); }); it('should update nested form group model when UI changes', () => { - const fixture = initTest(NestedFormGroupComp); + const fixture = initTest(NestedFormGroupNameComp); fixture.componentInstance.form = new FormGroup( {'signin': new FormGroup({'login': new FormControl(), 'password': new FormControl()})}); fixture.detectChanges(); @@ -243,7 +242,7 @@ const ValueAccessorB = createControlValueAccessor('[cva-b]'); }); it('should pick up dir validators from nested form groups', () => { - const fixture = initTest(NestedFormGroupComp, LoginIsEmptyValidator); + const fixture = initTest(NestedFormGroupNameComp, LoginIsEmptyValidator); const form = new FormGroup({ 'signin': new FormGroup({'login': new FormControl(''), 'password': new FormControl('')}) }); @@ -261,7 +260,7 @@ const ValueAccessorB = createControlValueAccessor('[cva-b]'); }); it('should strip named controls that are not found', () => { - const fixture = initTest(NestedFormGroupComp, LoginIsEmptyValidator); + const fixture = initTest(NestedFormGroupNameComp, LoginIsEmptyValidator); const form = new FormGroup({ 'signin': new FormGroup({'login': new FormControl(''), 'password': new FormControl('')}) }); @@ -336,7 +335,7 @@ const ValueAccessorB = createControlValueAccessor('[cva-b]'); }); it('should attach dirs to all child controls when group control changes', () => { - const fixture = initTest(NestedFormGroupComp, LoginIsEmptyValidator); + const fixture = initTest(NestedFormGroupNameComp, LoginIsEmptyValidator); const form = new FormGroup({ signin: new FormGroup( {login: new FormControl('oldLogin'), password: new FormControl('oldPassword')}) @@ -1088,6 +1087,8 @@ const ValueAccessorB = createControlValueAccessor('[cva-b]'); fixture.detectChanges(); const input = fixture.debugElement.query(By.css('input')).nativeElement; + const formEl = fixture.debugElement.query(By.css('form')).nativeElement; + expect(sortedClassList(input)).toEqual(['ng-invalid', 'ng-pristine', 'ng-untouched']); dispatchEvent(input, 'blur'); @@ -1100,6 +1101,19 @@ const ValueAccessorB = createControlValueAccessor('[cva-b]'); fixture.detectChanges(); expect(sortedClassList(input)).toEqual(['ng-dirty', 'ng-touched', 'ng-valid']); + expect(sortedClassList(formEl)).not.toContain('ng-submitted'); + + dispatchEvent(formEl, 'submit'); + fixture.detectChanges(); + + expect(sortedClassList(input)).not.toContain('ng-submitted'); + expect(sortedClassList(formEl)).toContain('ng-submitted'); + + dispatchEvent(formEl, 'reset'); + fixture.detectChanges(); + + expect(sortedClassList(input)).not.toContain('ng-submitted'); + expect(sortedClassList(formEl)).not.toContain('ng-submitted'); }); it('should work with formGroup', () => { @@ -1123,6 +1137,126 @@ const ValueAccessorB = createControlValueAccessor('[cva-b]'); fixture.detectChanges(); expect(sortedClassList(formEl)).toEqual(['ng-dirty', 'ng-touched', 'ng-valid']); + + dispatchEvent(formEl, 'submit'); + fixture.detectChanges(); + + expect(sortedClassList(formEl)).toContain('ng-submitted'); + + dispatchEvent(formEl, 'reset'); + fixture.detectChanges(); + + expect(sortedClassList(input)).not.toContain('ng-submitted'); + expect(sortedClassList(formEl)).not.toContain('ng-submitted'); + }); + + it('should not assign `ng-submitted` class to elements with `formArrayName`', () => { + // Since element with the `formArrayName` can not represent top-level forms (can only be + // inside other elements), this test verifies that these elements never receive + // `ng-submitted` CSS class even when they are located inside submitted form. + const fixture = initTest(FormArrayComp); + const cityArray = new FormArray([new FormControl('SF'), new FormControl('NY')]); + const form = new FormGroup({cities: cityArray}); + fixture.componentInstance.form = form; + fixture.componentInstance.cityArray = cityArray; + fixture.detectChanges(); + + const [loginInput, passwordInput] = + fixture.debugElement.queryAll(By.css('input')).map(el => el.nativeElement); + const arrEl = fixture.debugElement.query(By.css('div')).nativeElement; + const formEl = fixture.debugElement.query(By.css('form')).nativeElement; + + expect(passwordInput).toBeDefined(); + expect(sortedClassList(loginInput)).not.toContain('ng-submitted'); + expect(sortedClassList(arrEl)).not.toContain('ng-submitted'); + expect(sortedClassList(formEl)).not.toContain('ng-submitted'); + + dispatchEvent(formEl, 'submit'); + fixture.detectChanges(); + + expect(sortedClassList(loginInput)).not.toContain('ng-submitted'); + expect(sortedClassList(arrEl)).not.toContain('ng-submitted'); + expect(sortedClassList(formEl)).toContain('ng-submitted'); + + dispatchEvent(formEl, 'reset'); + fixture.detectChanges(); + + expect(sortedClassList(loginInput)).not.toContain('ng-submitted'); + expect(sortedClassList(arrEl)).not.toContain('ng-submitted'); + expect(sortedClassList(formEl)).not.toContain('ng-submitted'); + }); + + it('should apply submitted status with nested formArrayName', () => { + const fixture = initTest(NestedFormArrayNameComp); + const ic = new FormControl('foo'); + const arr = new FormArray([ic]); + const form = new FormGroup({arr}); + fixture.componentInstance.form = form; + fixture.detectChanges(); + + const input = fixture.debugElement.query(By.css('input')).nativeElement; + const arrEl = fixture.debugElement.query(By.css('div')).nativeElement; + const formEl = fixture.debugElement.query(By.css('form')).nativeElement; + + expect(sortedClassList(input)).not.toContain('ng-submitted'); + expect(sortedClassList(arrEl)).not.toContain('ng-submitted'); + expect(sortedClassList(formEl)).not.toContain('ng-submitted'); + + dispatchEvent(formEl, 'submit'); + fixture.detectChanges(); + + expect(sortedClassList(input)).not.toContain('ng-submitted'); + expect(sortedClassList(arrEl)).not.toContain('ng-submitted'); + expect(sortedClassList(formEl)).toContain('ng-submitted'); + + dispatchEvent(formEl, 'reset'); + fixture.detectChanges(); + + expect(sortedClassList(input)).not.toContain('ng-submitted'); + expect(sortedClassList(arrEl)).not.toContain('ng-submitted'); + expect(sortedClassList(formEl)).not.toContain('ng-submitted'); + }); + + it('should apply submitted status with nested formGroupName', () => { + const fixture = initTest(NestedFormGroupNameComp); + const loginControl = + new FormControl('', {validators: Validators.required, updateOn: 'change'}); + const passwordControl = new FormControl('', Validators.required); + const formGroup = new FormGroup( + {signin: new FormGroup({login: loginControl, password: passwordControl})}, + {updateOn: 'blur'}); + fixture.componentInstance.form = formGroup; + fixture.detectChanges(); + + const [loginInput, passwordInput] = + fixture.debugElement.queryAll(By.css('input')).map(el => el.nativeElement); + + const formEl = fixture.debugElement.query(By.css('form')).nativeElement; + const groupEl = fixture.debugElement.query(By.css('div')).nativeElement; + loginInput.value = 'Nancy'; + // Input and blur events, as in a real interaction, cause the form to be touched and + // dirtied. + dispatchEvent(loginInput, 'input'); + dispatchEvent(loginInput, 'blur'); + fixture.detectChanges(); + + expect(sortedClassList(loginInput)).not.toContain('ng-submitted'); + expect(sortedClassList(groupEl)).not.toContain('ng-submitted'); + expect(sortedClassList(formEl)).not.toContain('ng-submitted'); + + dispatchEvent(formEl, 'submit'); + fixture.detectChanges(); + + expect(sortedClassList(loginInput)).not.toContain('ng-submitted'); + expect(sortedClassList(groupEl)).not.toContain('ng-submitted'); + expect(sortedClassList(formEl)).toContain('ng-submitted'); + + dispatchEvent(formEl, 'reset'); + fixture.detectChanges(); + + expect(sortedClassList(loginInput)).not.toContain('ng-submitted'); + expect(sortedClassList(groupEl)).not.toContain('ng-submitted'); + expect(sortedClassList(formEl)).not.toContain('ng-submitted'); }); }); @@ -1502,7 +1636,7 @@ const ValueAccessorB = createControlValueAccessor('[cva-b]'); it('should allow child control updateOn blur to override group updateOn', () => { - const fixture = initTest(NestedFormGroupComp); + const fixture = initTest(NestedFormGroupNameComp); const loginControl = new FormControl('', {validators: Validators.required, updateOn: 'change'}); const passwordControl = new FormControl('', Validators.required); @@ -1811,7 +1945,7 @@ const ValueAccessorB = createControlValueAccessor('[cva-b]'); const validatorSpy = jasmine.createSpy('validator'); const groupValidatorSpy = jasmine.createSpy('groupValidatorSpy'); - const fixture = initTest(NestedFormGroupComp); + const fixture = initTest(NestedFormGroupNameComp); const formGroup = new FormGroup({ signin: new FormGroup({login: new FormControl(), password: new FormControl()}), email: new FormControl('', {updateOn: 'submit'}) @@ -1908,7 +2042,7 @@ const ValueAccessorB = createControlValueAccessor('[cva-b]'); }); it('should allow child control updateOn submit to override group updateOn', () => { - const fixture = initTest(NestedFormGroupComp); + const fixture = initTest(NestedFormGroupNameComp); const loginControl = new FormControl('', {validators: Validators.required, updateOn: 'change'}); const passwordControl = new FormControl('', Validators.required); @@ -2530,6 +2664,97 @@ const ValueAccessorB = createControlValueAccessor('[cva-b]'); .toEqual(2, `Expected original observable to be canceled on the next value change.`); })); + describe('enabling validators conditionally', () => { + it('should not activate minlength and maxlength validators if input is null', () => { + @Component({ + selector: 'min-max-length-null', + template: ` +
+ +
` + }) + class MinMaxLengthComponent { + control: FormControl = new FormControl(); + form: FormGroup = new FormGroup({'control': this.control}); + minlen: number|null = null; + maxlen: number|null = null; + } + + const fixture = initTest(MinMaxLengthComponent); + const control = fixture.componentInstance.control; + fixture.detectChanges(); + + const form = fixture.componentInstance.form; + const input = fixture.debugElement.query(By.css('input')).nativeElement; + + interface minmax { + minlength: number|null; + maxlength: number|null; + } + + interface state { + isValid: boolean; + failedValidator?: string; + } + + const setInputValue = (value: number) => { + input.value = value; + dispatchEvent(input, 'input'); + fixture.detectChanges(); + }; + const setValidatorValues = (values: minmax) => { + fixture.componentInstance.minlen = values.minlength; + fixture.componentInstance.maxlen = values.maxlength; + fixture.detectChanges(); + }; + const verifyValidatorAttrValues = (values: {minlength: any, maxlength: any}) => { + expect(input.getAttribute('minlength')).toBe(values.minlength); + expect(input.getAttribute('maxlength')).toBe(values.maxlength); + }; + const verifyFormState = (state: state) => { + expect(form.valid).toBe(state.isValid); + if (state.failedValidator) { + expect(control!.hasError('minlength')).toEqual(state.failedValidator === 'minlength'); + expect(control!.hasError('maxlength')).toEqual(state.failedValidator === 'maxlength'); + } + }; + + ////////// Actual test scenarios start below ////////// + // 1. Verify that validators are disabled when input is `null`. + setValidatorValues({minlength: null, maxlength: null}); + verifyValidatorAttrValues({minlength: null, maxlength: null}); + verifyFormState({isValid: true}); + + // 2. Verify that setting validator inputs (to a value different from `null`) activate + // validators. + setInputValue(12345); + setValidatorValues({minlength: 2, maxlength: 4}); + verifyValidatorAttrValues({minlength: '2', maxlength: '4'}); + verifyFormState({isValid: false, failedValidator: 'maxlength'}); + + // 3. Changing value to the valid range should make the form valid. + setInputValue(123); + verifyFormState({isValid: true}); + + // 4. Changing value to trigger `minlength` validator. + setInputValue(1); + verifyFormState({isValid: false, failedValidator: 'minlength'}); + + // 5. Changing validator inputs to verify that attribute values are updated (and the form + // is now valid). + setInputValue(1); + setValidatorValues({minlength: 1, maxlength: 5}); + verifyValidatorAttrValues({minlength: '1', maxlength: '5'}); + verifyFormState({isValid: true}); + + // 6. Reset validator inputs back to `null` should deactivate validators. + setInputValue(123); + setValidatorValues({minlength: null, maxlength: null}); + verifyValidatorAttrValues({minlength: null, maxlength: null}); + verifyFormState({isValid: true}); + }); + }); + describe('min and max validators', () => { function getComponent(dir: string): Type { return dir === 'formControl' ? MinMaxFormControlComp : MinMaxFormControlNameComp; @@ -2559,8 +2784,59 @@ const ValueAccessorB = createControlValueAccessor('[cva-b]'); fixture.componentInstance.max = 1; fixture.detectChanges(); + expect(input.getAttribute('max')).toEqual('1'); expect(form.valid).toBeFalse(); expect(form.controls.pin.errors).toEqual({max: {max: 1, actual: 2}}); + + fixture.componentInstance.min = 0; + fixture.componentInstance.max = 0; + fixture.detectChanges(); + expect(input.getAttribute('min')).toEqual('0'); + expect(input.getAttribute('max')).toEqual('0'); + expect(form.valid).toBeFalse(); + expect(form.controls.pin.errors).toEqual({max: {max: 0, actual: 2}}); + + input.value = 0; + dispatchEvent(input, 'input'); + fixture.detectChanges(); + expect(form.valid).toBeTruthy(); + expect(form.controls.pin.errors).toBeNull(); + }); + + it('should validate max for float number', () => { + const fixture = initTest(getComponent(dir)); + const control = new FormControl(10.25); + fixture.componentInstance.control = control; + fixture.componentInstance.form = new FormGroup({'pin': control}); + fixture.componentInstance.max = 10.35; + fixture.detectChanges(); + + const input = fixture.debugElement.query(By.css('input')).nativeElement; + const form = fixture.componentInstance.form; + + expect(input.getAttribute('max')).toEqual('10.35'); + expect(input.value).toEqual('10.25'); + expect(form.valid).toBeTruthy(); + expect(form.controls.pin.errors).toBeNull(); + + input.value = 10.15; + dispatchEvent(input, 'input'); + expect(form.value).toEqual({pin: 10.15}); + expect(form.valid).toBeTruthy(); + expect(form.controls.pin.errors).toBeNull(); + + fixture.componentInstance.max = 10.05; + fixture.detectChanges(); + + expect(input.getAttribute('max')).toEqual('10.05'); + expect(form.valid).toBeFalse(); + expect(form.controls.pin.errors).toEqual({max: {max: 10.05, actual: 10.15}}); + + input.value = 10.01; + dispatchEvent(input, 'input'); + expect(form.value).toEqual({pin: 10.01}); + expect(form.valid).toBeTruthy(); + expect(form.controls.pin.errors).toBeNull(); }); it('should apply max validation when control value is defined as a string', () => { @@ -2585,6 +2861,7 @@ const ValueAccessorB = createControlValueAccessor('[cva-b]'); fixture.componentInstance.max = 1; fixture.detectChanges(); + expect(input.getAttribute('max')).toEqual('1'); expect(form.valid).toBeFalse(); expect(form.controls.pin.errors).toEqual({max: {max: 1, actual: 2}}); }); @@ -2611,8 +2888,60 @@ const ValueAccessorB = createControlValueAccessor('[cva-b]'); fixture.componentInstance.min = 5; fixture.detectChanges(); + expect(input.getAttribute('min')).toEqual('5'); expect(form.valid).toBeFalse(); expect(form.controls.pin.errors).toEqual({min: {min: 5, actual: 2}}); + + fixture.componentInstance.min = 0; + input.value = -5; + dispatchEvent(input, 'input'); + fixture.detectChanges(); + expect(input.getAttribute('min')).toEqual('0'); + expect(form.valid).toBeFalse(); + expect(form.controls.pin.errors).toEqual({min: {min: 0, actual: -5}}); + + input.value = 0; + dispatchEvent(input, 'input'); + fixture.detectChanges(); + expect(form.valid).toBeTruthy(); + expect(form.controls.pin.errors).toBeNull(); + }); + + it('should validate min for float number', () => { + const fixture = initTest(getComponent(dir)); + const control = new FormControl(10.25); + fixture.componentInstance.control = control; + fixture.componentInstance.form = new FormGroup({'pin': control}); + fixture.componentInstance.max = 10.50; + fixture.componentInstance.min = 10.25; + fixture.detectChanges(); + + const input = fixture.debugElement.query(By.css('input')).nativeElement; + const form = fixture.componentInstance.form; + + expect(input.getAttribute('min')).toEqual('10.25'); + expect(input.getAttribute('max')).toEqual('10.5'); + expect(input.value).toEqual('10.25'); + expect(form.valid).toBeTruthy(); + expect(form.controls.pin.errors).toBeNull(); + + input.value = 10.35; + dispatchEvent(input, 'input'); + expect(form.value).toEqual({pin: 10.35}); + expect(form.valid).toBeTruthy(); + expect(form.controls.pin.errors).toBeNull(); + + fixture.componentInstance.min = 10.40; + fixture.detectChanges(); + expect(input.getAttribute('min')).toEqual('10.4'); + expect(form.valid).toBeFalse(); + expect(form.controls.pin.errors).toEqual({min: {min: 10.40, actual: 10.35}}); + + input.value = 10.45; + dispatchEvent(input, 'input'); + expect(form.value).toEqual({pin: 10.45}); + expect(form.valid).toBeTruthy(); + expect(form.controls.pin.errors).toBeNull(); }); it('should apply min validation when control value is defined as a string', () => { @@ -2637,6 +2966,7 @@ const ValueAccessorB = createControlValueAccessor('[cva-b]'); fixture.componentInstance.min = 5; fixture.detectChanges(); + expect(input.getAttribute('min')).toEqual('5'); expect(form.valid).toBeFalse(); expect(form.controls.pin.errors).toEqual({min: {min: 5, actual: 2}}); }); @@ -2733,6 +3063,80 @@ const ValueAccessorB = createControlValueAccessor('[cva-b]'); expect(form.controls.pin.errors).toEqual({max: {max: -10, actual: 0}}); }); }); + + it('should fire registerOnValidatorChange for validators attached to the formGroups', + () => { + let registerOnValidatorChangeFired = 0; + let registerOnAsyncValidatorChangeFired = 0; + + @Directive({ + selector: '[ng-noop-validator]', + providers: [ + {provide: NG_VALIDATORS, useExisting: forwardRef(() => NoOpValidator), multi: true} + ] + }) + class NoOpValidator implements Validator { + @Input() validatorInput = ''; + + validate(c: AbstractControl) { + return null; + } + + public registerOnValidatorChange(fn: () => void) { + registerOnValidatorChangeFired++; + } + } + + @Directive({ + selector: '[ng-noop-async-validator]', + providers: [{ + provide: NG_ASYNC_VALIDATORS, + useExisting: forwardRef(() => NoOpAsyncValidator), + multi: true + }] + }) + class NoOpAsyncValidator implements AsyncValidator { + @Input() validatorInput = ''; + + validate(c: AbstractControl) { + return Promise.resolve(null); + } + + public registerOnValidatorChange(fn: () => void) { + registerOnAsyncValidatorChangeFired++; + } + } + + @Component({ + selector: 'ng-model-noop-validation', + template: ` +
+ +
+ ` + }) + class NgModelNoOpValidation { + validatorInput = 'bar'; + + fooGroup = new FormGroup({ + fooInput: new FormControl(''), + }); + } + + const fixture = initTest(NgModelNoOpValidation, NoOpValidator, NoOpAsyncValidator); + fixture.detectChanges(); + + expect(registerOnValidatorChangeFired).toBe(1); + expect(registerOnAsyncValidatorChangeFired).toBe(1); + + fixture.componentInstance.validatorInput = 'baz'; + fixture.detectChanges(); + + // Changing the validator input should not cause the onValidatorChange to be called + // again. + expect(registerOnValidatorChangeFired).toBe(1); + expect(registerOnAsyncValidatorChangeFired).toBe(1); + }); }); }); @@ -4629,7 +5033,7 @@ class FormGroupComp { } @Component({ - selector: 'nested-form-group-comp', + selector: 'nested-form-group-name-comp', template: `
@@ -4639,7 +5043,7 @@ class FormGroupComp { ` }) -class NestedFormGroupComp { +class NestedFormGroupNameComp { // TODO(issue/24571): remove '!'. form!: FormGroup; } @@ -4662,6 +5066,20 @@ class FormArrayComp { cityArray!: FormArray; } +@Component({ + selector: 'nested-form-array-name-comp', + template: ` +
+
+ +
+
+ ` +}) +class NestedFormArrayNameComp { + form!: FormGroup; +} + @Component({ selector: 'form-array-nested-group', template: ` @@ -4876,4 +5294,4 @@ class MinMaxFormControlComp { form!: FormGroup; min: number|string = 1; max: number|string = 10; -} \ No newline at end of file +} diff --git a/packages/forms/test/spies.ts b/packages/forms/test/spies.ts deleted file mode 100644 index d90f06f324..0000000000 --- a/packages/forms/test/spies.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * @license - * 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 - */ - -import {ChangeDetectorRef} from '@angular/core/src/change_detection/change_detector_ref'; -import {SpyObject} from '@angular/core/testing/src/testing_internal'; - -export class SpyChangeDetectorRef extends SpyObject { - constructor() { - super(ChangeDetectorRef); - this.spy('markForCheck'); - } -} - -export class SpyNgControl extends SpyObject { - path = []; -} - -export class SpyValueAccessor extends SpyObject { - writeValue: any; -} diff --git a/packages/forms/test/template_integration_spec.ts b/packages/forms/test/template_integration_spec.ts index 8e441c27f9..1bfef3abce 100644 --- a/packages/forms/test/template_integration_spec.ts +++ b/packages/forms/test/template_integration_spec.ts @@ -9,7 +9,7 @@ import {ɵgetDOM as getDOM} from '@angular/common'; import {Component, Directive, forwardRef, Input, Type, ViewChild} from '@angular/core'; import {ComponentFixture, fakeAsync, TestBed, tick, waitForAsync} from '@angular/core/testing'; -import {AbstractControl, AsyncValidator, COMPOSITION_BUFFER_MODE, ControlValueAccessor, FormControl, FormsModule, MaxValidator, MinValidator, NG_ASYNC_VALIDATORS, NG_VALIDATORS, NG_VALUE_ACCESSOR, NgForm, NgModel} from '@angular/forms'; +import {AbstractControl, AsyncValidator, COMPOSITION_BUFFER_MODE, ControlValueAccessor, FormControl, FormsModule, MaxLengthValidator, MaxValidator, MinLengthValidator, MinValidator, NG_ASYNC_VALIDATORS, NG_VALIDATORS, NG_VALUE_ACCESSOR, NgForm, NgModel, Validator} from '@angular/forms'; import {By} from '@angular/platform-browser/src/dom/debug/by'; import {dispatchEvent, sortedClassList} from '@angular/platform-browser/testing/src/browser_util'; import {merge} from 'rxjs'; @@ -187,6 +187,21 @@ import {NgModelCustomComp, NgModelCustomWrapper} from './value_accessor_integrat dispatchEvent(input, 'input'); fixture.detectChanges(); expect(sortedClassList(input)).toEqual(['ng-dirty', 'ng-touched', 'ng-valid']); + + const formEl = fixture.debugElement.query(By.css('form')).nativeElement; + dispatchEvent(formEl, 'submit'); + fixture.detectChanges(); + + expect(sortedClassList(formEl)).toEqual([ + 'ng-dirty', 'ng-submitted', 'ng-touched', 'ng-valid' + ]); + expect(sortedClassList(input)).not.toContain('ng-submitted'); + + dispatchEvent(formEl, 'reset'); + fixture.detectChanges(); + + expect(sortedClassList(formEl)).toEqual(['ng-pristine', 'ng-untouched', 'ng-valid']); + expect(sortedClassList(input)).not.toContain('ng-submitted'); }); })); @@ -244,9 +259,52 @@ import {NgModelCustomComp, NgModelCustomWrapper} from './value_accessor_integrat expect(sortedClassList(modelGroup)).toEqual(['ng-dirty', 'ng-touched', 'ng-valid']); expect(sortedClassList(form)).toEqual(['ng-dirty', 'ng-touched', 'ng-valid']); + + const formEl = fixture.debugElement.query(By.css('form')).nativeElement; + dispatchEvent(formEl, 'submit'); + fixture.detectChanges(); + + expect(sortedClassList(formEl)).toEqual([ + 'ng-dirty', 'ng-submitted', 'ng-touched', 'ng-valid' + ]); }); })); + it('should set status classes involving nested FormGroups', () => { + const fixture = initTest(NgModelNestedForm); + fixture.componentInstance.first = ''; + fixture.componentInstance.other = ''; + fixture.detectChanges(); + + const form = fixture.debugElement.query(By.css('form')).nativeElement; + const modelGroup = fixture.debugElement.query(By.css('[ngModelGroup]')).nativeElement; + const input = fixture.debugElement.query(By.css('input')).nativeElement; + + fixture.whenStable().then(() => { + fixture.detectChanges(); + expect(sortedClassList(modelGroup)).toEqual(['ng-pristine', 'ng-untouched', 'ng-valid']); + + expect(sortedClassList(form)).toEqual(['ng-pristine', 'ng-untouched', 'ng-valid']); + + const formEl = fixture.debugElement.query(By.css('form')).nativeElement; + dispatchEvent(formEl, 'submit'); + fixture.detectChanges(); + + expect(sortedClassList(modelGroup)).toEqual(['ng-pristine', 'ng-untouched', 'ng-valid']); + expect(sortedClassList(form)).toEqual([ + 'ng-pristine', 'ng-submitted', 'ng-untouched', 'ng-valid' + ]); + expect(sortedClassList(input)).not.toContain('ng-submitted'); + + dispatchEvent(formEl, 'reset'); + fixture.detectChanges(); + + expect(sortedClassList(modelGroup)).toEqual(['ng-pristine', 'ng-untouched', 'ng-valid']); + expect(sortedClassList(form)).toEqual(['ng-pristine', 'ng-untouched', 'ng-valid']); + expect(sortedClassList(input)).not.toContain('ng-submitted'); + }); + }); + it('should not create a template-driven form when ngNoForm is used', () => { const fixture = initTest(NgNoFormComp); fixture.detectChanges(); @@ -1524,6 +1582,7 @@ import {NgModelCustomComp, NgModelCustomWrapper} from './value_accessor_integrat input.value = ''; dispatchEvent(input, 'input'); fixture.detectChanges(); + expect(input.getAttribute('max')).toEqual('10'); expect(form.valid).toEqual(true); expect(form.controls.max.errors).toBeNull(); @@ -1538,6 +1597,56 @@ import {NgModelCustomComp, NgModelCustomWrapper} from './value_accessor_integrat fixture.detectChanges(); expect(form.valid).toEqual(true); expect(form.controls.max.errors).toBeNull(); + + fixture.componentInstance.max = 0; + fixture.detectChanges(); + tick(); + dispatchEvent(input, 'input'); + fixture.detectChanges(); + expect(input.getAttribute('max')).toEqual('0'); + expect(form.valid).toEqual(false); + expect(form.controls.max.errors).toEqual({max: {max: 0, actual: 9}}); + + input.value = 0; + dispatchEvent(input, 'input'); + fixture.detectChanges(); + expect(form.valid).toEqual(true); + expect(form.controls.max.errors).toBeNull(); + })); + + it('should validate max for float number', fakeAsync(() => { + const fixture = initTest(NgModelMaxValidator); + fixture.componentInstance.max = 10.25; + fixture.detectChanges(); + tick(); + + const input = fixture.debugElement.query(By.css('input')).nativeElement; + const form = fixture.debugElement.children[0].injector.get(NgForm); + + input.value = ''; + dispatchEvent(input, 'input'); + fixture.detectChanges(); + expect(input.getAttribute('max')).toEqual('10.25'); + expect(form.valid).toEqual(true); + expect(form.controls.max.errors).toBeNull(); + + input.value = 10.25; + dispatchEvent(input, 'input'); + fixture.detectChanges(); + expect(form.valid).toEqual(true); + expect(form.controls.max.errors).toBeNull(); + + input.value = 10.15; + dispatchEvent(input, 'input'); + fixture.detectChanges(); + expect(form.valid).toEqual(true); + expect(form.controls.max.errors).toBeNull(); + + input.value = 10.35; + dispatchEvent(input, 'input'); + fixture.detectChanges(); + expect(form.valid).toEqual(false); + expect(form.controls.max.errors).toEqual({max: {max: 10.25, actual: 10.35}}); })); it('should apply max validation when control value is defined as a string', fakeAsync(() => { @@ -1552,6 +1661,7 @@ import {NgModelCustomComp, NgModelCustomWrapper} from './value_accessor_integrat input.value = '11'; dispatchEvent(input, 'input'); fixture.detectChanges(); + expect(input.getAttribute('max')).toEqual('10'); expect(form.valid).toEqual(false); expect(form.controls.max.errors).toEqual({max: {max: 10, actual: 11}}); @@ -1601,6 +1711,7 @@ import {NgModelCustomComp, NgModelCustomWrapper} from './value_accessor_integrat input.value = ''; dispatchEvent(input, 'input'); fixture.detectChanges(); + expect(input.getAttribute('min')).toEqual('10'); expect(form.valid).toEqual(true); expect(form.controls.min.errors).toBeNull(); @@ -1615,8 +1726,58 @@ import {NgModelCustomComp, NgModelCustomWrapper} from './value_accessor_integrat fixture.detectChanges(); expect(form.valid).toEqual(false); expect(form.controls.min.errors).toEqual({min: {min: 10, actual: 9}}); + + fixture.componentInstance.min = 0; + fixture.detectChanges(); + tick(); + input.value = -5; + dispatchEvent(input, 'input'); + fixture.detectChanges(); + expect(input.getAttribute('min')).toEqual('0'); + expect(form.valid).toEqual(false); + expect(form.controls.min.errors).toEqual({min: {min: 0, actual: -5}}); + + input.value = 0; + dispatchEvent(input, 'input'); + fixture.detectChanges(); + expect(form.valid).toEqual(true); + expect(form.controls.min.errors).toBeNull(); })); + it('should validate min for float number', fakeAsync(() => { + const fixture = initTest(NgModelMinValidator); + fixture.componentInstance.min = 10.25; + fixture.detectChanges(); + tick(); + + const input = fixture.debugElement.query(By.css('input')).nativeElement; + const form = fixture.debugElement.children[0].injector.get(NgForm); + + input.value = ''; + dispatchEvent(input, 'input'); + fixture.detectChanges(); + expect(input.getAttribute('min')).toEqual('10.25'); + expect(form.valid).toEqual(true); + expect(form.controls.min.errors).toBeNull(); + + input.value = 10.35; + dispatchEvent(input, 'input'); + fixture.detectChanges(); + expect(form.valid).toEqual(true); + expect(form.controls.min.errors).toBeNull(); + + input.value = 10.25; + dispatchEvent(input, 'input'); + fixture.detectChanges(); + expect(form.valid).toEqual(true); + expect(form.controls.min.errors).toBeNull(); + + input.value = 10.15; + dispatchEvent(input, 'input'); + fixture.detectChanges(); + expect(form.valid).toEqual(false); + expect(form.controls.min.errors).toEqual({min: {min: 10.25, actual: 10.15}}); + })); it('should apply min validation when control value is defined as a string', fakeAsync(() => { const fixture = initTest(NgModelMinValidator); fixture.componentInstance.min = 10; @@ -1629,6 +1790,7 @@ import {NgModelCustomComp, NgModelCustomWrapper} from './value_accessor_integrat input.value = '11'; dispatchEvent(input, 'input'); fixture.detectChanges(); + expect(input.getAttribute('min')).toEqual('10'); expect(form.valid).toEqual(true); expect(form.controls.min.errors).toBeNull(); @@ -1755,6 +1917,96 @@ import {NgModelCustomComp, NgModelCustomWrapper} from './value_accessor_integrat expect(minValidateFnSpy).not.toHaveBeenCalled(); })); + describe('enabling validators conditionally', () => { + it('should not include the minLength and maxLength validators for null', fakeAsync(() => { + @Component({ + template: + '
' + }) + class MinLengthMaxLengthComponent { + minlen: number|null = null; + maxlen: number|null = null; + control!: FormControl; + } + + const fixture = initTest(MinLengthMaxLengthComponent); + fixture.detectChanges(); + tick(); + const input = fixture.debugElement.query(By.css('input')).nativeElement; + + const form = fixture.debugElement.children[0].injector.get(NgForm); + const control = + fixture.debugElement.children[0].injector.get(NgForm).control.get('amount')!; + + interface minmax { + minlength: number|null; + maxlength: number|null; + } + + interface state { + isValid: boolean; + failedValidator?: string; + } + + const setInputValue = (value: number) => { + input.value = value; + dispatchEvent(input, 'input'); + fixture.detectChanges(); + }; + const verifyValidatorAttrValues = (values: {minlength: any, maxlength: any}) => { + expect(input.getAttribute('minlength')).toBe(values.minlength); + expect(input.getAttribute('maxlength')).toBe(values.maxlength); + }; + const setValidatorValues = (values: minmax) => { + fixture.componentInstance.minlen = values.minlength; + fixture.componentInstance.maxlen = values.maxlength; + fixture.detectChanges(); + }; + const verifyFormState = (state: state) => { + expect(form.valid).toBe(state.isValid); + if (state.failedValidator) { + expect(control!.hasError('minlength')) + .toEqual(state.failedValidator === 'minlength'); + expect(control!.hasError('maxlength')) + .toEqual(state.failedValidator === 'maxlength'); + } + }; + + ////////// Actual test scenarios start below ////////// + // 1. Verify that validators are disabled when input is `null`. + verifyValidatorAttrValues({minlength: null, maxlength: null}); + verifyValidatorAttrValues({minlength: null, maxlength: null}); + + // 2. Verify that setting validator inputs (to a value different from `null`) activate + // validators. + setInputValue(12345); + setValidatorValues({minlength: 2, maxlength: 4}); + verifyValidatorAttrValues({minlength: '2', maxlength: '4'}); + verifyFormState({isValid: false, failedValidator: 'maxlength'}); + + // 3. Changing value to the valid range should make the form valid. + setInputValue(123); + verifyFormState({isValid: true}); + + // 4. Changing value to trigger `minlength` validator. + setInputValue(1); + verifyFormState({isValid: false, failedValidator: 'minlength'}); + + // 5. Changing validator inputs to verify that attribute values are updated (and the + // form is now valid). + setInputValue(1); + setValidatorValues({minlength: 1, maxlength: 5}); + verifyValidatorAttrValues({minlength: '1', maxlength: '5'}); + verifyFormState({isValid: true}); + + // 6. Reset validator inputs back to `null` should deactivate validators. + setInputValue(123); + setValidatorValues({minlength: null, maxlength: null}); + verifyValidatorAttrValues({minlength: null, maxlength: null}); + verifyFormState({isValid: true}); + })); + }); + ['number', 'string'].forEach((inputType: string) => { it(`should validate min and max when constraints are represented using a ${inputType}`, fakeAsync(() => { @@ -1967,6 +2219,79 @@ import {NgModelCustomComp, NgModelCustomWrapper} from './value_accessor_integrat expect(form.valid).toBeFalse(); expect(form.controls.min_max.errors).toEqual({max: {max: -10, actual: 0}}); })); + + it('should call registerOnValidatorChange as a part of a formGroup setup', fakeAsync(() => { + let registerOnValidatorChangeFired = 0; + let registerOnAsyncValidatorChangeFired = 0; + + @Directive({ + selector: '[ng-noop-validator]', + providers: [ + {provide: NG_VALIDATORS, useExisting: forwardRef(() => NoOpValidator), multi: true} + ] + }) + class NoOpValidator implements Validator { + @Input() validatorInput = ''; + + validate(c: AbstractControl) { + return null; + } + + public registerOnValidatorChange(fn: () => void) { + registerOnValidatorChangeFired++; + } + } + + @Directive({ + selector: '[ng-noop-async-validator]', + providers: [{ + provide: NG_ASYNC_VALIDATORS, + useExisting: forwardRef(() => NoOpAsyncValidator), + multi: true + }] + }) + class NoOpAsyncValidator implements AsyncValidator { + @Input() validatorInput = ''; + + validate(c: AbstractControl) { + return Promise.resolve(null); + } + + public registerOnValidatorChange(fn: () => void) { + registerOnAsyncValidatorChangeFired++; + } + } + + @Component({ + selector: 'ng-model-noop-validation', + template: ` +
+
+ +
+
+ ` + }) + class NgModelNoOpValidation { + validatorInput = 'foo'; + emptyGroup = {}; + } + + const fixture = initTest(NgModelNoOpValidation, NoOpValidator, NoOpAsyncValidator); + fixture.detectChanges(); + tick(); + + expect(registerOnValidatorChangeFired).toBe(1); + expect(registerOnAsyncValidatorChangeFired).toBe(1); + + fixture.componentInstance.validatorInput = 'bar'; + fixture.detectChanges(); + + // Changing validator inputs should not cause `registerOnValidatorChange` to be invoked, + // since it's invoked just once during the setup phase. + expect(registerOnValidatorChangeFired).toBe(1); + expect(registerOnAsyncValidatorChangeFired).toBe(1); + })); }); describe('IME events', () => { @@ -2190,6 +2515,24 @@ class NgModelNgIfForm { email!: string; } +@Component({ + selector: 'ng-model-nested', + template: ` +
+
+ +
+ +
+
+
+ ` +}) +class NgModelNestedForm { + first!: string; + other!: string; +} + @Component({ selector: 'ng-no-form', template: ` diff --git a/packages/forms/test/validators_spec.ts b/packages/forms/test/validators_spec.ts index db5d5262d5..2ff90077f4 100644 --- a/packages/forms/test/validators_spec.ts +++ b/packages/forms/test/validators_spec.ts @@ -7,7 +7,6 @@ */ import {fakeAsync, tick} from '@angular/core/testing'; -import {describe, expect, it} from '@angular/core/testing/src/testing_internal'; import {AbstractControl, AsyncValidator, AsyncValidatorFn, FormArray, FormControl, ValidationErrors, ValidatorFn, Validators} from '@angular/forms'; import {Observable, of, timer} from 'rxjs'; import {first, map} from 'rxjs/operators'; @@ -61,6 +60,20 @@ describe('Validators', () => { expect(Validators.min(2)(new FormControl('1'))).toEqual({'min': {'min': 2, 'actual': '1'}}); }); + it('should not error on small float number validation', () => { + expect(Validators.min(1.20)(new FormControl(1.25))).toBeNull(); + }); + + it('should not error on equal float values', () => { + expect(Validators.min(1.25)(new FormControl(1.25))).toBeNull(); + }); + + it('should return a validation error on big values', () => { + expect(Validators.min(1.25)(new FormControl(1.20))).toEqual({ + 'min': {'min': 1.25, 'actual': 1.20} + }); + }); + it('should not error on big values', () => { expect(Validators.min(2)(new FormControl(3))).toBeNull(); }); @@ -105,6 +118,20 @@ describe('Validators', () => { expect(Validators.max(2)(new FormControl('aaa'))).toBeNull(); }); + it('should not error on small float number validation', () => { + expect(Validators.max(1.20)(new FormControl(1.15))).toBeNull(); + }); + + it('should not error on equal float values', () => { + expect(Validators.max(1.25)(new FormControl(1.25))).toBeNull(); + }); + + it('should return a validation error on big values', () => { + expect(Validators.max(1.25)(new FormControl(1.30))).toEqual({ + 'max': {'max': 1.25, 'actual': 1.30} + }); + }); + it('should return a validation error on big values', () => { expect(Validators.max(2)(new FormControl(3))).toEqual({'max': {'max': 2, 'actual': 3}}); }); @@ -403,7 +430,7 @@ describe('Validators', () => { const v = Validators.composeAsync( [promiseValidator({'one': true}), promiseValidator({'two': true})])!; - let errorMap: {[key: string]: any}|null = undefined!; + let errorMap: {[key: string]: any}|null = null; (v(new FormControl('invalid')) as Observable) .pipe(first()) .subscribe((errors: {[key: string]: any}|null) => errorMap = errors); @@ -417,7 +444,7 @@ describe('Validators', () => { [new AsyncValidatorDirective('expected', {'one': true})]); const validatorFn = Validators.composeAsync(normalizedValidators)!; - let errorMap: {[key: string]: any}|null = undefined!; + let errorMap: {[key: string]: any}|null = null; (validatorFn(new FormControl('invalid')) as Observable) .pipe(first()) .subscribe((errors: {[key: string]: any}|null) => errorMap = errors); @@ -441,7 +468,7 @@ describe('Validators', () => { it('should ignore nulls', fakeAsync(() => { const v = Validators.composeAsync([promiseValidator({'one': true}), null!])!; - let errorMap: {[key: string]: any}|null = undefined!; + let errorMap: {[key: string]: any}|null = null; (v(new FormControl('invalid')) as Observable) .pipe(first()) .subscribe((errors: {[key: string]: any}|null) => errorMap = errors); @@ -467,7 +494,7 @@ describe('Validators', () => { const v = Validators.composeAsync( [observableValidator({'one': true}), observableValidator({'two': true})])!; - let errorMap: {[key: string]: any}|null = undefined!; + let errorMap: {[key: string]: any}|null = null; (v(new FormControl('invalid')) as Observable) .pipe(first()) .subscribe((errors: {[key: string]: any}|null) => errorMap = errors); @@ -480,7 +507,7 @@ describe('Validators', () => { [new AsyncValidatorDirective('expected', {'one': true})]); const validatorFn = Validators.composeAsync(normalizedValidators)!; - let errorMap: {[key: string]: any}|null = undefined!; + let errorMap: {[key: string]: any}|null = null; (validatorFn(new FormControl('invalid')) as Observable) .pipe(first()) .subscribe((errors: {[key: string]: any}|null) => errorMap = errors)!; @@ -502,7 +529,7 @@ describe('Validators', () => { it('should ignore nulls', () => { const v = Validators.composeAsync([observableValidator({'one': true}), null!])!; - let errorMap: {[key: string]: any}|null = undefined!; + let errorMap: {[key: string]: any}|null = null; (v(new FormControl('invalid')) as Observable) .pipe(first()) .subscribe((errors: {[key: string]: any}|null) => errorMap = errors); @@ -520,7 +547,7 @@ describe('Validators', () => { const v = Validators.composeAsync( [getTimerObs(100, {one: true}), getTimerObs(200, {two: true})])!; - let errorMap: {[key: string]: any}|null = undefined!; + let errorMap: {[key: string]: any}|null|undefined = undefined; (v(new FormControl('invalid')) as Observable) .pipe(first()) .subscribe((errors: {[key: string]: any}|null) => errorMap = errors); diff --git a/packages/goog.d.ts b/packages/goog.d.ts index 1ea0320485..f8b4724929 100644 --- a/packages/goog.d.ts +++ b/packages/goog.d.ts @@ -18,6 +18,7 @@ declare namespace goog { export const DEBUG: boolean; export const LOCALE: string; export const getMsg: (input: string, placeholders?: {[key: string]: string}) => string; + export const getLocale: () => string; } /** diff --git a/packages/language-service/bundles/BUILD.bazel b/packages/language-service/bundles/BUILD.bazel index 08e47e0d38..edb3298c17 100644 --- a/packages/language-service/bundles/BUILD.bazel +++ b/packages/language-service/bundles/BUILD.bazel @@ -6,6 +6,7 @@ ng_rollup_bundle( entry_point = "//packages/language-service:src/ts_plugin.ts", format = "amd", globals = { + "os": "os", "fs": "fs", "path": "path", "typescript": "ts", @@ -26,6 +27,7 @@ ng_rollup_bundle( entry_point = "//packages/language-service/ivy:ts_plugin.ts", format = "amd", globals = { + "os": "os", "fs": "fs", "path": "path", "typescript": "ts", diff --git a/packages/language-service/ivy/BUILD.bazel b/packages/language-service/ivy/BUILD.bazel index 314728e998..86a8b20334 100644 --- a/packages/language-service/ivy/BUILD.bazel +++ b/packages/language-service/ivy/BUILD.bazel @@ -16,6 +16,7 @@ ts_library( "//packages/compiler-cli/src/ngtsc/incremental", "//packages/compiler-cli/src/ngtsc/metadata", "//packages/compiler-cli/src/ngtsc/perf", + "//packages/compiler-cli/src/ngtsc/program_driver", "//packages/compiler-cli/src/ngtsc/reflection", "//packages/compiler-cli/src/ngtsc/shims", "//packages/compiler-cli/src/ngtsc/typecheck", diff --git a/packages/language-service/ivy/adapters.ts b/packages/language-service/ivy/adapters.ts index f77ac2b2b8..fc40367efa 100644 --- a/packages/language-service/ivy/adapters.ts +++ b/packages/language-service/ivy/adapters.ts @@ -18,6 +18,8 @@ import * as ts from 'typescript/lib/tsserverlibrary'; import {isTypeScriptFile} from './utils'; +const PRE_COMPILED_STYLE_EXTENSIONS = ['.scss', '.sass', '.less', '.styl']; + export class LanguageServiceAdapter implements NgCompilerAdapter { readonly entryPoint = null; readonly constructionDiagnostics: ts.Diagnostic[] = []; @@ -37,6 +39,24 @@ export class LanguageServiceAdapter implements NgCompilerAdapter { this.rootDirs = getRootDirs(this, project.getCompilationSettings()); } + resourceNameToFileName( + url: string, fromFile: string, + fallbackResolve?: (url: string, fromFile: string) => string | null): string|null { + // If we are trying to resolve a `.css` file, see if we can find a pre-compiled file with the + // same name instead. That way, we can provide go-to-definition for the pre-compiled files which + // would generally be the desired behavior. + if (url.endsWith('.css')) { + const styleUrl = p.resolve(fromFile, '..', url); + for (const ext of PRE_COMPILED_STYLE_EXTENSIONS) { + const precompiledFileUrl = styleUrl.replace(/\.css$/, ext); + if (this.fileExists(precompiledFileUrl)) { + return precompiledFileUrl; + } + } + } + return fallbackResolve?.(url, fromFile) ?? null; + } + isShim(sf: ts.SourceFile): boolean { return isShim(sf); } diff --git a/packages/language-service/ivy/compiler_factory.ts b/packages/language-service/ivy/compiler_factory.ts index 2c634d1026..b424d02761 100644 --- a/packages/language-service/ivy/compiler_factory.ts +++ b/packages/language-service/ivy/compiler_factory.ts @@ -8,13 +8,11 @@ import {CompilationTicket, freshCompilationTicket, incrementalFromCompilerTicket, NgCompiler, resourceChangeTicket} from '@angular/compiler-cli/src/ngtsc/core'; import {NgCompilerOptions} from '@angular/compiler-cli/src/ngtsc/core/api'; +import {AbsoluteFsPath, resolve} from '@angular/compiler-cli/src/ngtsc/file_system'; import {TrackedIncrementalBuildStrategy} from '@angular/compiler-cli/src/ngtsc/incremental'; -import {ActivePerfRecorder} from '@angular/compiler-cli/src/ngtsc/perf'; -import {TypeCheckingProgramStrategy} from '@angular/compiler-cli/src/ngtsc/typecheck/api'; -import * as ts from 'typescript/lib/tsserverlibrary'; +import {ProgramDriver} from '@angular/compiler-cli/src/ngtsc/program_driver'; import {LanguageServiceAdapter} from './adapters'; -import {isExternalTemplate} from './utils'; /** * Manages the `NgCompiler` instance which backs the language service, updating or replacing it as @@ -28,19 +26,21 @@ import {isExternalTemplate} from './utils'; export class CompilerFactory { private readonly incrementalStrategy = new TrackedIncrementalBuildStrategy(); private compiler: NgCompiler|null = null; - private lastKnownProgram: ts.Program|null = null; constructor( private readonly adapter: LanguageServiceAdapter, - private readonly programStrategy: TypeCheckingProgramStrategy, + private readonly programStrategy: ProgramDriver, private readonly options: NgCompilerOptions, ) {} getOrCreate(): NgCompiler { const program = this.programStrategy.getProgram(); - const modifiedResourceFiles = this.adapter.getModifiedResourceFiles() ?? new Set(); + const modifiedResourceFiles = new Set(); + for (const fileName of this.adapter.getModifiedResourceFiles() ?? []) { + modifiedResourceFiles.add(resolve(fileName)); + } - if (this.compiler !== null && program === this.lastKnownProgram) { + if (this.compiler !== null && program === this.compiler.getCurrentProgram()) { if (modifiedResourceFiles.size > 0) { // Only resource files have changed since the last NgCompiler was created. const ticket = resourceChangeTicket(this.compiler, modifiedResourceFiles); @@ -55,7 +55,7 @@ export class CompilerFactory { } let ticket: CompilationTicket; - if (this.compiler === null || this.lastKnownProgram === null) { + if (this.compiler === null) { ticket = freshCompilationTicket( program, this.options, this.incrementalStrategy, this.programStrategy, /* perfRecorder */ null, true, true); @@ -65,11 +65,6 @@ export class CompilerFactory { modifiedResourceFiles, /* perfRecorder */ null); } this.compiler = NgCompiler.fromTicket(ticket, this.adapter); - this.lastKnownProgram = program; return this.compiler; } - - registerLastKnownProgram() { - this.lastKnownProgram = this.programStrategy.getProgram(); - } } diff --git a/packages/language-service/ivy/completions.ts b/packages/language-service/ivy/completions.ts index 49f6b13682..af42275ecc 100644 --- a/packages/language-service/ivy/completions.ts +++ b/packages/language-service/ivy/completions.ts @@ -9,7 +9,7 @@ import {AST, BindingPipe, EmptyExpr, ImplicitReceiver, LiteralPrimitive, MethodCall, ParseSourceSpan, PropertyRead, PropertyWrite, SafeMethodCall, SafePropertyRead, TmplAstBoundAttribute, TmplAstBoundEvent, TmplAstElement, TmplAstNode, TmplAstReference, TmplAstTemplate, TmplAstText, TmplAstTextAttribute, TmplAstVariable} from '@angular/compiler'; import {NgCompiler} from '@angular/compiler-cli/src/ngtsc/core'; import {CompletionKind, DirectiveInScope, TemplateDeclarationSymbol} from '@angular/compiler-cli/src/ngtsc/typecheck/api'; -import {BoundEvent} from '@angular/compiler/src/render3/r3_ast'; +import {BoundEvent, TextAttribute} from '@angular/compiler/src/render3/r3_ast'; import * as ts from 'typescript'; import {addAttributeCompletionEntries, AttributeCompletionKind, buildAttributeCompletionTable, getAttributeCompletionSymbol} from './attribute_completions'; @@ -26,6 +26,8 @@ type ElementAttributeCompletionBuilder = type PipeCompletionBuilder = CompletionBuilder; +type LiteralCompletionBuilder = CompletionBuilder; + export enum CompletionNodeContext { None, ElementTag, @@ -47,7 +49,7 @@ export enum CompletionNodeContext { * @param N type of the template node in question, narrowed accordingly. */ export class CompletionBuilder { - private readonly typeChecker = this.compiler.getNextProgram().getTypeChecker(); + private readonly typeChecker = this.compiler.getCurrentProgram().getTypeChecker(); private readonly templateTypeChecker = this.compiler.getTemplateTypeChecker(); private readonly nodeParent = this.targetDetails.parent; private readonly nodeContext = nodeContextFromTarget(this.targetDetails.context); @@ -72,19 +74,81 @@ export class CompletionBuilder { return this.getElementAttributeCompletions(); } else if (this.isPipeCompletion()) { return this.getPipeCompletions(); + } else if (this.isLiteralCompletion()) { + return this.getLiteralCompletions(options); } else { return undefined; } } + private isLiteralCompletion(): this is LiteralCompletionBuilder { + return this.node instanceof LiteralPrimitive || + (this.node instanceof TextAttribute && + this.nodeContext === CompletionNodeContext.ElementAttributeValue); + } + + private getLiteralCompletions( + this: LiteralCompletionBuilder, options: ts.GetCompletionsAtPositionOptions|undefined): + ts.WithMetadata|undefined { + const location = this.compiler.getTemplateTypeChecker().getLiteralCompletionLocation( + this.node, this.component); + if (location === null) { + return undefined; + } + const tsResults = + this.tsLS.getCompletionsAtPosition(location.shimPath, location.positionInShimFile, options); + if (tsResults === undefined) { + return undefined; + } + + let replacementSpan: ts.TextSpan|undefined; + if (this.node instanceof TextAttribute && this.node.value.length > 0 && this.node.valueSpan) { + replacementSpan = { + start: this.node.valueSpan.start.offset, + length: this.node.value.length, + }; + } + if (this.node instanceof LiteralPrimitive) { + if (typeof this.node.value === 'string' && this.node.value.length > 0) { + replacementSpan = { + // The sourceSpan of `LiteralPrimitive` includes the open quote and the completion entries + // don't, so skip the open quote here. + start: this.node.sourceSpan.start + 1, + length: this.node.value.length, + }; + } else if (typeof this.node.value === 'number') { + replacementSpan = { + start: this.node.sourceSpan.start, + length: this.node.value.toString().length, + }; + } + } + + let ngResults: ts.CompletionEntry[] = []; + for (const result of tsResults.entries) { + if (this.isValidNodeContextCompletion(result)) { + ngResults.push({ + ...result, + replacementSpan, + }); + } + } + return { + ...tsResults, + entries: ngResults, + }; + } + /** * Analogue for `ts.LanguageService.getCompletionEntryDetails`. */ getCompletionEntryDetails( entryName: string, formatOptions: ts.FormatCodeOptions|ts.FormatCodeSettings|undefined, - preferences: ts.UserPreferences|undefined): ts.CompletionEntryDetails|undefined { + preferences: ts.UserPreferences|undefined, + data: ts.CompletionEntryData|undefined): ts.CompletionEntryDetails|undefined { if (this.isPropertyExpressionCompletion()) { - return this.getPropertyExpressionCompletionDetails(entryName, formatOptions, preferences); + return this.getPropertyExpressionCompletionDetails( + entryName, formatOptions, preferences, data); } else if (this.isElementTagCompletion()) { return this.getElementTagCompletionDetails(entryName); } else if (this.isElementAttributeCompletion()) { @@ -167,12 +231,13 @@ export class CompletionBuilder { private getPropertyExpressionCompletionDetails( this: PropertyExpressionCompletionBuilder, entryName: string, formatOptions: ts.FormatCodeOptions|ts.FormatCodeSettings|undefined, - preferences: ts.UserPreferences|undefined): ts.CompletionEntryDetails|undefined { + preferences: ts.UserPreferences|undefined, + data: ts.CompletionEntryData|undefined): ts.CompletionEntryDetails|undefined { let details: ts.CompletionEntryDetails|undefined = undefined; if (this.node instanceof EmptyExpr || this.node instanceof BoundEvent || this.node.receiver instanceof ImplicitReceiver) { - details = - this.getGlobalPropertyExpressionCompletionDetails(entryName, formatOptions, preferences); + details = this.getGlobalPropertyExpressionCompletionDetails( + entryName, formatOptions, preferences, data); } else { const location = this.compiler.getTemplateTypeChecker().getExpressionCompletionLocation( this.node, this.component); @@ -181,7 +246,7 @@ export class CompletionBuilder { } details = this.tsLS.getCompletionEntryDetails( location.shimPath, location.positionInShimFile, entryName, formatOptions, - /* source */ undefined, preferences); + /* source */ undefined, preferences, data); } if (details !== undefined) { details.displayParts = filterAliasImports(details.displayParts); @@ -216,21 +281,21 @@ export class CompletionBuilder { options: ts.GetCompletionsAtPositionOptions| undefined): ts.WithMetadata|undefined { const completions = - this.templateTypeChecker.getGlobalCompletions(this.template, this.component); + this.templateTypeChecker.getGlobalCompletions(this.template, this.component, this.node); if (completions === null) { return undefined; } - const {componentContext, templateContext} = completions; + const {componentContext, templateContext, nodeContext: astContext} = completions; const replacementSpan = makeReplacementSpanFromAst(this.node); // Merge TS completion results with results from the template scope. let entries: ts.CompletionEntry[] = []; - const tsLsCompletions = this.tsLS.getCompletionsAtPosition( + const componentCompletions = this.tsLS.getCompletionsAtPosition( componentContext.shimPath, componentContext.positionInShimFile, options); - if (tsLsCompletions !== undefined) { - for (const tsCompletion of tsLsCompletions.entries) { + if (componentCompletions !== undefined) { + for (const tsCompletion of componentCompletions.entries) { // Skip completions that are shadowed by a template entity definition. if (templateContext.has(tsCompletion.name)) { continue; @@ -244,6 +309,24 @@ export class CompletionBuilder { } } + // Merge TS completion results with results from the ast context. + if (astContext !== null) { + const nodeCompletions = this.tsLS.getCompletionsAtPosition( + astContext.shimPath, astContext.positionInShimFile, options); + if (nodeCompletions !== undefined) { + for (const tsCompletion of nodeCompletions.entries) { + if (this.isValidNodeContextCompletion(tsCompletion)) { + entries.push({ + ...tsCompletion, + // Substitute the TS completion's `replacementSpan` (which uses offsets within the + // TCB) with the `replacementSpan` within the template source. + replacementSpan, + }); + } + } + } + } + for (const [name, entity] of templateContext) { entries.push({ name, @@ -274,9 +357,10 @@ export class CompletionBuilder { private getGlobalPropertyExpressionCompletionDetails( this: PropertyExpressionCompletionBuilder, entryName: string, formatOptions: ts.FormatCodeOptions|ts.FormatCodeSettings|undefined, - preferences: ts.UserPreferences|undefined): ts.CompletionEntryDetails|undefined { + preferences: ts.UserPreferences|undefined, + data: ts.CompletionEntryData|undefined): ts.CompletionEntryDetails|undefined { const completions = - this.templateTypeChecker.getGlobalCompletions(this.template, this.component); + this.templateTypeChecker.getGlobalCompletions(this.template, this.component, this.node); if (completions === null) { return undefined; } @@ -305,7 +389,7 @@ export class CompletionBuilder { } else { return this.tsLS.getCompletionEntryDetails( componentContext.shimPath, componentContext.positionInShimFile, entryName, formatOptions, - /* source */ undefined, preferences); + /* source */ undefined, preferences, data); } } @@ -317,7 +401,7 @@ export class CompletionBuilder { private getGlobalPropertyExpressionCompletionSymbol( this: PropertyExpressionCompletionBuilder, entryName: string): ts.Symbol|undefined { const completions = - this.templateTypeChecker.getGlobalCompletions(this.template, this.component); + this.templateTypeChecker.getGlobalCompletions(this.template, this.component, this.node); if (completions === null) { return undefined; } @@ -557,6 +641,7 @@ export class CompletionBuilder { displayParts = info.displayParts; documentation = info.documentation; break; + case AttributeCompletionKind.StructuralDirectiveAttribute: case AttributeCompletionKind.DirectiveInput: case AttributeCompletionKind.DirectiveOutput: const propertySymbol = getAttributeCompletionSymbol(completion, this.typeChecker); @@ -564,11 +649,17 @@ export class CompletionBuilder { return undefined; } + let kind: DisplayInfoKind; + if (completion.kind === AttributeCompletionKind.DirectiveInput) { + kind = DisplayInfoKind.PROPERTY; + } else if (completion.kind === AttributeCompletionKind.DirectiveOutput) { + kind = DisplayInfoKind.EVENT; + } else { + kind = DisplayInfoKind.DIRECTIVE; + } + info = getTsSymbolDisplayInfo( - this.tsLS, this.typeChecker, propertySymbol, - completion.kind === AttributeCompletionKind.DirectiveInput ? DisplayInfoKind.PROPERTY : - DisplayInfoKind.EVENT, - completion.directive.tsSymbol.name); + this.tsLS, this.typeChecker, propertySymbol, kind, completion.directive.tsSymbol.name); if (info === null) { return undefined; } @@ -580,7 +671,7 @@ export class CompletionBuilder { name: entryName, kind: unsafeCastDisplayInfoKindToScriptElementKind(kind), kindModifiers: ts.ScriptElementKindModifier.none, - displayParts: [], + displayParts, documentation, }; } @@ -638,6 +729,25 @@ export class CompletionBuilder { isNewIdentifierLocation: false, }; } + + /** + * From the AST node of the cursor position, include completion of string literals, number + * literals, `true`, `false`, `null`, and `undefined`. + */ + private isValidNodeContextCompletion(completion: ts.CompletionEntry): boolean { + if (completion.kind === ts.ScriptElementKind.string) { + // 'string' kind includes both string literals and number literals + return true; + } + if (completion.kind === ts.ScriptElementKind.keyword) { + return completion.name === 'true' || completion.name === 'false' || + completion.name === 'null'; + } + if (completion.kind === ts.ScriptElementKind.variableElement) { + return completion.name === 'undefined'; + } + return false; + } } function makeReplacementSpanFromParseSourceSpan(span: ParseSourceSpan): ts.TextSpan { @@ -701,6 +811,8 @@ function nodeContextFromTarget(target: TargetContext): CompletionNodeContext { case TargetNodeKind.AttributeInValueContext: if (target.node instanceof TmplAstBoundEvent) { return CompletionNodeContext.EventValue; + } else if (target.node instanceof TextAttribute) { + return CompletionNodeContext.ElementAttributeValue; } else { return CompletionNodeContext.None; } diff --git a/packages/language-service/ivy/definitions.ts b/packages/language-service/ivy/definitions.ts index e8cf459ed5..257bd85cca 100644 --- a/packages/language-service/ivy/definitions.ts +++ b/packages/language-service/ivy/definitions.ts @@ -8,10 +8,13 @@ import {AST, TmplAstBoundAttribute, TmplAstBoundEvent, TmplAstElement, TmplAstNode, TmplAstTemplate, TmplAstTextAttribute} from '@angular/compiler'; import {NgCompiler} from '@angular/compiler-cli/src/ngtsc/core'; +import {absoluteFrom} from '@angular/compiler-cli/src/ngtsc/file_system'; import {isExternalResource} from '@angular/compiler-cli/src/ngtsc/metadata'; +import {ProgramDriver} from '@angular/compiler-cli/src/ngtsc/program_driver'; import {DirectiveSymbol, DomBindingSymbol, ElementSymbol, ShimLocation, Symbol, SymbolKind, TemplateSymbol} from '@angular/compiler-cli/src/ngtsc/typecheck/api'; import * as ts from 'typescript'; +import {convertToTemplateDocumentSpan} from './references_and_rename_utils'; import {getTargetAtPosition, TargetNodeKind} from './template_target'; import {findTightestNode, getParentClassDeclaration} from './ts_utils'; import {flatMap, getDirectiveMatchesForAttribute, getDirectiveMatchesForElementTag, getTemplateInfoAtPosition, getTemplateLocationFromShimLocation, getTextSpanOfNode, isDollarEvent, isTypeScriptFile, TemplateInfo, toTextSpan} from './utils'; @@ -27,7 +30,11 @@ interface HasShimLocation { } export class DefinitionBuilder { - constructor(private readonly tsLS: ts.LanguageService, private readonly compiler: NgCompiler) {} + private readonly ttc = this.compiler.getTemplateTypeChecker(); + + constructor( + private readonly tsLS: ts.LanguageService, private readonly compiler: NgCompiler, + private readonly driver: ProgramDriver) {} getDefinitionAndBoundSpan(fileName: string, position: number): ts.DefinitionInfoAndBoundSpan |undefined { @@ -132,10 +139,36 @@ export class DefinitionBuilder { private getDefinitionsForSymbols(...symbols: HasShimLocation[]): ts.DefinitionInfo[] { return flatMap(symbols, ({shimLocation}) => { const {shimPath, positionInShimFile} = shimLocation; - return this.tsLS.getDefinitionAtPosition(shimPath, positionInShimFile) ?? []; + const definitionInfos = this.tsLS.getDefinitionAtPosition(shimPath, positionInShimFile); + if (definitionInfos === undefined) { + return []; + } + return this.mapShimResultsToTemplates(definitionInfos); }); } + /** + * Converts and definition info result that points to a template typecheck file to a reference to + * the corresponding location in the template. + */ + private mapShimResultsToTemplates(definitionInfos: readonly ts.DefinitionInfo[]): + readonly ts.DefinitionInfo[] { + const result: ts.DefinitionInfo[] = []; + for (const info of definitionInfos) { + if (this.ttc.isTrackedTypeCheckFile(absoluteFrom(info.fileName))) { + const templateDefinitionInfo = + convertToTemplateDocumentSpan(info, this.ttc, this.driver.getProgram()); + if (templateDefinitionInfo === null) { + continue; + } + result.push(templateDefinitionInfo); + } else { + result.push(info); + } + } + return result; + } + getTypeDefinitionsAtPosition(fileName: string, position: number): readonly ts.DefinitionInfo[]|undefined { const templateInfo = getTemplateInfoAtPosition(fileName, position, this.compiler); @@ -282,7 +315,7 @@ export class DefinitionBuilder { function getDefinitionForExpressionAtPosition( fileName: string, position: number, compiler: NgCompiler): ts.DefinitionInfoAndBoundSpan| undefined { - const sf = compiler.getNextProgram().getSourceFile(fileName); + const sf = compiler.getCurrentProgram().getSourceFile(fileName); if (sf === undefined) { return; } diff --git a/packages/language-service/ivy/display_parts.ts b/packages/language-service/ivy/display_parts.ts index fefda80e9c..f948286bd3 100644 --- a/packages/language-service/ivy/display_parts.ts +++ b/packages/language-service/ivy/display_parts.ts @@ -6,6 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ +import {isNamedClassDeclaration} from '@angular/compiler-cli/src/ngtsc/reflection'; import {DirectiveInScope, ReferenceSymbol, ShimLocation, Symbol, SymbolKind, VariableSymbol} from '@angular/compiler-cli/src/ngtsc/typecheck/api'; import * as ts from 'typescript'; @@ -155,7 +156,9 @@ export function getTsSymbolDisplayInfo( tsLS: ts.LanguageService, checker: ts.TypeChecker, symbol: ts.Symbol, kind: DisplayInfoKind, ownerName: string|null): DisplayInfo|null { const decl = symbol.valueDeclaration; - if (decl === undefined || (!ts.isPropertyDeclaration(decl) && !ts.isMethodDeclaration(decl)) || + if (decl === undefined || + (!ts.isPropertyDeclaration(decl) && !ts.isMethodDeclaration(decl) && + !isNamedClassDeclaration(decl)) || !ts.isIdentifier(decl.name)) { return null; } diff --git a/packages/language-service/ivy/language_service.ts b/packages/language-service/ivy/language_service.ts index 3ac3d5ff49..66573f971d 100644 --- a/packages/language-service/ivy/language_service.ts +++ b/packages/language-service/ivy/language_service.ts @@ -12,9 +12,10 @@ import {NgCompiler} from '@angular/compiler-cli/src/ngtsc/core'; import {ErrorCode, ngErrorCode} from '@angular/compiler-cli/src/ngtsc/diagnostics'; import {absoluteFrom, absoluteFromSourceFile, AbsoluteFsPath} from '@angular/compiler-cli/src/ngtsc/file_system'; import {PerfPhase} from '@angular/compiler-cli/src/ngtsc/perf'; +import {FileUpdate, ProgramDriver} from '@angular/compiler-cli/src/ngtsc/program_driver'; import {isNamedClassDeclaration} from '@angular/compiler-cli/src/ngtsc/reflection'; import {TypeCheckShimGenerator} from '@angular/compiler-cli/src/ngtsc/typecheck'; -import {OptimizeFor, TypeCheckingProgramStrategy} from '@angular/compiler-cli/src/ngtsc/typecheck/api'; +import {OptimizeFor} from '@angular/compiler-cli/src/ngtsc/typecheck/api'; import {findFirstMatchingNode} from '@angular/compiler-cli/src/ngtsc/typecheck/src/comments'; import * as ts from 'typescript/lib/tsserverlibrary'; @@ -25,7 +26,9 @@ import {CompilerFactory} from './compiler_factory'; import {CompletionBuilder, CompletionNodeContext} from './completions'; import {DefinitionBuilder} from './definitions'; import {QuickInfoBuilder} from './quick_info'; -import {ReferencesAndRenameBuilder} from './references'; +import {ReferencesBuilder, RenameBuilder} from './references_and_rename'; +import {createLocationKey} from './references_and_rename_utils'; +import {getSignatureHelp} from './signature_help'; import {getTargetAtPosition, TargetContext, TargetNodeKind} from './template_target'; import {findTightestNode, getClassDeclFromDecoratorProp, getPropertyAssignmentFromValue} from './ts_utils'; import {getTemplateInfoAtPosition, isTypeScriptFile} from './utils'; @@ -41,7 +44,7 @@ interface LanguageServiceConfig { export class LanguageService { private options: CompilerOptions; readonly compilerFactory: CompilerFactory; - private readonly strategy: TypeCheckingProgramStrategy; + private readonly programDriver: ProgramDriver; private readonly adapter: LanguageServiceAdapter; private readonly parseConfigHost: LSParseConfigHost; @@ -53,9 +56,9 @@ export class LanguageService { this.parseConfigHost = new LSParseConfigHost(project.projectService.host); this.options = parseNgCompilerOptions(project, this.parseConfigHost, config); logCompilerOptions(project, this.options); - this.strategy = createTypeCheckingProgramStrategy(project); + this.programDriver = createProgramDriver(project); this.adapter = new LanguageServiceAdapter(project); - this.compilerFactory = new CompilerFactory(this.adapter, this.strategy, this.options); + this.compilerFactory = new CompilerFactory(this.adapter, this.programDriver, this.options); this.watchConfigFile(project); } @@ -68,7 +71,7 @@ export class LanguageService { const ttc = compiler.getTemplateTypeChecker(); const diagnostics: ts.Diagnostic[] = []; if (isTypeScriptFile(fileName)) { - const program = compiler.getNextProgram(); + const program = compiler.getCurrentProgram(); const sourceFile = program.getSourceFile(fileName); if (sourceFile) { const ngDiagnostics = compiler.getDiagnosticsForFile(sourceFile, OptimizeFor.SingleFile); @@ -112,10 +115,10 @@ export class LanguageService { getDefinitionAndBoundSpan(fileName: string, position: number): ts.DefinitionInfoAndBoundSpan |undefined { return this.withCompilerAndPerfTracing(PerfPhase.LsDefinition, (compiler) => { - if (!isInAngularContext(compiler.getNextProgram(), fileName, position)) { + if (!isInAngularContext(compiler.getCurrentProgram(), fileName, position)) { return undefined; } - return new DefinitionBuilder(this.tsLS, compiler) + return new DefinitionBuilder(this.tsLS, compiler, this.programDriver) .getDefinitionAndBoundSpan(fileName, position); }); } @@ -123,10 +126,10 @@ export class LanguageService { getTypeDefinitionAtPosition(fileName: string, position: number): readonly ts.DefinitionInfo[]|undefined { return this.withCompilerAndPerfTracing(PerfPhase.LsDefinition, (compiler) => { - if (!isTemplateContext(compiler.getNextProgram(), fileName, position)) { + if (!isTemplateContext(compiler.getCurrentProgram(), fileName, position)) { return undefined; } - return new DefinitionBuilder(this.tsLS, compiler) + return new DefinitionBuilder(this.tsLS, compiler, this.programDriver) .getTypeDefinitionsAtPosition(fileName, position); }); } @@ -142,7 +145,7 @@ export class LanguageService { position: number, compiler: NgCompiler, ): ts.QuickInfo|undefined { - if (!isTemplateContext(compiler.getNextProgram(), fileName, position)) { + if (!isTemplateContext(compiler.getCurrentProgram(), fileName, position)) { return undefined; } @@ -166,14 +169,15 @@ export class LanguageService { getReferencesAtPosition(fileName: string, position: number): ts.ReferenceEntry[]|undefined { return this.withCompilerAndPerfTracing(PerfPhase.LsReferencesAndRenames, (compiler) => { - return new ReferencesAndRenameBuilder(this.strategy, this.tsLS, compiler) - .getReferencesAtPosition(fileName, position); + const results = new ReferencesBuilder(this.programDriver, this.tsLS, compiler) + .getReferencesAtPosition(fileName, position); + return results === undefined ? undefined : getUniqueLocations(results); }); } getRenameInfo(fileName: string, position: number): ts.RenameInfo { return this.withCompilerAndPerfTracing(PerfPhase.LsReferencesAndRenames, (compiler) => { - const renameInfo = new ReferencesAndRenameBuilder(this.strategy, this.tsLS, compiler) + const renameInfo = new RenameBuilder(this.programDriver, this.tsLS, compiler) .getRenameInfo(absoluteFrom(fileName), position); if (!renameInfo.canRename) { return renameInfo; @@ -189,8 +193,9 @@ export class LanguageService { findRenameLocations(fileName: string, position: number): readonly ts.RenameLocation[]|undefined { return this.withCompilerAndPerfTracing(PerfPhase.LsReferencesAndRenames, (compiler) => { - return new ReferencesAndRenameBuilder(this.strategy, this.tsLS, compiler) - .findRenameLocations(fileName, position); + const results = new RenameBuilder(this.programDriver, this.tsLS, compiler) + .findRenameLocations(fileName, position); + return results === null ? undefined : getUniqueLocations(results); }); } @@ -225,7 +230,7 @@ export class LanguageService { private getCompletionsAtPositionImpl( fileName: string, position: number, options: ts.GetCompletionsAtPositionOptions|undefined, compiler: NgCompiler): ts.WithMetadata|undefined { - if (!isTemplateContext(compiler.getNextProgram(), fileName, position)) { + if (!isTemplateContext(compiler.getCurrentProgram(), fileName, position)) { return undefined; } @@ -239,9 +244,10 @@ export class LanguageService { getCompletionEntryDetails( fileName: string, position: number, entryName: string, formatOptions: ts.FormatCodeOptions|ts.FormatCodeSettings|undefined, - preferences: ts.UserPreferences|undefined): ts.CompletionEntryDetails|undefined { + preferences: ts.UserPreferences|undefined, + data: ts.CompletionEntryData|undefined): ts.CompletionEntryDetails|undefined { return this.withCompilerAndPerfTracing(PerfPhase.LsCompletions, (compiler) => { - if (!isTemplateContext(compiler.getNextProgram(), fileName, position)) { + if (!isTemplateContext(compiler.getCurrentProgram(), fileName, position)) { return undefined; } @@ -249,14 +255,27 @@ export class LanguageService { if (builder === null) { return undefined; } - return builder.getCompletionEntryDetails(entryName, formatOptions, preferences); + return builder.getCompletionEntryDetails(entryName, formatOptions, preferences, data); + }); + } + + getSignatureHelpItems(fileName: string, position: number, options?: ts.SignatureHelpItemsOptions): + ts.SignatureHelpItems|undefined { + return this.withCompilerAndPerfTracing(PerfPhase.LsSignatureHelp, compiler => { + if (!isTemplateContext(compiler.getCurrentProgram(), fileName, position)) { + return undefined; + } + + return getSignatureHelp(compiler, this.tsLS, fileName, position, options); + + return undefined; }); } getCompletionEntrySymbol(fileName: string, position: number, entryName: string): ts.Symbol |undefined { return this.withCompilerAndPerfTracing(PerfPhase.LsCompletions, (compiler) => { - if (!isTemplateContext(compiler.getNextProgram(), fileName, position)) { + if (!isTemplateContext(compiler.getCurrentProgram(), fileName, position)) { return undefined; } @@ -265,7 +284,6 @@ export class LanguageService { return undefined; } const result = builder.getCompletionEntrySymbol(entryName); - this.compilerFactory.registerLastKnownProgram(); return result; }); } @@ -359,8 +377,6 @@ export class LanguageService { private withCompilerAndPerfTracing(phase: PerfPhase, p: (compiler: NgCompiler) => T): T { const compiler = this.compilerFactory.getOrCreate(); const result = compiler.perfRecorder.inPhase(phase, () => p(compiler)); - this.compilerFactory.registerLastKnownProgram(); - const logger = this.project.projectService.logger; if (logger.hasLevel(ts.server.LogLevel.verbose)) { logger.perftrc(`LanguageService#${PerfPhase[phase]}: ${ @@ -457,13 +473,9 @@ function parseNgCompilerOptions( return options; } -function createTypeCheckingProgramStrategy(project: ts.server.Project): - TypeCheckingProgramStrategy { +function createProgramDriver(project: ts.server.Project): ProgramDriver { return { supportsInlineOperations: false, - shimPathForComponent(component: ts.ClassDeclaration): AbsoluteFsPath { - return TypeCheckShimGenerator.shimFor(absoluteFromSourceFile(component.getSourceFile())); - }, getProgram(): ts.Program { const program = project.getLanguageService().getProgram(); if (!program) { @@ -471,14 +483,17 @@ function createTypeCheckingProgramStrategy(project: ts.server.Project): } return program; }, - updateFiles(contents: Map) { - for (const [fileName, newText] of contents) { + updateFiles(contents: Map) { + for (const [fileName, {newText}] of contents) { const scriptInfo = getOrCreateTypeCheckScriptInfo(project, fileName); const snapshot = scriptInfo.getSnapshot(); const length = snapshot.getLength(); scriptInfo.editContent(0, length, newText); } }, + getSourceFileVersion(sf: ts.SourceFile): string { + return project.getScriptVersion(sf.fileName); + } }; } @@ -553,3 +568,11 @@ function findTightestNodeAtPosition(program: ts.Program, fileName: string, posit return findTightestNode(sourceFile, position); } + +function getUniqueLocations(locations: readonly T[]): T[] { + const uniqueLocations: Map = new Map(); + for (const location of locations) { + uniqueLocations.set(createLocationKey(location), location); + } + return Array.from(uniqueLocations.values()); +} diff --git a/packages/language-service/ivy/quick_info.ts b/packages/language-service/ivy/quick_info.ts index fb40c07dcb..b35820cacf 100644 --- a/packages/language-service/ivy/quick_info.ts +++ b/packages/language-service/ivy/quick_info.ts @@ -14,7 +14,7 @@ import {createDisplayParts, DisplayInfoKind, SYMBOL_PUNC, SYMBOL_SPACE, SYMBOL_T import {filterAliasImports, getDirectiveMatchesForAttribute, getDirectiveMatchesForElementTag, getTextSpanOfNode} from './utils'; export class QuickInfoBuilder { - private readonly typeChecker = this.compiler.getNextProgram().getTypeChecker(); + private readonly typeChecker = this.compiler.getCurrentProgram().getTypeChecker(); constructor( private readonly tsLS: ts.LanguageService, private readonly compiler: NgCompiler, diff --git a/packages/language-service/ivy/references_and_rename.ts b/packages/language-service/ivy/references_and_rename.ts new file mode 100644 index 0000000000..eb024a0553 --- /dev/null +++ b/packages/language-service/ivy/references_and_rename.ts @@ -0,0 +1,416 @@ +/** + * @license + * 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 + */ +import {AST, TmplAstNode} from '@angular/compiler'; +import {NgCompiler} from '@angular/compiler-cli/src/ngtsc/core'; +import {absoluteFrom} from '@angular/compiler-cli/src/ngtsc/file_system'; +import {MetaType, PipeMeta} from '@angular/compiler-cli/src/ngtsc/metadata'; +import {PerfPhase} from '@angular/compiler-cli/src/ngtsc/perf'; +import {ProgramDriver} from '@angular/compiler-cli/src/ngtsc/program_driver'; +import {SymbolKind} from '@angular/compiler-cli/src/ngtsc/typecheck/api'; +import * as ts from 'typescript'; + +import {convertToTemplateDocumentSpan, createLocationKey, FilePosition, getParentClassMeta, getRenameTextAndSpanAtPosition, getTargetDetailsAtTemplatePosition, TemplateLocationDetails} from './references_and_rename_utils'; +import {collectMemberMethods, findTightestNode} from './ts_utils'; +import {getTemplateInfoAtPosition, TemplateInfo} from './utils'; + +export class ReferencesBuilder { + private readonly ttc = this.compiler.getTemplateTypeChecker(); + + constructor( + private readonly driver: ProgramDriver, private readonly tsLS: ts.LanguageService, + private readonly compiler: NgCompiler) {} + + getReferencesAtPosition(filePath: string, position: number): ts.ReferenceEntry[]|undefined { + this.ttc.generateAllTypeCheckBlocks(); + const templateInfo = getTemplateInfoAtPosition(filePath, position, this.compiler); + if (templateInfo === undefined) { + return this.getReferencesAtTypescriptPosition(filePath, position); + } + return this.getReferencesAtTemplatePosition(templateInfo, position); + } + + private getReferencesAtTemplatePosition(templateInfo: TemplateInfo, position: number): + ts.ReferenceEntry[]|undefined { + const allTargetDetails = getTargetDetailsAtTemplatePosition(templateInfo, position, this.ttc); + if (allTargetDetails === null) { + return undefined; + } + const allReferences: ts.ReferenceEntry[] = []; + for (const targetDetails of allTargetDetails) { + for (const location of targetDetails.typescriptLocations) { + const refs = this.getReferencesAtTypescriptPosition(location.fileName, location.position); + if (refs !== undefined) { + allReferences.push(...refs); + } + } + } + return allReferences.length > 0 ? allReferences : undefined; + } + + private getReferencesAtTypescriptPosition(fileName: string, position: number): + ts.ReferenceEntry[]|undefined { + const refs = this.tsLS.getReferencesAtPosition(fileName, position); + if (refs === undefined) { + return undefined; + } + + const entries: ts.ReferenceEntry[] = []; + for (const ref of refs) { + if (this.ttc.isTrackedTypeCheckFile(absoluteFrom(ref.fileName))) { + const entry = convertToTemplateDocumentSpan(ref, this.ttc, this.driver.getProgram()); + if (entry !== null) { + entries.push(entry); + } + } else { + entries.push(ref); + } + } + return entries; + } +} + +enum RequestKind { + DirectFromTemplate, + DirectFromTypeScript, + PipeName, + Selector, +} + +/** The context needed to perform a rename of a pipe name. */ +interface PipeRenameContext { + type: RequestKind.PipeName; + + /** The string literal for the pipe name that appears in the @Pipe meta */ + pipeNameExpr: ts.StringLiteral; + + /** + * The location to use for querying the native TS LS for rename positions. This will be the + * pipe's transform method. + */ + renamePosition: FilePosition; +} + +/** The context needed to perform a rename of a directive/component selector. */ +interface SelectorRenameContext { + type: RequestKind.Selector; + + /** The string literal that appears in the directive/component metadata. */ + selectorExpr: ts.StringLiteral; + + /** + * The location to use for querying the native TS LS for rename positions. This will be the + * component/directive class itself. Doing so will allow us to find the location of the + * directive/component instantiations, which map to template elements. + */ + renamePosition: FilePosition; +} + +interface DirectFromTypescriptRenameContext { + type: RequestKind.DirectFromTypeScript; + + /** The node that is being renamed. */ + requestNode: ts.Node; +} + +interface DirectFromTemplateRenameContext { + type: RequestKind.DirectFromTemplate; + + /** The position in the TCB file to use as the request to the native TSLS for renaming. */ + renamePosition: FilePosition; + + /** The position in the template the request originated from. */ + templatePosition: number; + + /** The target node in the template AST that corresponds to the template position. */ + requestNode: AST|TmplAstNode; +} + +type IndirectRenameContext = PipeRenameContext|SelectorRenameContext; +type RenameRequest = + IndirectRenameContext|DirectFromTemplateRenameContext|DirectFromTypescriptRenameContext; + +function isDirectRenameContext(context: RenameRequest): context is DirectFromTemplateRenameContext| + DirectFromTypescriptRenameContext { + return context.type === RequestKind.DirectFromTemplate || + context.type === RequestKind.DirectFromTypeScript; +} + +export class RenameBuilder { + private readonly ttc = this.compiler.getTemplateTypeChecker(); + + constructor( + private readonly driver: ProgramDriver, private readonly tsLS: ts.LanguageService, + private readonly compiler: NgCompiler) {} + + getRenameInfo(filePath: string, position: number): + Omit|ts.RenameInfoFailure { + return this.compiler.perfRecorder.inPhase(PerfPhase.LsReferencesAndRenames, () => { + const templateInfo = getTemplateInfoAtPosition(filePath, position, this.compiler); + // We could not get a template at position so we assume the request came from outside the + // template. + if (templateInfo === undefined) { + const renameRequest = this.buildRenameRequestAtTypescriptPosition(filePath, position); + if (renameRequest === null) { + return { + canRename: false, + localizedErrorMessage: 'Could not determine rename info at typescript position.', + }; + } + if (renameRequest.type === RequestKind.PipeName) { + const pipeName = renameRequest.pipeNameExpr.text; + return { + canRename: true, + displayName: pipeName, + fullDisplayName: pipeName, + triggerSpan: { + length: pipeName.length, + // Offset the pipe name by 1 to account for start of string '/`/" + start: renameRequest.pipeNameExpr.getStart() + 1, + }, + }; + } else { + // TODO(atscott): Add support for other special indirect renames from typescript files. + return this.tsLS.getRenameInfo(filePath, position); + } + } + + const allTargetDetails = getTargetDetailsAtTemplatePosition(templateInfo, position, this.ttc); + if (allTargetDetails === null) { + return { + canRename: false, + localizedErrorMessage: 'Could not find template node at position.' + }; + } + const {templateTarget} = allTargetDetails[0]; + const templateTextAndSpan = getRenameTextAndSpanAtPosition( + templateTarget, + position, + ); + if (templateTextAndSpan === null) { + return {canRename: false, localizedErrorMessage: 'Could not determine template node text.'}; + } + const {text, span} = templateTextAndSpan; + return { + canRename: true, + displayName: text, + fullDisplayName: text, + triggerSpan: span, + }; + }); + } + + findRenameLocations(filePath: string, position: number): readonly ts.RenameLocation[]|null { + this.ttc.generateAllTypeCheckBlocks(); + return this.compiler.perfRecorder.inPhase(PerfPhase.LsReferencesAndRenames, () => { + const templateInfo = getTemplateInfoAtPosition(filePath, position, this.compiler); + // We could not get a template at position so we assume the request came from outside the + // template. + if (templateInfo === undefined) { + const renameRequest = this.buildRenameRequestAtTypescriptPosition(filePath, position); + if (renameRequest === null) { + return null; + } + return this.findRenameLocationsAtTypescriptPosition(renameRequest); + } + return this.findRenameLocationsAtTemplatePosition(templateInfo, position); + }); + } + + private findRenameLocationsAtTemplatePosition(templateInfo: TemplateInfo, position: number): + readonly ts.RenameLocation[]|null { + const allTargetDetails = getTargetDetailsAtTemplatePosition(templateInfo, position, this.ttc); + if (allTargetDetails === null) { + return null; + } + const renameRequests = this.buildRenameRequestsFromTemplateDetails(allTargetDetails, position); + if (renameRequests === null) { + return null; + } + + const allRenameLocations: ts.RenameLocation[] = []; + for (const renameRequest of renameRequests) { + const locations = this.findRenameLocationsAtTypescriptPosition(renameRequest); + // If we couldn't find rename locations for _any_ result, we should not allow renaming to + // proceed instead of having a partially complete rename. + if (locations === null) { + return null; + } + allRenameLocations.push(...locations); + } + return allRenameLocations.length > 0 ? allRenameLocations : null; + } + + findRenameLocationsAtTypescriptPosition(renameRequest: RenameRequest): + readonly ts.RenameLocation[]|null { + return this.compiler.perfRecorder.inPhase(PerfPhase.LsReferencesAndRenames, () => { + const renameInfo = getExpectedRenameTextAndInitalRenameEntries(renameRequest); + if (renameInfo === null) { + return null; + } + const {entries, expectedRenameText} = renameInfo; + const {fileName, position} = getRenameRequestPosition(renameRequest); + const findInStrings = false; + const findInComments = false; + const locations = + this.tsLS.findRenameLocations(fileName, position, findInStrings, findInComments); + if (locations === undefined) { + return null; + } + + for (const location of locations) { + if (this.ttc.isTrackedTypeCheckFile(absoluteFrom(location.fileName))) { + const entry = convertToTemplateDocumentSpan( + location, this.ttc, this.driver.getProgram(), expectedRenameText); + // There is no template node whose text matches the original rename request. Bail on + // renaming completely rather than providing incomplete results. + if (entry === null) { + return null; + } + entries.push(entry); + } else { + if (!isDirectRenameContext(renameRequest)) { + // Discard any non-template results for non-direct renames. We should only rename + // template results + the name/selector/alias `ts.Expression`. The other results + // will be the the `ts.Identifier` of the transform method (pipe rename) or the + // directive class (selector rename). + continue; + } + // Ensure we only allow renaming a TS result with matching text + const refNode = this.getTsNodeAtPosition(location.fileName, location.textSpan.start); + if (refNode === null || refNode.getText() !== expectedRenameText) { + return null; + } + entries.push(location); + } + } + return entries; + }); + } + + private getTsNodeAtPosition(filePath: string, position: number): ts.Node|null { + const sf = this.driver.getProgram().getSourceFile(filePath); + if (!sf) { + return null; + } + return findTightestNode(sf, position) ?? null; + } + + private buildRenameRequestsFromTemplateDetails( + allTargetDetails: TemplateLocationDetails[], templatePosition: number): RenameRequest[]|null { + const renameRequests: RenameRequest[] = []; + for (const targetDetails of allTargetDetails) { + for (const location of targetDetails.typescriptLocations) { + if (targetDetails.symbol.kind === SymbolKind.Pipe) { + const meta = + this.compiler.getMeta(targetDetails.symbol.classSymbol.tsSymbol.valueDeclaration); + if (meta === null || meta.type !== MetaType.Pipe) { + return null; + } + const renameRequest = this.buildPipeRenameRequest(meta); + if (renameRequest === null) { + return null; + } + renameRequests.push(renameRequest); + } else { + const renameRequest: RenameRequest = { + type: RequestKind.DirectFromTemplate, + templatePosition, + requestNode: targetDetails.templateTarget, + renamePosition: location + }; + renameRequests.push(renameRequest); + } + } + } + return renameRequests; + } + + private buildRenameRequestAtTypescriptPosition(filePath: string, position: number): RenameRequest + |null { + const requestNode = this.getTsNodeAtPosition(filePath, position); + if (requestNode === null) { + return null; + } + const meta = getParentClassMeta(requestNode, this.compiler); + if (meta !== null && meta.type === MetaType.Pipe && meta.nameExpr === requestNode) { + return this.buildPipeRenameRequest(meta); + } else { + return {type: RequestKind.DirectFromTypeScript, requestNode}; + } + } + + private buildPipeRenameRequest(meta: PipeMeta): PipeRenameContext|null { + if (!ts.isClassDeclaration(meta.ref.node) || meta.nameExpr === null || + !ts.isStringLiteral(meta.nameExpr)) { + return null; + } + const typeChecker = this.driver.getProgram().getTypeChecker(); + const memberMethods = collectMemberMethods(meta.ref.node, typeChecker) ?? []; + const pipeTransformNode: ts.MethodDeclaration|undefined = + memberMethods.find(m => m.name.getText() === 'transform'); + if (pipeTransformNode === undefined) { + return null; + } + return { + type: RequestKind.PipeName, + pipeNameExpr: meta.nameExpr, + renamePosition: { + fileName: pipeTransformNode.getSourceFile().fileName, + position: pipeTransformNode.getStart(), + } + }; + } +} + +/** + * From the provided `RenameRequest`, determines what text we should expect all produced + * `ts.RenameLocation`s to have and creates an initial entry for indirect renames (one which is + * required for the rename operation, but cannot be found by the native TS LS). + */ +function getExpectedRenameTextAndInitalRenameEntries(renameRequest: RenameRequest): + {expectedRenameText: string, entries: ts.RenameLocation[]}|null { + let expectedRenameText: string; + const entries: ts.RenameLocation[] = []; + if (renameRequest.type === RequestKind.DirectFromTypeScript) { + expectedRenameText = renameRequest.requestNode.getText(); + } else if (renameRequest.type === RequestKind.DirectFromTemplate) { + const templateNodeText = + getRenameTextAndSpanAtPosition(renameRequest.requestNode, renameRequest.templatePosition); + if (templateNodeText === null) { + return null; + } + expectedRenameText = templateNodeText.text; + } else if (renameRequest.type === RequestKind.PipeName) { + const {pipeNameExpr} = renameRequest; + expectedRenameText = pipeNameExpr.text; + const entry: ts.RenameLocation = { + fileName: renameRequest.pipeNameExpr.getSourceFile().fileName, + textSpan: {start: pipeNameExpr.getStart() + 1, length: pipeNameExpr.getText().length - 2}, + }; + entries.push(entry); + } else { + // TODO(atscott): Implement other types of special renames + return null; + } + + return {entries, expectedRenameText}; +} + +/** + * Given a `RenameRequest`, determines the `FilePosition` to use asking the native TS LS for rename + * locations. + */ +function getRenameRequestPosition(renameRequest: RenameRequest): FilePosition { + const fileName = renameRequest.type === RequestKind.DirectFromTypeScript ? + renameRequest.requestNode.getSourceFile().fileName : + renameRequest.renamePosition.fileName; + const position = renameRequest.type === RequestKind.DirectFromTypeScript ? + renameRequest.requestNode.getStart() : + renameRequest.renamePosition.position; + return {fileName, position}; +} diff --git a/packages/language-service/ivy/references_and_rename_utils.ts b/packages/language-service/ivy/references_and_rename_utils.ts new file mode 100644 index 0000000000..9f1df82d14 --- /dev/null +++ b/packages/language-service/ivy/references_and_rename_utils.ts @@ -0,0 +1,297 @@ +/** + * @license + * 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 + */ +import {AST, BindingPipe, LiteralPrimitive, MethodCall, PropertyRead, PropertyWrite, SafeMethodCall, SafePropertyRead, TmplAstBoundAttribute, TmplAstBoundEvent, TmplAstNode, TmplAstReference, TmplAstTextAttribute, TmplAstVariable} from '@angular/compiler'; +import {NgCompiler} from '@angular/compiler-cli/src/ngtsc/core'; +import {absoluteFrom} from '@angular/compiler-cli/src/ngtsc/file_system'; +import {DirectiveMeta, PipeMeta} from '@angular/compiler-cli/src/ngtsc/metadata'; +import {DirectiveSymbol, ShimLocation, Symbol, SymbolKind, TemplateTypeChecker} from '@angular/compiler-cli/src/ngtsc/typecheck/api'; +import {ExpressionIdentifier, hasExpressionIdentifier} from '@angular/compiler-cli/src/ngtsc/typecheck/src/comments'; +import * as ts from 'typescript'; + +import {getTargetAtPosition, TargetNodeKind} from './template_target'; +import {findTightestNode, getParentClassDeclaration} from './ts_utils'; +import {getDirectiveMatchesForAttribute, getDirectiveMatchesForElementTag, getTemplateLocationFromShimLocation, isWithin, TemplateInfo, toTextSpan} from './utils'; + +/** Represents a location in a file. */ +export interface FilePosition { + fileName: string; + position: number; +} + +/** + * Converts a `ShimLocation` to a more genericly named `FilePosition`. + */ +function toFilePosition(shimLocation: ShimLocation): FilePosition { + return {fileName: shimLocation.shimPath, position: shimLocation.positionInShimFile}; +} +export interface TemplateLocationDetails { + /** + * A target node in a template. + */ + templateTarget: TmplAstNode|AST; + + /** + * TypeScript locations which the template node maps to. A given template node might map to + * several TS nodes. For example, a template node for an attribute might resolve to several + * directives or a directive and one of its inputs. + */ + typescriptLocations: FilePosition[]; + + /** + * The resolved Symbol for the template target. + */ + symbol: Symbol; +} + + +/** + * Takes a position in a template and finds equivalent targets in TS files as well as details about + * the targeted template node. + */ +export function getTargetDetailsAtTemplatePosition( + {template, component}: TemplateInfo, position: number, + templateTypeChecker: TemplateTypeChecker): TemplateLocationDetails[]|null { + // Find the AST node in the template at the position. + const positionDetails = getTargetAtPosition(template, position); + if (positionDetails === null) { + return null; + } + + const nodes = positionDetails.context.kind === TargetNodeKind.TwoWayBindingContext ? + positionDetails.context.nodes : + [positionDetails.context.node]; + + const details: TemplateLocationDetails[] = []; + + for (const node of nodes) { + // Get the information about the TCB at the template position. + const symbol = templateTypeChecker.getSymbolOfNode(node, component); + if (symbol === null) { + continue; + } + + const templateTarget = node; + switch (symbol.kind) { + case SymbolKind.Directive: + case SymbolKind.Template: + // References to elements, templates, and directives will be through template references + // (#ref). They shouldn't be used directly for a Language Service reference request. + break; + case SymbolKind.Element: { + const matches = getDirectiveMatchesForElementTag(symbol.templateNode, symbol.directives); + details.push({ + typescriptLocations: getPositionsForDirectives(matches), + templateTarget, + symbol, + }); + break; + } + case SymbolKind.DomBinding: { + // Dom bindings aren't currently type-checked (see `checkTypeOfDomBindings`) so they don't + // have a shim location. This means we can't match dom bindings to their lib.dom + // reference, but we can still see if they match to a directive. + if (!(node instanceof TmplAstTextAttribute) && !(node instanceof TmplAstBoundAttribute)) { + return null; + } + const directives = getDirectiveMatchesForAttribute( + node.name, symbol.host.templateNode, symbol.host.directives); + details.push({ + typescriptLocations: getPositionsForDirectives(directives), + templateTarget, + symbol, + }); + break; + } + case SymbolKind.Reference: { + details.push({ + typescriptLocations: [toFilePosition(symbol.referenceVarLocation)], + templateTarget, + symbol, + }); + break; + } + case SymbolKind.Variable: { + if ((templateTarget instanceof TmplAstVariable)) { + if (templateTarget.valueSpan !== undefined && + isWithin(position, templateTarget.valueSpan)) { + // In the valueSpan of the variable, we want to get the reference of the initializer. + details.push({ + typescriptLocations: [toFilePosition(symbol.initializerLocation)], + templateTarget, + symbol, + }); + } else if (isWithin(position, templateTarget.keySpan)) { + // In the keySpan of the variable, we want to get the reference of the local variable. + details.push({ + typescriptLocations: [toFilePosition(symbol.localVarLocation)], + templateTarget, + symbol, + }); + } + } else { + // If the templateNode is not the `TmplAstVariable`, it must be a usage of the + // variable somewhere in the template. + details.push({ + typescriptLocations: [toFilePosition(symbol.localVarLocation)], + templateTarget, + symbol, + }); + } + break; + } + case SymbolKind.Input: + case SymbolKind.Output: { + details.push({ + typescriptLocations: symbol.bindings.map(binding => toFilePosition(binding.shimLocation)), + templateTarget, + symbol, + }); + break; + } + case SymbolKind.Pipe: + case SymbolKind.Expression: { + details.push({ + typescriptLocations: [toFilePosition(symbol.shimLocation)], + templateTarget, + symbol, + }); + break; + } + } + } + + return details.length > 0 ? details : null; +} + +/** + * Given a set of `DirectiveSymbol`s, finds the equivalent `FilePosition` of the class declaration. + */ +function getPositionsForDirectives(directives: Set): FilePosition[] { + const allDirectives: FilePosition[] = []; + for (const dir of directives.values()) { + const dirClass = dir.tsSymbol.valueDeclaration; + if (dirClass === undefined || !ts.isClassDeclaration(dirClass) || dirClass.name === undefined) { + continue; + } + + const {fileName} = dirClass.getSourceFile(); + const position = dirClass.name.getStart(); + allDirectives.push({fileName, position}); + } + + return allDirectives; +} + +/** + * Creates a "key" for a rename/reference location by concatenating file name, span start, and span + * length. This allows us to de-duplicate template results when an item may appear several times + * in the TCB but map back to the same template location. + */ +export function createLocationKey(ds: ts.DocumentSpan) { + return ds.fileName + ds.textSpan.start + ds.textSpan.length; +} + +/** + * Converts a given `ts.DocumentSpan` in a shim file to its equivalent `ts.DocumentSpan` in the + * template. + * + * You can optionally provide a `requiredNodeText` that ensures the equivalent template node's text + * matches. If it does not, this function will return `null`. + */ +export function convertToTemplateDocumentSpan( + shimDocumentSpan: T, templateTypeChecker: TemplateTypeChecker, program: ts.Program, + requiredNodeText?: string): T|null { + const sf = program.getSourceFile(shimDocumentSpan.fileName); + if (sf === undefined) { + return null; + } + const tcbNode = findTightestNode(sf, shimDocumentSpan.textSpan.start); + if (tcbNode === undefined || + hasExpressionIdentifier(sf, tcbNode, ExpressionIdentifier.EVENT_PARAMETER)) { + // If the reference result is the $event parameter in the subscribe/addEventListener + // function in the TCB, we want to filter this result out of the references. We really only + // want to return references to the parameter in the template itself. + return null; + } + // TODO(atscott): Determine how to consistently resolve paths. i.e. with the project + // serverHost or LSParseConfigHost in the adapter. We should have a better defined way to + // normalize paths. + const mapping = getTemplateLocationFromShimLocation( + templateTypeChecker, absoluteFrom(shimDocumentSpan.fileName), + shimDocumentSpan.textSpan.start); + if (mapping === null) { + return null; + } + + const {span, templateUrl} = mapping; + if (requiredNodeText !== undefined && span.toString() !== requiredNodeText) { + return null; + } + + return { + ...shimDocumentSpan, + fileName: templateUrl, + textSpan: toTextSpan(span), + // Specifically clear other text span values because we do not have enough knowledge to + // convert these to spans in the template. + contextSpan: undefined, + originalContextSpan: undefined, + originalTextSpan: undefined, + }; +} + +/** + * Finds the text and `ts.TextSpan` for the node at a position in a template. + */ +export function getRenameTextAndSpanAtPosition( + node: TmplAstNode|AST, position: number): {text: string, span: ts.TextSpan}|null { + if (node instanceof TmplAstBoundAttribute || node instanceof TmplAstTextAttribute || + node instanceof TmplAstBoundEvent) { + if (node.keySpan === undefined) { + return null; + } + return {text: node.name, span: toTextSpan(node.keySpan)}; + } else if (node instanceof TmplAstVariable || node instanceof TmplAstReference) { + if (isWithin(position, node.keySpan)) { + return {text: node.keySpan.toString(), span: toTextSpan(node.keySpan)}; + } else if (node.valueSpan && isWithin(position, node.valueSpan)) { + return {text: node.valueSpan.toString(), span: toTextSpan(node.valueSpan)}; + } + } + + if (node instanceof PropertyRead || node instanceof MethodCall || node instanceof PropertyWrite || + node instanceof SafePropertyRead || node instanceof SafeMethodCall || + node instanceof BindingPipe) { + return {text: node.name, span: toTextSpan(node.nameSpan)}; + } else if (node instanceof LiteralPrimitive) { + const span = toTextSpan(node.sourceSpan); + const text = node.value; + if (typeof text === 'string') { + // The span of a string literal includes the quotes but they should be removed for renaming. + span.start += 1; + span.length -= 2; + } + return {text, span}; + } + + return null; +} + +/** + * Retrives the `PipeMeta` or `DirectiveMeta` of the given `ts.Node`'s parent class. + * + * Returns `null` if the node has no parent class or there is no meta associated with the class. + */ +export function getParentClassMeta(requestNode: ts.Node, compiler: NgCompiler): PipeMeta| + DirectiveMeta|null { + const parentClass = getParentClassDeclaration(requestNode); + if (parentClass === undefined) { + return null; + } + return compiler.getMeta(parentClass); +} diff --git a/packages/language-service/ivy/signature_help.ts b/packages/language-service/ivy/signature_help.ts new file mode 100644 index 0000000000..a294163d1f --- /dev/null +++ b/packages/language-service/ivy/signature_help.ts @@ -0,0 +1,135 @@ +/** + * @license + * 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 + */ + +import {MethodCall, SafeMethodCall} from '@angular/compiler'; +import {NgCompiler} from '@angular/compiler-cli/src/ngtsc/core'; +import {getSourceFileOrError} from '@angular/compiler-cli/src/ngtsc/file_system'; +import {SymbolKind} from '@angular/compiler-cli/src/ngtsc/typecheck/api'; +import * as ts from 'typescript/lib/tsserverlibrary'; + +import {getTargetAtPosition, TargetNodeKind} from './template_target'; +import {findTightestNode} from './ts_utils'; +import {getTemplateInfoAtPosition} from './utils'; + +/** + * Queries the TypeScript Language Service to get signature help for a template position. + */ +export function getSignatureHelp( + compiler: NgCompiler, tsLS: ts.LanguageService, fileName: string, position: number, + options: ts.SignatureHelpItemsOptions|undefined): ts.SignatureHelpItems|undefined { + const templateInfo = getTemplateInfoAtPosition(fileName, position, compiler); + if (templateInfo === undefined) { + return undefined; + } + + const targetInfo = getTargetAtPosition(templateInfo.template, position); + if (targetInfo === null) { + return undefined; + } + + if (targetInfo.context.kind !== TargetNodeKind.RawExpression && + targetInfo.context.kind !== TargetNodeKind.MethodCallExpressionInArgContext) { + // Signature completions are only available in expressions. + return undefined; + } + + const symbol = compiler.getTemplateTypeChecker().getSymbolOfNode( + targetInfo.context.node, templateInfo.component); + if (symbol === null || symbol.kind !== SymbolKind.Expression) { + return undefined; + } + + // Determine a shim position to use in the request to the TypeScript Language Service. + // Additionally, extract the `MethodCall` or `SafeMethodCall` node for which signature help is + // being queried, as this is needed to construct the correct span for the results later. + let shimPosition: number; + let expr: MethodCall|SafeMethodCall; + switch (targetInfo.context.kind) { + case TargetNodeKind.RawExpression: + // For normal expressions, just use the primary TCB position of the expression. + shimPosition = symbol.shimLocation.positionInShimFile; + + // Walk up the parents of this expression and try to find a `MethodCall` or `SafeMethodCall` + // for which signature information is being fetched. + let callExpr: MethodCall|SafeMethodCall|null = null; + const parents = targetInfo.context.parents; + for (let i = parents.length - 1; i >= 0; i--) { + const parent = parents[i]; + if (parent instanceof MethodCall || parent instanceof SafeMethodCall) { + callExpr = parent; + break; + } + } + + // If no MethodCall or SafeMethodCall node could be found, then this query cannot be safely + // answered as a correct span for the results will not be obtainable. + if (callExpr === null) { + return undefined; + } + + expr = callExpr; + break; + case TargetNodeKind.MethodCallExpressionInArgContext: + // The `Symbol` points to a `MethodCall` or `SafeMethodCall` expression in the TCB (where it + // will be represented as a `ts.CallExpression`) *and* the template position was within the + // argument list of the method call. This happens when there was no narrower expression inside + // the argument list that matched the template position, such as when the call has no + // arguments: `foo(|)`. + // + // The `Symbol`'s shim position is to the start of the call expression (`|foo()`) and + // therefore wouldn't return accurate signature help from the TS language service. For that, a + // position within the argument list for the `ts.CallExpression` in the TCB will need to be + // determined. This is done by finding that call expression and extracting a viable position + // from it directly. + // + // First, use `findTightestNode` to locate the `ts.Node` at `symbol`'s location. + const shimSf = + getSourceFileOrError(compiler.getCurrentProgram(), symbol.shimLocation.shimPath); + let shimNode: ts.Node|null = + findTightestNode(shimSf, symbol.shimLocation.positionInShimFile) ?? null; + + // This node should be somewhere inside a `ts.CallExpression`. Walk up the AST to find it. + while (shimNode !== null) { + if (ts.isCallExpression(shimNode)) { + break; + } + shimNode = shimNode.parent ?? null; + } + + // If one couldn't be found, something is wrong, so bail rather than report incorrect results. + if (shimNode === null || !ts.isCallExpression(shimNode)) { + return undefined; + } + + // Position the cursor in the TCB at the start of the argument list for the + // `ts.CallExpression`. This will allow us to get the correct signature help, even though the + // template itself doesn't have an expression inside the argument list. + shimPosition = shimNode.arguments.pos; + + // In this case, getting the right call AST node is easy. + expr = targetInfo.context.node; + break; + } + + const res = tsLS.getSignatureHelpItems(symbol.shimLocation.shimPath, shimPosition, options); + if (res === undefined) { + return undefined; + } + + // The TS language service results are almost returnable as-is. However, they contain an + // `applicableSpan` which marks the entire argument list, and that span is in the context of the + // TCB's `ts.CallExpression`. It needs to be replaced with the span for the `MethodCall` (or + // `SafeMethodCall`) argument list. + return { + ...res, + applicableSpan: { + start: expr.argumentSpan.start, + length: expr.argumentSpan.end - expr.argumentSpan.start, + }, + }; +} diff --git a/packages/language-service/ivy/template_target.ts b/packages/language-service/ivy/template_target.ts index 09650a2df3..eccc3b3f07 100644 --- a/packages/language-service/ivy/template_target.ts +++ b/packages/language-service/ivy/template_target.ts @@ -49,8 +49,8 @@ export interface TemplateTarget { export type TargetContext = SingleNodeTarget|MultiNodeTarget; /** Contexts which logically target only a single node in the template AST. */ -export type SingleNodeTarget = RawExpression|RawTemplateNode|ElementInBodyContext| - ElementInTagContext|AttributeInKeyContext|AttributeInValueContext; +export type SingleNodeTarget = RawExpression|MethodCallExpressionInArgContext|RawTemplateNode| + ElementInBodyContext|ElementInTagContext|AttributeInKeyContext|AttributeInValueContext; /** * Contexts which logically target multiple nodes in the template AST, which cannot be @@ -65,6 +65,7 @@ export type MultiNodeTarget = TwoWayBindingContext; */ export enum TargetNodeKind { RawExpression, + MethodCallExpressionInArgContext, RawTemplateNode, ElementInTagContext, ElementInBodyContext, @@ -79,6 +80,21 @@ export enum TargetNodeKind { export interface RawExpression { kind: TargetNodeKind.RawExpression; node: e.AST; + parents: e.AST[]; +} + +/** + * An `e.MethodCall` or `e.SafeMethodCall` expression with the cursor in a position where an + * argument could appear. + * + * This is returned when the only matching node is the method call expression, but the cursor is + * within the method call parentheses. For example, in the expression `foo(|)` there is no argument + * expression that the cursor could be targeting, but the cursor is in a position where one could + * appear. + */ +export interface MethodCallExpressionInArgContext { + kind: TargetNodeKind.MethodCallExpressionInArgContext; + node: e.MethodCall|e.SafeMethodCall; } /** @@ -126,11 +142,22 @@ export interface TwoWayBindingContext { nodes: [t.BoundAttribute, t.BoundEvent]; } +/** + * Special marker AST that can be used when the cursor is within the `sourceSpan` but not + * the key or value span of a node with key/value spans. + */ +class OutsideKeyValueMarkerAst extends e.AST { + override visit(): null { + return null; + } +} + /** * This special marker is added to the path when the cursor is within the sourceSpan but not the key * or value span of a node with key/value spans. */ -const OUTSIDE_K_V_MARKER = new e.AST(new ParseSpan(-1, -1), new e.AbsoluteSourceSpan(-1, -1)); +const OUTSIDE_K_V_MARKER = + new OutsideKeyValueMarkerAst(new ParseSpan(-1, -1), new e.AbsoluteSourceSpan(-1, -1)); /** * Return the template AST node or expression AST node that most accurately @@ -158,10 +185,21 @@ export function getTargetAtPosition(template: t.Node[], position: number): Templ // Given the candidate node, determine the full targeted context. let nodeInContext: TargetContext; - if (candidate instanceof e.AST) { + if ((candidate instanceof e.MethodCall || candidate instanceof e.SafeMethodCall) && + isWithin(position, candidate.argumentSpan)) { + nodeInContext = { + kind: TargetNodeKind.MethodCallExpressionInArgContext, + node: candidate, + }; + } else if (candidate instanceof e.AST) { + const parents = path.filter((value: e.AST|t.Node): value is e.AST => value instanceof e.AST); + // Remove the current node from the parents list. + parents.pop(); + nodeInContext = { kind: TargetNodeKind.RawExpression, node: candidate, + parents, }; } else if (candidate instanceof t.Element) { // Elements have two contexts: the tag context (position is within the element tag) or the @@ -259,7 +297,7 @@ class TemplateTargetVisitor implements t.Visitor { visit(node: t.Node) { const {start, end} = getSpanIncludingEndTag(node); - if (!isWithin(this.position, {start, end})) { + if (end !== null && !isWithin(this.position, {start, end})) { return; } @@ -388,7 +426,7 @@ class ExpressionVisitor extends e.RecursiveAstVisitor { super(); } - visit(node: e.AST, path: Array) { + override visit(node: e.AST, path: Array) { if (node instanceof e.ASTWithSource) { // In order to reduce noise, do not include `ASTWithSource` in the path. // For the purpose of source spans, there is no difference between @@ -414,8 +452,16 @@ function getSpanIncludingEndTag(ast: t.Node) { // the end of the closing tag. Otherwise, for situation like // where the cursor is in the closing tag // we will not be able to return any information. - if ((ast instanceof t.Element || ast instanceof t.Template) && ast.endSourceSpan) { - result.end = ast.endSourceSpan.end.offset; + if (ast instanceof t.Element || ast instanceof t.Template) { + if (ast.endSourceSpan) { + result.end = ast.endSourceSpan.end.offset; + } else if (ast.children.length > 0) { + // If the AST has children but no end source span, then it is an unclosed element with an end + // that should be the end of the last child. + result.end = getSpanIncludingEndTag(ast.children[ast.children.length - 1]).end; + } else { + // This is likely a self-closing tag with no children so the `sourceSpan.end` is correct. + } } return result; } diff --git a/packages/language-service/ivy/test/compiler_spec.ts b/packages/language-service/ivy/test/compiler_spec.ts index 33ba654ffb..02dcf23224 100644 --- a/packages/language-service/ivy/test/compiler_spec.ts +++ b/packages/language-service/ivy/test/compiler_spec.ts @@ -173,4 +173,44 @@ describe('language-service/compiler integration', () => { const ngDiagsAfter = project.getDiagnosticsForFile('mod.ts').filter(isNgSpecificDiagnostic); expect(ngDiagsAfter.length).toBe(0); }); + + it('detects source file change in between typecheck programs', () => { + const env = LanguageServiceTestEnv.setup(); + const project = env.addProject('test', { + 'module.ts': ` + import {NgModule} from '@angular/core'; + import {BarCmp} from './bar'; + + @NgModule({ + declarations: [BarCmp], + }) + export class AppModule {} + `, + 'bar.ts': ` + import {Component} from '@angular/core'; + + @Component({ + template: '{{ bar }}', + }) + export class BarCmp { + readonly bar = 'bar'; + } + `, + }); + // The opening of 'bar.ts' causes its version to change, because the internal + // representation switches from TextStorage to ScriptVersionCache. + const bar = project.openFile('bar.ts'); + // When getDiagnostics is called, NgCompiler calls ensureAllShimsForOneFile + // and caches the source file for 'bar.ts' in the input program. + // The input program has not picked up the version change because the project + // is clean (rightly so since there's no user-initiated change). + expect(project.getDiagnosticsForFile('bar.ts').length).toBe(0); + // A new program is generated due to addition of typecheck file. During + // program creation, TS language service does a sweep of all source files, + // and detects the version change. Consequently, it creates a new source + // file for 'bar.ts'. This is a violation of our assumption that a SourceFile + // will never change in between typecheck programs. + bar.moveCursorToText(`template: '{{ b¦ar }}'`); + expect(bar.getQuickInfoAtPosition()).toBeDefined(); + }); }); diff --git a/packages/language-service/ivy/test/completions_spec.ts b/packages/language-service/ivy/test/completions_spec.ts index b881a614e7..83c565119f 100644 --- a/packages/language-service/ivy/test/completions_spec.ts +++ b/packages/language-service/ivy/test/completions_spec.ts @@ -24,6 +24,18 @@ const DIR_WITH_INPUT = { ` }; +const DIR_WITH_UNION_TYPE_INPUT = { + 'Dir': ` + @Directive({ + selector: '[dir]', + inputs: ['myInput'] + }) + export class Dir { + myInput!: 'foo'|42|null|undefined + } + ` +}; + const DIR_WITH_OUTPUT = { 'Dir': ` @Directive({ @@ -104,6 +116,19 @@ const SOME_PIPE = { ` }; +const UNION_TYPE_PIPE = { + 'UnionTypePipe': ` + @Pipe({ + name: 'unionTypePipe', + }) + export class UnionTypePipe { + transform(value: string, config: 'foo' | 'bar'): string { + return value; + } + } + ` +}; + describe('completions', () => { beforeEach(() => { initMockFileSystem('Native'); @@ -203,6 +228,30 @@ describe('completions', () => { const completions = templateFile.getCompletionsAtPosition(); expectContain(completions, ts.ScriptElementKind.memberVariableElement, ['title']); }); + + it('should return completions of string literals, number literals, `true`, `false`, `null` and `undefined`', + () => { + const {templateFile} = setup(``, '', DIR_WITH_UNION_TYPE_INPUT); + templateFile.moveCursorToText('dir [myInput]="¦">'); + + const completions = templateFile.getCompletionsAtPosition(); + expectContain(completions, ts.ScriptElementKind.string, [`'foo'`, '42']); + expectContain(completions, ts.ScriptElementKind.keyword, ['null']); + expectContain(completions, ts.ScriptElementKind.variableElement, ['undefined']); + expectDoesNotContain(completions, ts.ScriptElementKind.parameterElement, ['ctx']); + }); + + it('should return completions of string literals, number literals, `true`, `false`, `null` and `undefined` when the user tries to modify the symbol', + () => { + const {templateFile} = setup(``, '', DIR_WITH_UNION_TYPE_INPUT); + templateFile.moveCursorToText('dir [myInput]="a¦">'); + + const completions = templateFile.getCompletionsAtPosition(); + expectContain(completions, ts.ScriptElementKind.string, [`'foo'`, '42']); + expectContain(completions, ts.ScriptElementKind.keyword, ['null']); + expectContain(completions, ts.ScriptElementKind.variableElement, ['undefined']); + expectDoesNotContain(completions, ts.ScriptElementKind.parameterElement, ['ctx']); + }); }); describe('in an expression scope', () => { @@ -562,6 +611,10 @@ describe('completions', () => { unsafeCastDisplayInfoKindToScriptElementKind(DisplayInfoKind.DIRECTIVE), ['ngFor']); expectReplacementText(completions, templateFile.contents, 'ng'); + const details = templateFile.getCompletionEntryDetails( + 'ngFor', /* formatOptions */ undefined, + /* preferences */ undefined)!; + expect(toText(details.displayParts)).toEqual('(directive) NgFor.NgFor: NgFor'); }); it('should return structural directive completions for just the structural marker', () => { @@ -721,6 +774,50 @@ describe('completions', () => { expect(completions?.entries.length).toBe(0); }); }); + + describe('literal primitive scope', () => { + it('should complete a string union types in square brackets binding', () => { + const {templateFile} = setup(``, '', DIR_WITH_UNION_TYPE_INPUT); + templateFile.moveCursorToText(`[myInput]="'foo¦'"`); + const completions = templateFile.getCompletionsAtPosition(); + expectContain(completions, ts.ScriptElementKind.string, ['foo']); + expectReplacementText(completions, templateFile.contents, 'foo'); + }); + + it('should complete a string union types in binding without brackets', () => { + const {templateFile} = setup(``, '', DIR_WITH_UNION_TYPE_INPUT); + templateFile.moveCursorToText('myInput="foo¦"'); + const completions = templateFile.getCompletionsAtPosition(); + expectContain(completions, ts.ScriptElementKind.string, ['foo']); + expectReplacementText(completions, templateFile.contents, 'foo'); + }); + + it('should complete a string union types in binding without brackets when the cursor at the start of the string', + () => { + const {templateFile} = setup(``, '', DIR_WITH_UNION_TYPE_INPUT); + templateFile.moveCursorToText('myInput="¦foo"'); + const completions = templateFile.getCompletionsAtPosition(); + expectContain(completions, ts.ScriptElementKind.string, ['foo']); + expectReplacementText(completions, templateFile.contents, 'foo'); + }); + + it('should complete a string union types in pipe', () => { + const {templateFile} = + setup(``, '', UNION_TYPE_PIPE); + templateFile.moveCursorToText(`[myInput]="'foo'|unionTypePipe:'bar¦'"`); + const completions = templateFile.getCompletionsAtPosition(); + expectContain(completions, ts.ScriptElementKind.string, ['bar']); + expectReplacementText(completions, templateFile.contents, 'bar'); + }); + + it('should complete a number union types', () => { + const {templateFile} = setup(``, '', DIR_WITH_UNION_TYPE_INPUT); + templateFile.moveCursorToText(`[myInput]="42¦"`); + const completions = templateFile.getCompletionsAtPosition(); + expectContain(completions, ts.ScriptElementKind.string, ['42']); + expectReplacementText(completions, templateFile.contents, '42'); + }); + }); }); function expectContain( @@ -789,7 +886,7 @@ function setup( export class AppCmp { ${classContents} } - + ${otherDirectiveClassDecls} @NgModule({ @@ -822,7 +919,7 @@ function setupInlineTemplate( export class AppCmp { ${classContents} } - + ${otherDirectiveClassDecls} @NgModule({ diff --git a/packages/language-service/ivy/test/definitions_spec.ts b/packages/language-service/ivy/test/definitions_spec.ts index db341d9ab7..145d8a3d1f 100644 --- a/packages/language-service/ivy/test/definitions_spec.ts +++ b/packages/language-service/ivy/test/definitions_spec.ts @@ -8,7 +8,7 @@ import {initMockFileSystem} from '@angular/compiler-cli/src/ngtsc/file_system/testing'; -import {assertFileNames, createModuleAndProjectWithDeclarations, humanizeDocumentSpanLike, LanguageServiceTestEnv, OpenBuffer} from '../testing'; +import {assertFileNames, assertTextSpans, createModuleAndProjectWithDeclarations, humanizeDocumentSpanLike, LanguageServiceTestEnv, OpenBuffer} from '../testing'; describe('definitions', () => { it('gets definition for template reference in overridden template', () => { @@ -35,7 +35,7 @@ describe('definitions', () => { assertFileNames(Array.from(definitions!), ['app.html']); }); - it('returns the pipe class as definition when checkTypeOfPipes is false', () => { + it('returns the pipe definitions when checkTypeOfPipes is false', () => { initMockFileSystem('Native'); const files = { 'app.ts': ` @@ -57,10 +57,9 @@ describe('definitions', () => { const {textSpan, definitions} = getDefinitionsAndAssertBoundSpan(env, template); expect(template.contents.substr(textSpan.start, textSpan.length)).toEqual('date'); - expect(definitions!.length).toEqual(1); - const [def] = definitions!; - expect(def.textSpan).toContain('DatePipe'); - expect(def.contextSpan).toContain('DatePipe'); + expect(definitions.length).toEqual(3); + assertTextSpans(definitions, ['transform']); + assertFileNames(definitions, ['index.d.ts']); }); it('gets definitions for all inputs when attribute matches more than one', () => { @@ -152,6 +151,60 @@ describe('definitions', () => { assertFileNames([def, def2], ['dir2.ts', 'dir.ts']); }); + it('should go to the pre-compiled style sheet', () => { + initMockFileSystem('Native'); + const files = { + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({ + template: '', + styleUrls: ['./style.css'], + }) + export class AppCmp {} + `, + 'style.scss': '', + }; + const env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + const appFile = project.openFile('app.ts'); + appFile.moveCursorToText(`['./styl¦e.css']`); + const {textSpan, definitions} = getDefinitionsAndAssertBoundSpan(env, appFile); + expect(appFile.contents.substr(textSpan.start, textSpan.length)).toEqual('./style.css'); + + expect(definitions.length).toEqual(1); + assertFileNames(definitions, ['style.scss']); + }); + + it('gets definition for property of variable declared in template', () => { + initMockFileSystem('Native'); + const files = { + 'app.html': ` + + {{myVar.prop.name}} + + `, + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({templateUrl: '/app.html'}) + export class AppCmp { + myVal = {name: 'Andrew'}; + } + `, + }; + const env = LanguageServiceTestEnv.setup(); + + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + const template = project.openFile('app.html'); + project.expectNoSourceDiagnostics(); + + template.moveCursorToText('{{myVar.pro¦p.name}}'); + const {definitions} = getDefinitionsAndAssertBoundSpan(env, template); + expect(definitions![0].name).toEqual('"prop"'); + assertFileNames(Array.from(definitions!), ['app.html']); + }); + function getDefinitionsAndAssertBoundSpan(env: LanguageServiceTestEnv, file: OpenBuffer) { env.expectNoSourceDiagnostics(); const definitionAndBoundSpan = file.getDefinitionAndBoundSpan(); diff --git a/packages/language-service/ivy/test/diagnostic_spec.ts b/packages/language-service/ivy/test/diagnostic_spec.ts index 3fadd8f966..3d6f249c4c 100644 --- a/packages/language-service/ivy/test/diagnostic_spec.ts +++ b/packages/language-service/ivy/test/diagnostic_spec.ts @@ -276,6 +276,26 @@ describe('getSemanticDiagnostics', () => { expect(getTextOfDiagnostic(diag)).toBe('user'); }); + it('should process a component that would otherwise require an inline TCB', () => { + const files = { + 'app.ts': ` + import {Component, NgModule} from '@angular/core'; + import {CommonModule} from '@angular/common'; + + interface PrivateInterface {} + + @Component({ + template: 'Simple template', + }) + export class MyComponent {} + ` + }; + + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + const diags = project.getDiagnosticsForFile('app.ts'); + expect(diags.length).toBe(0); + }); + it('logs perf tracing', () => { const files = { 'app.ts': ` @@ -297,6 +317,50 @@ describe('getSemanticDiagnostics', () => { .toHaveBeenCalledWith(jasmine.stringMatching( /LanguageService\#LsDiagnostics\:.*\"LsDiagnostics\":\s*\d+.*/g)); }); + + it('does not produce diagnostics when pre-compiled file is found', () => { + const files = { + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({ + template: '', + styleUrls: ['./one.css', './two/two.css', './three.css', '../test/four.css'], + }) + export class MyComponent {} + `, + 'one.scss': '', + 'two/two.sass': '', + 'three.less': '', + 'four.styl': '', + }; + + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + const diags = project.getDiagnosticsForFile('app.ts'); + expect(diags.length).toBe(0); + }); + + it('produces missing resource diagnostic for missing css', () => { + const files = { + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({ + template: '', + styleUrls: ['./missing.css'], + }) + export class MyComponent {} + `, + }; + + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + const diags = project.getDiagnosticsForFile('app.ts'); + expect(diags.length).toBe(1); + const diag = diags[0]; + expect(diag.code).toBe(ngErrorCode(ErrorCode.COMPONENT_RESOURCE_NOT_FOUND)); + expect(diag.category).toBe(ts.DiagnosticCategory.Error); + expect(getTextOfDiagnostic(diag)).toBe(`'./missing.css'`); + }); }); function getTextOfDiagnostic(diag: ts.Diagnostic): string { diff --git a/packages/language-service/ivy/test/legacy/definitions_spec.ts b/packages/language-service/ivy/test/legacy/definitions_spec.ts index f5fc2b40ce..b7d7efbd10 100644 --- a/packages/language-service/ivy/test/legacy/definitions_spec.ts +++ b/packages/language-service/ivy/test/legacy/definitions_spec.ts @@ -458,6 +458,32 @@ describe('definitions', () => { const definitionAndBoundSpan = ngLS.getDefinitionAndBoundSpan(APP_COMPONENT, position); expect(definitionAndBoundSpan).toBeUndefined(); }); + + it('should work for object literals with shorthand declarations in an action', () => { + const definitions = getDefinitionsAndAssertBoundSpan({ + templateOverride: `
`, + expectedSpanText: 'name', + }); + expect(definitions!.length).toEqual(1); + + const [def] = definitions; + expect(def.textSpan).toEqual('name'); + expect(def.fileName).toContain('/app/app.component.ts'); + expect(def.contextSpan).toContain(`name = 'Frodo';`); + }); + + it('should work for object literals with shorthand declarations in a data binding', () => { + const definitions = getDefinitionsAndAssertBoundSpan({ + templateOverride: `{{ {na¦me} }}`, + expectedSpanText: 'name', + }); + expect(definitions!.length).toEqual(1); + + const [def] = definitions; + expect(def.textSpan).toEqual('name'); + expect(def.fileName).toContain('/app/app.component.ts'); + expect(def.contextSpan).toContain(`name = 'Frodo';`); + }); }); describe('external resources', () => { diff --git a/packages/language-service/ivy/test/legacy/language_service_spec.ts b/packages/language-service/ivy/test/legacy/language_service_spec.ts index 65361603ac..8f9cc991e9 100644 --- a/packages/language-service/ivy/test/legacy/language_service_spec.ts +++ b/packages/language-service/ivy/test/legacy/language_service_spec.ts @@ -207,7 +207,7 @@ describe('language service adapter', () => { }); function getLastKnownProgram(ngLS: LanguageService): ts.Program { - const program = ngLS['compilerFactory']['lastKnownProgram']; + const program = ngLS['compilerFactory']['compiler']?.getCurrentProgram(); expect(program).toBeDefined(); return program!; } diff --git a/packages/language-service/ivy/test/legacy/template_target_spec.ts b/packages/language-service/ivy/test/legacy/template_target_spec.ts index 01623e9d7c..91d53adc73 100644 --- a/packages/language-service/ivy/test/legacy/template_target_spec.ts +++ b/packages/language-service/ivy/test/legacy/template_target_spec.ts @@ -471,6 +471,15 @@ describe('getTargetAtPosition for expression AST', () => { expect(node).toBeInstanceOf(e.KeyedRead); }); + it('should locate safe keyed read', () => { + const {errors, nodes, position} = parse(`{{ foo?.['bar']¦ }}`); + expect(errors).toBe(null); + const {context} = getTargetAtPosition(nodes, position)!; + const {node} = context as SingleNodeTarget; + expect(isExpressionNode(node!)).toBe(true); + expect(node).toBeInstanceOf(e.SafeKeyedRead); + }); + it('should locate property write', () => { const {errors, nodes, position} = parse(`
`); expect(errors).toBe(null); @@ -549,6 +558,15 @@ describe('getTargetAtPosition for expression AST', () => { expect(node).toBeInstanceOf(e.SafeMethodCall); }); + it('should identify when in the argument position in a no-arg method call', () => { + const {errors, nodes, position} = parse(`{{ title.toString(¦) }}`); + expect(errors).toBe(null); + const {context} = getTargetAtPosition(nodes, position)!; + expect(context.kind).toEqual(TargetNodeKind.MethodCallExpressionInArgContext); + const {node} = context as SingleNodeTarget; + expect(node).toBeInstanceOf(e.MethodCall); + }); + it('should locate literal primitive in interpolation', () => { const {errors, nodes, position} = parse(`{{ title.indexOf('t¦') }}`); expect(errors).toBe(null); @@ -604,6 +622,38 @@ describe('getTargetAtPosition for expression AST', () => { expect(isExpressionNode(node!)).toBe(true); expect(node).toBeInstanceOf(e.Conditional); }); + + describe('object literal shorthand', () => { + it('should locate on literal with one shorthand property', () => { + const {errors, nodes, position} = parse(`{{ {va¦l1} }}`); + expect(errors).toBe(null); + const {context} = getTargetAtPosition(nodes, position)!; + expect(context.kind).toBe(TargetNodeKind.RawExpression); + const {node} = context as SingleNodeTarget; + expect(node).toBeInstanceOf(e.PropertyRead); + expect((node as e.PropertyRead).name).toBe('val1'); + }); + + it('should locate on literal with multiple shorthand properties', () => { + const {errors, nodes, position} = parse(`{{ {val1, va¦l2} }}`); + expect(errors).toBe(null); + const {context} = getTargetAtPosition(nodes, position)!; + expect(context.kind).toBe(TargetNodeKind.RawExpression); + const {node} = context as SingleNodeTarget; + expect(node).toBeInstanceOf(e.PropertyRead); + expect((node as e.PropertyRead).name).toBe('val2'); + }); + + it('should locale on property with mixed shorthand and regular properties', () => { + const {errors, nodes, position} = parse(`{{ {val1: 'val1', va¦l2} }}`); + expect(errors).toBe(null); + const {context} = getTargetAtPosition(nodes, position)!; + expect(context.kind).toBe(TargetNodeKind.RawExpression); + const {node} = context as SingleNodeTarget; + expect(node).toBeInstanceOf(e.PropertyRead); + expect((node as e.PropertyRead).name).toBe('val2'); + }); + }); }); describe('findNodeAtPosition for microsyntax expression', () => { @@ -779,3 +829,39 @@ describe('findNodeAtPosition for microsyntax expression', () => { expect((context as SingleNodeTarget).node).toBeInstanceOf(t.Element); }); }); + +describe('unclosed elements', () => { + it('should locate children of unclosed elements', () => { + const {errors, nodes, position} = parse(`
{{b¦ar}}`); + expect(errors).toBe(null); + const {context} = getTargetAtPosition(nodes, position)!; + const {node} = context as SingleNodeTarget; + expect(isExpressionNode(node!)).toBe(true); + expect(node).toBeInstanceOf(e.PropertyRead); + }); + + it('should locate children of outside of unclosed when parent is closed elements', () => { + const {nodes, position} = parse(`
  • {{b¦ar}}`); + const {context} = getTargetAtPosition(nodes, position)!; + const {node} = context as SingleNodeTarget; + expect(isExpressionNode(node!)).toBe(true); + expect(node).toBeInstanceOf(e.PropertyRead); + }); + + it('should locate nodes before unclosed element', () => { + const {nodes, position} = parse(`
  • {{b¦ar}}
  • `); + const {context} = getTargetAtPosition(nodes, position)!; + const {node} = context as SingleNodeTarget; + expect(isExpressionNode(node!)).toBe(true); + expect(node).toBeInstanceOf(e.PropertyRead); + }); + + it('should be correct for end tag of parent node with unclosed child', () => { + const {nodes, position} = parse(`
  • {{bar}}`); + const {context} = getTargetAtPosition(nodes, position)!; + const {node} = context as SingleNodeTarget; + expect(isTemplateNode(node!)).toBe(true); + expect(node).toBeInstanceOf(t.Element); + expect((node as t.Element).name).toBe('li'); + }); +}); diff --git a/packages/language-service/ivy/test/quick_info_spec.ts b/packages/language-service/ivy/test/quick_info_spec.ts index 11b610cf17..ab18e13e12 100644 --- a/packages/language-service/ivy/test/quick_info_spec.ts +++ b/packages/language-service/ivy/test/quick_info_spec.ts @@ -151,6 +151,15 @@ describe('quick info', () => { expect(toText(documentation)).toBe('This Component provides the `test-comp` selector.'); }); + it('should work for components with bound attributes', () => { + const {documentation} = expectQuickInfo({ + templateOverride: ``, + expectedSpanText: ``, + expectedDisplayString: '(component) AppModule.TestComponent' + }); + expect(toText(documentation)).toBe('This Component provides the `test-comp` selector.'); + }); + it('should work for structural directives', () => { const {documentation} = expectQuickInfo({ templateOverride: `
    `, @@ -348,6 +357,20 @@ describe('quick info', () => { expectedDisplayString: '(variable) name: { readonly name: "name"; }' }); }); + + it('should work for safe keyed reads', () => { + expectQuickInfo({ + templateOverride: `
    {{constNames?.[0¦]}}
    `, + expectedSpanText: '0', + expectedDisplayString: '(property) 0: {\n readonly name: "name";\n}' + }); + + expectQuickInfo({ + templateOverride: `
    {{constNames?.[0]?.na¦me}}
    `, + expectedSpanText: 'constNames?.[0]?.name', + expectedDisplayString: '(property) name: "name"' + }); + }); }); describe('pipes', () => { @@ -477,6 +500,48 @@ describe('quick info', () => { expect(documentation).toBe('This is the title of the `AppCmp` Component.'); }); }); + + it('should work for object literal with shorthand property declarations', () => { + initMockFileSystem('Native'); + env = LanguageServiceTestEnv.setup(); + project = env.addProject( + 'test', { + 'app.ts': ` + import {Component, NgModule} from '@angular/core'; + import {CommonModule} from '@angular/common'; + + @Component({ + selector: 'some-cmp', + templateUrl: './app.html', + }) + export class SomeCmp { + val1 = 'one'; + val2 = 2; + + doSomething(obj: {val1: string, val2: number}) {} + } + + @NgModule({ + declarations: [SomeCmp], + imports: [CommonModule], + }) + export class AppModule{ + } + `, + 'app.html': `{{doSomething({val1, val2})}}`, + }, + {strictTemplates: true}); + env.expectNoSourceDiagnostics(); + project.expectNoSourceDiagnostics(); + + const template = project.openFile('app.html'); + template.moveCursorToText('val¦1'); + const quickInfo = template.getQuickInfoAtPosition(); + expect(toText(quickInfo!.displayParts)).toEqual('(property) SomeCmp.val1: string'); + template.moveCursorToText('val¦2'); + const quickInfo2 = template.getQuickInfoAtPosition(); + expect(toText(quickInfo2!.displayParts)).toEqual('(property) SomeCmp.val2: number'); + }); }); describe('generics', () => { @@ -550,12 +615,49 @@ describe('quick info', () => { // checkTypeOfPipes is set to false when strict templates is false project = env.addProject('test', quickInfoSkeleton(), {strictTemplates: false}); const templateOverride = `

    The hero's birthday is {{birthday | da¦te: "MM/dd/yy"}}

    `; - expectQuickInfo( - {templateOverride, expectedSpanText: 'date', expectedDisplayString: '(pipe) DatePipe'}); + expectQuickInfo({ + templateOverride, + expectedSpanText: 'date', + expectedDisplayString: + '(pipe) DatePipe.transform(value: string | number | Date, format?: string | undefined, timezone?: ' + + 'string | undefined, locale?: string | undefined): string | null (+2 overloads)' + }); + }); + + it('should still get quick info if there is an invalid css resource', () => { + project = env.addProject('test', { + 'app.ts': ` + import {Component, NgModule} from '@angular/core'; + + @Component({ + selector: 'some-cmp', + templateUrl: './app.html', + styleUrls: ['./does_not_exist'], + }) + export class SomeCmp { + myValue!: string; + } + + @NgModule({ + declarations: [SomeCmp], + }) + export class AppModule{ + } + `, + 'app.html': `{{myValue}}`, + }); + const diagnostics = project.getDiagnosticsForFile('app.ts'); + expect(diagnostics.length).toBe(1); + expect(diagnostics[0].messageText) + .toEqual(`Could not find stylesheet file './does_not_exist'.`); + + const template = project.openFile('app.html'); + template.moveCursorToText('{{myVa¦lue}}'); + const quickInfo = template.getQuickInfoAtPosition(); + expect(toText(quickInfo!.displayParts)).toEqual('(property) SomeCmp.myValue: string'); }); }); - function expectQuickInfo( {templateOverride, expectedSpanText, expectedDisplayString}: {templateOverride: string, expectedSpanText: string, expectedDisplayString: string}): diff --git a/packages/language-service/ivy/test/references_and_rename_spec.ts b/packages/language-service/ivy/test/references_and_rename_spec.ts new file mode 100644 index 0000000000..c732dec80e --- /dev/null +++ b/packages/language-service/ivy/test/references_and_rename_spec.ts @@ -0,0 +1,1634 @@ +/** + * @license + * 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 + */ + +import {initMockFileSystem} from '@angular/compiler-cli/src/ngtsc/file_system/testing'; + +import {assertFileNames, assertTextSpans, createModuleAndProjectWithDeclarations, humanizeDocumentSpanLike, LanguageServiceTestEnv, OpenBuffer} from '../testing'; + +describe('find references and rename locations', () => { + let env: LanguageServiceTestEnv; + + beforeEach(() => { + initMockFileSystem('Native'); + }); + + afterEach(() => { + // Clear env so it's not accidentally carried over to the next test. + env = undefined!; + }); + + describe('cursor is on binding in component class', () => { + let appFile: OpenBuffer; + + beforeEach(() => { + const files = { + 'app.ts': `import {Component} from '@angular/core'; + + @Component({templateUrl: './app.html'}) + export class AppCmp { + myProp!: string; + }`, + 'app.html': '{{myProp}}' + }; + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + appFile = project.openFile('app.ts'); + appFile.moveCursorToText('myP¦rop'); + }); + + it('gets component member references from TS file and external template', () => { + const refs = getReferencesAtPosition(appFile)!; + expect(refs.length).toBe(2); + assertFileNames(refs, ['app.html', 'app.ts']); + assertTextSpans(refs, ['myProp']); + }); + + it('gets rename locations from TS file and external template', () => { + const renameLocations = getRenameLocationsAtPosition(appFile)!; + expect(renameLocations.length).toBe(2); + assertFileNames(renameLocations, ['app.html', 'app.ts']); + assertTextSpans(renameLocations, ['myProp']); + }); + }); + + describe('when cursor is on binding in an external template', () => { + let templateFile: OpenBuffer; + + beforeEach(() => { + const files = { + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({templateUrl: './app.html'}) + export class AppCmp { + myProp = ''; + }`, + 'app.html': '{{myProp}}' + }; + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + templateFile = project.openFile('app.html'); + templateFile.moveCursorToText('myP¦rop'); + }); + + it('gets references', () => { + const refs = getReferencesAtPosition(templateFile)!; + expect(refs.length).toBe(2); + assertFileNames(refs, ['app.html', 'app.ts']); + assertTextSpans(refs, ['myProp']); + }); + + it('gets rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(templateFile)!; + expect(renameLocations.length).toBe(2); + assertFileNames(renameLocations, ['app.html', 'app.ts']); + assertTextSpans(renameLocations, ['myProp']); + }); + }); + + describe('when cursor is on function call in external template', () => { + let appFile: OpenBuffer; + + beforeEach(() => { + const files = { + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({template: '
    '}) + export class AppCmp { + setTitle(s: number) {} + }` + }; + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + appFile = project.openFile('app.ts'); + appFile.moveCursorToText('setTi¦tle(2)'); + }); + + it('gets component member reference in ts file', () => { + const refs = getReferencesAtPosition(appFile)!; + expect(refs.length).toBe(2); + + assertFileNames(refs, ['app.ts']); + assertTextSpans(refs, ['setTitle']); + }); + + it('gets rename location in ts file', () => { + const renameLocations = getRenameLocationsAtPosition(appFile)!; + expect(renameLocations.length).toBe(2); + + assertFileNames(renameLocations, ['app.ts']); + assertTextSpans(renameLocations, ['setTitle']); + }); + }); + + describe('when cursor in on argument to a function call in an external template', () => { + let appFile: OpenBuffer; + + beforeEach(() => { + const files = { + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({template: '
    '}) + export class AppCmp { + title = ''; + setTitle(s: string) {} + }` + }; + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + appFile = project.openFile('app.ts'); + appFile.moveCursorToText('(ti¦tle)'); + }); + + it('gets member reference in ts file', () => { + const refs = getReferencesAtPosition(appFile)!; + expect(refs.length).toBe(2); + + assertTextSpans(refs, ['title']); + }); + + it('finds rename location in ts file', () => { + const refs = getRenameLocationsAtPosition(appFile)!; + expect(refs.length).toBe(2); + + assertTextSpans(refs, ['title']); + }); + }); + + describe('when cursor is on $event in method call arguments', () => { + let file: OpenBuffer; + + beforeEach(() => { + const files = { + 'app.ts': ` + import {Component} from '@angular/core'; + @Component({template: '
    '}) + export class AppCmp { + setTitle(s: any) {} + }` + }; + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('app.ts'); + file.moveCursorToText('($even¦t)'); + }); + + it('find references', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toBe(1); + + assertTextSpans(refs, ['$event']); + }); + + it('gets no rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations).toBeUndefined(); + }); + }); + + describe('when cursor in on LHS of property write in external template', () => { + let file: OpenBuffer; + + beforeEach(() => { + const files = { + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({templateUrl: './app.html' }) + export class AppCmp { + title = ''; + }`, + 'app.html': `
    ` + }; + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('app.html'); + file.moveCursorToText('ti¦tle = '); + }); + + it('gets member reference in ts file', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toBe(2); + + assertFileNames(refs, ['app.ts', 'app.html']); + assertTextSpans(refs, ['title']); + }); + + it('gets rename location in ts file', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations.length).toBe(2); + + assertFileNames(renameLocations, ['app.ts', 'app.html']); + assertTextSpans(renameLocations, ['title']); + }); + }); + + describe('when cursor in on RHS of property write in external template', () => { + let file: OpenBuffer; + + beforeEach(() => { + const files = { + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({template: '
    ' }) + export class AppCmp { + title = ''; + otherTitle = ''; + }` + }; + + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('app.ts'); + file.moveCursorToText('= otherT¦itle">'); + }); + + it('get reference to member in ts file', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toBe(2); + + assertFileNames(refs, ['app.ts']); + assertTextSpans(refs, ['otherTitle']); + }); + + it('finds rename location in ts file', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations.length).toBe(2); + + assertFileNames(renameLocations, ['app.ts']); + assertTextSpans(renameLocations, ['otherTitle']); + }); + }); + + describe('when cursor in on a keyed read', () => { + let file: OpenBuffer; + + beforeEach(() => { + const files = { + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({template: '{{hero["name"]}}' }) + export class AppCmp { + hero: {name: string} = {name: 'Superman'}; + }` + }; + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('app.ts'); + file.moveCursorToText('{{hero["na¦me"]}}'); + }); + + it('gets reference to member type definition and initialization in component class', () => { + const refs = getReferencesAtPosition(file)!; + // 3 references: the type definition, the value assignment, and the read in the template + expect(refs.length).toBe(3); + + assertFileNames(refs, ['app.ts']); + // TODO(atscott): investigate if we can make the template keyed read be just the 'name' part. + // The TypeScript implementation specifically adjusts the span to accommodate string literals: + // https://sourcegraph.com/github.com/microsoft/TypeScript@d5779c75d3dd19565b60b9e2960b8aac36d4d635/-/blob/src/services/findAllReferences.ts#L508-512 + // One possible solution would be to extend `FullTemplateMapping` to include the matched TCB + // node and then do the same thing that TS does: if the node is a string, adjust the span. + assertTextSpans(refs, ['name', '"name"']); + }); + + it('gets rename locations in component class', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations).toBeUndefined(); + + // TODO(atscott): We should handle this case. The fix requires us to fix the result span as + // described above. + // 3 references: the type definition, the value assignment, and the read in the template + // expect(renameLocations.length).toBe(3); + // + // assertFileNames(renameLocations, ['app.ts']); + // assertTextSpans(renameLocations, ['name']); + }); + }); + + describe('when cursor in on RHS of keyed write in a template', () => { + let file: OpenBuffer; + + beforeEach(() => { + const files = { + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({templateUrl: './app.html' }) + export class AppCmp { + hero: {name: string} = {name: 'Superman'}; + batman = 'batman'; + }`, + 'app.html': `
    ` + }; + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('app.html'); + file.moveCursorToText('bat¦man'); + }); + + it('get references in ts file', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toBe(2); + + assertFileNames(refs, ['app.ts', 'app.html']); + assertTextSpans(refs, ['batman']); + }); + + it('finds rename location in ts file', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations.length).toBe(2); + + assertFileNames(renameLocations, ['app.ts', 'app.html']); + assertTextSpans(renameLocations, ['batman']); + }); + }); + + describe('when cursor in on an element reference', () => { + let file: OpenBuffer; + + beforeEach(() => { + const files = { + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({template: ' {{ myInput.value }}'}) + export class AppCmp { + title = ''; + }` + }; + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('app.ts'); + file.moveCursorToText('myInp¦ut.value'); + }); + + it('get reference to declaration in template', () => { + const refs = getReferencesAtPosition(file)!; + + expect(refs.length).toBe(2); + assertTextSpans(refs, ['myInput']); + + // Get the declaration by finding the reference that appears first in the template + refs.sort((a, b) => a.textSpan.start - b.textSpan.start); + expect(refs[0].isDefinition).toBe(true); + }); + + it('finds rename location in template', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + + expect(renameLocations.length).toBe(2); + assertTextSpans(renameLocations, ['myInput']); + }); + }); + + describe('when cursor in on a template reference', () => { + let file: OpenBuffer; + + beforeEach(() => { + const files = { + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({templateUrl: './app.html'}) + export class AppCmp { + title = ''; + }`, + 'app.html': ` + bla + ` + }; + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('app.html'); + file.moveCursorToText('#myTem¦plate'); + }); + + it('gets reference to declaration', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toBe(2); + assertTextSpans(refs, ['myTemplate']); + assertFileNames(refs, ['app.html']); + + // Get the declaration by finding the reference that appears first in the template + refs.sort((a, b) => a.textSpan.start - b.textSpan.start); + expect(refs[0].isDefinition).toBe(true); + }); + + it('finds rename location in template', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations.length).toBe(2); + assertTextSpans(renameLocations, ['myTemplate']); + assertFileNames(renameLocations, ['app.html']); + }); + }); + + describe('template references', () => { + describe('directives', () => { + const dirFileContents = ` + import {Directive} from '@angular/core'; + + @Directive({selector: '[dir]', exportAs: 'myDir'}) + export class Dir { + dirValue!: string; + doSomething() {} + }`; + const appFileContents = ` + import {Component} from '@angular/core'; + + @Component({templateUrl: './app.html'}) + export class AppCmp {}`; + + describe('when cursor is on usage of template reference', () => { + let file: OpenBuffer; + beforeEach(() => { + const files = { + 'app.ts': appFileContents, + 'dir.ts': dirFileContents, + 'app.html': '
    {{ dirRef }}' + }; + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('app.html'); + file.moveCursorToText('#dirR¦ef'); + }); + + it('should get references', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toBe(2); + assertFileNames(refs, ['app.html']); + assertTextSpans(refs, ['dirRef']); + }); + + it('should find rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations.length).toBe(2); + assertFileNames(renameLocations, ['app.html']); + assertTextSpans(renameLocations, ['dirRef']); + }); + }); + + describe('when cursor is on a property read of directive reference', () => { + let file: OpenBuffer; + beforeEach(() => { + const files = { + 'app.ts': appFileContents, + 'dir.ts': dirFileContents, + 'app.html': '
    {{ dirRef.dirValue }}' + }; + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('app.html'); + file.moveCursorToText('dirRef.dirV¦alue'); + }); + + it('should get references', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toBe(2); + assertFileNames(refs, ['dir.ts', 'app.html']); + assertTextSpans(refs, ['dirValue']); + }); + + it('should find rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations.length).toBe(2); + assertFileNames(renameLocations, ['dir.ts', 'app.html']); + assertTextSpans(renameLocations, ['dirValue']); + }); + }); + + describe('when cursor is on a safe prop read', () => { + let file: OpenBuffer; + beforeEach(() => { + const files = { + 'app.ts': appFileContents, + 'dir.ts': dirFileContents, + 'app.html': '
    {{ dirRef?.dirValue }}' + }; + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('app.html'); + file.moveCursorToText('dirRef?.dirV¦alue'); + }); + + + it('should get references', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toBe(2); + assertFileNames(refs, ['dir.ts', 'app.html']); + assertTextSpans(refs, ['dirValue']); + }); + + it('should find rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations.length).toBe(2); + assertFileNames(renameLocations, ['dir.ts', 'app.html']); + assertTextSpans(renameLocations, ['dirValue']); + }); + }); + + describe('when cursor is on safe method call', () => { + let file: OpenBuffer; + beforeEach(() => { + const files = { + 'app.ts': appFileContents, + 'dir.ts': dirFileContents, + 'app.html': '
    {{ dirRef?.doSomething() }}' + }; + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('app.html'); + file.moveCursorToText('dirRef?.doSometh¦ing()'); + }); + + + it('should get references', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toBe(2); + assertFileNames(refs, ['dir.ts', 'app.html']); + assertTextSpans(refs, ['doSomething']); + }); + + it('should find rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations.length).toBe(2); + assertFileNames(renameLocations, ['dir.ts', 'app.html']); + assertTextSpans(renameLocations, ['doSomething']); + }); + }); + }); + }); + + describe('template variables', () => { + describe('when cursor is on variable which was initialized implicitly', () => { + let file: OpenBuffer; + beforeEach(() => { + const files = { + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({templateUrl: './template.ng.html'}) + export class AppCmp { + heroes: string[] = []; + }`, + 'template.ng.html': ` +
    + + {{hero}} + +
    + ` + }; + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('template.ng.html'); + file.moveCursorToText('{{her¦o}}'); + }); + + it('should find references', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toBe(3); + assertFileNames(refs, ['template.ng.html']); + assertTextSpans(refs, ['hero']); + + // Get the declaration by finding the reference that appears first in the template + refs.sort((a, b) => a.textSpan.start - b.textSpan.start); + expect(refs[0].isDefinition).toBe(true); + }); + + it('should find rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations.length).toBe(3); + assertFileNames(renameLocations, ['template.ng.html']); + assertTextSpans(renameLocations, ['hero']); + }); + }); + + describe('when cursor is on renamed variable', () => { + let file: OpenBuffer; + beforeEach(() => { + const files = { + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({template: '
    {{iRef}}
    '}) + export class AppCmp { + heroes: string[] = []; + }` + }; + + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('app.ts'); + file.moveCursorToText('{{iR¦ef}}'); + }); + + it('should find references', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toBe(2); + assertFileNames(refs, ['app.ts']); + assertTextSpans(refs, ['iRef']); + + // Get the declaration by finding the reference that appears first in the template + refs.sort((a, b) => a.textSpan.start - b.textSpan.start); + expect(refs[0].isDefinition).toBe(true); + }); + + it('should find rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations.length).toBe(2); + assertFileNames(renameLocations, ['app.ts']); + assertTextSpans(renameLocations, ['iRef']); + }); + }); + + describe('when cursor is on initializer of variable', () => { + let file: OpenBuffer; + beforeEach(() => { + const files = { + 'example-directive.ts': ` + import {Directive, Input} from '@angular/core'; + + export class ExampleContext { + constructor(readonly $implicit: T, readonly identifier: string) {} + } + + @Directive({ selector: '[example]' }) + export class ExampleDirective { + @Input() set example(v: T) { } + static ngTemplateContextGuard(dir: ExampleDirective, ctx: unknown): + ctx is ExampleContext { + return true; + } + }`, + 'app.ts': ` + import {Component, NgModule} from '@angular/core'; + import {ExampleDirective} from './example-directive'; + + @Component({template: '
    {{id}}
    '}) + export class AppCmp { + state = {}; + } + + @NgModule({declarations: [AppCmp, ExampleDirective]}) + export class AppModule {}` + }; + + env = LanguageServiceTestEnv.setup(); + const project = env.addProject('test', files); + file = project.openFile('app.ts'); + file.moveCursorToText('identif¦ier'); + env.expectNoSourceDiagnostics(); + project.expectNoTemplateDiagnostics('app.ts', 'AppCmp'); + }); + + it('should find references', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toBe(2); + assertFileNames(refs, ['app.ts', 'example-directive.ts']); + assertTextSpans(refs, ['identifier']); + }); + + it('should find rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations.length).toBe(2); + assertFileNames(renameLocations, ['app.ts', 'example-directive.ts']); + assertTextSpans(renameLocations, ['identifier']); + }); + }); + + describe('when cursor is on property read of variable', () => { + let file: OpenBuffer; + beforeEach(() => { + const files = { + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({template: '
    {{hero.name}}
    '}) + export class AppCmp { + heroes: Array<{name: string}> = []; + }` + }; + + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('app.ts'); + file.moveCursorToText('hero.na¦me'); + }); + + it('should find references', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toBe(2); + assertFileNames(refs, ['app.ts']); + assertTextSpans(refs, ['name']); + }); + + it('should find rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations.length).toBe(2); + assertFileNames(renameLocations, ['app.ts']); + assertTextSpans(renameLocations, ['name']); + }); + }); + + describe('when cursor is on property read of variable', () => { + let file: OpenBuffer; + beforeEach(() => { + const files = { + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({template: '
    '}) + export class AppCmp { + name = 'Frodo'; + + setHero(hero: {name: string}) {} + }` + }; + + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('app.ts'); + file.moveCursorToText('{na¦me}'); + }); + + it('should find references', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toBe(2); + assertFileNames(refs, ['app.ts']); + assertTextSpans(refs, ['name']); + }); + + it('should find rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations.length).toBe(2); + assertFileNames(renameLocations, ['app.ts']); + assertTextSpans(renameLocations, ['name']); + }); + }); + }); + + describe('pipes', () => { + const prefixPipe = ` + import {Pipe, PipeTransform} from '@angular/core'; + + @Pipe({ name: 'prefixPipe' }) + export class PrefixPipe implements PipeTransform { + transform(value: string, prefix: string): string; + transform(value: number, prefix: number): number; + transform(value: string|number, prefix: string|number): string|number { + return ''; + } + }`; + + for (const checkTypeOfPipes of [true, false]) { + describe(`when cursor is on pipe name, checkTypeOfPipes: ${checkTypeOfPipes}`, () => { + let file: OpenBuffer; + beforeEach(() => { + const files = { + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({template: '{{birthday | prefixPipe: "MM/dd/yy"}}'}) + export class AppCmp { + birthday = ''; + } + `, + 'prefix-pipe.ts': prefixPipe + }; + + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('app.ts'); + file.moveCursorToText('prefi¦xPipe:'); + }); + + it('should find references', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toBe(5); + assertFileNames(refs, ['index.d.ts', 'prefix-pipe.ts', 'app.ts']); + assertTextSpans(refs, ['transform', 'prefixPipe']); + }); + + it('should find rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations.length).toBe(2); + assertFileNames(renameLocations, ['prefix-pipe.ts', 'app.ts']); + assertTextSpans(renameLocations, ['prefixPipe']); + }); + + it('should get rename info', () => { + const result = file.getRenameInfo() as ts.RenameInfoSuccess; + expect(result.canRename).toEqual(true); + expect(result.displayName).toEqual('prefixPipe'); + }); + }); + } + + describe('when cursor is on pipe name expression', () => { + it('finds rename locations and rename info', () => { + const files = { + '/app.ts': ` + import {Component} from '@angular/core'; + + @Component({template: '{{birthday | prefixPipe: "MM/dd/yy"}}'}) + export class AppCmp { + birthday = ''; + } + `, + 'prefix_pipe.ts': prefixPipe + }; + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + const file = project.openFile('prefix_pipe.ts'); + file.moveCursorToText(`'prefi¦xPipe'`); + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations.length).toBe(2); + assertFileNames(renameLocations, ['prefix_pipe.ts', 'app.ts']); + assertTextSpans(renameLocations, ['prefixPipe']); + + const result = file.getRenameInfo() as ts.RenameInfoSuccess; + expect(result.canRename).toEqual(true); + expect(result.displayName).toEqual('prefixPipe'); + expect(file.contents.substring( + result.triggerSpan.start, result.triggerSpan.start + result.triggerSpan.length)) + .toBe('prefixPipe'); + }); + + it('finds rename locations in base class', () => { + const files = { + '/base_pipe.ts': ` + import {Pipe, PipeTransform} from '@angular/core'; + + @Pipe({ name: 'basePipe' }) + export class BasePipe implements PipeTransform { + transform(value: string, prefix: string): string; + transform(value: number, prefix: number): number; + transform(value: string|number, prefix: string|number): string|number { + return ''; + } + }`, + 'prefix_pipe.ts': prefixPipe, + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({template: '{{"a" | prefixPipe: "MM/dd/yy"}}'}) + export class AppCmp { } + ` + }; + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + const file = project.openFile('prefix_pipe.ts'); + file.moveCursorToText(`'prefi¦xPipe'`); + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations.length).toBe(2); + assertFileNames(renameLocations, ['prefix_pipe.ts', 'app.ts']); + assertTextSpans(renameLocations, ['prefixPipe']); + }); + }); + + describe('when cursor is on pipe argument', () => { + let file: OpenBuffer; + beforeEach(() => { + const files = { + 'prefix-pipe.ts': prefixPipe, + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({template: '{{birthday | prefixPipe: prefix}}'}) + export class AppCmp { + birthday = ''; + prefix = ''; + } + ` + }; + + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('app.ts'); + file.moveCursorToText('prefixPipe: pr¦efix'); + }); + + it('should find references', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toBe(2); + assertFileNames(refs, ['app.ts']); + assertTextSpans(refs, ['prefix']); + }); + + it('should find rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations.length).toBe(2); + assertFileNames(renameLocations, ['app.ts']); + assertTextSpans(renameLocations, ['prefix']); + }); + }); + }); + + describe('inputs', () => { + const dirFileContents = ` + import {Directive, Input} from '@angular/core'; + + @Directive({selector: '[string-model]'}) + export class StringModel { + @Input() model!: string; + @Input('alias') aliasedModel!: string; + }`; + describe('when cursor is on the input in the template', () => { + let file: OpenBuffer; + beforeEach(() => { + const files = { + 'string-model.ts': dirFileContents, + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({template: '
    '}) + export class AppCmp { + title = 'title'; + }` + }; + + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('app.ts'); + file.moveCursorToText('[mod¦el]'); + }); + + it('should find references', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toEqual(2); + assertFileNames(refs, ['string-model.ts', 'app.ts']); + assertTextSpans(refs, ['model']); + }); + + it('should find rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations.length).toEqual(2); + assertFileNames(renameLocations, ['string-model.ts', 'app.ts']); + assertTextSpans(renameLocations, ['model']); + }); + }); + + describe('when cursor is on an input that maps to multiple directives', () => { + let file: OpenBuffer; + beforeEach(() => { + const files = { + 'other-dir.ts': ` + import {Directive, Input} from '@angular/core'; + + @Directive({selector: '[string-model]'}) + export class OtherDir { + @Input('model') otherDirAliasedInput!: any; + } + `, + 'string-model.ts': dirFileContents, + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({template: '
    '}) + export class AppCmp { + title = 'title'; + }` + }; + + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('app.ts'); + file.moveCursorToText('[mod¦el]'); + }); + + it('should find references', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toEqual(3); + assertFileNames(refs, ['string-model.ts', 'app.ts', 'other-dir.ts']); + assertTextSpans(refs, ['model', 'otherDirAliasedInput']); + }); + + // TODO(atscott): This test fails because template symbol builder only returns one binding. + // The result is that rather than returning `undefined` because we don't handle alias inputs, + // we return the rename locations for the first binding. + it('should find rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations).toBeUndefined(); + // TODO(atscott): The below assertions are the correct ones if we were supporting aliases + // expect(renameLocations.length).toEqual(3); + // assertFileNames(renameLocations, ['string-model.ts', 'app.ts', 'other-dir']); + // assertTextSpans(renameLocations, ['model']); + }); + }); + + describe('should work when cursor is on text attribute input', () => { + let file: OpenBuffer; + beforeEach(() => { + const files = { + 'string-model.ts': dirFileContents, + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({template: '
    '}) + export class AppCmp { + title = 'title'; + }` + }; + + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('app.ts'); + file.moveCursorToText('mod¦el="title"'); + }); + + it('should work for text attributes', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toEqual(2); + assertFileNames(refs, ['string-model.ts', 'app.ts']); + assertTextSpans(refs, ['model']); + }); + + it('should find rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations.length).toEqual(2); + assertFileNames(renameLocations, ['string-model.ts', 'app.ts']); + assertTextSpans(renameLocations, ['model']); + }); + }); + + describe('when cursor is on the class member input', () => { + let file: OpenBuffer; + beforeEach(() => { + const files = { + 'string-model.ts': ` + import {Directive, Input} from '@angular/core'; + + @Directive({selector: '[string-model]'}) + export class StringModel { + @Input() model!: string; + }`, + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({template: '
    '}) + export class AppCmp { + title = 'title'; + }` + }; + + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('string-model.ts'); + file.moveCursorToText('@Input() mod¦el!'); + }); + + it('should work from the TS input declaration', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toEqual(2); + assertFileNames(refs, ['app.ts', 'string-model.ts']); + assertTextSpans(refs, ['model']); + }); + + it('should find rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations.length).toEqual(2); + assertFileNames(renameLocations, ['app.ts', 'string-model.ts']); + assertTextSpans(renameLocations, ['model']); + }); + }); + + describe('when cursor is on input referenced somewhere in the class functions', () => { + let file: OpenBuffer; + beforeEach(() => { + const files = { + 'other-dir.ts': ` + import {Directive, Input} from '@angular/core'; + import {StringModel} from './string-model'; + + @Directive({selector: '[other-dir]'}) + export class OtherDir { + @Input() stringModelRef!: StringModel; + + doSomething() { + console.log(this.stringModelRef.model); + } + }`, + 'string-model.ts': ` + import {Directive, Input} from '@angular/core'; + + @Directive({selector: '[string-model]'}) + export class StringModel { + @Input() model!: string; + }`, + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({template: '
    '}) + export class AppCmp { + title = 'title'; + }` + }; + + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('other-dir.ts'); + file.moveCursorToText('this.stringModelRef.mod¦el'); + }); + + it('should find references', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toEqual(3); + assertFileNames(refs, ['app.ts', 'string-model.ts', 'other-dir.ts']); + assertTextSpans(refs, ['model']); + }); + + it('should find rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations.length).toEqual(3); + assertFileNames(renameLocations, ['app.ts', 'string-model.ts', 'other-dir.ts']); + assertTextSpans(renameLocations, ['model']); + }); + }); + + describe('when cursor is on an aliased input', () => { + let file: OpenBuffer; + beforeEach(() => { + const files = { + 'string-model.ts': dirFileContents, + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({template: '
    '}) + export class AppCmp { + title = 'title'; + }` + }; + + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('app.ts'); + file.moveCursorToText('[al¦ias]'); + }); + + it('should find references', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toEqual(2); + assertFileNames(refs, ['string-model.ts', 'app.ts']); + assertTextSpans(refs, ['aliasedModel', 'alias']); + }); + + it('should find rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations).toBeUndefined(); + // TODO(atscott): add support for renaming alias outputs + // expect(renameLocations.length).toEqual(2); + // assertFileNames(renameLocations, ['string-model.ts', 'app.ts']); + // assertTextSpans(renameLocations, ['alias']); + }); + }); + }); + + describe('outputs', () => { + const dirFile = ` + import {Directive, Output, EventEmitter} from '@angular/core'; + + @Directive({selector: '[string-model]'}) + export class StringModel { + @Output() modelChange = new EventEmitter(); + @Output('alias') aliasedModelChange = new EventEmitter(); + }`; + + function generateAppFile(template: string) { + return ` + import {Component, NgModule} from '@angular/core'; + import {StringModel} from './string-model'; + + @Component({template: '${template}'}) + export class AppCmp { + setTitle(s: string) {} + } + + @NgModule({declarations: [AppCmp, StringModel]}) + export class AppModule {}`; + } + + describe('when cursor is on output key in template', () => { + let file: OpenBuffer; + beforeEach(() => { + const appFile = + generateAppFile(`
    `); + + env = LanguageServiceTestEnv.setup(); + const project = env.addProject('test', {'app.ts': appFile, 'string-model.ts': dirFile}); + file = project.openFile('app.ts'); + file.moveCursorToText('(mod¦elChange)'); + }); + + it('should find references', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toEqual(2); + assertTextSpans(refs, ['modelChange']); + }); + + it('should find rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations.length).toEqual(2); + assertTextSpans(renameLocations, ['modelChange']); + }); + }); + + describe('when cursor is on alias output key', () => { + let file: OpenBuffer; + beforeEach(() => { + const appFile = generateAppFile(`
    `); + + env = LanguageServiceTestEnv.setup(); + const project = env.addProject('test', {'app.ts': appFile, 'string-model.ts': dirFile}); + file = project.openFile('app.ts'); + file.moveCursorToText('(a¦lias)'); + }); + + it('should find references', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toEqual(2); + assertTextSpans(refs, ['aliasedModelChange', 'alias']); + }); + + it('should find rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations).toBeUndefined(); + // TODO(atscott): add support for renaming alias outputs + // expect(renameLocations.length).toEqual(2); + // assertTextSpans(renameLocations, ['alias']); + }); + }); + }); + + it('should get references to both input and output for two-way binding', () => { + const files = { + 'dir.ts': ` + import {Directive, Input, Output} from '@angular/core'; + + @Directive({selector: '[string-model]'}) + export class StringModel { + @Input() model!: any; + @Output() modelChange!: any; + }`, + 'app.ts': ` + import {Component} from '@angular/core'; + + @Component({template: '
    '}) + export class AppCmp { + title = 'title'; + }` + + }; + + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + const file = project.openFile('app.ts'); + file.moveCursorToText('[(mod¦el)]'); + + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toEqual(3); + assertFileNames(refs, ['dir.ts', 'app.ts']); + assertTextSpans(refs, ['model', 'modelChange']); + }); + + describe('directives', () => { + describe('when cursor is on the directive class', () => { + let file: OpenBuffer; + beforeEach(() => { + const files = { + 'dir.ts': ` + import {Directive} from '@angular/core'; + + @Directive({selector: '[dir]'}) + export class Dir {}`, + 'app.ts': ` + import {Component, NgModule} from '@angular/core'; + import {Dir} from './dir'; + + @Component({template: '
    '}) + export class AppCmp { + } + + @NgModule({declarations: [AppCmp, Dir]}) + export class AppModule {} + ` + }; + + env = LanguageServiceTestEnv.setup(); + const project = env.addProject('test', files); + file = project.openFile('dir.ts'); + file.moveCursorToText('export class Di¦r {}'); + }); + + it('should find references', () => { + const refs = getReferencesAtPosition(file)!; + // 4 references are: class declaration, template usage, app import and use in declarations + // list. + expect(refs.length).toBe(4); + assertTextSpans(refs, ['
    ', 'Dir']); + assertFileNames(refs, ['app.ts', 'dir.ts']); + }); + + it('should find rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations).toBeUndefined(); + // TODO(atscott): We should handle this case, but exclude the template results + // expect(renameLocations.length).toBe(3); + // assertTextSpans(renameLocations, ['Dir']); + // assertFileNames(renameLocations, ['app.ts', 'dir.ts']); + }); + }); + + describe('when cursor is on an attribute', () => { + let file: OpenBuffer; + beforeEach(() => { + const dirFile = ` + import {Directive} from '@angular/core'; + + @Directive({selector: '[dir]'}) + export class Dir {}`; + const dirFile2 = ` + import {Directive} from '@angular/core'; + + @Directive({selector: '[dir]'}) + export class Dir2 {}`; + const appFile = ` + import {Component, NgModule} from '@angular/core'; + import {Dir} from './dir'; + import {Dir2} from './dir2'; + + @Component({template: '
    '}) + export class AppCmp { + } + + @NgModule({declarations: [AppCmp, Dir, Dir2]}) + export class AppModule {} + `; + env = LanguageServiceTestEnv.setup(); + const project = + env.addProject('test', {'app.ts': appFile, 'dir.ts': dirFile, 'dir2.ts': dirFile2}); + file = project.openFile('app.ts'); + file.moveCursorToText('
    '); + }); + + it('gets references to all matching directives', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toBe(7); + assertTextSpans(refs, ['
    ', 'Dir', 'Dir2']); + assertFileNames(refs, ['app.ts', 'dir.ts', 'dir2.ts']); + }); + + it('finds rename locations for all matching directives', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations).toBeUndefined(); + // TODO(atscott): We could consider supporting rename for directive selectors in the future + // expect(renameLocations.length).toBe(3); + // assertTextSpans(renameLocations, ['dir']); + // assertFileNames(renameLocations, ['app.ts', 'dir.ts', 'dir2.ts']); + }); + }); + + describe('when cursor is on generic directive selector in template', () => { + let file: OpenBuffer; + beforeEach(() => { + const files = { + 'app.ts': ` + import {Component, NgModule} from '@angular/core'; + + @Component({template: '
    '}) + export class AppCmp { + items = []; + } + ` + }; + + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + file = project.openFile('app.ts'); + file.moveCursorToText('*ngF¦or'); + }); + + it('should be able to request references', () => { + const refs = getReferencesAtPosition(file)!; + expect(refs.length).toBe(6); + assertTextSpans(refs, ['
    ', 'NgForOf']); + assertFileNames(refs, ['index.d.ts', 'app.ts']); + }); + + it('should not support rename if directive is in a dts file', () => { + const renameLocations = getRenameLocationsAtPosition(file); + expect(renameLocations).toBeUndefined(); + }); + }); + }); + + describe('components', () => { + describe('when cursor is on component class', () => { + let file: OpenBuffer; + beforeEach(() => { + const myComp = ` + import {Component} from '@angular/core'; + + @Component({selector: 'my-comp', template: ''}) + export class MyComp {}`; + const appFile = ` + import {Component, NgModule} from '@angular/core'; + import {MyComp} from './comp'; + + @Component({template: ''}) + export class AppCmp { + } + + @NgModule({declarations: [AppCmp, MyComp]}) + export class AppModule {} + `; + env = LanguageServiceTestEnv.setup(); + const project = env.addProject('test', {'comp.ts': myComp, 'app.ts': appFile}); + file = project.openFile('comp.ts'); + file.moveCursorToText('MyCo¦mp'); + }); + + it('finds references', () => { + const refs = getReferencesAtPosition(file)!; + // 4 references are: class declaration, template usage, app import and use in declarations + // list. + expect(refs.length).toBe(4); + assertTextSpans(refs, ['', 'MyComp']); + assertFileNames(refs, ['app.ts', 'comp.ts']); + }); + + it('gets rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations).toBeUndefined(); + // TODO(atscott): If we register as an exclusive provider for TS, we may need to return + // results here and should exclude the template results. + // expect(renameLocations.length).toBe(3); + // assertTextSpans(renameLocations, ['MyComp']); + // assertFileNames(renameLocations, ['app.ts', 'comp.ts']); + }); + }); + + describe('when cursor is on the element tag', () => { + let file: OpenBuffer; + beforeEach(() => { + const compFile = ` + import {Component} from '@angular/core'; + + @Component({selector: 'my-comp', template: ''}) + export class MyComp {}`; + const app = ` + import {Component, NgModule} from '@angular/core'; + import {MyComp} from './comp'; + + @Component({template: ''}) + export class AppCmp { + } + + @NgModule({declarations: [AppCmp, MyComp]}) + export class AppModule {} + `; + env = LanguageServiceTestEnv.setup(); + const project = env.addProject('test', {'app.ts': app, 'comp.ts': compFile}); + file = project.openFile('app.ts'); + file.moveCursorToText(''); + }); + + it('gets references', () => { + const refs = getReferencesAtPosition(file)!; + // 4 references are: class declaration, template usage, app import and use in declarations + // list. + expect(refs.length).toBe(4); + assertTextSpans(refs, ['', 'MyComp']); + assertFileNames(refs, ['app.ts', 'comp.ts']); + }); + + it('finds rename locations', () => { + const renameLocations = getRenameLocationsAtPosition(file)!; + expect(renameLocations).toBeUndefined(); + // TODO(atscott): We may consider supporting rename of component selector in the future + // expect(renameLocations.length).toBe(2); + // assertTextSpans(renameLocations, ['my-comp']); + // assertFileNames(renameLocations, ['app.ts', 'comp.ts']); + }); + }); + }); + + describe('get rename info', () => { + it('indicates inability to rename when cursor is outside template and in a string literal', + () => { + const comp = ` + import {Component} from '@angular/core'; + + @Component({selector: 'my-comp', template: ''}) + export class MyComp { + myProp = 'cannot rename me'; + }`; + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', {'my-comp.ts': comp}); + env.expectNoSourceDiagnostics(); + + const file = project.openFile('my-comp.ts'); + file.moveCursorToText('cannot rena¦me me'); + const result = file.getRenameInfo(); + expect(result.canRename).toEqual(false); + }); + + it('gets rename info when cursor is outside template', () => { + const comp = ` + import {Component, Input} from '@angular/core'; + + @Component({name: 'my-comp', template: ''}) + export class MyComp { + @Input() myProp!: string; + }`; + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', {'my-comp.ts': comp}); + env.expectNoSourceDiagnostics(); + + const file = project.openFile('my-comp.ts'); + file.moveCursorToText('m¦yProp!'); + const result = file.getRenameInfo() as ts.RenameInfoSuccess; + expect(result.canRename).toEqual(true); + expect(result.displayName).toEqual('myProp'); + expect(result.kind).toEqual('property'); + }); + + it('gets rename info on keyed read', () => { + const text = ` + import {Component} from '@angular/core'; + + @Component({name: 'my-comp', template: '{{ myObj["myProp"] }}'}) + export class MyComp { + readonly myObj = {'myProp': 'hello world'}; + }`; + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', {'my-comp.ts': text}); + env.expectNoSourceDiagnostics(); + const file = project.openFile('my-comp.ts'); + file.moveCursorToText('myObj["my¦Prop"]'); + + const result = file.getRenameInfo() as ts.RenameInfoSuccess; + expect(result.canRename).toEqual(true); + expect(result.displayName).toEqual('myProp'); + expect(result.kind).toEqual('property'); + expect(text.substring( + result.triggerSpan.start, result.triggerSpan.start + result.triggerSpan.length)) + .toBe('myProp'); + // re-queries also work + const {triggerSpan, displayName} = file.getRenameInfo() as ts.RenameInfoSuccess; + expect(displayName).toEqual('myProp'); + expect(text.substring(triggerSpan.start, triggerSpan.start + triggerSpan.length)) + .toBe('myProp'); + }); + + it('gets rename info when cursor is on a directive input in a template', () => { + const files = { + 'dir.ts': ` + import {Directive, Input} from '@angular/core'; + @Directive({selector: '[dir]'}) + export class MyDir { + @Input() dir!: any; + }`, + 'my-comp.ts': ` + import {Component, Input} from '@angular/core'; + + @Component({name: 'my-comp', template: '
    '}) + export class MyComp { + @Input() myProp!: string; + }` + }; + + env = LanguageServiceTestEnv.setup(); + const project = createModuleAndProjectWithDeclarations(env, 'test', files); + env.expectNoSourceDiagnostics(); + + const file = project.openFile('my-comp.ts'); + file.moveCursorToText('di¦r="something"'); + const result = file.getRenameInfo() as ts.RenameInfoSuccess; + expect(result.canRename).toEqual(true); + expect(result.displayName).toEqual('dir'); + expect(result.kind).toEqual('property'); + }); + }); + + function getReferencesAtPosition(file: OpenBuffer) { + env.expectNoSourceDiagnostics(); + const result = file.getReferencesAtPosition(); + return result?.map((item) => humanizeDocumentSpanLike(item, env)); + } + + function getRenameLocationsAtPosition(file: OpenBuffer) { + env.expectNoSourceDiagnostics(); + const result = file.fineRenameLocations(); + return result?.map((item) => humanizeDocumentSpanLike(item, env)); + } +}); diff --git a/packages/language-service/ivy/test/signature_help_spec.ts b/packages/language-service/ivy/test/signature_help_spec.ts new file mode 100644 index 0000000000..bd3657d920 --- /dev/null +++ b/packages/language-service/ivy/test/signature_help_spec.ts @@ -0,0 +1,142 @@ +/** + * @license + * 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 + */ + +import {initMockFileSystem} from '@angular/compiler-cli/src/ngtsc/file_system/testing'; +import {getText} from '@angular/language-service/ivy/testing/src/util'; + +import {LanguageServiceTestEnv, OpenBuffer} from '../testing'; + +describe('signature help', () => { + beforeEach(() => { + initMockFileSystem('Native'); + }); + + it('should handle an empty argument list', () => { + const main = setup(` + import {Component} from '@angular/core'; + + @Component({ + template: '{{ foo() }}', + }) + export class MainCmp { + foo(alpha: string, beta: number): string { + return 'blah'; + } + } + `); + main.moveCursorToText('foo(¦)'); + + const items = main.getSignatureHelpItems()!; + expect(items).toBeDefined(); + expect(items.applicableSpan.start).toEqual(main.cursor); + expect(items.applicableSpan.length).toEqual(0); + expect(items.argumentCount).toEqual(0); + expect(items.argumentIndex).toEqual(0); + expect(items.items.length).toEqual(1); + }); + + it('should handle a single argument', () => { + const main = setup(` + import {Component} from '@angular/core'; + + @Component({ + template: '{{ foo("test") }}', + }) + export class MainCmp { + foo(alpha: string, beta: number): string { + return 'blah'; + } + } + `); + main.moveCursorToText('foo("test"¦)'); + + const items = main.getSignatureHelpItems()!; + expect(items).toBeDefined(); + expect(getText(main.contents, items.applicableSpan)).toEqual('"test"'); + expect(items.argumentCount).toEqual(1); + expect(items.argumentIndex).toEqual(0); + expect(items.items.length).toEqual(1); + }); + + it('should handle a position within the first of two arguments', () => { + const main = setup(` + import {Component} from '@angular/core'; + + @Component({ + template: '{{ foo("test", 3) }}', + }) + export class MainCmp { + foo(alpha: string, beta: number): string { + return 'blah'; + } + } + `); + main.moveCursorToText('foo("te¦st", 3)'); + + const items = main.getSignatureHelpItems()!; + expect(items).toBeDefined(); + expect(getText(main.contents, items.applicableSpan)).toEqual('"test", 3'); + expect(items.argumentCount).toEqual(2); + expect(items.argumentIndex).toEqual(0); + expect(items.items.length).toEqual(1); + }); + + it('should handle a position within the second of two arguments', () => { + const main = setup(` + import {Component} from '@angular/core'; + + @Component({ + template: '{{ foo("test", 1 + 2) }}', + }) + export class MainCmp { + foo(alpha: string, beta: number): string { + return 'blah'; + } + } + `); + main.moveCursorToText('foo("test", 1 +¦ 2)'); + + const items = main.getSignatureHelpItems()!; + expect(items).toBeDefined(); + expect(getText(main.contents, items.applicableSpan)).toEqual('"test", 1 + 2'); + expect(items.argumentCount).toEqual(2); + expect(items.argumentIndex).toEqual(1); + expect(items.items.length).toEqual(1); + }); + + it('should handle a position within a new, EmptyExpr argument', () => { + const main = setup(` + import {Component} from '@angular/core'; + + @Component({ + template: '{{ foo("test", ) }}', + }) + export class MainCmp { + foo(alpha: string, beta: number): string { + return 'blah'; + } + } + `); + main.moveCursorToText('foo("test", ¦)'); + + const items = main.getSignatureHelpItems()!; + expect(items).toBeDefined(); + expect(getText(main.contents, items.applicableSpan)).toEqual('"test", '); + expect(items.argumentCount).toEqual(2); + expect(items.argumentIndex).toEqual(1); + expect(items.items.length).toEqual(1); + }); +}); + +function setup(mainTs: string): OpenBuffer { + const env = LanguageServiceTestEnv.setup(); + const project = env.addProject('test', { + 'main.ts': mainTs, + }); + return project.openFile('main.ts'); +} diff --git a/packages/language-service/ivy/test/ts_utils_spec.ts b/packages/language-service/ivy/test/ts_utils_spec.ts new file mode 100644 index 0000000000..6922a94497 --- /dev/null +++ b/packages/language-service/ivy/test/ts_utils_spec.ts @@ -0,0 +1,86 @@ +/** + * @license + * 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 + */ + +import {initMockFileSystem} from '@angular/compiler-cli/src/ngtsc/file_system/testing'; +import * as ts from 'typescript'; +import {LanguageServiceTestEnv, OpenBuffer, Project} from '../testing'; +import {collectMemberMethods, findTightestNode} from '../ts_utils'; + +describe('ts utils', () => { + describe('collectMemberMethods', () => { + beforeEach(() => { + initMockFileSystem('Native'); + }); + + it('gets only methods in class, not getters, setters, or properties', () => { + const files = { + 'app.ts': ` + export class AppCmp { + prop!: string; + get myString(): string { + return ''; + } + set myString(v: string) { + } + + one() {} + two() {} + }`, + }; + const env = LanguageServiceTestEnv.setup(); + const project = env.addProject('test', files); + const appFile = project.openFile('app.ts'); + appFile.moveCursorToText('AppC¦mp'); + const memberMethods = getMemberMethodNames(project, appFile); + expect(memberMethods).toEqual(['one', 'two']); + }); + + it('gets inherited methods in class', () => { + const files = { + 'app.ts': ` + export class BaseClass { + baseMethod() {} + } + export class AppCmp extends BaseClass {}`, + }; + const env = LanguageServiceTestEnv.setup(); + const project = env.addProject('test', files); + const appFile = project.openFile('app.ts'); + appFile.moveCursorToText('AppC¦mp'); + const memberMethods = getMemberMethodNames(project, appFile); + expect(memberMethods).toEqual(['baseMethod']); + }); + + it('does not return duplicates if base method is overridden', () => { + const files = { + 'app.ts': ` + export class BaseClass { + baseMethod() {} + } + export class AppCmp extends BaseClass { + baseMethod() {} + }`, + }; + const env = LanguageServiceTestEnv.setup(); + const project = env.addProject('test', files); + const appFile = project.openFile('app.ts'); + appFile.moveCursorToText('AppC¦mp'); + const memberMethods = getMemberMethodNames(project, appFile); + expect(memberMethods).toEqual(['baseMethod']); + }); + + function getMemberMethodNames(project: Project, file: OpenBuffer): string[] { + const sf = project.getSourceFile('app.ts')!; + const node = findTightestNode(sf, file.cursor)!; + expect(ts.isClassDeclaration(node.parent)).toBe(true); + return collectMemberMethods(node.parent as ts.ClassDeclaration, project.getTypeChecker()) + .map(m => m.name.getText()) + .sort(); + } + }); +}); diff --git a/packages/language-service/ivy/test/type_definitions_spec.ts b/packages/language-service/ivy/test/type_definitions_spec.ts index ebe6ff11fa..a20c0d30d2 100644 --- a/packages/language-service/ivy/test/type_definitions_spec.ts +++ b/packages/language-service/ivy/test/type_definitions_spec.ts @@ -8,7 +8,7 @@ import {initMockFileSystem} from '@angular/compiler-cli/src/ngtsc/file_system/testing'; -import {humanizeDocumentSpanLike, LanguageServiceTestEnv, Project} from '../testing'; +import {assertFileNames, assertTextSpans, humanizeDocumentSpanLike, LanguageServiceTestEnv, Project} from '../testing'; describe('type definitions', () => { let env: LanguageServiceTestEnv; @@ -33,11 +33,10 @@ describe('type definitions', () => { const project = env.addProject('test', files, {strictTemplates: false}); const definitions = getTypeDefinitionsAndAssertBoundSpan(project, {templateOverride: '{{"1/1/2020" | dat¦e}}'}); - expect(definitions!.length).toEqual(1); + expect(definitions!.length).toEqual(3); - const [def] = definitions; - expect(def.textSpan).toContain('DatePipe'); - expect(def.contextSpan).toContain('DatePipe'); + assertTextSpans(definitions, ['transform']); + assertFileNames(definitions, ['index.d.ts']); }); function getTypeDefinitionsAndAssertBoundSpan( diff --git a/packages/language-service/ivy/testing/src/buffer.ts b/packages/language-service/ivy/testing/src/buffer.ts index da6d0a2b9f..4069e2169c 100644 --- a/packages/language-service/ivy/testing/src/buffer.ts +++ b/packages/language-service/ivy/testing/src/buffer.ts @@ -70,9 +70,10 @@ export class OpenBuffer { getCompletionEntryDetails( entryName: string, formatOptions?: ts.FormatCodeOptions|ts.FormatCodeSettings, - preferences?: ts.UserPreferences): ts.CompletionEntryDetails|undefined { + preferences?: ts.UserPreferences, data?: ts.CompletionEntryData): ts.CompletionEntryDetails + |undefined { return this.ngLS.getCompletionEntryDetails( - this.scriptInfo.fileName, this._cursor, entryName, formatOptions, preferences); + this.scriptInfo.fileName, this._cursor, entryName, formatOptions, preferences, data); } getTcb() { @@ -98,6 +99,10 @@ export class OpenBuffer { getRenameInfo() { return this.ngLS.getRenameInfo(this.scriptInfo.fileName, this._cursor); } + + getSignatureHelpItems() { + return this.ngLS.getSignatureHelpItems(this.scriptInfo.fileName, this._cursor); + } } /** @@ -114,4 +119,4 @@ function extractCursorInfo(textWithCursor: string): {cursor: number, text: strin cursor, text: textWithCursor.substr(0, cursor) + textWithCursor.substr(cursor + 1), }; -} \ No newline at end of file +} diff --git a/packages/language-service/ivy/testing/src/host.ts b/packages/language-service/ivy/testing/src/host.ts deleted file mode 100644 index 51fdea238c..0000000000 --- a/packages/language-service/ivy/testing/src/host.ts +++ /dev/null @@ -1,118 +0,0 @@ -/** - * @license - * 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 - */ - -import {absoluteFrom} from '@angular/compiler-cli/src/ngtsc/file_system'; -import {MockFileSystem} from '@angular/compiler-cli/src/ngtsc/file_system/testing'; - -import * as ts from 'typescript/lib/tsserverlibrary'; - -const NOOP_FILE_WATCHER: ts.FileWatcher = { - close() {} -}; - -export class MockServerHost implements ts.server.ServerHost { - constructor(private fs: MockFileSystem) {} - - get newLine(): string { - return '\n'; - } - - get useCaseSensitiveFileNames(): boolean { - return this.fs.isCaseSensitive(); - } - - readFile(path: string, encoding?: string): string|undefined { - return this.fs.readFile(absoluteFrom(path)); - } - - resolvePath(path: string): string { - return this.fs.resolve(path); - } - - fileExists(path: string): boolean { - const absPath = absoluteFrom(path); - return this.fs.exists(absPath) && this.fs.lstat(absPath).isFile(); - } - - directoryExists(path: string): boolean { - const absPath = absoluteFrom(path); - return this.fs.exists(absPath) && this.fs.lstat(absPath).isDirectory(); - } - - createDirectory(path: string): void { - this.fs.ensureDir(absoluteFrom(path)); - } - - getExecutingFilePath(): string { - // This is load-bearing, as TypeScript uses the result of this call to locate the directory in - // which it expects to find .d.ts files for the "standard libraries" - DOM, ES2015, etc. - return '/node_modules/typescript/lib/tsserver.js'; - } - - getCurrentDirectory(): string { - return '/'; - } - - createHash(data: string): string { - return ts.sys.createHash!(data); - } - - get args(): string[] { - throw new Error('Property not implemented.'); - } - - watchFile( - path: string, callback: ts.FileWatcherCallback, pollingInterval?: number, - options?: ts.WatchOptions): ts.FileWatcher { - return NOOP_FILE_WATCHER; - } - - watchDirectory( - path: string, callback: ts.DirectoryWatcherCallback, recursive?: boolean, - options?: ts.WatchOptions): ts.FileWatcher { - return NOOP_FILE_WATCHER; - } - - setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]) { - throw new Error('Method not implemented.'); - } - - clearTimeout(timeoutId: any): void { - throw new Error('Method not implemented.'); - } - - setImmediate(callback: (...args: any[]) => void, ...args: any[]) { - throw new Error('Method not implemented.'); - } - - clearImmediate(timeoutId: any): void { - throw new Error('Method not implemented.'); - } - - write(s: string): void { - throw new Error('Method not implemented.'); - } - - writeFile(path: string, data: string, writeByteOrderMark?: boolean): void { - throw new Error('Method not implemented.'); - } - - getDirectories(path: string): string[] { - throw new Error('Method not implemented.'); - } - - readDirectory( - path: string, extensions?: readonly string[], exclude?: readonly string[], - include?: readonly string[], depth?: number): string[] { - throw new Error('Method not implemented.'); - } - - exit(exitCode?: number): void { - throw new Error('Method not implemented.'); - } -} diff --git a/packages/language-service/ivy/testing/src/project.ts b/packages/language-service/ivy/testing/src/project.ts index 37ae237eda..b3dc513405 100644 --- a/packages/language-service/ivy/testing/src/project.ts +++ b/packages/language-service/ivy/testing/src/project.ts @@ -103,6 +103,7 @@ export class Project { // Mark the project as dirty because the act of opening a file may result in the version // changing since TypeScript will `switchToScriptVersionCache` when a file is opened. // Note that this emulates what we have to do in the server/extension as well. + // TODO: remove this once PR #41475 lands this.tsProject.markAsDirty(); scriptInfo = this.tsProject.getScriptInfo(fileName); @@ -116,6 +117,15 @@ export class Project { return this.buffers.get(projectFileName)!; } + getSourceFile(projectFileName: string): ts.SourceFile|undefined { + const fileName = absoluteFrom(`/${this.name}/${projectFileName}`); + return this.tsProject.getSourceFile(this.projectService.toPath(fileName)); + } + + getTypeChecker(): ts.TypeChecker { + return this.ngLS.compilerFactory.getOrCreate().getCurrentProgram().getTypeChecker(); + } + getDiagnosticsForFile(projectFileName: string): ts.Diagnostic[] { const fileName = absoluteFrom(`/${this.name}/${projectFileName}`); const diagnostics: ts.Diagnostic[] = []; @@ -158,8 +168,6 @@ export class Project { const ngDiagnostics = ngCompiler.getDiagnosticsForFile(sf, OptimizeFor.WholeProgram); expect(ngDiagnostics.map(diag => diag.messageText)).toEqual([]); } - - this.ngLS.compilerFactory.registerLastKnownProgram(); } expectNoTemplateDiagnostics(projectFileName: string, className: string): void { @@ -172,7 +180,6 @@ export class Project { const component = getClassOrError(sf, className); const diags = this.getTemplateTypeChecker().getDiagnosticsForComponent(component); - this.ngLS.compilerFactory.registerLastKnownProgram(); expect(diags.map(diag => diag.messageText)).toEqual([]); } diff --git a/packages/language-service/ivy/testing/src/util.ts b/packages/language-service/ivy/testing/src/util.ts index b763c77f4d..09bfb0cc5e 100644 --- a/packages/language-service/ivy/testing/src/util.ts +++ b/packages/language-service/ivy/testing/src/util.ts @@ -38,7 +38,7 @@ export function isNgSpecificDiagnostic(diag: ts.Diagnostic): boolean { } function getFirstClassDeclaration(declaration: string) { - const matches = declaration.match(/(?:export class )(\w+)(?:\s|\{)/); + const matches = declaration.match(/(?:export class )(\w+)(?:\s|\{|<)/); if (matches === null || matches.length !== 2) { throw new Error(`Did not find exactly one exported class in: ${declaration}`); } @@ -101,4 +101,4 @@ function last(array: T[]): T { throw new Error(`last() called on empty array`); } return array[array.length - 1]; -} \ No newline at end of file +} diff --git a/packages/language-service/ivy/ts_plugin.ts b/packages/language-service/ivy/ts_plugin.ts index 5d964b1db4..e564633a8e 100644 --- a/packages/language-service/ivy/ts_plugin.ts +++ b/packages/language-service/ivy/ts_plugin.ts @@ -95,15 +95,17 @@ export function create(info: ts.server.PluginCreateInfo): NgLanguageService { function getCompletionEntryDetails( fileName: string, position: number, entryName: string, formatOptions: ts.FormatCodeOptions|ts.FormatCodeSettings|undefined, source: string|undefined, - preferences: ts.UserPreferences|undefined): ts.CompletionEntryDetails|undefined { + preferences: ts.UserPreferences|undefined, + data: ts.CompletionEntryData|undefined): ts.CompletionEntryDetails|undefined { if (angularOnly) { return ngLS.getCompletionEntryDetails( - fileName, position, entryName, formatOptions, preferences); + fileName, position, entryName, formatOptions, preferences, data); } else { // If TS could answer the query, then return that result. Otherwise, return from Angular LS. return tsLS.getCompletionEntryDetails( - fileName, position, entryName, formatOptions, source, preferences) ?? - ngLS.getCompletionEntryDetails(fileName, position, entryName, formatOptions, preferences); + fileName, position, entryName, formatOptions, source, preferences, data) ?? + ngLS.getCompletionEntryDetails( + fileName, position, entryName, formatOptions, preferences, data); } } @@ -130,6 +132,17 @@ export function create(info: ts.server.PluginCreateInfo): NgLanguageService { return diagnostics; } + function getSignatureHelpItems( + fileName: string, position: number, + options: ts.SignatureHelpItemsOptions): ts.SignatureHelpItems|undefined { + if (angularOnly) { + return ngLS.getSignatureHelpItems(fileName, position, options); + } else { + return tsLS.getSignatureHelpItems(fileName, position, options) ?? + ngLS.getSignatureHelpItems(fileName, position, options); + } + } + function getTcb(fileName: string, position: number): GetTcbResponse|undefined { return ngLS.getTcb(fileName, position); } @@ -157,6 +170,7 @@ export function create(info: ts.server.PluginCreateInfo): NgLanguageService { getTcb, getCompilerOptionsDiagnostics, getComponentLocationsForTemplate, + getSignatureHelpItems, }; } diff --git a/packages/language-service/ivy/ts_utils.ts b/packages/language-service/ivy/ts_utils.ts index ef52343337..33c9b80aca 100644 --- a/packages/language-service/ivy/ts_utils.ts +++ b/packages/language-service/ivy/ts_utils.ts @@ -79,3 +79,18 @@ export function getClassDeclFromDecoratorProp(propAsgnNode: ts.PropertyAssignmen const classDeclNode = decorator.parent; return classDeclNode; } + +/** + * Collects all member methods, including those from base classes. + */ +export function collectMemberMethods( + clazz: ts.ClassDeclaration, typeChecker: ts.TypeChecker): ts.MethodDeclaration[] { + const members: ts.MethodDeclaration[] = []; + const apparentProps = typeChecker.getTypeAtLocation(clazz).getApparentProperties(); + for (const prop of apparentProps) { + if (prop.valueDeclaration && ts.isMethodDeclaration(prop.valueDeclaration)) { + members.push(prop.valueDeclaration); + } + } + return members; +} diff --git a/packages/language-service/ivy/utils.ts b/packages/language-service/ivy/utils.ts index a7ab8156b8..08a3ce69e4 100644 --- a/packages/language-service/ivy/utils.ts +++ b/packages/language-service/ivy/utils.ts @@ -121,7 +121,7 @@ function getInlineTemplateInfoAtPosition( export function getTemplateInfoAtPosition( fileName: string, position: number, compiler: NgCompiler): TemplateInfo|undefined { if (isTypeScriptFile(fileName)) { - const sf = compiler.getNextProgram().getSourceFile(fileName); + const sf = compiler.getCurrentProgram().getSourceFile(fileName); if (sf === undefined) { return undefined; } @@ -171,7 +171,7 @@ function getFirstComponentForTemplateFile(fileName: string, compiler: NgCompiler * Given an attribute node, converts it to string form. */ function toAttributeString(attribute: t.TextAttribute|t.BoundAttribute|t.BoundEvent): string { - if (attribute instanceof t.BoundEvent) { + if (attribute instanceof t.BoundEvent || attribute instanceof t.BoundAttribute) { return `[${attribute.name}]`; } else { return `[${attribute.name}=${attribute.valueSpan?.toString() ?? ''}]`; @@ -374,4 +374,4 @@ export function getTemplateLocationFromShimLocation( return null; } return {templateUrl, span}; -} \ No newline at end of file +} diff --git a/packages/language-service/package.json b/packages/language-service/package.json index 6bb933885d..c4f76eecc3 100644 --- a/packages/language-service/package.json +++ b/packages/language-service/package.json @@ -6,6 +6,9 @@ "typings": "./index.d.ts", "author": "angular", "license": "MIT", + "engines": { + "node": "^12.14.1 || >=14.0.0" + }, "repository": { "type": "git", "url": "https://github.com/angular/angular.git", @@ -13,8 +16,5 @@ }, "ng-update": { "packageGroup": "NG_UPDATE_PACKAGE_GROUP" - }, - "publishConfig":{ - "registry":"https://wombat-dressing-room.appspot.com" } } diff --git a/packages/language-service/src/completions.ts b/packages/language-service/src/completions.ts index 6474911c12..378d204f76 100644 --- a/packages/language-service/src/completions.ts +++ b/packages/language-service/src/completions.ts @@ -408,23 +408,23 @@ class ExpressionVisitor extends NullTemplateVisitor { return Array.from(this.completions.values()); } - visitDirectiveProperty(ast: BoundDirectivePropertyAst): void { + override visitDirectiveProperty(ast: BoundDirectivePropertyAst): void { this.processExpressionCompletions(ast.value); } - visitElementProperty(ast: BoundElementPropertyAst): void { + override visitElementProperty(ast: BoundElementPropertyAst): void { this.processExpressionCompletions(ast.value); } - visitEvent(ast: BoundEventAst): void { + override visitEvent(ast: BoundEventAst): void { this.processExpressionCompletions(ast.handler); } - visitElement(): void { + override visitElement(): void { // no-op for now } - visitAttr(ast: AttrAst) { + override visitAttr(ast: AttrAst) { const binding = getBindingDescriptor(ast.name); if (binding && binding.kind === ATTR.KW_MICROSYNTAX) { // This a template binding given by micro syntax expression. @@ -459,7 +459,7 @@ class ExpressionVisitor extends NullTemplateVisitor { } } - visitReference(_ast: ReferenceAst, context: ElementAst) { + override visitReference(_ast: ReferenceAst, context: ElementAst) { context.directives.forEach(dir => { const {exportAs} = dir.directive; if (exportAs) { @@ -469,7 +469,7 @@ class ExpressionVisitor extends NullTemplateVisitor { }); } - visitBoundText(ast: BoundTextAst) { + override visitBoundText(ast: BoundTextAst) { if (inSpan(this.position, ast.value.sourceSpan)) { const completions = getExpressionCompletions( this.getExpressionScope(), ast.value, this.position, this.info.template); diff --git a/packages/language-service/src/expression_diagnostics.ts b/packages/language-service/src/expression_diagnostics.ts index bd6e66a961..0327a7daa7 100644 --- a/packages/language-service/src/expression_diagnostics.ts +++ b/packages/language-service/src/expression_diagnostics.ts @@ -42,11 +42,11 @@ function getReferences(info: ng.DiagnosticTemplateInfo): SymbolDeclaration[] { } const visitor = new class extends RecursiveTemplateAstVisitor { - visitEmbeddedTemplate(ast: EmbeddedTemplateAst, context: any): any { + override visitEmbeddedTemplate(ast: EmbeddedTemplateAst, context: any): any { super.visitEmbeddedTemplate(ast, context); processReferences(ast.references); } - visitElement(ast: ElementAst, context: any): any { + override visitElement(ast: ElementAst, context: any): any { super.visitElement(ast, context); processReferences(ast.references); } @@ -257,38 +257,38 @@ class ExpressionDiagnosticsVisitor extends RecursiveTemplateAstVisitor { this.path = new AstPath([]); } - visitDirective(ast: DirectiveAst, context: any): any { + override visitDirective(ast: DirectiveAst, context: any): any { // Override the default child visitor to ignore the host properties of a directive. if (ast.inputs && ast.inputs.length) { templateVisitAll(this, ast.inputs, context); } } - visitBoundText(ast: BoundTextAst): void { + override visitBoundText(ast: BoundTextAst): void { this.push(ast); this.diagnoseExpression(ast.value, ast.sourceSpan.start.offset, false); this.pop(); } - visitDirectiveProperty(ast: BoundDirectivePropertyAst): void { + override visitDirectiveProperty(ast: BoundDirectivePropertyAst): void { this.push(ast); this.diagnoseExpression(ast.value, this.attributeValueLocation(ast), false); this.pop(); } - visitElementProperty(ast: BoundElementPropertyAst): void { + override visitElementProperty(ast: BoundElementPropertyAst): void { this.push(ast); this.diagnoseExpression(ast.value, this.attributeValueLocation(ast), false); this.pop(); } - visitEvent(ast: BoundEventAst): void { + override visitEvent(ast: BoundEventAst): void { this.push(ast); this.diagnoseExpression(ast.handler, this.attributeValueLocation(ast), true); this.pop(); } - visitVariable(ast: VariableAst): void { + override visitVariable(ast: VariableAst): void { const directive = this.directiveSummary; if (directive && ast.value) { const context = this.info.query.getTemplateContext(directive.type.reference)!; @@ -304,13 +304,13 @@ class ExpressionDiagnosticsVisitor extends RecursiveTemplateAstVisitor { } } - visitElement(ast: ElementAst, context: any): void { + override visitElement(ast: ElementAst, context: any): void { this.push(ast); super.visitElement(ast, context); this.pop(); } - visitEmbeddedTemplate(ast: EmbeddedTemplateAst, context: any): any { + override visitEmbeddedTemplate(ast: EmbeddedTemplateAst, context: any): any { const previousDirectiveSummary = this.directiveSummary; this.push(ast); diff --git a/packages/language-service/src/expression_type.ts b/packages/language-service/src/expression_type.ts index 064a2caffd..f4e1972b79 100644 --- a/packages/language-service/src/expression_type.ts +++ b/packages/language-service/src/expression_type.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {AST, AstVisitor, ASTWithName, Binary, BindingPipe, Chain, Conditional, FunctionCall, ImplicitReceiver, Interpolation, KeyedRead, KeyedWrite, LiteralArray, LiteralMap, LiteralPrimitive, MethodCall, NonNullAssert, PrefixNot, PropertyRead, PropertyWrite, Quote, SafeMethodCall, SafePropertyRead, ThisReceiver, Unary} from '@angular/compiler'; +import {AST, AstVisitor, ASTWithName, Binary, BindingPipe, Chain, Conditional, FunctionCall, ImplicitReceiver, Interpolation, KeyedRead, KeyedWrite, LiteralArray, LiteralMap, LiteralPrimitive, MethodCall, NonNullAssert, PrefixNot, PropertyRead, PropertyWrite, Quote, SafeKeyedRead, SafeMethodCall, SafePropertyRead, ThisReceiver, Unary} from '@angular/compiler'; import {createDiagnostic, Diagnostic} from './diagnostic_messages'; import {BuiltinType, Signature, Symbol, SymbolQuery, SymbolTable} from './symbols'; @@ -271,7 +271,7 @@ export class AstType implements AstVisitor { } visitKeyedRead(ast: KeyedRead): Symbol { - const targetType = this.getType(ast.obj); + const targetType = this.getType(ast.receiver); const keyType = this.getType(ast.key); const result = targetType.indexed( keyType, ast.key instanceof LiteralPrimitive ? ast.key.value : undefined); @@ -379,6 +379,14 @@ export class AstType implements AstVisitor { return this.resolvePropertyRead(this.query.getNonNullableType(this.getType(ast.receiver)), ast); } + visitSafeKeyedRead(ast: SafeKeyedRead): Symbol { + const targetType = this.query.getNonNullableType(this.getType(ast.receiver)); + const keyType = this.getType(ast.key); + const result = targetType.indexed( + keyType, ast.key instanceof LiteralPrimitive ? ast.key.value : undefined); + return result || this.anyType; + } + /** * Gets the source of an expession AST. * The AST's sourceSpan is relative to the start of the template source code, which is contained diff --git a/packages/language-service/src/expressions.ts b/packages/language-service/src/expressions.ts index 5af34f8ba3..6f6ca46d83 100644 --- a/packages/language-service/src/expressions.ts +++ b/packages/language-service/src/expressions.ts @@ -17,7 +17,7 @@ type AstPath = AstPathBase; function findAstAt(ast: AST, position: number, excludeEmpty: boolean = false): AstPath { const path: AST[] = []; const visitor = new class extends RecursiveAstVisitor { - visit(ast: AST) { + override visit(ast: AST) { if ((!excludeEmpty || ast.sourceSpan.start < ast.sourceSpan.end) && inSpan(position, ast.sourceSpan)) { const isNotNarrower = path.length && !isNarrower(ast.span, path[path.length - 1].span); @@ -74,6 +74,7 @@ export function getExpressionCompletions( result = undefined; }, visitKeyedRead(_ast) {}, + visitSafeKeyedRead(_ast) {}, visitKeyedWrite(_ast) {}, visitLiteralArray(_ast) {}, visitLiteralMap(_ast) {}, @@ -168,6 +169,7 @@ export function getExpressionSymbol( visitThisReceiver(_ast) {}, visitInterpolation(_ast) {}, visitKeyedRead(_ast) {}, + visitSafeKeyedRead(_ast) {}, visitKeyedWrite(_ast) {}, visitLiteralArray(_ast) {}, visitLiteralMap(_ast) {}, diff --git a/packages/language-service/src/locate_symbol.ts b/packages/language-service/src/locate_symbol.ts index 1017117fb3..aa4d308b24 100644 --- a/packages/language-service/src/locate_symbol.ts +++ b/packages/language-service/src/locate_symbol.ts @@ -258,28 +258,28 @@ function findParentOfBinding( } } - visitEmbeddedTemplate(ast: EmbeddedTemplateAst, context: any): any { + override visitEmbeddedTemplate(ast: EmbeddedTemplateAst, context: any): any { return this.visitChildren(context, visit => { visit(ast.directives); visit(ast.children); }); } - visitElement(ast: ElementAst, context: any): any { + override visitElement(ast: ElementAst, context: any): any { return this.visitChildren(context, visit => { visit(ast.directives); visit(ast.children); }); } - visitDirective(ast: DirectiveAst) { + override visitDirective(ast: DirectiveAst) { const result = this.visitChildren(ast, visit => { visit(ast.inputs); }); return result; } - visitDirectiveProperty(ast: BoundDirectivePropertyAst, context: DirectiveAst) { + override visitDirectiveProperty(ast: BoundDirectivePropertyAst, context: DirectiveAst) { if (ast === binding) { res = context; } diff --git a/packages/language-service/src/template.ts b/packages/language-service/src/template.ts index c5aafa072d..e3edbc721e 100644 --- a/packages/language-service/src/template.ts +++ b/packages/language-service/src/template.ts @@ -87,9 +87,9 @@ abstract class BaseTemplate implements ng.TemplateSource { * `template` attribute in the decorator. */ export class InlineTemplate extends BaseTemplate { - public readonly fileName: string; - public readonly source: string; - public readonly span: ng.Span; + public override readonly fileName: string; + public override readonly source: string; + public override readonly span: ng.Span; constructor( templateNode: ts.StringLiteralLike, classDeclNode: ts.ClassDeclaration, @@ -119,7 +119,7 @@ export class InlineTemplate extends BaseTemplate { * a TS file. */ export class ExternalTemplate extends BaseTemplate { - public readonly span: ng.Span; + public override readonly span: ng.Span; constructor( public readonly source: string, public readonly fileName: string, diff --git a/packages/language-service/src/ts_plugin.ts b/packages/language-service/src/ts_plugin.ts index 671e811e81..0c26ec7fa9 100644 --- a/packages/language-service/src/ts_plugin.ts +++ b/packages/language-service/src/ts_plugin.ts @@ -119,23 +119,6 @@ export function create(info: tss.server.PluginCreateInfo): NgLanguageService { return ngLS.getDefinitionAndBoundSpan(fileName, position); } - function getTypeDefinitionAtPosition(fileName: string, position: number) { - // Not implemented in VE Language Service - return undefined; - } - - function getReferencesAtPosition(fileName: string, position: number) { - // Not implemented in VE Language Service - return undefined; - } - - function findRenameLocations( - fileName: string, position: number, findInStrings: boolean, findInComments: boolean, - providePrefixAndSuffixTextForRename?: boolean): readonly ts.RenameLocation[]|undefined { - // not implemented in VE Language Service - return undefined; - } - function getTcb(fileName: string, position: number) { // Not implemented in VE Language Service return undefined; @@ -155,9 +138,6 @@ export function create(info: tss.server.PluginCreateInfo): NgLanguageService { getSemanticDiagnostics, getDefinitionAtPosition, getDefinitionAndBoundSpan, - getTypeDefinitionAtPosition, - getReferencesAtPosition, - findRenameLocations, getTcb, getComponentLocationsForTemplate, }; diff --git a/packages/language-service/src/typescript_host.ts b/packages/language-service/src/typescript_host.ts index f3d24ca88a..9840fde62c 100644 --- a/packages/language-service/src/typescript_host.ts +++ b/packages/language-service/src/typescript_host.ts @@ -23,7 +23,7 @@ import {AstResult, Declaration, DeclarationError, DiagnosticMessageChain, Langua * syntactically incorrect templates. */ export class DummyHtmlParser extends HtmlParser { - parse(): ParseTreeResult { + override parse(): ParseTreeResult { return new ParseTreeResult([], []); } } @@ -32,7 +32,7 @@ export class DummyHtmlParser extends HtmlParser { * Avoid loading resources in the language servcie by using a dummy loader. */ export class DummyResourceLoader extends ResourceLoader { - get(_url: string): Promise { + override get(_url: string): Promise { return Promise.resolve(''); } } diff --git a/packages/language-service/src/typescript_symbols.ts b/packages/language-service/src/typescript_symbols.ts index 4412a1e5ac..12f9eb0d9e 100644 --- a/packages/language-service/src/typescript_symbols.ts +++ b/packages/language-service/src/typescript_symbols.ts @@ -242,6 +242,9 @@ function selectSignature(type: ts.Type, context: TypeContext, types: Symbol[]): function allParameterTypesMatch(signature: ts.Signature) { const tc = context.checker; return signature.getParameters().every((parameter: ts.Symbol, i: number) => { + if (parameter.valueDeclaration === undefined) { + return false; + } const type = tc.getTypeOfSymbolAtLocation(parameter, parameter.valueDeclaration); return type === passedInTypes[i]; }); @@ -348,7 +351,7 @@ class TypeWrapper implements Symbol { // If stringIndexType a primitive type(e.g. 'string'), the Symbol is undefined; // and in AstType.resolvePropertyRead method, the Symbol.type should get the right type. class StringIndexTypeWrapper extends TypeWrapper { - public readonly type = new TypeWrapper(this.tsType, this.context); + public override readonly type = new TypeWrapper(this.tsType, this.context); } class SymbolWrapper implements Symbol { diff --git a/packages/language-service/src/utils.ts b/packages/language-service/src/utils.ts index 70ca4caa38..5eddc26584 100644 --- a/packages/language-service/src/utils.ts +++ b/packages/language-service/src/utils.ts @@ -107,7 +107,7 @@ export function findTemplateAstAt(ast: TemplateAst[], position: number): Templat } } - visitEmbeddedTemplate(ast: EmbeddedTemplateAst, context: any): any { + override visitEmbeddedTemplate(ast: EmbeddedTemplateAst, context: any): any { return this.visitChildren(context, visit => { // Ignore reference, variable and providers visit(ast.attrs); @@ -116,7 +116,7 @@ export function findTemplateAstAt(ast: TemplateAst[], position: number): Templat }); } - visitElement(ast: ElementAst, context: any): any { + override visitElement(ast: ElementAst, context: any): any { return this.visitChildren(context, visit => { // Ingnore providers visit(ast.attrs); @@ -128,7 +128,7 @@ export function findTemplateAstAt(ast: TemplateAst[], position: number): Templat }); } - visitDirective(ast: DirectiveAst, context: any): any { + override visitDirective(ast: DirectiveAst, context: any): any { // Ignore the host properties of a directive const result = this.visitChildren(context, visit => { visit(ast.inputs); diff --git a/packages/language-service/test/mocks.ts b/packages/language-service/test/mocks.ts index 45f3ba6a6e..46d9ea432c 100644 --- a/packages/language-service/test/mocks.ts +++ b/packages/language-service/test/mocks.ts @@ -174,13 +174,13 @@ export class DiagnosticContext { const pipeResolver = new PipeResolver(this.reflector); const elementSchemaRegistry = new DomElementSchemaRegistry(); const resourceLoader = new class extends ResourceLoader { - get(url: string): Promise { + override get(url: string): Promise { return Promise.resolve(''); } }; const urlResolver = createOfflineCompileUrlResolver(); const htmlParser = new class extends HtmlParser { - parse(): ParseTreeResult { + override parse(): ParseTreeResult { return new ParseTreeResult([], []); } }; diff --git a/packages/language-service/test/project/app/app.component.ts b/packages/language-service/test/project/app/app.component.ts index 1bcbbe95eb..67a24e0da1 100644 --- a/packages/language-service/test/project/app/app.component.ts +++ b/packages/language-service/test/project/app/app.component.ts @@ -48,7 +48,11 @@ export class AppComponent { constNames = [{name: 'name'}] as const; private myField = 'My Field'; strOrNumber: string|number = ''; + name = 'Frodo'; setTitle(newTitle: string) { this.title = newTitle; } + setHero(obj: Hero) { + this.hero = obj; + } } diff --git a/packages/language-service/test/reflector_host_spec.ts b/packages/language-service/test/reflector_host_spec.ts index efc682f011..75f8ab964b 100644 --- a/packages/language-service/test/reflector_host_spec.ts +++ b/packages/language-service/test/reflector_host_spec.ts @@ -59,8 +59,8 @@ describe('reflector_host_spec', () => { // This resolves all Angular directives in the project. ngLSHost.getAnalyzedModules(); const secondCount = spy.calls.count(); - expect(secondCount).toBeGreaterThan(500); - expect(secondCount).toBeLessThan(600); + expect(secondCount).toBeGreaterThan(400); + expect(secondCount).toBeLessThan(500); spy.calls.reset(); // Third count is due to recompution after the program changes. diff --git a/packages/localize/BUILD.bazel b/packages/localize/BUILD.bazel index e768811b95..252da8efd6 100644 --- a/packages/localize/BUILD.bazel +++ b/packages/localize/BUILD.bazel @@ -1,4 +1,4 @@ -load("//tools:defaults.bzl", "ng_package", "ts_api_guardian_test_npm_package", "ts_library") +load("//tools:defaults.bzl", "api_golden_test_npm_package", "ng_package", "ts_library") package(default_visibility = ["//visibility:public"]) @@ -37,12 +37,12 @@ ng_package( ], ) -ts_api_guardian_test_npm_package( +api_golden_test_npm_package( name = "localize_api", - actualDir = "angular/packages/localize/npm_package", data = [ ":npm_package", "//goldens:public-api", ], - goldenDir = "angular/goldens/public-api/localize", + golden_dir = "angular/goldens/public-api/localize", + npm_package = "angular/packages/localize/npm_package", ) diff --git a/packages/localize/package.json b/packages/localize/package.json index ec855bd441..d39bb4b492 100644 --- a/packages/localize/package.json +++ b/packages/localize/package.json @@ -9,6 +9,9 @@ }, "author": "angular", "license": "MIT", + "engines": { + "node": "^12.14.1 || >=14.0.0" + }, "repository": { "type": "git", "url": "https://github.com/angular/angular.git" @@ -25,19 +28,13 @@ "**/init.js", "**/localize-init.umd.js" ], - "engines": { - "node": ">=8.0" - }, "dependencies": { "@babel/core": "7.8.3", - "glob": "7.1.2", - "yargs": "^16.2.0" + "glob": "7.1.7", + "yargs": "^17.0.0" }, "peerDependencies": { "@angular/compiler": "0.0.0-PLACEHOLDER", "@angular/compiler-cli": "0.0.0-PLACEHOLDER" - }, - "publishConfig": { - "registry": "https://wombat-dressing-room.appspot.com" } } diff --git a/packages/localize/schematics/ng-add/schema.json b/packages/localize/schematics/ng-add/schema.json index 1c255911ce..920343fb40 100644 --- a/packages/localize/schematics/ng-add/schema.json +++ b/packages/localize/schematics/ng-add/schema.json @@ -1,6 +1,6 @@ { - "$schema": "http://json-schema.org/schema", - "id": "SchematicsAngularLocalizeNgAdd", + "$schema": "http://json-schema.org/draft-07/schema", + "$id": "SchematicsAngularLocalizeNgAdd", "title": "Angular Localize Ng Add Schema", "type": "object", "properties": { diff --git a/packages/localize/src/localize/src/global.ts b/packages/localize/src/localize/src/global.ts index 81fff28bfe..b188112838 100644 --- a/packages/localize/src/localize/src/global.ts +++ b/packages/localize/src/localize/src/global.ts @@ -10,7 +10,18 @@ // This code to access the global object is mostly copied from `packages/core/src/util/global.ts` declare global { - var WorkerGlobalScope: any; + // The definition of `WorkerGlobalScope` must be compatible with the one in `lib.webworker.d.ts`, + // because all files under `packages/` are compiled together as part of the + // [legacy-unit-tests-saucelabs][1] CI job, including the `lib.webworker.d.ts` typings brought in + // by [service-worker/worker/src/service-worker.d.ts][2]. + // + // [1]: + // https://github.com/angular/angular/blob/ffeea63f43e6a7fd46be4a8cd5a5d254c98dea08/.circleci/config.yml#L681 + // [2]: + // https://github.com/angular/angular/blob/316dc2f12ce8931f5ff66fa5f8da21c0d251a337/packages/service-worker/worker/src/service-worker.d.ts#L9 + interface WorkerGlobalScope extends EventTarget, WindowOrWorkerGlobalScope {} + + var WorkerGlobalScope: {prototype: WorkerGlobalScope; new (): WorkerGlobalScope;}; } const __globalThis = typeof globalThis !== 'undefined' && globalThis; diff --git a/packages/localize/src/tools/BUILD.bazel b/packages/localize/src/tools/BUILD.bazel index 19fd9c6e92..2a2f7ded97 100644 --- a/packages/localize/src/tools/BUILD.bazel +++ b/packages/localize/src/tools/BUILD.bazel @@ -1,7 +1,7 @@ -package(default_visibility = ["//visibility:public"]) - load("//tools:defaults.bzl", "pkg_npm", "ts_config", "ts_library") +package(default_visibility = ["//visibility:public"]) + ts_config( name = "tsconfig", src = "tsconfig-build.json", diff --git a/packages/localize/src/tools/src/extract/translation_files/xml_file.ts b/packages/localize/src/tools/src/extract/translation_files/xml_file.ts index a38ca3b11e..1d402cb419 100644 --- a/packages/localize/src/tools/src/extract/translation_files/xml_file.ts +++ b/packages/localize/src/tools/src/extract/translation_files/xml_file.ts @@ -103,4 +103,4 @@ const _ESCAPED_CHARS: [RegExp, string][] = [ function escapeXml(text: string): string { return _ESCAPED_CHARS.reduce( (text: string, entry: [RegExp, string]) => text.replace(entry[0], entry[1]), text); -} \ No newline at end of file +} diff --git a/packages/localize/src/tools/src/translate/translation_files/message_serialization/message_serializer.ts b/packages/localize/src/tools/src/translate/translation_files/message_serialization/message_serializer.ts index af0fd9c3a7..57487a7b35 100644 --- a/packages/localize/src/tools/src/translate/translation_files/message_serialization/message_serializer.ts +++ b/packages/localize/src/tools/src/translate/translation_files/message_serialization/message_serializer.ts @@ -36,7 +36,7 @@ export class MessageSerializer extends BaseVisitor { return this.renderer.message; } - visitElement(element: Element): void { + override visitElement(element: Element): void { if (this.config.placeholder && element.name === this.config.placeholder.elementName) { const name = getAttrOrThrow(element, this.config.placeholder.nameAttribute); const body = this.config.placeholder.bodyAttribute && @@ -55,18 +55,18 @@ export class MessageSerializer extends BaseVisitor { } } - visitText(text: Text): void { + override visitText(text: Text): void { this.renderer.text(text.value); } - visitExpansion(expansion: Expansion): void { + override visitExpansion(expansion: Expansion): void { this.renderer.startIcu(); this.renderer.text(`${expansion.switchValue}, ${expansion.type},`); visitAll(this, expansion.cases); this.renderer.endIcu(); } - visitExpansionCase(expansionCase: ExpansionCase): void { + override visitExpansionCase(expansionCase: ExpansionCase): void { this.renderer.text(` ${expansionCase.value} {`); this.renderer.startContainer(); visitAll(this, expansionCase.expression); diff --git a/packages/localize/src/tools/src/translate/translation_files/translation_parsers/xliff1_translation_parser.ts b/packages/localize/src/tools/src/translate/translation_files/translation_parsers/xliff1_translation_parser.ts index dacc24e935..c70a56578a 100644 --- a/packages/localize/src/tools/src/translate/translation_files/translation_parsers/xliff1_translation_parser.ts +++ b/packages/localize/src/tools/src/translate/translation_files/translation_parsers/xliff1_translation_parser.ts @@ -106,7 +106,7 @@ export class Xliff1TranslationParser implements TranslationParser` child element - const targetMessage = element.children.find(isNamedElement('target')); + let targetMessage = element.children.find(isNamedElement('target')); if (targetMessage === undefined) { + // Warn if there is no `` child element addParseDiagnostic( - bundle.diagnostics, element.sourceSpan, 'Missing required element', - ParseErrorLevel.ERROR); - return; + bundle.diagnostics, element.sourceSpan, 'Missing element', + ParseErrorLevel.WARNING); + + // Fallback to the `` element if available. + targetMessage = element.children.find(isNamedElement('source')); + if (targetMessage === undefined) { + // Error if there is neither `` nor ``. + addParseDiagnostic( + bundle.diagnostics, element.sourceSpan, + 'Missing required element: one of or is required', + ParseErrorLevel.ERROR); + return; + } } const {translation, parseErrors, serializeErrors} = serializeTranslationMessage(targetMessage, { diff --git a/packages/localize/src/tools/src/translate/translation_files/translation_parsers/xliff2_translation_parser.ts b/packages/localize/src/tools/src/translate/translation_files/translation_parsers/xliff2_translation_parser.ts index 2f5edf03ef..4eef66fd67 100644 --- a/packages/localize/src/tools/src/translate/translation_files/translation_parsers/xliff2_translation_parser.ts +++ b/packages/localize/src/tools/src/translate/translation_files/translation_parsers/xliff2_translation_parser.ts @@ -90,7 +90,7 @@ interface TranslationVisitorContext { } class Xliff2TranslationVisitor extends BaseVisitor { - visitElement(element: Element, {bundle, unit}: TranslationVisitorContext): any { + override visitElement(element: Element, {bundle, unit}: TranslationVisitorContext): any { if (element.name === 'unit') { this.visitUnitElement(element, bundle); } else if (element.name === 'segment') { @@ -132,12 +132,23 @@ class Xliff2TranslationVisitor extends BaseVisitor { return; } - const targetMessage = element.children.find(isNamedElement('target')); + let targetMessage = element.children.find(isNamedElement('target')); if (targetMessage === undefined) { + // Warn if there is no `` child element addParseDiagnostic( - bundle.diagnostics, element.sourceSpan, 'Missing required element', - ParseErrorLevel.ERROR); - return; + bundle.diagnostics, element.sourceSpan, 'Missing element', + ParseErrorLevel.WARNING); + + // Fallback to the `` element if available. + targetMessage = element.children.find(isNamedElement('source')); + if (targetMessage === undefined) { + // Error if there is neither `` nor ``. + addParseDiagnostic( + bundle.diagnostics, element.sourceSpan, + 'Missing required element: one of or is required', + ParseErrorLevel.ERROR); + return; + } } const {translation, parseErrors, serializeErrors} = serializeTranslationMessage(targetMessage, { diff --git a/packages/localize/src/tools/src/translate/translation_files/translation_parsers/xtb_translation_parser.ts b/packages/localize/src/tools/src/translate/translation_files/translation_parsers/xtb_translation_parser.ts index bb1370b62a..337be9ef5f 100644 --- a/packages/localize/src/tools/src/translate/translation_files/translation_parsers/xtb_translation_parser.ts +++ b/packages/localize/src/tools/src/translate/translation_files/translation_parsers/xtb_translation_parser.ts @@ -82,7 +82,7 @@ export class XtbTranslationParser implements TranslationParser { '}\n }}\n}', ]); }); -}); \ No newline at end of file +}); diff --git a/packages/localize/src/tools/test/translate/translation_files/translation_parsers/xliff1_translation_parser_spec.ts b/packages/localize/src/tools/test/translate/translation_files/translation_parsers/xliff1_translation_parser_spec.ts index 9f475e54e8..4eea42a389 100644 --- a/packages/localize/src/tools/test/translate/translation_files/translation_parsers/xliff1_translation_parser_spec.ts +++ b/packages/localize/src/tools/test/translate/translation_files/translation_parsers/xliff1_translation_parser_spec.ts @@ -9,754 +9,790 @@ import {ɵcomputeMsgId, ɵmakeParsedTranslation} from '@angular/localize'; import {ParseAnalysis, ParsedTranslationBundle} from '../../../../src/translate/translation_files/translation_parsers/translation_parser'; import {Xliff1TranslationParser} from '../../../../src/translate/translation_files/translation_parsers/xliff1_translation_parser'; -describe('Xliff1TranslationParser', () => { - describe('canParse()', () => { - it('should return true only if the file contains an element with version="1.2" attribute', - () => { - const parser = new Xliff1TranslationParser(); - expect(parser.canParse( - '/some/file.xlf', - '')) - .toBeTruthy(); - expect(parser.canParse( - '/some/file.json', - '')) - .toBeTruthy(); - expect(parser.canParse('/some/file.xliff', '')).toBeTruthy(); - expect(parser.canParse('/some/file.json', '')).toBeTruthy(); - expect(parser.canParse('/some/file.xlf', '')).toBe(false); - expect(parser.canParse('/some/file.xlf', '')).toBe(false); - expect(parser.canParse('/some/file.xlf', '')).toBe(false); - expect(parser.canParse('/some/file.json', '')).toBe(false); - }); - }); +describe( + 'Xliff1TranslationParser', () => { + describe('canParse()', () => { + it('should return true only if the file contains an element with version="1.2" attribute', + () => { + const parser = new Xliff1TranslationParser(); + expect(parser.canParse( + '/some/file.xlf', + '')) + .toBeTruthy(); + expect(parser.canParse( + '/some/file.json', + '')) + .toBeTruthy(); + expect(parser.canParse('/some/file.xliff', '')).toBeTruthy(); + expect(parser.canParse('/some/file.json', '')).toBeTruthy(); + expect(parser.canParse('/some/file.xlf', '')).toBe(false); + expect(parser.canParse('/some/file.xlf', '')).toBe(false); + expect(parser.canParse('/some/file.xlf', '')).toBe(false); + expect(parser.canParse('/some/file.json', '')).toBe(false); + }); + }); - describe('analyze()', () => { - it('should return a success object if the file contains an element with version="1.2" attribute', - () => { - const parser = new Xliff1TranslationParser(); - expect(parser.analyze('/some/file.xlf', '')) - .toEqual(jasmine.objectContaining({canParse: true, hint: jasmine.any(Object)})); - expect(parser.analyze('/some/file.json', '')) - .toEqual(jasmine.objectContaining({canParse: true, hint: jasmine.any(Object)})); - expect(parser.analyze('/some/file.xliff', '')) - .toEqual(jasmine.objectContaining({canParse: true, hint: jasmine.any(Object)})); - expect(parser.analyze('/some/file.json', '')) - .toEqual(jasmine.objectContaining({canParse: true, hint: jasmine.any(Object)})); - }); + describe('analyze()', () => { + it('should return a success object if the file contains an element with version="1.2" attribute', + () => { + const parser = new Xliff1TranslationParser(); + expect(parser.analyze('/some/file.xlf', '')) + .toEqual(jasmine.objectContaining({canParse: true, hint: jasmine.any(Object)})); + expect(parser.analyze('/some/file.json', '')) + .toEqual(jasmine.objectContaining({canParse: true, hint: jasmine.any(Object)})); + expect(parser.analyze('/some/file.xliff', '')) + .toEqual(jasmine.objectContaining({canParse: true, hint: jasmine.any(Object)})); + expect(parser.analyze('/some/file.json', '')) + .toEqual(jasmine.objectContaining({canParse: true, hint: jasmine.any(Object)})); + }); - it('should return a failure object if the file cannot be parsed as XLIFF 1.2', () => { - const parser = new Xliff1TranslationParser(); - expect(parser.analyze('/some/file.xlf', '')).toEqual(jasmine.objectContaining({ - canParse: false - })); - expect(parser.analyze('/some/file.xlf', '')) - .toEqual(jasmine.objectContaining({canParse: false})); - expect(parser.analyze('/some/file.xlf', '')).toEqual(jasmine.objectContaining({ - canParse: false - })); - expect(parser.analyze('/some/file.json', '')).toEqual(jasmine.objectContaining({ - canParse: false - })); + it('should return a failure object if the file cannot be parsed as XLIFF 1.2', () => { + const parser = new Xliff1TranslationParser(); + expect(parser.analyze('/some/file.xlf', '')).toEqual(jasmine.objectContaining({ + canParse: false + })); + expect(parser.analyze('/some/file.xlf', '')) + .toEqual(jasmine.objectContaining({canParse: false})); + expect(parser.analyze('/some/file.xlf', '')).toEqual(jasmine.objectContaining({ + canParse: false + })); + expect(parser.analyze('/some/file.json', '')).toEqual(jasmine.objectContaining({ + canParse: false + })); + }); + + it('should return a diagnostics object when the file is not a valid format', () => { + let result: ParseAnalysis; + const parser = new Xliff1TranslationParser(); + + result = parser.analyze('/some/file.xlf', ''); + expect(result.diagnostics.messages).toEqual([ + {type: 'warning', message: 'The XML file does not contain a root node.'} + ]); + + result = parser.analyze('/some/file.xlf', ''); + expect(result.diagnostics.messages).toEqual([{ + type: 'warning', + message: + 'The node does not have the required attribute: version="1.2". ("[WARNING ->]"): /some/file.xlf@0:0' + }]); + + result = parser.analyze('/some/file.xlf', ''); + expect(result.diagnostics.messages).toEqual([{ + type: 'error', + message: + 'Unexpected closing tag "file". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags ("[ERROR ->]"): /some/file.xlf@0:21' + }]); + }); + }); + + for (const withHint of [true, false]) { + describe( + `parse() [${withHint ? 'with' : 'without'} hint]`, () => { + const doParse: (fileName: string, XLIFF: string) => ParsedTranslationBundle = + withHint ? (fileName, XLIFF) => { + const parser = new Xliff1TranslationParser(); + const hint = parser.canParse(fileName, XLIFF); + if (!hint) { + throw new Error('expected XLIFF to be valid'); + } + return parser.parse(fileName, XLIFF, hint); + } : (fileName, XLIFF) => { + const parser = new Xliff1TranslationParser(); + return parser.parse(fileName, XLIFF); + }; + + const expectToFail: ( + fileName: string, XLIFF: string, errorMatcher: RegExp, + diagnosticMessage: string) => void = + withHint ? (fileName, XLIFF, _errorMatcher, diagnosticMessage) => { + const result = doParse(fileName, XLIFF); + expect(result.diagnostics.messages.length).toBeGreaterThan(0); + expect(result.diagnostics.messages.pop()!.message).toEqual(diagnosticMessage); + } : (fileName, XLIFF, errorMatcher, _diagnosticMessage) => { + expect(() => doParse(fileName, XLIFF)).toThrowError(errorMatcher); + }; + + it('should extract the locale from the last `` element to contain a `target-language` attribute', + () => { + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + expect(result.locale).toEqual('de'); + }); + + it('should return an undefined locale if there is no locale in the file', () => { + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + expect(result.locale).toBeUndefined(); + }); + + it('should extract basic messages', () => { + /** + * Source HTML: + * + * ``` + *
    translatable attribute
    + * ``` + */ + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` translatable attribute`, + ` etubirtta elbatalsnart`, + ` `, + ` file.ts`, + ` 1`, + ` `, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + + expect(result.translations[ɵcomputeMsgId('translatable attribute')]) + .toEqual(ɵmakeParsedTranslation(['etubirtta elbatalsnart'])); + }); + + it('should extract translations with simple placeholders', () => { + /** + * Source HTML: + * + * ``` + *
    translatable element with placeholders {{ interpolation}}
    + * ``` + */ + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` translatable element with placeholders `, + ` tnemele elbatalsnart sredlohecalp htiw`, + ` `, + ` file.ts`, + ` 2`, + ` `, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + + expect( + result.translations[ɵcomputeMsgId( + 'translatable element {$START_BOLD_TEXT}with placeholders{$LOSE_BOLD_TEXT} {$INTERPOLATION}')]) + .toEqual(ɵmakeParsedTranslation( + ['', ' tnemele elbatalsnart ', 'sredlohecalp htiw', ''], + ['INTERPOLATION', 'START_BOLD_TEXT', 'CLOSE_BOLD_TEXT'])); + }); + + it('should extract nested placeholder containers (i.e. nested HTML elements)', () => { + /** + * Source HTML: + * + * ``` + *
    + * translatable element with placeholders {{ interpolation}} + *
    + * ``` + */ + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` translatable element with placeholders `, + ` tnemele elbatalsnart sredlohecalp htiw`, + ` `, + ` file.ts`, + ` 3`, + ` `, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + expect( + result.translations[ɵcomputeMsgId( + 'translatable {$START_TAG_SPAN}element {$START_BOLD_TEXT}with placeholders' + + '{$CLOSE_BOLD_TEXT}{$CLOSE_TAG_SPAN} {$INTERPOLATION}')]) + .toEqual(ɵmakeParsedTranslation( + ['', '', ' tnemele', ' elbatalsnart ', 'sredlohecalp htiw', ''], [ + 'START_TAG_SPAN', + 'INTERPOLATION', + 'CLOSE_TAG_SPAN', + 'START_BOLD_TEXT', + 'CLOSE_BOLD_TEXT', + ])); + }); + + it('should extract translations with placeholders containing hyphens', () => { + /** + * Source HTML: + * + * ``` + *
    Welcome
    + * ``` + */ + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` Welcome`, + ` `, + ` src/app/app.component.html`, + ` 1`, + ` `, + ` Translate`, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + const id = ɵcomputeMsgId( + '{$START_TAG_APP_MY_COMPONENT}{$CLOSE_TAG_APP_MY_COMPONENT} Welcome'); + expect(result.translations[id]) + .toEqual(ɵmakeParsedTranslation( + ['', '', ' Translate'], + ['START_TAG_APP_MY_COMPONENT', 'CLOSE_TAG_APP_MY_COMPONENT'])); + }); + + it('should extract translations with simple ICU expressions', () => { + /** + * Source HTML: + * + * ``` + *
    {VAR_PLURAL, plural, =0 {

    test

    } }
    + * ``` + */ + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` {VAR_PLURAL, plural, =0 {test} }`, + ` {VAR_PLURAL, plural, =0 {TEST} }`, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + + expect(result.translations[ɵcomputeMsgId( + '{VAR_PLURAL, plural, =0 {{START_PARAGRAPH}test{CLOSE_PARAGRAPH}}}')]) + .toEqual(ɵmakeParsedTranslation( + ['{VAR_PLURAL, plural, =0 {{START_PARAGRAPH}TEST{CLOSE_PARAGRAPH}}}'], [])); + }); + + it('should extract translations with duplicate source messages', () => { + /** + * Source HTML: + * + * ``` + *
    foo
    + *
    foo
    + *
    foo
    + * ``` + */ + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` foo`, + ` oof`, + ` `, + ` file.ts`, + ` 3`, + ` `, + ` d`, + ` m`, + ` `, + ` `, + ` foo`, + ` toto`, + ` `, + ` file.ts`, + ` 4`, + ` `, + ` d`, + ` m`, + ` `, + ` `, + ` foo`, + ` tata`, + ` `, + ` file.ts`, + ` 5`, + ` `, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + + expect(result.translations[ɵcomputeMsgId('foo')]) + .toEqual(ɵmakeParsedTranslation(['oof'])); + expect(result.translations['i']).toEqual(ɵmakeParsedTranslation(['toto'])); + expect(result.translations['bar']).toEqual(ɵmakeParsedTranslation(['tata'])); + }); + + it('should extract translations with only placeholders, which are re-ordered', () => { + /** + * Source HTML: + * + * ``` + *

    + * ``` + */ + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` file.ts`, + ` 6`, + ` `, + ` ph names`, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + + expect(result.translations[ɵcomputeMsgId('{$LINE_BREAK}{$TAG_IMG}{$TAG_IMG_1}')]) + .toEqual(ɵmakeParsedTranslation( + ['', '', '', ''], ['TAG_IMG_1', 'TAG_IMG', 'LINE_BREAK'])); + }); + + it('should extract translations with empty target', () => { + /** + * Source HTML: + * + * ``` + *
    hello
    + * ``` + */ + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` hello `, + ` `, + ` `, + ` file.ts`, + ` 6`, + ` `, + ` ph names`, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + + expect( + result.translations[ɵcomputeMsgId('hello {$START_TAG_SPAN}{$CLOSE_TAG_SPAN}')]) + .toEqual(ɵmakeParsedTranslation([''])); + }); + + it('should extract translations with deeply nested ICUs', () => { + /** + * Source HTML: + * + * ``` + * Test: { count, plural, =0 { { sex, select, other {

    deeply nested

    }} } + * =other {a lot}} + * ``` + * + * Note that the message gets split into two translation units: + * * The first one contains the outer message with an `ICU` placeholder + * * The second one is the ICU expansion itself + * + * Note that special markers `VAR_PLURAL` and `VAR_SELECT` are added, which are then + * replaced by IVY at runtime with the actual values being rendered by the ICU + * expansion. + */ + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` Test: `, + ` Le test: `, + ` `, + ` file.ts`, + ` 11`, + ` `, + ` `, + ` `, + ` {VAR_PLURAL, plural, =0 {{VAR_SELECT, select, other {deeply nested}}} =other {a lot}}`, + ` {VAR_PLURAL, plural, =0 {{VAR_SELECT, select, other {profondément imbriqué}}} =other {beaucoup}}`, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + + expect(result.translations[ɵcomputeMsgId('Test: {$ICU}')]) + .toEqual(ɵmakeParsedTranslation(['Le test: ', ''], ['ICU'])); + + expect( + result.translations[ɵcomputeMsgId( + '{VAR_PLURAL, plural, =0 {{VAR_SELECT, select, other {{START_PARAGRAPH}deeply nested{CLOSE_PARAGRAPH}}}} =other {beaucoup}}')]) + .toEqual(ɵmakeParsedTranslation([ + '{VAR_PLURAL, plural, =0 {{VAR_SELECT, select, other {{START_PARAGRAPH}profondément imbriqué{CLOSE_PARAGRAPH}}}} =other {beaucoup}}' + ])); + }); + + it('should extract translations containing multiple lines', () => { + /** + * Source HTML: + * + * ``` + *
    multi + * lines
    + * ``` + */ + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` multi\nlines`, + ` multi\nlignes`, + ` `, + ` file.ts`, + ` 12`, + ` `, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + + expect(result.translations[ɵcomputeMsgId('multi\nlines')]) + .toEqual(ɵmakeParsedTranslation(['multi\nlignes'])); + }); + + it('should extract translations with elements', () => { + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` First sentence.`, + ` `, + ` Should not be parsed`, + ` `, + ` Translated first sentence.`, + ` `, + ` `, + ` First sentence. Second sentence.`, + ` `, + ` Should not be parsed`, + ` `, + ` Translated first sentence.`, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + + expect(result.translations['mrk-test']) + .toEqual(ɵmakeParsedTranslation(['Translated first sentence.'])); + + expect(result.translations['mrk-test2']) + .toEqual(ɵmakeParsedTranslation(['Translated first sentence.'])); + }); + + it('should ignore alt-trans targets', () => { + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` Continue`, + ` Weiter`, + ` `, + ` src/app/auth/registration-form/registration-form.component.html`, + ` 69`, + ` `, + ` `, + ` `, + ` Content`, + ` Content`, + ` `, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + + const result = doParse('/some/file.xlf', XLIFF); + expect(result.translations['registration.submit']) + .toEqual(ɵmakeParsedTranslation(['Weiter'])); + }); + + it('should merge messages from each `` element', () => { + /** + * Source HTML: + * + * ``` + *
    translatable attribute
    + * ``` + + * ``` + *
    translatable element with placeholders {{ interpolation}}
    + * ``` + */ + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` translatable attribute`, + ` etubirtta elbatalsnart`, + ` `, + ` file.ts`, + ` 1`, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` translatable element with placeholders `, + ` tnemele elbatalsnart sredlohecalp htiw`, + ` `, + ` file.ts`, + ` 2`, + ` `, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + expect(result.translations[ɵcomputeMsgId('translatable attribute')]) + .toEqual(ɵmakeParsedTranslation(['etubirtta elbatalsnart'])); + expect( + result.translations[ɵcomputeMsgId( + 'translatable element {$START_BOLD_TEXT}with placeholders{$LOSE_BOLD_TEXT} {$INTERPOLATION}')]) + .toEqual(ɵmakeParsedTranslation( + ['', ' tnemele elbatalsnart ', 'sredlohecalp htiw', ''], + ['INTERPOLATION', 'START_BOLD_TEXT', 'CLOSE_BOLD_TEXT'])); + }); + + describe('[structure errors]', () => { + it('should warn when a trans-unit has no translation target but does have a source', + () => { + const XLIFF = [ + ``, + ``, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + + const result = doParse('/some/file.xlf', XLIFF); + expect(result.diagnostics.messages.length).toEqual(1); + expect(result.diagnostics.messages[0].message).toEqual([ + `Missing element ("e-language="en" target-language="fr" datatype="plaintext" original="ng2.template">`, + ` `, + ` [WARNING ->]`, + ` `, + ` `, + `"): /some/file.xlf@4:6`, + ].join('\n')); + }); + + it('should fail when a trans-unit has no translation target nor source', () => { + const XLIFF = [ + ``, + ``, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + + expectToFail( + '/some/file.xlf', XLIFF, + /Missing required element: one of or is required/, [ + `Missing required element: one of or is required ("e-language="en" target-language="fr" datatype="plaintext" original="ng2.template">`, + ` `, + ` [ERROR ->]`, + ` `, + ` `, + `"): /some/file.xlf@4:6`, + ].join('\n')); + }); + + it('should fail when a trans-unit has no id attribute', () => { + const XLIFF = [ + ``, + ``, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + + expectToFail('/some/file.xlf', XLIFF, /Missing required "id" attribute/, [ + `Missing required "id" attribute on element. ("e-language="en" target-language="fr" datatype="plaintext" original="ng2.template">`, + ` `, + ` [ERROR ->]`, + ` `, + ` `, + `"): /some/file.xlf@4:6`, + ].join('\n')); + }); + + it('should fail on duplicate trans-unit id', () => { + const XLIFF = [ + ``, + ``, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + + expectToFail( + '/some/file.xlf', XLIFF, /Duplicated translations for message "deadbeef"/, [ + `Duplicated translations for message "deadbeef" ("`, + ` `, + ` `, + ` [ERROR ->]`, + ` `, + ` `, + `"): /some/file.xlf@8:6`, + ].join('\n')); + }); + }); + + describe('[message errors]', () => { + it('should fail on unknown message tags', () => { + const XLIFF = [ + ``, + ``, + ` `, + ` `, + ` `, + ` `, + ` msg should contain only ph tags`, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + + expectToFail('/some/file.xlf', XLIFF, /Invalid element found in message/, [ + `Error: Invalid element found in message.`, + `At /some/file.xlf@6:16:`, + `...`, + ` `, + ` [ERROR ->]msg should contain only ph tags`, + ` `, + `...`, + ``, + ].join('\n')); + }); + + it('should fail when a placeholder misses an id attribute', () => { + const XLIFF = [ + ``, + ``, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + + expectToFail('/some/file.xlf', XLIFF, /required "id" attribute/gi, [ + `Error: Missing required "id" attribute:`, + `At /some/file.xlf@6:16:`, + `...`, + ` `, + ` [ERROR ->]`, + ` `, + `...`, + ``, + ].join('\n')); + }); + }); + }); + } }); - - it('should return a diagnostics object when the file is not a valid format', () => { - let result: ParseAnalysis; - const parser = new Xliff1TranslationParser(); - - result = parser.analyze('/some/file.xlf', ''); - expect(result.diagnostics.messages).toEqual([ - {type: 'warning', message: 'The XML file does not contain a root node.'} - ]); - - result = parser.analyze('/some/file.xlf', ''); - expect(result.diagnostics.messages).toEqual([{ - type: 'warning', - message: - 'The node does not have the required attribute: version="1.2". ("[WARNING ->]"): /some/file.xlf@0:0' - }]); - - result = parser.analyze('/some/file.xlf', '
    '); - expect(result.diagnostics.messages).toEqual([{ - type: 'error', - message: - 'Unexpected closing tag "file". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags ("[ERROR ->]
    "): /some/file.xlf@0:21' - }]); - }); - }); - - for (const withHint of [true, false]) { - describe(`parse() [${withHint ? 'with' : 'without'} hint]`, () => { - const doParse: (fileName: string, XLIFF: string) => ParsedTranslationBundle = - withHint ? (fileName, XLIFF) => { - const parser = new Xliff1TranslationParser(); - const hint = parser.canParse(fileName, XLIFF); - if (!hint) { - throw new Error('expected XLIFF to be valid'); - } - return parser.parse(fileName, XLIFF, hint); - } : (fileName, XLIFF) => { - const parser = new Xliff1TranslationParser(); - return parser.parse(fileName, XLIFF); - }; - - const expectToFail: - (fileName: string, XLIFF: string, errorMatcher: RegExp, diagnosticMessage: string) => - void = withHint ? (fileName, XLIFF, _errorMatcher, diagnosticMessage) => { - const result = doParse(fileName, XLIFF); - expect(result.diagnostics.messages.length).toEqual(1); - expect(result.diagnostics.messages[0].message).toEqual(diagnosticMessage); - } : (fileName, XLIFF, errorMatcher, _diagnosticMessage) => { - expect(() => doParse(fileName, XLIFF)).toThrowError(errorMatcher); - }; - - it('should extract the locale from the last `` element to contain a `target-language` attribute', - () => { - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - expect(result.locale).toEqual('de'); - }); - - it('should return an undefined locale if there is no locale in the file', () => { - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - expect(result.locale).toBeUndefined(); - }); - - it('should extract basic messages', () => { - /** - * Source HTML: - * - * ``` - *
    translatable attribute
    - * ``` - */ - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` translatable attribute`, - ` etubirtta elbatalsnart`, - ` `, - ` file.ts`, - ` 1`, - ` `, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - - expect(result.translations[ɵcomputeMsgId('translatable attribute')]) - .toEqual(ɵmakeParsedTranslation(['etubirtta elbatalsnart'])); - }); - - it('should extract translations with simple placeholders', () => { - /** - * Source HTML: - * - * ``` - *
    translatable element with placeholders {{ interpolation}}
    - * ``` - */ - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` translatable element with placeholders `, - ` tnemele elbatalsnart sredlohecalp htiw`, - ` `, - ` file.ts`, - ` 2`, - ` `, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - - expect( - result.translations[ɵcomputeMsgId( - 'translatable element {$START_BOLD_TEXT}with placeholders{$LOSE_BOLD_TEXT} {$INTERPOLATION}')]) - .toEqual(ɵmakeParsedTranslation( - ['', ' tnemele elbatalsnart ', 'sredlohecalp htiw', ''], - ['INTERPOLATION', 'START_BOLD_TEXT', 'CLOSE_BOLD_TEXT'])); - }); - - it('should extract nested placeholder containers (i.e. nested HTML elements)', () => { - /** - * Source HTML: - * - * ``` - *
    - * translatable element with placeholders {{ interpolation}} - *
    - * ``` - */ - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` translatable element with placeholders `, - ` tnemele elbatalsnart sredlohecalp htiw`, - ` `, - ` file.ts`, - ` 3`, - ` `, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - expect(result.translations[ɵcomputeMsgId( - 'translatable {$START_TAG_SPAN}element {$START_BOLD_TEXT}with placeholders' + - '{$CLOSE_BOLD_TEXT}{$CLOSE_TAG_SPAN} {$INTERPOLATION}')]) - .toEqual(ɵmakeParsedTranslation( - ['', '', ' tnemele', ' elbatalsnart ', 'sredlohecalp htiw', ''], [ - 'START_TAG_SPAN', - 'INTERPOLATION', - 'CLOSE_TAG_SPAN', - 'START_BOLD_TEXT', - 'CLOSE_BOLD_TEXT', - ])); - }); - - it('should extract translations with placeholders containing hyphens', () => { - /** - * Source HTML: - * - * ``` - *
    Welcome
    - * ``` - */ - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` Welcome`, - ` `, - ` src/app/app.component.html`, - ` 1`, - ` `, - ` Translate`, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - const id = - ɵcomputeMsgId('{$START_TAG_APP_MY_COMPONENT}{$CLOSE_TAG_APP_MY_COMPONENT} Welcome'); - expect(result.translations[id]).toEqual(ɵmakeParsedTranslation(['', '', ' Translate'], [ - 'START_TAG_APP_MY_COMPONENT', 'CLOSE_TAG_APP_MY_COMPONENT' - ])); - }); - - it('should extract translations with simple ICU expressions', () => { - /** - * Source HTML: - * - * ``` - *
    {VAR_PLURAL, plural, =0 {

    test

    } }
    - * ``` - */ - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` {VAR_PLURAL, plural, =0 {test} }`, - ` {VAR_PLURAL, plural, =0 {TEST} }`, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - - expect(result.translations[ɵcomputeMsgId( - '{VAR_PLURAL, plural, =0 {{START_PARAGRAPH}test{CLOSE_PARAGRAPH}}}')]) - .toEqual(ɵmakeParsedTranslation( - ['{VAR_PLURAL, plural, =0 {{START_PARAGRAPH}TEST{CLOSE_PARAGRAPH}}}'], [])); - }); - - it('should extract translations with duplicate source messages', () => { - /** - * Source HTML: - * - * ``` - *
    foo
    - *
    foo
    - *
    foo
    - * ``` - */ - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` foo`, - ` oof`, - ` `, - ` file.ts`, - ` 3`, - ` `, - ` d`, - ` m`, - ` `, - ` `, - ` foo`, - ` toto`, - ` `, - ` file.ts`, - ` 4`, - ` `, - ` d`, - ` m`, - ` `, - ` `, - ` foo`, - ` tata`, - ` `, - ` file.ts`, - ` 5`, - ` `, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - - expect(result.translations[ɵcomputeMsgId('foo')]).toEqual(ɵmakeParsedTranslation(['oof'])); - expect(result.translations['i']).toEqual(ɵmakeParsedTranslation(['toto'])); - expect(result.translations['bar']).toEqual(ɵmakeParsedTranslation(['tata'])); - }); - - it('should extract translations with only placeholders, which are re-ordered', () => { - /** - * Source HTML: - * - * ``` - *

    - * ``` - */ - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` file.ts`, - ` 6`, - ` `, - ` ph names`, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - - expect(result.translations[ɵcomputeMsgId('{$LINE_BREAK}{$TAG_IMG}{$TAG_IMG_1}')]) - .toEqual( - ɵmakeParsedTranslation(['', '', '', ''], ['TAG_IMG_1', 'TAG_IMG', 'LINE_BREAK'])); - }); - - it('should extract translations with empty target', () => { - /** - * Source HTML: - * - * ``` - *
    hello
    - * ``` - */ - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` hello `, - ` `, - ` `, - ` file.ts`, - ` 6`, - ` `, - ` ph names`, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - - expect(result.translations[ɵcomputeMsgId('hello {$START_TAG_SPAN}{$CLOSE_TAG_SPAN}')]) - .toEqual(ɵmakeParsedTranslation([''])); - }); - - it('should extract translations with deeply nested ICUs', () => { - /** - * Source HTML: - * - * ``` - * Test: { count, plural, =0 { { sex, select, other {

    deeply nested

    }} } =other {a - * lot}} - * ``` - * - * Note that the message gets split into two translation units: - * * The first one contains the outer message with an `ICU` placeholder - * * The second one is the ICU expansion itself - * - * Note that special markers `VAR_PLURAL` and `VAR_SELECT` are added, which are then - * replaced by IVY at runtime with the actual values being rendered by the ICU expansion. - */ - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` Test: `, - ` Le test: `, - ` `, - ` file.ts`, - ` 11`, - ` `, - ` `, - ` `, - ` {VAR_PLURAL, plural, =0 {{VAR_SELECT, select, other {deeply nested}}} =other {a lot}}`, - ` {VAR_PLURAL, plural, =0 {{VAR_SELECT, select, other {profondément imbriqué}}} =other {beaucoup}}`, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - - expect(result.translations[ɵcomputeMsgId('Test: {$ICU}')]) - .toEqual(ɵmakeParsedTranslation(['Le test: ', ''], ['ICU'])); - - expect( - result.translations[ɵcomputeMsgId( - '{VAR_PLURAL, plural, =0 {{VAR_SELECT, select, other {{START_PARAGRAPH}deeply nested{CLOSE_PARAGRAPH}}}} =other {beaucoup}}')]) - .toEqual(ɵmakeParsedTranslation([ - '{VAR_PLURAL, plural, =0 {{VAR_SELECT, select, other {{START_PARAGRAPH}profondément imbriqué{CLOSE_PARAGRAPH}}}} =other {beaucoup}}' - ])); - }); - - it('should extract translations containing multiple lines', () => { - /** - * Source HTML: - * - * ``` - *
    multi - * lines
    - * ``` - */ - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` multi\nlines`, - ` multi\nlignes`, - ` `, - ` file.ts`, - ` 12`, - ` `, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - - expect(result.translations[ɵcomputeMsgId('multi\nlines')]) - .toEqual(ɵmakeParsedTranslation(['multi\nlignes'])); - }); - - it('should extract translations with elements', () => { - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` First sentence.`, - ` `, - ` Should not be parsed`, - ` `, - ` Translated first sentence.`, - ` `, - ` `, - ` First sentence. Second sentence.`, - ` `, - ` Should not be parsed`, - ` `, - ` Translated first sentence.`, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - - expect(result.translations['mrk-test']) - .toEqual(ɵmakeParsedTranslation(['Translated first sentence.'])); - - expect(result.translations['mrk-test2']) - .toEqual(ɵmakeParsedTranslation(['Translated first sentence.'])); - }); - - it('should ignore alt-trans targets', () => { - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` Continue`, - ` Weiter`, - ` `, - ` src/app/auth/registration-form/registration-form.component.html`, - ` 69`, - ` `, - ` `, - ` `, - ` Content`, - ` Content`, - ` `, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - - const result = doParse('/some/file.xlf', XLIFF); - expect(result.translations['registration.submit']) - .toEqual(ɵmakeParsedTranslation(['Weiter'])); - }); - - it('should merge messages from each `` element', () => { - /** - * Source HTML: - * - * ``` - *
    translatable attribute
    - * ``` - - * ``` - *
    translatable element with placeholders {{ interpolation}}
    - * ``` - */ - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` translatable attribute`, - ` etubirtta elbatalsnart`, - ` `, - ` file.ts`, - ` 1`, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` translatable element with placeholders `, - ` tnemele elbatalsnart sredlohecalp htiw`, - ` `, - ` file.ts`, - ` 2`, - ` `, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - expect(result.translations[ɵcomputeMsgId('translatable attribute')]) - .toEqual(ɵmakeParsedTranslation(['etubirtta elbatalsnart'])); - expect( - result.translations[ɵcomputeMsgId( - 'translatable element {$START_BOLD_TEXT}with placeholders{$LOSE_BOLD_TEXT} {$INTERPOLATION}')]) - .toEqual(ɵmakeParsedTranslation( - ['', ' tnemele elbatalsnart ', 'sredlohecalp htiw', ''], - ['INTERPOLATION', 'START_BOLD_TEXT', 'CLOSE_BOLD_TEXT'])); - }); - - describe('[structure errors]', () => { - it('should fail when a trans-unit has no translation', () => { - const XLIFF = [ - ``, - ``, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - - expectToFail('/some/file.xlf', XLIFF, /Missing required element/, [ - `Missing required element ("e-language="en" target-language="fr" datatype="plaintext" original="ng2.template">`, - ` `, - ` [ERROR ->]`, - ` `, - ` `, - `"): /some/file.xlf@4:6`, - ].join('\n')); - }); - - - it('should fail when a trans-unit has no id attribute', () => { - const XLIFF = [ - ``, - ``, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - - expectToFail('/some/file.xlf', XLIFF, /Missing required "id" attribute/, [ - `Missing required "id" attribute on element. ("e-language="en" target-language="fr" datatype="plaintext" original="ng2.template">`, - ` `, - ` [ERROR ->]`, - ` `, - ` `, - `"): /some/file.xlf@4:6`, - ].join('\n')); - }); - - it('should fail on duplicate trans-unit id', () => { - const XLIFF = [ - ``, - ``, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - - expectToFail('/some/file.xlf', XLIFF, /Duplicated translations for message "deadbeef"/, [ - `Duplicated translations for message "deadbeef" ("`, - ` `, - ` `, - ` [ERROR ->]`, - ` `, - ` `, - `"): /some/file.xlf@8:6`, - ].join('\n')); - }); - }); - - describe('[message errors]', () => { - it('should fail on unknown message tags', () => { - const XLIFF = [ - ``, - ``, - ` `, - ` `, - ` `, - ` `, - ` msg should contain only ph tags`, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - - expectToFail('/some/file.xlf', XLIFF, /Invalid element found in message/, [ - `Error: Invalid element found in message.`, - `At /some/file.xlf@6:16:`, - `...`, - ` `, - ` [ERROR ->]msg should contain only ph tags`, - ` `, - `...`, - ``, - ].join('\n')); - }); - - it('should fail when a placeholder misses an id attribute', () => { - const XLIFF = [ - ``, - ``, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - - expectToFail('/some/file.xlf', XLIFF, /required "id" attribute/gi, [ - `Error: Missing required "id" attribute:`, - `At /some/file.xlf@6:16:`, - `...`, - ` `, - ` [ERROR ->]`, - ` `, - `...`, - ``, - ].join('\n')); - }); - }); - }); - } -}); diff --git a/packages/localize/src/tools/test/translate/translation_files/translation_parsers/xliff2_translation_parser_spec.ts b/packages/localize/src/tools/test/translate/translation_files/translation_parsers/xliff2_translation_parser_spec.ts index d9b412c8bc..bb9000d09b 100644 --- a/packages/localize/src/tools/test/translate/translation_files/translation_parsers/xliff2_translation_parser_spec.ts +++ b/packages/localize/src/tools/test/translate/translation_files/translation_parsers/xliff2_translation_parser_spec.ts @@ -9,686 +9,711 @@ import {ɵcomputeMsgId, ɵmakeParsedTranslation} from '@angular/localize'; import {ParseAnalysis, ParsedTranslationBundle} from '../../../../src/translate/translation_files/translation_parsers/translation_parser'; import {Xliff2TranslationParser} from '../../../../src/translate/translation_files/translation_parsers/xliff2_translation_parser'; -describe( - 'Xliff2TranslationParser', () => { - describe('canParse()', () => { - it('should return true if the file contains an element with version="2.0" attribute', - () => { - const parser = new Xliff2TranslationParser(); - expect(parser.canParse( - '/some/file.xlf', - '')) - .toBeTruthy(); - expect(parser.canParse( - '/some/file.json', - '')) - .toBeTruthy(); - expect(parser.canParse('/some/file.xliff', '')).toBeTruthy(); - expect(parser.canParse('/some/file.json', '')).toBeTruthy(); - expect(parser.canParse('/some/file.xlf', '')).toBe(false); - expect(parser.canParse('/some/file.xlf', '')).toBe(false); - expect(parser.canParse('/some/file.xlf', '')).toBe(false); - expect(parser.canParse('/some/file.json', '')).toBe(false); - }); - }); +describe('Xliff2TranslationParser', () => { + describe('canParse()', () => { + it('should return true if the file contains an element with version="2.0" attribute', + () => { + const parser = new Xliff2TranslationParser(); + expect(parser.canParse( + '/some/file.xlf', + '')) + .toBeTruthy(); + expect(parser.canParse( + '/some/file.json', + '')) + .toBeTruthy(); + expect(parser.canParse('/some/file.xliff', '')).toBeTruthy(); + expect(parser.canParse('/some/file.json', '')).toBeTruthy(); + expect(parser.canParse('/some/file.xlf', '')).toBe(false); + expect(parser.canParse('/some/file.xlf', '')).toBe(false); + expect(parser.canParse('/some/file.xlf', '')).toBe(false); + expect(parser.canParse('/some/file.json', '')).toBe(false); + }); + }); - describe('analyze', () => { - it('should return a success object if the file contains an element with version="2.0" attribute', - () => { - const parser = new Xliff2TranslationParser(); - expect(parser.analyze( - '/some/file.xlf', - '')) - .toEqual(jasmine.objectContaining({canParse: true, hint: jasmine.any(Object)})); - expect(parser.analyze( - '/some/file.json', - '')) - .toEqual(jasmine.objectContaining({canParse: true, hint: jasmine.any(Object)})); - expect(parser.analyze('/some/file.xliff', '')) - .toEqual(jasmine.objectContaining({canParse: true, hint: jasmine.any(Object)})); - expect(parser.analyze('/some/file.json', '')) - .toEqual(jasmine.objectContaining({canParse: true, hint: jasmine.any(Object)})); - }); + describe('analyze', () => { + it('should return a success object if the file contains an element with version="2.0" attribute', + () => { + const parser = new Xliff2TranslationParser(); + expect(parser.analyze( + '/some/file.xlf', + '')) + .toEqual(jasmine.objectContaining({canParse: true, hint: jasmine.any(Object)})); + expect(parser.analyze( + '/some/file.json', + '')) + .toEqual(jasmine.objectContaining({canParse: true, hint: jasmine.any(Object)})); + expect(parser.analyze('/some/file.xliff', '')) + .toEqual(jasmine.objectContaining({canParse: true, hint: jasmine.any(Object)})); + expect(parser.analyze('/some/file.json', '')) + .toEqual(jasmine.objectContaining({canParse: true, hint: jasmine.any(Object)})); + }); - it('should return a failure object if the file cannot be parsed as XLIFF 2.0', () => { - const parser = new Xliff2TranslationParser(); - expect(parser.analyze('/some/file.xlf', '')).toEqual(jasmine.objectContaining({ - canParse: false - })); - expect(parser.analyze('/some/file.xlf', '')) - .toEqual(jasmine.objectContaining({canParse: false})); - expect(parser.analyze('/some/file.xlf', '')).toEqual(jasmine.objectContaining({ - canParse: false - })); - expect(parser.analyze('/some/file.json', '')).toEqual(jasmine.objectContaining({ - canParse: false - })); - }); + it('should return a failure object if the file cannot be parsed as XLIFF 2.0', () => { + const parser = new Xliff2TranslationParser(); + expect(parser.analyze('/some/file.xlf', '')).toEqual(jasmine.objectContaining({ + canParse: false + })); + expect(parser.analyze('/some/file.xlf', '')) + .toEqual(jasmine.objectContaining({canParse: false})); + expect(parser.analyze('/some/file.xlf', '')).toEqual(jasmine.objectContaining({ + canParse: false + })); + expect(parser.analyze('/some/file.json', '')).toEqual(jasmine.objectContaining({ + canParse: false + })); + }); - it('should return a diagnostics object when the file is not a valid format', () => { - let result: ParseAnalysis; - const parser = new Xliff2TranslationParser(); + it('should return a diagnostics object when the file is not a valid format', () => { + let result: ParseAnalysis; + const parser = new Xliff2TranslationParser(); - result = parser.analyze('/some/file.xlf', ''); - expect(result.diagnostics.messages).toEqual([ - {type: 'warning', message: 'The XML file does not contain a root node.'} - ]); + result = parser.analyze('/some/file.xlf', ''); + expect(result.diagnostics.messages).toEqual([ + {type: 'warning', message: 'The XML file does not contain a root node.'} + ]); - result = parser.analyze('/some/file.xlf', ''); - expect(result.diagnostics.messages).toEqual([{ - type: 'warning', - message: - 'The node does not have the required attribute: version="2.0". ("[WARNING ->]"): /some/file.xlf@0:0' - }]); + result = parser.analyze('/some/file.xlf', ''); + expect(result.diagnostics.messages).toEqual([{ + type: 'warning', + message: + 'The node does not have the required attribute: version="2.0". ("[WARNING ->]"): /some/file.xlf@0:0' + }]); - result = parser.analyze('/some/file.xlf', '
    '); - expect(result.diagnostics.messages).toEqual([{ - type: 'error', - message: - 'Unexpected closing tag "file". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags ("[ERROR ->]
    "): /some/file.xlf@0:21' - }]); - }); - }); + result = parser.analyze('/some/file.xlf', ''); + expect(result.diagnostics.messages).toEqual([{ + type: 'error', + message: + 'Unexpected closing tag "file". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags ("[ERROR ->]"): /some/file.xlf@0:21' + }]); + }); + }); - for (const withHint of [true, false]) { - describe( - `parse() [${withHint ? 'with' : 'without'} hint]`, () => { - const doParse: (fileName: string, XLIFF: string) => ParsedTranslationBundle = - withHint ? (fileName, XLIFF) => { - const parser = new Xliff2TranslationParser(); - const hint = parser.canParse(fileName, XLIFF); - if (!hint) { - throw new Error('expected XLIFF to be valid'); - } - return parser.parse(fileName, XLIFF, hint); - } : (fileName, XLIFF) => { - const parser = new Xliff2TranslationParser(); - return parser.parse(fileName, XLIFF); + for (const withHint of [true, false]) { + describe( + `parse() [${withHint ? 'with' : 'without'} hint]`, () => { + const doParse: (fileName: string, XLIFF: string) => ParsedTranslationBundle = + withHint ? (fileName, XLIFF) => { + const parser = new Xliff2TranslationParser(); + const hint = parser.canParse(fileName, XLIFF); + if (!hint) { + throw new Error('expected XLIFF to be valid'); + } + return parser.parse(fileName, XLIFF, hint); + } : (fileName, XLIFF) => { + const parser = new Xliff2TranslationParser(); + return parser.parse(fileName, XLIFF); + }; + + const expectToFail: + (fileName: string, XLIFF: string, errorMatcher: RegExp, diagnosticMessage: string) => + void = withHint ? (fileName, XLIFF, _errorMatcher, diagnosticMessage) => { + const result = doParse(fileName, XLIFF); + expect(result.diagnostics.messages.length).toBeGreaterThan(0); + expect(result.diagnostics.messages.pop()!.message).toEqual(diagnosticMessage); + } : (fileName, XLIFF, errorMatcher, _diagnosticMessage) => { + expect(() => doParse(fileName, XLIFF)).toThrowError(errorMatcher); }; - const expectToFail: - (fileName: string, XLIFF: string, errorMatcher: RegExp, - diagnosticMessage: string) => void = - withHint ? (fileName, XLIFF, _errorMatcher, diagnosticMessage) => { - const result = doParse(fileName, XLIFF); - expect(result.diagnostics.messages.length).toEqual(1); - expect(result.diagnostics.messages[0].message).toEqual(diagnosticMessage); - } : (fileName, XLIFF, errorMatcher, _diagnosticMessage) => { - expect(() => doParse(fileName, XLIFF)).toThrowError(errorMatcher); - }; + it('should extract the locale from the file contents', () => { + const XLIFF = [ + ``, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + expect(result.locale).toEqual('fr'); + }); - it('should extract the locale from the file contents', () => { - const XLIFF = [ - ``, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - expect(result.locale).toEqual('fr'); - }); + it('should return undefined locale if there is no locale in the file', () => { + const XLIFF = [ + ``, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + expect(result.locale).toBeUndefined(); + }); - it('should return undefined locale if there is no locale in the file', () => { - const XLIFF = [ - ``, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - expect(result.locale).toBeUndefined(); - }); + it('should extract basic messages', () => { + /** + * Source HTML: + * + * ``` + *
    translatable attribute
    + * ``` + */ + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` file.ts:2`, + ` `, + ` `, + ` translatable attribute`, + ` etubirtta elbatalsnart`, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + expect(result.translations[ɵcomputeMsgId('translatable attribute', '')]) + .toEqual(ɵmakeParsedTranslation(['etubirtta elbatalsnart'])); + }); - it('should extract basic messages', () => { - /** - * Source HTML: - * - * ``` - *
    translatable attribute
    - * ``` - */ - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` file.ts:2`, - ` `, - ` `, - ` translatable attribute`, - ` etubirtta elbatalsnart`, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - expect(result.translations[ɵcomputeMsgId('translatable attribute', '')]) - .toEqual(ɵmakeParsedTranslation(['etubirtta elbatalsnart'])); - }); + it('should extract translations with simple placeholders', () => { + /** + * Source HTML: + * + * ``` + *
    translatable element with placeholders {{ interpolation}}
    + * ``` + */ + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` file.ts:3`, + ` `, + ` `, + ` translatable element with placeholders `, + ` tnemele elbatalsnart sredlohecalp htiw`, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + expect( + result.translations[ɵcomputeMsgId( + 'translatable element {$START_BOLD_TEXT}with placeholders{$CLOSE_BOLD_TEXT} {$INTERPOLATION}')]) + .toEqual(ɵmakeParsedTranslation( + ['', ' tnemele elbatalsnart ', 'sredlohecalp htiw', ''], + ['INTERPOLATION', 'START_BOLD_TEXT', 'CLOSE_BOLD_TEXT'])); + }); - it('should extract translations with simple placeholders', () => { - /** - * Source HTML: - * - * ``` - *
    translatable element with placeholders {{ interpolation}}
    - * ``` - */ - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` file.ts:3`, - ` `, - ` `, - ` translatable element with placeholders `, - ` tnemele elbatalsnart sredlohecalp htiw`, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - expect( - result.translations[ɵcomputeMsgId( - 'translatable element {$START_BOLD_TEXT}with placeholders{$CLOSE_BOLD_TEXT} {$INTERPOLATION}')]) - .toEqual(ɵmakeParsedTranslation( - ['', ' tnemele elbatalsnart ', 'sredlohecalp htiw', ''], - ['INTERPOLATION', 'START_BOLD_TEXT', 'CLOSE_BOLD_TEXT'])); - }); - - it('should extract nested placeholder containers (i.e. nested HTML elements)', () => { - /** - * Source HTML: - * - * ``` - *
    - * translatable element with placeholders {{ interpolation}} - *
    - * ``` - */ - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` file.ts:3`, - ` `, - ` `, - ` translatable element with placeholders` + - ` `, - ` tnemele` + - ` elbatalsnart sredlohecalp htiw`, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - expect( - result.translations[ɵcomputeMsgId( - 'translatable {$START_TAG_SPAN}element {$START_BOLD_TEXT}with placeholders' + - '{$CLOSE_BOLD_TEXT}{$CLOSE_TAG_SPAN} {$INTERPOLATION}')]) - .toEqual(ɵmakeParsedTranslation( - ['', '', ' tnemele', ' elbatalsnart ', 'sredlohecalp htiw', ''], [ - 'START_TAG_SPAN', - 'INTERPOLATION', - 'CLOSE_TAG_SPAN', - 'START_BOLD_TEXT', - 'CLOSE_BOLD_TEXT', - ])); - }); - - it('should extract translations with simple ICU expressions', () => { - /** - * Source HTML: - * - * ``` - *
    {VAR_PLURAL, plural, =0 {

    test

    } }
    - * ``` - */ - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` file.ts:4`, - ` `, - ` `, - ` {VAR_PLURAL, plural, =0 {test} }`, - ` {VAR_PLURAL, plural, =0 {TEST} }`, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - expect(result.translations[ɵcomputeMsgId( - '{VAR_PLURAL, plural, =0 {{START_PARAGRAPH}test{CLOSE_PARAGRAPH}}}')]) - .toEqual(ɵmakeParsedTranslation( - ['{VAR_PLURAL, plural, =0 {{START_PARAGRAPH}TEST{CLOSE_PARAGRAPH}}}'], [])); - }); - - it('should extract translations with duplicate source messages', () => { - /** - * Source HTML: - * - * ``` - *
    foo
    - *
    foo
    - *
    foo
    - * ``` - */ - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` d`, - ` m`, - ` file.ts:5`, - ` `, - ` `, - ` foo`, - ` oof`, - ` `, - ` `, - ` `, - ` `, - ` d`, - ` m`, - ` file.ts:5`, - ` `, - ` `, - ` foo`, - ` toto`, - ` `, - ` `, - ` `, - ` `, - ` d`, - ` m`, - ` file.ts:5`, - ` `, - ` `, - ` foo`, - ` tata`, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - expect(result.translations[ɵcomputeMsgId('foo')]) - .toEqual(ɵmakeParsedTranslation(['oof'])); - expect(result.translations['i']).toEqual(ɵmakeParsedTranslation(['toto'])); - expect(result.translations['bar']).toEqual(ɵmakeParsedTranslation(['tata'])); - }); - - it('should extract translations with only placeholders, which are re-ordered', () => { - /** - * Source HTML: - * - * ``` - *

    - * ``` - */ - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` ph names`, - ` file.ts:7`, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - expect(result.translations[ɵcomputeMsgId('{$LINE_BREAK}{$TAG_IMG}{$TAG_IMG_1}')]) - .toEqual(ɵmakeParsedTranslation( - ['', '', '', ''], ['TAG_IMG_1', 'TAG_IMG', 'LINE_BREAK'])); - }); - - it('should extract translations with empty target', () => { - /** - * Source HTML: - * - * ``` - *
    hello
    - * ``` - */ - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` empty element`, - ` file.ts:8`, - ` `, - ` `, - ` hello `, - ` `, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - expect( - result.translations[ɵcomputeMsgId('hello {$START_TAG_SPAN}{$CLOSE_TAG_SPAN}')]) - .toEqual(ɵmakeParsedTranslation([''])); - }); - - it('should extract translations with deeply nested ICUs', () => { - /** - * Source HTML: - * - * ``` - * Test: { count, plural, =0 { { sex, select, other {

    deeply nested

    }} } - * =other {a lot}} - * ``` - * - * Note that the message gets split into two translation units: - * * The first one contains the outer message with an `ICU` placeholder - * * The second one is the ICU expansion itself - * - * Note that special markers `VAR_PLURAL` and `VAR_SELECT` are added, which are then - * replaced by IVY at runtime with the actual values being rendered by the ICU - * expansion. - */ - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` file.ts:10`, - ` `, - ` `, - ` Test: `, - ` Le test: `, - ` `, - ` `, - ` `, - ` `, - ` file.ts:10`, - ` `, - ` `, - ` {VAR_PLURAL, plural, =0 {{VAR_SELECT, select, other {deeply nested}}} =other {a lot}}`, - ` {VAR_PLURAL, plural, =0 {{VAR_SELECT, select, other {profondément imbriqué}}} =other {beaucoup}}`, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - expect(result.translations[ɵcomputeMsgId('Test: {$ICU}')]) - .toEqual(ɵmakeParsedTranslation(['Le test: ', ''], ['ICU'])); - expect( - result.translations[ɵcomputeMsgId( - '{VAR_PLURAL, plural, =0 {{VAR_SELECT, select, other {{START_PARAGRAPH}deeply nested{CLOSE_PARAGRAPH}}}} =other {beaucoup}}')]) - .toEqual(ɵmakeParsedTranslation([ - '{VAR_PLURAL, plural, =0 {{VAR_SELECT, select, other {{START_PARAGRAPH}profondément imbriqué{CLOSE_PARAGRAPH}}}} =other {beaucoup}}' + it('should extract nested placeholder containers (i.e. nested HTML elements)', () => { + /** + * Source HTML: + * + * ``` + *
    + * translatable element with placeholders {{ interpolation}} + *
    + * ``` + */ + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` file.ts:3`, + ` `, + ` `, + ` translatable element with placeholders` + + ` `, + ` tnemele` + + ` elbatalsnart sredlohecalp htiw`, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + expect(result.translations[ɵcomputeMsgId( + 'translatable {$START_TAG_SPAN}element {$START_BOLD_TEXT}with placeholders' + + '{$CLOSE_BOLD_TEXT}{$CLOSE_TAG_SPAN} {$INTERPOLATION}')]) + .toEqual(ɵmakeParsedTranslation( + ['', '', ' tnemele', ' elbatalsnart ', 'sredlohecalp htiw', ''], [ + 'START_TAG_SPAN', + 'INTERPOLATION', + 'CLOSE_TAG_SPAN', + 'START_BOLD_TEXT', + 'CLOSE_BOLD_TEXT', ])); - }); + }); - it('should extract translations containing multiple lines', () => { - /** - * Source HTML: - * - * ``` - *
    multi - * lines
    - * ``` - */ - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` file.ts:11,12`, - ` `, - ` `, - ` multi\nlines`, - ` multi\nlignes`, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - expect(result.translations[ɵcomputeMsgId('multi\nlines')]) - .toEqual(ɵmakeParsedTranslation(['multi\nlignes'])); - }); + it('should extract translations with simple ICU expressions', () => { + /** + * Source HTML: + * + * ``` + *
    {VAR_PLURAL, plural, =0 {

    test

    } }
    + * ``` + */ + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` file.ts:4`, + ` `, + ` `, + ` {VAR_PLURAL, plural, =0 {test} }`, + ` {VAR_PLURAL, plural, =0 {TEST} }`, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + expect(result.translations[ɵcomputeMsgId( + '{VAR_PLURAL, plural, =0 {{START_PARAGRAPH}test{CLOSE_PARAGRAPH}}}')]) + .toEqual(ɵmakeParsedTranslation( + ['{VAR_PLURAL, plural, =0 {{START_PARAGRAPH}TEST{CLOSE_PARAGRAPH}}}'], [])); + }); - it('should extract translations with elements', () => { - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` First sentence.`, - ` Translated first sentence.`, - ` `, - ` `, - ` `, - ` `, - ` First sentence. Second sentence.`, - ` Translated first sentence.`, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - expect(result.translations['mrk-test']) - .toEqual(ɵmakeParsedTranslation(['Translated first sentence.'])); - expect(result.translations['mrk-test2']) - .toEqual(ɵmakeParsedTranslation(['Translated first sentence.'])); - }); + it('should extract translations with duplicate source messages', () => { + /** + * Source HTML: + * + * ``` + *
    foo
    + *
    foo
    + *
    foo
    + * ``` + */ + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` d`, + ` m`, + ` file.ts:5`, + ` `, + ` `, + ` foo`, + ` oof`, + ` `, + ` `, + ` `, + ` `, + ` d`, + ` m`, + ` file.ts:5`, + ` `, + ` `, + ` foo`, + ` toto`, + ` `, + ` `, + ` `, + ` `, + ` d`, + ` m`, + ` file.ts:5`, + ` `, + ` `, + ` foo`, + ` tata`, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + expect(result.translations[ɵcomputeMsgId('foo')]) + .toEqual(ɵmakeParsedTranslation(['oof'])); + expect(result.translations['i']).toEqual(ɵmakeParsedTranslation(['toto'])); + expect(result.translations['bar']).toEqual(ɵmakeParsedTranslation(['tata'])); + }); - it('should merge messages from each `` element', () => { - /** - * Source HTML: - * - * ``` - *
    translatable attribute
    - * ``` - * - * ``` - *
    translatable element with placeholders {{ interpolation}}
    - * ``` - */ - const XLIFF = [ - ``, - ` `, - ` `, - ` `, - ` file.ts:2`, - ` `, - ` `, - ` translatable attribute`, - ` etubirtta elbatalsnart`, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` file.ts:3`, - ` `, - ` `, - ` translatable element with placeholders `, - ` tnemele elbatalsnart sredlohecalp htiw`, - ` `, - ` `, - ` `, - ``, - ].join('\n'); - const result = doParse('/some/file.xlf', XLIFF); - expect(result.translations[ɵcomputeMsgId('translatable attribute', '')]) - .toEqual(ɵmakeParsedTranslation(['etubirtta elbatalsnart'])); - expect( - result.translations[ɵcomputeMsgId( - 'translatable element {$START_BOLD_TEXT}with placeholders{$LOSE_BOLD_TEXT} {$INTERPOLATION}')]) - .toEqual(ɵmakeParsedTranslation( - ['', ' tnemele elbatalsnart ', 'sredlohecalp htiw', ''], - ['INTERPOLATION', 'START_BOLD_TEXT', 'CLOSE_BOLD_TEXT'])); - }); + it('should extract translations with only placeholders, which are re-ordered', () => { + /** + * Source HTML: + * + * ``` + *

    + * ``` + */ + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` ph names`, + ` file.ts:7`, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + expect(result.translations[ɵcomputeMsgId('{$LINE_BREAK}{$TAG_IMG}{$TAG_IMG_1}')]) + .toEqual(ɵmakeParsedTranslation( + ['', '', '', ''], ['TAG_IMG_1', 'TAG_IMG', 'LINE_BREAK'])); + }); - describe('[structure errors]', () => { - it('should provide a diagnostic error when a trans-unit has no translation', () => { - const XLIFF = [ - ``, - ``, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ``, - ].join('\n'); + it('should extract translations with empty target', () => { + /** + * Source HTML: + * + * ``` + *
    hello
    + * ``` + */ + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` empty element`, + ` file.ts:8`, + ` `, + ` `, + ` hello `, + ` `, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + expect(result.translations[ɵcomputeMsgId('hello {$START_TAG_SPAN}{$CLOSE_TAG_SPAN}')]) + .toEqual(ɵmakeParsedTranslation([''])); + }); - expectToFail('/some/file.xlf', XLIFF, /Missing required element/, [ - `Missing required element ("`, - ` `, - ` `, - ` [ERROR ->]`, - ` `, - ` `, - `"): /some/file.xlf@4:6`, - ].join('\n')); - }); + it('should extract translations with deeply nested ICUs', () => { + /** + * Source HTML: + * + * ``` + * Test: { count, plural, =0 { { sex, select, other {

    deeply nested

    }} } + * =other {a lot}} + * ``` + * + * Note that the message gets split into two translation units: + * * The first one contains the outer message with an `ICU` placeholder + * * The second one is the ICU expansion itself + * + * Note that special markers `VAR_PLURAL` and `VAR_SELECT` are added, which are then + * replaced by IVY at runtime with the actual values being rendered by the ICU + * expansion. + */ + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` file.ts:10`, + ` `, + ` `, + ` Test: `, + ` Le test: `, + ` `, + ` `, + ` `, + ` `, + ` file.ts:10`, + ` `, + ` `, + ` {VAR_PLURAL, plural, =0 {{VAR_SELECT, select, other {deeply nested}}} =other {a lot}}`, + ` {VAR_PLURAL, plural, =0 {{VAR_SELECT, select, other {profondément imbriqué}}} =other {beaucoup}}`, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + expect(result.translations[ɵcomputeMsgId('Test: {$ICU}')]) + .toEqual(ɵmakeParsedTranslation(['Le test: ', ''], ['ICU'])); + expect( + result.translations[ɵcomputeMsgId( + '{VAR_PLURAL, plural, =0 {{VAR_SELECT, select, other {{START_PARAGRAPH}deeply nested{CLOSE_PARAGRAPH}}}} =other {beaucoup}}')]) + .toEqual(ɵmakeParsedTranslation([ + '{VAR_PLURAL, plural, =0 {{VAR_SELECT, select, other {{START_PARAGRAPH}profondément imbriqué{CLOSE_PARAGRAPH}}}} =other {beaucoup}}' + ])); + }); + it('should extract translations containing multiple lines', () => { + /** + * Source HTML: + * + * ``` + *
    multi + * lines
    + * ``` + */ + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` file.ts:11,12`, + ` `, + ` `, + ` multi\nlines`, + ` multi\nlignes`, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + expect(result.translations[ɵcomputeMsgId('multi\nlines')]) + .toEqual(ɵmakeParsedTranslation(['multi\nlignes'])); + }); - it('should provide a diagnostic error when a trans-unit has no id attribute', () => { - const XLIFF = [ - ``, - ``, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ``, - ].join('\n'); + it('should extract translations with elements', () => { + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` First sentence.`, + ` Translated first sentence.`, + ` `, + ` `, + ` `, + ` `, + ` First sentence. Second sentence.`, + ` Translated first sentence.`, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + expect(result.translations['mrk-test']) + .toEqual(ɵmakeParsedTranslation(['Translated first sentence.'])); + expect(result.translations['mrk-test2']) + .toEqual(ɵmakeParsedTranslation(['Translated first sentence.'])); + }); - expectToFail('/some/file.xlf', XLIFF, /Missing required "id" attribute/, [ - `Missing required "id" attribute on element. ("s:tc:xliff:document:2.0" srcLang="en" trgLang="fr">`, - ` `, - ` [ERROR ->]`, - ` `, - ` `, - `"): /some/file.xlf@3:4`, - ].join('\n')); - }); + it('should merge messages from each `` element', () => { + /** + * Source HTML: + * + * ``` + *
    translatable attribute
    + * ``` + * + * ``` + *
    translatable element with placeholders {{ interpolation}}
    + * ``` + */ + const XLIFF = [ + ``, + ` `, + ` `, + ` `, + ` file.ts:2`, + ` `, + ` `, + ` translatable attribute`, + ` etubirtta elbatalsnart`, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` file.ts:3`, + ` `, + ` `, + ` translatable element with placeholders `, + ` tnemele elbatalsnart sredlohecalp htiw`, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + const result = doParse('/some/file.xlf', XLIFF); + expect(result.translations[ɵcomputeMsgId('translatable attribute', '')]) + .toEqual(ɵmakeParsedTranslation(['etubirtta elbatalsnart'])); + expect( + result.translations[ɵcomputeMsgId( + 'translatable element {$START_BOLD_TEXT}with placeholders{$LOSE_BOLD_TEXT} {$INTERPOLATION}')]) + .toEqual(ɵmakeParsedTranslation( + ['', ' tnemele elbatalsnart ', 'sredlohecalp htiw', ''], + ['INTERPOLATION', 'START_BOLD_TEXT', 'CLOSE_BOLD_TEXT'])); + }); - it('should provide a diagnostic error on duplicate trans-unit id', () => { - const XLIFF = [ - ``, - ``, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ` `, - ``, - ].join('\n'); + describe('[structure errors]', () => { + it('should provide a diagnostic warning when a trans-unit has no translation target but does have a source', + () => { + const XLIFF = [ + ``, + ``, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ``, + ].join('\n'); - expectToFail( - '/some/file.xlf', XLIFF, /Duplicated translations for message "deadbeef"/, [ - `Duplicated translations for message "deadbeef" ("`, - `
    `, - `
    `, - ` [ERROR ->]`, - ` `, - ` `, - '"): /some/file.xlf@9:4', - ].join('\n')); - }); - }); + const result = doParse('/some/file.xlf', XLIFF); + expect(result.diagnostics.messages.length).toEqual(1); + expect(result.diagnostics.messages[0].message).toEqual([ + `Missing element ("`, + ` `, + ` `, + ` [WARNING ->]`, + ` `, + ` `, + `"): /some/file.xlf@4:6`, + ].join('\n')); + }); - describe('[message errors]', () => { - it('should provide a diagnostic error on unknown message tags', () => { - const XLIFF = [ - ``, - ``, - ` `, - ` `, - ` `, - ` `, - ` msg should contain only ph and pc tags`, - ` `, - ` `, - ` `, - ``, - ].join('\n'); + it('should provide a diagnostic error when a trans-unit has no translation target nor source', + () => { + const XLIFF = [ + ``, + ``, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ``, + ].join('\n'); - expectToFail('/some/file.xlf', XLIFF, /Invalid element found in message/, [ - `Error: Invalid element found in message.`, - `At /some/file.xlf@6:16:`, - `...`, - ` `, - ` [ERROR ->]msg should contain only ph and pc tags`, - ` `, - `...`, - ``, - ].join('\n')); - }); - - it('should provide a diagnostic error when a placeholder misses an id attribute', - () => { - const XLIFF = [ - ``, - ``, + expectToFail( + '/some/file.xlf', XLIFF, + /Missing required element: one of or is required/, [ + `Missing required element: one of or is required ("`, ` `, - ` `, - ` `, - ` `, - ` `, + ` `, + ` [ERROR ->]`, ` `, ` `, - ` `, - ``, - ].join('\n'); - - expectToFail('/some/file.xlf', XLIFF, /Missing required "equiv" attribute/, [ - `Error: Missing required "equiv" attribute:`, - `At /some/file.xlf@6:16:`, - `...`, - ` `, - ` [ERROR ->]`, - ` `, - `...`, - ``, + `"): /some/file.xlf@4:6`, ].join('\n')); - }); - }); + }); + + + it('should provide a diagnostic error when a trans-unit has no id attribute', () => { + const XLIFF = [ + ``, + ``, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + + expectToFail('/some/file.xlf', XLIFF, /Missing required "id" attribute/, [ + `Missing required "id" attribute on element. ("s:tc:xliff:document:2.0" srcLang="en" trgLang="fr">`, + ` `, + ` [ERROR ->]`, + ` `, + ` `, + `"): /some/file.xlf@3:4`, + ].join('\n')); }); - } - }); + + it('should provide a diagnostic error on duplicate trans-unit id', () => { + const XLIFF = [ + ``, + ``, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + + expectToFail( + '/some/file.xlf', XLIFF, /Duplicated translations for message "deadbeef"/, [ + `Duplicated translations for message "deadbeef" ("`, + ` `, + ` `, + ` [ERROR ->]`, + ` `, + ` `, + '"): /some/file.xlf@9:4', + ].join('\n')); + }); + }); + + describe('[message errors]', () => { + it('should provide a diagnostic error on unknown message tags', () => { + const XLIFF = [ + ``, + ``, + ` `, + ` `, + ` `, + ` `, + ` msg should contain only ph and pc tags`, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + + expectToFail('/some/file.xlf', XLIFF, /Invalid element found in message/, [ + `Error: Invalid element found in message.`, + `At /some/file.xlf@6:16:`, + `...`, + ` `, + ` [ERROR ->]msg should contain only ph and pc tags`, + ` `, + `...`, + ``, + ].join('\n')); + }); + + it('should provide a diagnostic error when a placeholder misses an id attribute', () => { + const XLIFF = [ + ``, + ``, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ` `, + ``, + ].join('\n'); + + expectToFail('/some/file.xlf', XLIFF, /Missing required "equiv" attribute/, [ + `Error: Missing required "equiv" attribute:`, + `At /some/file.xlf@6:16:`, + `...`, + ` `, + ` [ERROR ->]`, + ` `, + `...`, + ``, + ].join('\n')); + }); + }); + }); + } +}); diff --git a/packages/misc/angular-in-memory-web-api/package.json b/packages/misc/angular-in-memory-web-api/package.json index ed1d5afc1d..d0621050f6 100644 --- a/packages/misc/angular-in-memory-web-api/package.json +++ b/packages/misc/angular-in-memory-web-api/package.json @@ -1,16 +1,16 @@ { "name": "angular-in-memory-web-api", - "version": "0.11.0", + "version": "0.12.0", "description": "An in-memory web api for Angular demos and tests", "author": "angular", "license": "MIT", "peerDependencies": { - "@angular/core": "^12.0.0-next.6", - "@angular/common": "^12.0.0-next.6", - "rxjs": "^6.5.3" + "@angular/core": "^12.0.0", + "@angular/common": "^12.0.0", + "rxjs": "^6.5.3 || ^7.0.0" }, "dependencies": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" }, "repository": { "type": "git", diff --git a/packages/misc/angular-in-memory-web-api/src/http-client-backend-service.ts b/packages/misc/angular-in-memory-web-api/src/http-client-backend-service.ts index 9074e146bb..92701755bf 100644 --- a/packages/misc/angular-in-memory-web-api/src/http-client-backend-service.ts +++ b/packages/misc/angular-in-memory-web-api/src/http-client-backend-service.ts @@ -64,19 +64,19 @@ export class HttpClientBackendService extends BackendService implements HttpBack } } - protected getJsonBody(req: HttpRequest): any { + protected override getJsonBody(req: HttpRequest): any { return req.body; } - protected getRequestMethod(req: HttpRequest): string { + protected override getRequestMethod(req: HttpRequest): string { return (req.method || 'get').toLowerCase(); } - protected createHeaders(headers: {[index: string]: string;}): HttpHeaders { + protected override createHeaders(headers: {[index: string]: string;}): HttpHeaders { return new HttpHeaders(headers); } - protected createQueryMap(search: string): Map { + protected override createQueryMap(search: string): Map { const map = new Map(); if (search) { const params = new HttpParams({fromString: search}); @@ -85,12 +85,12 @@ export class HttpClientBackendService extends BackendService implements HttpBack return map; } - protected createResponse$fromResponseOptions$(resOptions$: Observable): + protected override createResponse$fromResponseOptions$(resOptions$: Observable): Observable> { return resOptions$.pipe(map(opts => new HttpResponse(opts))); } - protected createPassThruBackend() { + protected override createPassThruBackend() { try { return new HttpXhrBackend(this.xhrFactory); } catch (ex) { diff --git a/packages/misc/angular-in-memory-web-api/test/BUILD.bazel b/packages/misc/angular-in-memory-web-api/test/BUILD.bazel index 933b195df5..9b33e1d8bf 100644 --- a/packages/misc/angular-in-memory-web-api/test/BUILD.bazel +++ b/packages/misc/angular-in-memory-web-api/test/BUILD.bazel @@ -22,7 +22,7 @@ karma_web_test_suite( name = "test_web", # do not sort bootstrap = [ - "@npm//:node_modules/core-js/client/core.js", + "@npm//:node_modules/core-js-bundle/index.js", "@npm//:node_modules/reflect-metadata/Reflect.js", "@npm//:node_modules/jasmine-ajax/lib/mock-ajax.js", "//packages/zone.js/bundles:zone.umd.js", diff --git a/packages/misc/angular-in-memory-web-api/test/fixtures/http-client-hero-service.ts b/packages/misc/angular-in-memory-web-api/test/fixtures/http-client-hero-service.ts index 658bdf439f..49f5e2e479 100644 --- a/packages/misc/angular-in-memory-web-api/test/fixtures/http-client-hero-service.ts +++ b/packages/misc/angular-in-memory-web-api/test/fixtures/http-client-hero-service.ts @@ -24,12 +24,12 @@ export class HttpClientHeroService extends HeroService { super(); } - getHeroes(): Observable { + override getHeroes(): Observable { return this.http.get(this.heroesUrl).pipe(catchError(this.handleError)); } // This get-by-id will 404 when id not found - getHero(id: number): Observable { + override getHero(id: number): Observable { const url = `${this.heroesUrl}/${id}`; return this.http.get(url).pipe(catchError(this.handleError)); } @@ -42,21 +42,21 @@ export class HttpClientHeroService extends HeroService { // .catch(this.handleError); // } - addHero(name: string): Observable { + override addHero(name: string): Observable { const hero = {name}; return this.http.post(this.heroesUrl, hero, cudOptions) .pipe(catchError(this.handleError)); } - deleteHero(hero: Hero|number): Observable { + override deleteHero(hero: Hero|number): Observable { const id = typeof hero === 'number' ? hero : hero.id; const url = `${this.heroesUrl}/${id}`; return this.http.delete(url, cudOptions).pipe(catchError(this.handleError)); } - searchHeroes(term: string): Observable { + override searchHeroes(term: string): Observable { term = term.trim(); // add safe, encoded search parameter if term is present const options = term ? {params: new HttpParams().set('name', term)} : {}; @@ -64,7 +64,7 @@ export class HttpClientHeroService extends HeroService { return this.http.get(this.heroesUrl, options).pipe(catchError(this.handleError)); } - updateHero(hero: Hero): Observable { + override updateHero(hero: Hero): Observable { return this.http.put(this.heroesUrl, hero, cudOptions).pipe(catchError(this.handleError)); } diff --git a/packages/platform-browser-dynamic/BUILD.bazel b/packages/platform-browser-dynamic/BUILD.bazel index 5dc308f172..b18b113cfa 100644 --- a/packages/platform-browser-dynamic/BUILD.bazel +++ b/packages/platform-browser-dynamic/BUILD.bazel @@ -1,4 +1,4 @@ -load("//tools:defaults.bzl", "ng_module", "ng_package", "ts_api_guardian_test_npm_package") +load("//tools:defaults.bzl", "api_golden_test_npm_package", "ng_module", "ng_package") package(default_visibility = ["//visibility:public"]) @@ -41,12 +41,12 @@ ng_package( ], ) -ts_api_guardian_test_npm_package( +api_golden_test_npm_package( name = "platform-browser-dynamic_api", - actualDir = "angular/packages/platform-browser-dynamic/npm_package", data = [ ":npm_package", "//goldens:public-api", ], - goldenDir = "angular/goldens/public-api/platform-browser-dynamic", + golden_dir = "angular/goldens/public-api/platform-browser-dynamic", + npm_package = "angular/packages/platform-browser-dynamic/npm_package", ) diff --git a/packages/platform-browser-dynamic/package.json b/packages/platform-browser-dynamic/package.json index 176fcc7396..28262e2e04 100644 --- a/packages/platform-browser-dynamic/package.json +++ b/packages/platform-browser-dynamic/package.json @@ -4,8 +4,11 @@ "description": "Angular - library for using Angular in a web browser with JIT compilation", "author": "angular", "license": "MIT", + "engines": { + "node": "^12.14.1 || >=14.0.0" + }, "dependencies": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" }, "peerDependencies": { "@angular/core": "0.0.0-PLACEHOLDER", @@ -21,8 +24,5 @@ "ng-update": { "packageGroup": "NG_UPDATE_PACKAGE_GROUP" }, - "sideEffects": false, - "publishConfig":{ - "registry":"https://wombat-dressing-room.appspot.com" - } + "sideEffects": false } diff --git a/packages/platform-browser-dynamic/src/resource_loader/resource_loader_cache.ts b/packages/platform-browser-dynamic/src/resource_loader/resource_loader_cache.ts index fbc454796c..a18b29b9aa 100644 --- a/packages/platform-browser-dynamic/src/resource_loader/resource_loader_cache.ts +++ b/packages/platform-browser-dynamic/src/resource_loader/resource_loader_cache.ts @@ -29,7 +29,7 @@ export class CachedResourceLoader extends ResourceLoader { } } - get(url: string): Promise { + override get(url: string): Promise { if (this._cache.hasOwnProperty(url)) { return Promise.resolve(this._cache[url]); } else { diff --git a/packages/platform-browser-dynamic/src/resource_loader/resource_loader_impl.ts b/packages/platform-browser-dynamic/src/resource_loader/resource_loader_impl.ts index af0f7c5147..af176e9333 100644 --- a/packages/platform-browser-dynamic/src/resource_loader/resource_loader_impl.ts +++ b/packages/platform-browser-dynamic/src/resource_loader/resource_loader_impl.ts @@ -11,7 +11,7 @@ import {Injectable} from '@angular/core'; @Injectable() export class ResourceLoaderImpl extends ResourceLoader { - get(url: string): Promise { + override get(url: string): Promise { let resolve: (result: any) => void; let reject: (error: any) => void; const promise = new Promise((res, rej) => { diff --git a/packages/platform-browser-dynamic/src/version.ts b/packages/platform-browser-dynamic/src/version.ts index 4a5fcc12eb..c7926cb704 100644 --- a/packages/platform-browser-dynamic/src/version.ts +++ b/packages/platform-browser-dynamic/src/version.ts @@ -9,7 +9,7 @@ /** * @module * @description - * Entry point for all public APIs of the common package. + * Entry point for all public APIs of the platform-browser-dynamic package. */ import {Version} from '@angular/core'; diff --git a/packages/platform-browser-dynamic/test/resource_loader/resource_loader_cache_spec.ts b/packages/platform-browser-dynamic/test/resource_loader/resource_loader_cache_spec.ts index 9953fa5af8..ddadbe17b2 100644 --- a/packages/platform-browser-dynamic/test/resource_loader/resource_loader_cache_spec.ts +++ b/packages/platform-browser-dynamic/test/resource_loader/resource_loader_cache_spec.ts @@ -70,7 +70,7 @@ class TestComponent { } class TestUrlResolver extends UrlResolver { - resolve(baseUrl: string, url: string): string { + override resolve(baseUrl: string, url: string): string { // Don't use baseUrl to get the same URL as templateUrl. // This is to remove any difference between Dart and TS tests. return url; diff --git a/packages/platform-browser-dynamic/test/resource_loader/resource_loader_impl_spec.ts b/packages/platform-browser-dynamic/test/resource_loader/resource_loader_impl_spec.ts index ba1777b0a0..e950c202d8 100644 --- a/packages/platform-browser-dynamic/test/resource_loader/resource_loader_impl_spec.ts +++ b/packages/platform-browser-dynamic/test/resource_loader/resource_loader_impl_spec.ts @@ -6,7 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -import {AsyncTestCompleter, beforeEach, describe, expect, inject, it} from '@angular/core/testing/src/testing_internal'; import {ResourceLoaderImpl} from '@angular/platform-browser-dynamic/src/resource_loader/resource_loader_impl'; if (isBrowser) { @@ -26,21 +25,19 @@ if (isBrowser) { resourceLoader = new ResourceLoaderImpl(); }); - it('should resolve the Promise with the file content on success', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - resourceLoader.get(url200).then((text) => { - expect(text.trim()).toEqual('

    hey

    '); - async.done(); - }); - }), 10000); + it('should resolve the Promise with the file content on success', done => { + resourceLoader.get(url200).then((text) => { + expect(text.trim()).toEqual('

    hey

    '); + done(); + }); + }, 10000); - it('should reject the Promise on failure', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - resourceLoader.get(url404).catch((e) => { - expect(e).toEqual(`Failed to load ${url404}`); - async.done(); - return null; - }); - }), 10000); + it('should reject the Promise on failure', done => { + resourceLoader.get(url404).catch((e) => { + expect(e).toEqual(`Failed to load ${url404}`); + done(); + return null; + }); + }, 10000); }); } diff --git a/packages/platform-browser-dynamic/test/testing_public_browser_spec.ts b/packages/platform-browser-dynamic/test/testing_public_browser_spec.ts index d8b51bea02..5639ec7393 100644 --- a/packages/platform-browser-dynamic/test/testing_public_browser_spec.ts +++ b/packages/platform-browser-dynamic/test/testing_public_browser_spec.ts @@ -11,8 +11,6 @@ import {Compiler, Component, NgModule} from '@angular/core'; import {fakeAsync, inject, TestBed, tick, waitForAsync} from '@angular/core/testing'; import {ResourceLoaderImpl} from '@angular/platform-browser-dynamic/src/resource_loader/resource_loader_impl'; - - // Components for the tests. class FancyService { value: string = 'real value'; @@ -106,48 +104,13 @@ if (isBrowser) { }); describe('errors', () => { - let originalJasmineIt: any; - - const patchJasmineIt = () => { - let resolve: (result: any) => void; - let reject: (error: any) => void; - const promise = new Promise((res, rej) => { - resolve = res; - reject = rej; - }); - originalJasmineIt = jasmine.getEnv().it; - jasmine.getEnv().it = (description: string, fn: (done: DoneFn) => void): any => { - const done = (() => resolve(null)) as DoneFn; - done.fail = reject; - fn(done); - return null; - }; - return promise; - }; - - const restoreJasmineIt = () => { - jasmine.getEnv().it = originalJasmineIt; - }; - - it('should fail when an ResourceLoader fails', done => { - const itPromise = patchJasmineIt(); - - it('should fail with an error from a promise', waitForAsync(() => { - TestBed.configureTestingModule({declarations: [BadTemplateUrl]}); - TestBed.compileComponents(); - })); - - itPromise.then( - () => { - done.fail('Expected test to fail, but it did not'); - }, - (err: any) => { - expect(err.message) - .toEqual('Uncaught (in promise): Failed to load non-existent.html'); - done(); - }); - restoreJasmineIt(); - }, 10000); + describe('should fail when an ResourceLoader fails', () => { + it('should fail with an error from a promise', async () => { + TestBed.configureTestingModule({declarations: [BadTemplateUrl]}); + await expectAsync(TestBed.compileComponents()) + .toBeRejectedWith('Failed to load non-existent.html'); + }, 10000); + }); }); describe('TestBed createComponent', function() { diff --git a/packages/platform-browser-dynamic/testing/src/dom_test_component_renderer.ts b/packages/platform-browser-dynamic/testing/src/dom_test_component_renderer.ts index e57f9dd290..87cc0e764e 100644 --- a/packages/platform-browser-dynamic/testing/src/dom_test_component_renderer.ts +++ b/packages/platform-browser-dynamic/testing/src/dom_test_component_renderer.ts @@ -19,15 +19,18 @@ export class DOMTestComponentRenderer extends TestComponentRenderer { super(); } - insertRootElement(rootElId: string) { + override insertRootElement(rootElId: string) { + this.removeAllRootElements(); const rootElement = getDOM().getDefaultDocument().createElement('div'); rootElement.setAttribute('id', rootElId); + this._doc.body.appendChild(rootElement); + } + override removeAllRootElements() { // TODO(juliemr): can/should this be optional? const oldRoots = this._doc.querySelectorAll('[id^=root]'); for (let i = 0; i < oldRoots.length; i++) { getDOM().remove(oldRoots[i]); } - this._doc.body.appendChild(rootElement); } } diff --git a/packages/platform-browser/BUILD.bazel b/packages/platform-browser/BUILD.bazel index 857ec5093a..4f09dabc9f 100644 --- a/packages/platform-browser/BUILD.bazel +++ b/packages/platform-browser/BUILD.bazel @@ -1,4 +1,4 @@ -load("//tools:defaults.bzl", "ng_module", "ng_package", "ts_api_guardian_test_npm_package") +load("//tools:defaults.bzl", "api_golden_test_npm_package", "ng_module", "ng_package") package(default_visibility = ["//visibility:public"]) @@ -44,12 +44,12 @@ ng_package( ], ) -ts_api_guardian_test_npm_package( +api_golden_test_npm_package( name = "platform-browser_api", - actualDir = "angular/packages/platform-browser/npm_package", data = [ ":npm_package", "//goldens:public-api", ], - goldenDir = "angular/goldens/public-api/platform-browser", + golden_dir = "angular/goldens/public-api/platform-browser", + npm_package = "angular/packages/platform-browser/npm_package", ) diff --git a/packages/platform-browser/animations/src/animation_builder.ts b/packages/platform-browser/animations/src/animation_builder.ts index 057b1b5d55..74959020de 100644 --- a/packages/platform-browser/animations/src/animation_builder.ts +++ b/packages/platform-browser/animations/src/animation_builder.ts @@ -104,6 +104,7 @@ export class RendererAnimationPlayer implements AnimationPlayer { reset(): void { this._command('reset'); + this._started = false; } setPosition(p: number): void { diff --git a/packages/platform-browser/animations/src/animation_renderer.ts b/packages/platform-browser/animations/src/animation_renderer.ts index a7f6adffa6..7ba2d7fc7e 100644 --- a/packages/platform-browser/animations/src/animation_renderer.ts +++ b/packages/platform-browser/animations/src/animation_renderer.ts @@ -241,7 +241,7 @@ export class AnimationRenderer extends BaseAnimationRenderer implements Renderer this.namespaceId = namespaceId; } - setProperty(el: any, name: string, value: any): void { + override setProperty(el: any, name: string, value: any): void { if (name.charAt(0) == ANIMATION_PREFIX) { if (name.charAt(1) == '.' && name == DISABLE_ANIMATIONS_FLAG) { value = value === undefined ? true : !!value; @@ -254,8 +254,9 @@ export class AnimationRenderer extends BaseAnimationRenderer implements Renderer } } - listen(target: 'window'|'document'|'body'|any, eventName: string, callback: (event: any) => any): - () => void { + override listen( + target: 'window'|'document'|'body'|any, eventName: string, + callback: (event: any) => any): () => void { if (eventName.charAt(0) == ANIMATION_PREFIX) { const element = resolveElementFromTarget(target); let name = eventName.substr(1); diff --git a/packages/platform-browser/animations/test/animation_renderer_spec.ts b/packages/platform-browser/animations/test/animation_renderer_spec.ts index 75bc50de60..2cc9c74aaf 100644 --- a/packages/platform-browser/animations/test/animation_renderer_spec.ts +++ b/packages/platform-browser/animations/test/animation_renderer_spec.ts @@ -368,26 +368,26 @@ class MockAnimationEngine extends InjectableAnimationEngine { data.push(args); } - registerTrigger( + override registerTrigger( componentId: string, namespaceId: string, hostElement: any, name: string, metadata: AnimationTriggerMetadata): void { this.triggers.push(metadata); } - onInsert(namespaceId: string, element: any): void { + override onInsert(namespaceId: string, element: any): void { this._capture('onInsert', [element]); } - onRemove(namespaceId: string, element: any, domFn: () => any): void { + override onRemove(namespaceId: string, element: any, domFn: () => any): void { this._capture('onRemove', [element]); } - process(namespaceId: string, element: any, property: string, value: any): boolean { + override process(namespaceId: string, element: any, property: string, value: any): boolean { this._capture('setProperty', [element, property, value]); return true; } - listen( + override listen( namespaceId: string, element: any, eventName: string, eventPhase: string, callback: (event: any) => any): () => void { // we don't capture the callback here since the renderer wraps it in a zone @@ -395,21 +395,21 @@ class MockAnimationEngine extends InjectableAnimationEngine { return () => {}; } - flush() {} + override flush() {} - destroy(namespaceId: string) {} + override destroy(namespaceId: string) {} } @Injectable() class ExtendedAnimationRendererFactory extends AnimationRendererFactory { public log: string[] = []; - begin() { + override begin() { super.begin(); this.log.push('begin'); } - end() { + override end() { super.end(); this.log.push('end'); } diff --git a/packages/platform-browser/animations/test/browser_animation_builder_spec.ts b/packages/platform-browser/animations/test/browser_animation_builder_spec.ts index 7a45c7d2e9..04ec02c68a 100644 --- a/packages/platform-browser/animations/test/browser_animation_builder_spec.ts +++ b/packages/platform-browser/animations/test/browser_animation_builder_spec.ts @@ -104,5 +104,43 @@ import {el} from '../../testing/src/browser_util'; expect(finished).toBeTruthy(); expect(destroyed).toBeTruthy(); })); + + it('should update `hasStarted()` on `play()` and `reset()`', fakeAsync(() => { + @Component({ + selector: 'ani-another-cmp', + template: '...', + }) + class CmpAnother { + @ViewChild('target') public target: any; + + constructor(public builder: AnimationBuilder) {} + + build() { + const definition = + this.builder.build([style({opacity: 0}), animate(1000, style({opacity: 1}))]); + + return definition.create(this.target); + } + } + + TestBed.configureTestingModule({declarations: [CmpAnother]}); + + const fixture = TestBed.createComponent(CmpAnother); + const cmp = fixture.componentInstance; + fixture.detectChanges(); + + const player = cmp.build(); + + expect(player.hasStarted()).toBeFalsy(); + flushMicrotasks(); + + player.play(); + flushMicrotasks(); + expect(player.hasStarted()).toBeTruthy(); + + player.reset(); + flushMicrotasks(); + expect(player.hasStarted()).toBeFalsy(); + })); }); } diff --git a/packages/platform-browser/package.json b/packages/platform-browser/package.json index a44b8c87f6..53a8b4ab90 100644 --- a/packages/platform-browser/package.json +++ b/packages/platform-browser/package.json @@ -4,8 +4,11 @@ "description": "Angular - library for using Angular in a web browser", "author": "angular", "license": "MIT", + "engines": { + "node": "^12.14.1 || >=14.0.0" + }, "dependencies": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" }, "peerDependencies": { "@angular/animations": "0.0.0-PLACEHOLDER", @@ -25,8 +28,5 @@ "ng-update": { "packageGroup": "NG_UPDATE_PACKAGE_GROUP" }, - "sideEffects": false, - "publishConfig":{ - "registry":"https://wombat-dressing-room.appspot.com" - } + "sideEffects": false } diff --git a/packages/platform-browser/src/browser/browser_adapter.ts b/packages/platform-browser/src/browser/browser_adapter.ts index fb0b79ee93..37a11494bf 100644 --- a/packages/platform-browser/src/browser/browser_adapter.ts +++ b/packages/platform-browser/src/browser/browser_adapter.ts @@ -57,6 +57,7 @@ export class BrowserDomAdapter extends GenericBrowserDomAdapter { return node instanceof DocumentFragment; } + /** @deprecated No longer being used in Ivy code. To be removed in version 14. */ getGlobalEventTarget(doc: Document, target: string): EventTarget|null { if (target === 'window') { return window; diff --git a/packages/platform-browser/src/browser/meta.ts b/packages/platform-browser/src/browser/meta.ts index 29901cdb20..ba62dd170e 100644 --- a/packages/platform-browser/src/browser/meta.ts +++ b/packages/platform-browser/src/browser/meta.ts @@ -166,11 +166,11 @@ export class Meta { HTMLMetaElement { if (!forceCreation) { const selector: string = this._parseSelector(meta); - const elem: HTMLMetaElement = this.getTag(selector)!; // It's allowed to have multiple elements with the same name so it's not enough to // just check that element with the same name already present on the page. We also need to // check if element has tag attributes - if (elem && this._containsAttributes(meta, elem)) return elem; + const elem = this.getTags(selector).filter(elem => this._containsAttributes(meta, elem))[0]; + if (elem !== undefined) return elem; } const element: HTMLMetaElement = this._dom.createElement('meta') as HTMLMetaElement; this._setMetaElementAttributes(meta, element); diff --git a/packages/platform-browser/src/dom/dom_renderer.ts b/packages/platform-browser/src/dom/dom_renderer.ts index b9f8e66cf4..02db420b5f 100644 --- a/packages/platform-browser/src/dom/dom_renderer.ts +++ b/packages/platform-browser/src/dom/dom_renderer.ts @@ -102,10 +102,15 @@ export class DomRendererFactory2 implements RendererFactory2 { (renderer).applyToHost(element); return renderer; } + // @ts-ignore TODO: Remove as part of FW-2290. TS complains about us dealing with an enum + // value that is not known (but previously was the value for ViewEncapsulation.Native) case 1: case ViewEncapsulation.ShadowDom: // TODO(FW-2290): remove the `case 1:` fallback logic and the warning in v12. if ((typeof ngDevMode === 'undefined' || ngDevMode) && + // @ts-ignore TODO: Remove as part of FW-2290. TS complains about us dealing with an + // enum value that is not known (but previously was the value for + // ViewEncapsulation.Native) !hasLoggedNativeEncapsulationWarning && type.encapsulation === 1) { hasLoggedNativeEncapsulationWarning = true; console.warn( @@ -299,7 +304,7 @@ class EmulatedEncapsulationDomRenderer2 extends DefaultDomRenderer2 { super.setAttribute(element, this.hostAttr, ''); } - createElement(parent: any, name: string): Element { + override createElement(parent: any, name: string): Element { const el = super.createElement(parent, name); super.setAttribute(el, this.contentAttr, ''); return el; @@ -327,20 +332,20 @@ class ShadowDomRenderer extends DefaultDomRenderer2 { return node === this.hostEl ? this.shadowRoot : node; } - destroy() { + override destroy() { this.sharedStylesHost.removeHost(this.shadowRoot); } - appendChild(parent: any, newChild: any): void { + override appendChild(parent: any, newChild: any): void { return super.appendChild(this.nodeOrShadowRoot(parent), newChild); } - insertBefore(parent: any, newChild: any, refChild: any): void { + override insertBefore(parent: any, newChild: any, refChild: any): void { return super.insertBefore(this.nodeOrShadowRoot(parent), newChild, refChild); } - removeChild(parent: any, oldChild: any): void { + override removeChild(parent: any, oldChild: any): void { return super.removeChild(this.nodeOrShadowRoot(parent), oldChild); } - parentNode(node: any): any { + override parentNode(node: any): any { return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(node))); } } diff --git a/packages/platform-browser/src/dom/events/dom_events.ts b/packages/platform-browser/src/dom/events/dom_events.ts index 3013d1e631..e3826727e3 100644 --- a/packages/platform-browser/src/dom/events/dom_events.ts +++ b/packages/platform-browser/src/dom/events/dom_events.ts @@ -19,11 +19,11 @@ export class DomEventsPlugin extends EventManagerPlugin { // This plugin should come last in the list of plugins, because it accepts all // events. - supports(eventName: string): boolean { + override supports(eventName: string): boolean { return true; } - addEventListener(element: HTMLElement, eventName: string, handler: Function): Function { + override addEventListener(element: HTMLElement, eventName: string, handler: Function): Function { element.addEventListener(eventName, handler as EventListener, false); return () => this.removeEventListener(element, eventName, handler as EventListener); } diff --git a/packages/platform-browser/src/dom/events/event_manager.ts b/packages/platform-browser/src/dom/events/event_manager.ts index e034cf1950..c8cfa17fc3 100644 --- a/packages/platform-browser/src/dom/events/event_manager.ts +++ b/packages/platform-browser/src/dom/events/event_manager.ts @@ -58,6 +58,7 @@ export class EventManager { * @param handler A function to call when the notification occurs. Receives the * event object as an argument. * @returns A callback function that can be used to remove the handler. + * @deprecated No longer being used in Ivy code. To be removed in version 14. */ addGlobalEventListener(target: string, eventName: string, handler: Function): Function { const plugin = this._findPluginFor(eventName); diff --git a/packages/platform-browser/src/dom/events/hammer_gestures.ts b/packages/platform-browser/src/dom/events/hammer_gestures.ts index 11f9a70f3c..882c44f15d 100644 --- a/packages/platform-browser/src/dom/events/hammer_gestures.ts +++ b/packages/platform-browser/src/dom/events/hammer_gestures.ts @@ -171,7 +171,7 @@ export class HammerGesturesPlugin extends EventManagerPlugin { super(doc); } - supports(eventName: string): boolean { + override supports(eventName: string): boolean { if (!EVENT_NAMES.hasOwnProperty(eventName.toLowerCase()) && !this.isCustomEvent(eventName)) { return false; } @@ -188,7 +188,7 @@ export class HammerGesturesPlugin extends EventManagerPlugin { return true; } - addEventListener(element: HTMLElement, eventName: string, handler: Function): Function { + override addEventListener(element: HTMLElement, eventName: string, handler: Function): Function { const zone = this.manager.getZone(); eventName = eventName.toLowerCase(); diff --git a/packages/platform-browser/src/dom/events/key_events.ts b/packages/platform-browser/src/dom/events/key_events.ts index 1ff05956cd..52217001de 100644 --- a/packages/platform-browser/src/dom/events/key_events.ts +++ b/packages/platform-browser/src/dom/events/key_events.ts @@ -88,7 +88,7 @@ export class KeyEventsPlugin extends EventManagerPlugin { * @param eventName The event name to query. * @return True if the named key event is supported. */ - supports(eventName: string): boolean { + override supports(eventName: string): boolean { return KeyEventsPlugin.parseEventName(eventName) != null; } @@ -100,7 +100,7 @@ export class KeyEventsPlugin extends EventManagerPlugin { * event object as an argument. * @returns The key event that was registered. */ - addEventListener(element: HTMLElement, eventName: string, handler: Function): Function { + override addEventListener(element: HTMLElement, eventName: string, handler: Function): Function { const parsedEvent = KeyEventsPlugin.parseEventName(eventName)!; const outsideHandler = diff --git a/packages/platform-browser/src/dom/shared_styles_host.ts b/packages/platform-browser/src/dom/shared_styles_host.ts index 25ec7c8816..9a85ad5f29 100644 --- a/packages/platform-browser/src/dom/shared_styles_host.ts +++ b/packages/platform-browser/src/dom/shared_styles_host.ts @@ -34,35 +34,47 @@ export class SharedStylesHost { @Injectable() export class DomSharedStylesHost extends SharedStylesHost implements OnDestroy { - private _hostNodes = new Set(); - private _styleNodes = new Set(); + // Maps all registered host nodes to a list of style nodes that have been added to the host node. + private _hostNodes = new Map(); + constructor(@Inject(DOCUMENT) private _doc: any) { super(); - this._hostNodes.add(_doc.head); + this._hostNodes.set(_doc.head, []); } - private _addStylesToHost(styles: Set, host: Node): void { + private _addStylesToHost(styles: Set, host: Node, styleNodes: Node[]): void { styles.forEach((style: string) => { const styleEl = this._doc.createElement('style'); styleEl.textContent = style; - this._styleNodes.add(host.appendChild(styleEl)); + styleNodes.push(host.appendChild(styleEl)); }); } addHost(hostNode: Node): void { - this._addStylesToHost(this._stylesSet, hostNode); - this._hostNodes.add(hostNode); + const styleNodes: Node[] = []; + this._addStylesToHost(this._stylesSet, hostNode, styleNodes); + this._hostNodes.set(hostNode, styleNodes); } removeHost(hostNode: Node): void { + const styleNodes = this._hostNodes.get(hostNode); + if (styleNodes) { + styleNodes.forEach(removeStyle); + } this._hostNodes.delete(hostNode); } - onStylesAdded(additions: Set): void { - this._hostNodes.forEach(hostNode => this._addStylesToHost(additions, hostNode)); + override onStylesAdded(additions: Set): void { + this._hostNodes.forEach((styleNodes, hostNode) => { + this._addStylesToHost(additions, hostNode, styleNodes); + }); } ngOnDestroy(): void { - this._styleNodes.forEach(styleNode => getDOM().remove(styleNode)); + this._hostNodes.forEach(styleNodes => styleNodes.forEach(removeStyle)); } } + +function removeStyle(styleNode: Node): void { + getDOM().remove(styleNode); +} diff --git a/packages/platform-browser/src/security/dom_sanitization_service.ts b/packages/platform-browser/src/security/dom_sanitization_service.ts index d65e89adb2..c2ef38d612 100644 --- a/packages/platform-browser/src/security/dom_sanitization_service.ts +++ b/packages/platform-browser/src/security/dom_sanitization_service.ts @@ -153,7 +153,7 @@ export class DomSanitizerImpl extends DomSanitizer { super(); } - sanitize(ctx: SecurityContext, value: SafeValue|string|null): string|null { + override sanitize(ctx: SecurityContext, value: SafeValue|string|null): string|null { if (value == null) return null; switch (ctx) { case SecurityContext.NONE: @@ -190,19 +190,19 @@ export class DomSanitizerImpl extends DomSanitizer { } } - bypassSecurityTrustHtml(value: string): SafeHtml { + override bypassSecurityTrustHtml(value: string): SafeHtml { return bypassSanitizationTrustHtml(value); } - bypassSecurityTrustStyle(value: string): SafeStyle { + override bypassSecurityTrustStyle(value: string): SafeStyle { return bypassSanitizationTrustStyle(value); } - bypassSecurityTrustScript(value: string): SafeScript { + override bypassSecurityTrustScript(value: string): SafeScript { return bypassSanitizationTrustScript(value); } - bypassSecurityTrustUrl(value: string): SafeUrl { + override bypassSecurityTrustUrl(value: string): SafeUrl { return bypassSanitizationTrustUrl(value); } - bypassSecurityTrustResourceUrl(value: string): SafeResourceUrl { + override bypassSecurityTrustResourceUrl(value: string): SafeResourceUrl { return bypassSanitizationTrustResourceUrl(value); } } diff --git a/packages/platform-browser/src/version.ts b/packages/platform-browser/src/version.ts index 4a5fcc12eb..cf12bc66d5 100644 --- a/packages/platform-browser/src/version.ts +++ b/packages/platform-browser/src/version.ts @@ -9,7 +9,7 @@ /** * @module * @description - * Entry point for all public APIs of the common package. + * Entry point for all public APIs of the platform-browser package. */ import {Version} from '@angular/core'; diff --git a/packages/platform-browser/test/browser/bootstrap_spec.ts b/packages/platform-browser/test/browser/bootstrap_spec.ts index d49260773f..e8ae8b2b0b 100644 --- a/packages/platform-browser/test/browser/bootstrap_spec.ts +++ b/packages/platform-browser/test/browser/bootstrap_spec.ts @@ -12,7 +12,8 @@ import {ApplicationRef, destroyPlatform} from '@angular/core/src/application_ref import {Console} from '@angular/core/src/console'; import {ComponentRef} from '@angular/core/src/linker/component_factory'; import {Testability, TestabilityRegistry} from '@angular/core/src/testability/testability'; -import {afterEach, AsyncTestCompleter, beforeEach, beforeEachProviders, describe, inject, it, Log} from '@angular/core/testing/src/testing_internal'; +import {inject, TestBed} from '@angular/core/testing'; +import {Log} from '@angular/core/testing/src/testing_internal'; import {BrowserModule} from '@angular/platform-browser'; import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; import {expect} from '@angular/platform-browser/testing/src/matchers'; @@ -61,10 +62,6 @@ class HelloRootCmp4 { } } -@Component({selector: 'hello-app'}) -class HelloRootMissingTemplate { -} - @Directive({selector: 'hello-app'}) class HelloRootDirectiveIsNotCmp { } @@ -81,29 +78,6 @@ class HelloOnDestroyTickCmp implements OnDestroy { } } -@Component({selector: 'hello-app', templateUrl: './sometemplate.html'}) -class HelloUrlCmp { - greeting = 'hello'; -} - -@Directive({selector: '[someDir]', host: {'[title]': 'someDir'}}) -class SomeDirective { - // TODO(issue/24571): remove '!'. - @Input() someDir!: string; -} - -@Pipe({name: 'somePipe'}) -class SomePipe { - transform(value: string): any { - return `transformed ${value}`; - } -} - -@Component({selector: 'hello-app', template: `
    `}) -class HelloCmpUsingPlatformDirectiveAndPipe { - show: boolean = false; -} - @Component({selector: 'hello-app', template: 'hello world!'}) class HelloCmpUsingCustomElement { } @@ -150,8 +124,8 @@ function bootstrap( if (isNode) return; let compilerConsole: DummyConsole; - beforeEachProviders(() => { - return [Log]; + beforeEach(() => { + TestBed.configureTestingModule({providers: [Log]}); }); beforeEach(inject([DOCUMENT], (doc: any) => { @@ -175,35 +149,31 @@ function bootstrap( afterEach(destroyPlatform); - // TODO(misko): can't use `modifiedInIvy.it` because the `it` is somehow special here. - modifiedInIvy('bootstrapping non-Component throws in View Engine').isEnabled && - it('should throw if bootstrapped Directive is not a Component', - inject([AsyncTestCompleter], (done: AsyncTestCompleter) => { - const logger = new MockConsole(); - const errorHandler = new ErrorHandler(); - (errorHandler as any)._console = logger as any; - expect( - () => bootstrap( - HelloRootDirectiveIsNotCmp, [{provide: ErrorHandler, useValue: errorHandler}])) - .toThrowError(`HelloRootDirectiveIsNotCmp cannot be used as an entry component.`); - done.done(); - })); + modifiedInIvy('bootstrapping non-Component throws in View Engine') + .it('should throw if bootstrapped Directive is not a Component', done => { + const logger = new MockConsole(); + const errorHandler = new ErrorHandler(); + (errorHandler as any)._console = logger as any; + expect( + () => bootstrap( + HelloRootDirectiveIsNotCmp, [{provide: ErrorHandler, useValue: errorHandler}])) + .toThrowError(`HelloRootDirectiveIsNotCmp cannot be used as an entry component.`); + done(); + }); - // TODO(misko): can't use `onlyInIvy.it` because the `it` is somehow special here. - onlyInIvy('bootstrapping non-Component rejects Promise in Ivy').isEnabled && - it('should throw if bootstrapped Directive is not a Component', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const logger = new MockConsole(); - const errorHandler = new ErrorHandler(); - (errorHandler as any)._console = logger as any; - bootstrap(HelloRootDirectiveIsNotCmp, [ - {provide: ErrorHandler, useValue: errorHandler} - ]).catch((error: Error) => { - expect(error).toEqual( - new Error(`HelloRootDirectiveIsNotCmp cannot be used as an entry component.`)); - async.done(); - }); - })); + onlyInIvy('bootstrapping non-Component rejects Promise in Ivy') + .it('should throw if bootstrapped Directive is not a Component', done => { + const logger = new MockConsole(); + const errorHandler = new ErrorHandler(); + (errorHandler as any)._console = logger as any; + bootstrap(HelloRootDirectiveIsNotCmp, [ + {provide: ErrorHandler, useValue: errorHandler} + ]).catch((error: Error) => { + expect(error).toEqual( + new Error(`HelloRootDirectiveIsNotCmp cannot be used as an entry component.`)); + done(); + }); + }); it('should retrieve sanitizer', inject([Injector], (injector: Injector) => { const sanitizer: Sanitizer|null = injector.get(Sanitizer, null); @@ -218,92 +188,88 @@ function bootstrap( } })); - it('should throw if no element is found', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const logger = new MockConsole(); - const errorHandler = new ErrorHandler(); - (errorHandler as any)._console = logger as any; - bootstrap(NonExistentComp, [ - {provide: ErrorHandler, useValue: errorHandler} - ]).then(null, (reason) => { - expect(reason.message) - .toContain('The selector "non-existent" did not match any elements'); - async.done(); - return null; - }); - })); + it('should throw if no element is found', done => { + const logger = new MockConsole(); + const errorHandler = new ErrorHandler(); + (errorHandler as any)._console = logger as any; + bootstrap(NonExistentComp, [ + {provide: ErrorHandler, useValue: errorHandler} + ]).then(null, (reason) => { + expect(reason.message).toContain('The selector "non-existent" did not match any elements'); + done(); + return null; + }); + }); - it('should throw if no provider', inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const logger = new MockConsole(); - const errorHandler = new ErrorHandler(); - (errorHandler as any)._console = logger as any; + it('should throw if no provider', done => { + const logger = new MockConsole(); + const errorHandler = new ErrorHandler(); + (errorHandler as any)._console = logger as any; - class IDontExist {} + class IDontExist {} - @Component({selector: 'cmp', template: 'Cmp'}) - class CustomCmp { - constructor(iDontExist: IDontExist) {} - } + @Component({selector: 'cmp', template: 'Cmp'}) + class CustomCmp { + constructor(iDontExist: IDontExist) {} + } - @Component({ - selector: 'hello-app', - template: '', - }) - class RootCmp { - } + @Component({ + selector: 'hello-app', + template: '', + }) + class RootCmp { + } - @NgModule({declarations: [CustomCmp], exports: [CustomCmp]}) - class CustomModule { - } + @NgModule({declarations: [CustomCmp], exports: [CustomCmp]}) + class CustomModule { + } - bootstrap(RootCmp, [{provide: ErrorHandler, useValue: errorHandler}], [], [ - CustomModule - ]).then(null, (e: Error) => { - let errorMsg: string; - if (ivyEnabled) { - errorMsg = `R3InjectorError(TestModule)[IDontExist -> IDontExist -> IDontExist]: \n`; - } else { - errorMsg = `StaticInjectorError(TestModule)[CustomCmp -> IDontExist]: \n` + - ' StaticInjectorError(Platform: core)[CustomCmp -> IDontExist]: \n' + - ' NullInjectorError: No provider for IDontExist!'; - } - expect(e.message).toContain(errorMsg); - async.done(); - return null; - }); - })); + bootstrap(RootCmp, [{provide: ErrorHandler, useValue: errorHandler}], [], [ + CustomModule + ]).then(null, (e: Error) => { + let errorMsg: string; + if (ivyEnabled) { + errorMsg = `R3InjectorError(TestModule)[IDontExist -> IDontExist -> IDontExist]: \n`; + } else { + errorMsg = `StaticInjectorError(TestModule)[CustomCmp -> IDontExist]: \n` + + ' StaticInjectorError(Platform: core)[CustomCmp -> IDontExist]: \n' + + ' NullInjectorError: No provider for IDontExist!'; + } + expect(e.message).toContain(errorMsg); + done(); + return null; + }); + }); if (getDOM().supportsDOMEvents) { - it('should forward the error to promise when bootstrap fails', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const logger = new MockConsole(); - const errorHandler = new ErrorHandler(); - (errorHandler as any)._console = logger as any; + it('should forward the error to promise when bootstrap fails', done => { + const logger = new MockConsole(); + const errorHandler = new ErrorHandler(); + (errorHandler as any)._console = logger as any; - const refPromise = - bootstrap(NonExistentComp, [{provide: ErrorHandler, useValue: errorHandler}]); - refPromise.then(null, (reason: any) => { - expect(reason.message) - .toContain('The selector "non-existent" did not match any elements'); - async.done(); - }); - })); + const refPromise = + bootstrap(NonExistentComp, [{provide: ErrorHandler, useValue: errorHandler}]); + refPromise.then(null, (reason: any) => { + expect(reason.message) + .toContain('The selector "non-existent" did not match any elements'); + done(); + }); + }); - it('should invoke the default exception handler when bootstrap fails', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const logger = new MockConsole(); - const errorHandler = new ErrorHandler(); - (errorHandler as any)._console = logger as any; + it('should invoke the default exception handler when bootstrap fails', done => { + const logger = new MockConsole(); + const errorHandler = new ErrorHandler(); + (errorHandler as any)._console = logger as any; - const refPromise = - bootstrap(NonExistentComp, [{provide: ErrorHandler, useValue: errorHandler}]); - refPromise.then(null, (reason) => { - expect(logger.res[0].join('#')) - .toContain('ERROR#Error: The selector "non-existent" did not match any elements'); - async.done(); - return null; - }); - })); + const refPromise = + bootstrap(NonExistentComp, [{provide: ErrorHandler, useValue: errorHandler}]); + refPromise.then(null, (reason) => { + expect(logger.res[0].join('#')) + .toContain('ERROR#Error: The selector "non-existent" did not match any elements'); + done(); + return null; + }); + }); } it('should create an injector promise', () => { @@ -311,26 +277,25 @@ function bootstrap( expect(refPromise).toEqual(jasmine.any(Promise)); }); - it('should set platform name to browser', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const refPromise = bootstrap(HelloRootCmp, testProviders); - refPromise.then((ref) => { - expect(isPlatformBrowser(ref.injector.get(PLATFORM_ID))).toBe(true); - async.done(); - }); - })); + it('should set platform name to browser', done => { + const refPromise = bootstrap(HelloRootCmp, testProviders); + refPromise.then((ref) => { + expect(isPlatformBrowser(ref.injector.get(PLATFORM_ID))).toBe(true); + done(); + }, done.fail); + }); - it('should display hello world', inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const refPromise = bootstrap(HelloRootCmp, testProviders); - refPromise.then((ref) => { - expect(el).toHaveText('hello world!'); - expect(el.getAttribute('ng-version')).toEqual(VERSION.full); - async.done(); - }); - })); + it('should display hello world', done => { + const refPromise = bootstrap(HelloRootCmp, testProviders); + refPromise.then((ref) => { + expect(el).toHaveText('hello world!'); + expect(el.getAttribute('ng-version')).toEqual(VERSION.full); + done(); + }, done.fail); + }); it('should throw a descriptive error if BrowserModule is installed again via a lazily loaded module', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { + done => { @NgModule({imports: [BrowserModule]}) class AsyncModule { } @@ -343,158 +308,155 @@ function bootstrap( `BrowserModule has already been loaded. If you need access to common directives such as NgIf and NgFor from a lazy loaded module, import CommonModule instead.`); }); }) - .then(() => async.done(), err => async.fail(err)); - })); + .then(() => done(), err => done.fail(err)); + }); - it('should support multiple calls to bootstrap', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const refPromise1 = bootstrap(HelloRootCmp, testProviders); - const refPromise2 = bootstrap(HelloRootCmp2, testProviders); - Promise.all([refPromise1, refPromise2]).then((refs) => { - expect(el).toHaveText('hello world!'); - expect(el2).toHaveText('hello world, again!'); - async.done(); - }); - })); + it('should support multiple calls to bootstrap', done => { + const refPromise1 = bootstrap(HelloRootCmp, testProviders); + const refPromise2 = bootstrap(HelloRootCmp2, testProviders); + Promise.all([refPromise1, refPromise2]).then((refs) => { + expect(el).toHaveText('hello world!'); + expect(el2).toHaveText('hello world, again!'); + done(); + }, done.fail); + }); it('should not crash if change detection is invoked when the root component is disposed', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { + done => { bootstrap(HelloOnDestroyTickCmp, testProviders).then((ref) => { expect(() => ref.destroy()).not.toThrow(); - async.done(); + done(); }); - })); + }); - it('should unregister change detectors when components are disposed', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - bootstrap(HelloRootCmp, testProviders).then((ref) => { - const appRef = ref.injector.get(ApplicationRef); - ref.destroy(); - expect(() => appRef.tick()).not.toThrow(); - async.done(); - }); - })); + it('should unregister change detectors when components are disposed', done => { + bootstrap(HelloRootCmp, testProviders).then((ref) => { + const appRef = ref.injector.get(ApplicationRef); + ref.destroy(); + expect(() => appRef.tick()).not.toThrow(); + done(); + }, done.fail); + }); - it('should make the provided bindings available to the application component', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const refPromise = bootstrap( - HelloRootCmp3, [testProviders, {provide: 'appBinding', useValue: 'BoundValue'}]); + it('should make the provided bindings available to the application component', done => { + const refPromise = bootstrap( + HelloRootCmp3, [testProviders, {provide: 'appBinding', useValue: 'BoundValue'}]); - refPromise.then((ref) => { - expect(ref.injector.get('appBinding')).toEqual('BoundValue'); - async.done(); - }); - })); + refPromise.then((ref) => { + expect(ref.injector.get('appBinding')).toEqual('BoundValue'); + done(); + }, done.fail); + }); - it('should not override locale provided during bootstrap', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const refPromise = - bootstrap(HelloRootCmp, [testProviders], [{provide: LOCALE_ID, useValue: 'fr-FR'}]); + it('should not override locale provided during bootstrap', done => { + const refPromise = + bootstrap(HelloRootCmp, [testProviders], [{provide: LOCALE_ID, useValue: 'fr-FR'}]); - refPromise.then(ref => { - expect(ref.injector.get(LOCALE_ID)).toEqual('fr-FR'); - async.done(); - }); - })); + refPromise.then(ref => { + expect(ref.injector.get(LOCALE_ID)).toEqual('fr-FR'); + done(); + }, done.fail); + }); it('should avoid cyclic dependencies when root component requires Lifecycle through DI', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { + done => { const refPromise = bootstrap(HelloRootCmp4, testProviders); refPromise.then((ref) => { const appRef = ref.injector.get(ApplicationRef); expect(appRef).toBeDefined(); - async.done(); - }); - })); + done(); + }, done.fail); + }); - it('should run platform initializers', - inject([Log, AsyncTestCompleter], (log: Log, async: AsyncTestCompleter) => { - const p = createPlatformFactory(platformBrowserDynamic, 'someName', [ - {provide: PLATFORM_INITIALIZER, useValue: log.fn('platform_init1'), multi: true}, - {provide: PLATFORM_INITIALIZER, useValue: log.fn('platform_init2'), multi: true} - ])(); + it('should run platform initializers', done => { + inject([Log], (log: Log) => { + const p = createPlatformFactory(platformBrowserDynamic, 'someName', [ + {provide: PLATFORM_INITIALIZER, useValue: log.fn('platform_init1'), multi: true}, + {provide: PLATFORM_INITIALIZER, useValue: log.fn('platform_init2'), multi: true} + ])(); - @NgModule({ - imports: [BrowserModule], - providers: [ - {provide: APP_INITIALIZER, useValue: log.fn('app_init1'), multi: true}, - {provide: APP_INITIALIZER, useValue: log.fn('app_init2'), multi: true} - ] - }) - class SomeModule { - ngDoBootstrap() {} - } + @NgModule({ + imports: [BrowserModule], + providers: [ + {provide: APP_INITIALIZER, useValue: log.fn('app_init1'), multi: true}, + {provide: APP_INITIALIZER, useValue: log.fn('app_init2'), multi: true} + ] + }) + class SomeModule { + ngDoBootstrap() {} + } - expect(log.result()).toEqual('platform_init1; platform_init2'); - log.clear(); - p.bootstrapModule(SomeModule).then(() => { - expect(log.result()).toEqual('app_init1; app_init2'); - async.done(); - }); - })); + expect(log.result()).toEqual('platform_init1; platform_init2'); + log.clear(); + p.bootstrapModule(SomeModule).then(() => { + expect(log.result()).toEqual('app_init1; app_init2'); + done(); + }, done.fail); + })(); + }); - it('should remove styles when transitioning from a server render', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - @Component({ - selector: 'root', - template: 'root', - }) - class RootCmp { - } + it('should remove styles when transitioning from a server render', done => { + @Component({ + selector: 'root', + template: 'root', + }) + class RootCmp { + } - @NgModule({ - bootstrap: [RootCmp], - declarations: [RootCmp], - imports: [BrowserModule.withServerTransition({appId: 'my-app'})], - }) - class TestModule { - } + @NgModule({ + bootstrap: [RootCmp], + declarations: [RootCmp], + imports: [BrowserModule.withServerTransition({appId: 'my-app'})], + }) + class TestModule { + } - // First, set up styles to be removed. - const dom = getDOM(); - const platform = platformBrowserDynamic(); - const document = platform.injector.get(DOCUMENT); - const style = dom.createElement('style', document); - style.setAttribute('ng-transition', 'my-app'); - document.head.appendChild(style); + // First, set up styles to be removed. + const dom = getDOM(); + const platform = platformBrowserDynamic(); + const document = platform.injector.get(DOCUMENT); + const style = dom.createElement('style', document); + style.setAttribute('ng-transition', 'my-app'); + document.head.appendChild(style); - const root = dom.createElement('root', document); - document.body.appendChild(root); + const root = dom.createElement('root', document); + document.body.appendChild(root); - platform.bootstrapModule(TestModule).then(() => { - const styles: HTMLElement[] = - Array.prototype.slice.apply(document.getElementsByTagName('style') || []); - styles.forEach(style => { - expect(style.getAttribute('ng-transition')).not.toBe('my-app'); - }); - async.done(); - }); - })); + platform.bootstrapModule(TestModule).then(() => { + const styles: HTMLElement[] = + Array.prototype.slice.apply(document.getElementsByTagName('style') || []); + styles.forEach(style => { + expect(style.getAttribute('ng-transition')).not.toBe('my-app'); + }); + done(); + }, done.fail); + }); - it('should register each application with the testability registry', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const refPromise1: Promise> = bootstrap(HelloRootCmp, testProviders); - const refPromise2: Promise> = bootstrap(HelloRootCmp2, testProviders); + it('should register each application with the testability registry', done => { + const refPromise1: Promise> = bootstrap(HelloRootCmp, testProviders); + const refPromise2: Promise> = bootstrap(HelloRootCmp2, testProviders); - Promise.all([refPromise1, refPromise2]).then((refs: ComponentRef[]) => { - const registry = refs[0].injector.get(TestabilityRegistry); - const testabilities = - [refs[0].injector.get(Testability), refs[1].injector.get(Testability)]; - Promise.all(testabilities).then((testabilities: Testability[]) => { - expect(registry.findTestabilityInTree(el)).toEqual(testabilities[0]); - expect(registry.findTestabilityInTree(el2)).toEqual(testabilities[1]); - async.done(); - }); - }); - })); + Promise.all([refPromise1, refPromise2]).then((refs: ComponentRef[]) => { + const registry = refs[0].injector.get(TestabilityRegistry); + const testabilities = + [refs[0].injector.get(Testability), refs[1].injector.get(Testability)]; - it('should allow to pass schemas', inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - bootstrap(HelloCmpUsingCustomElement, testProviders).then((compRef) => { - expect(el).toHaveText('hello world!'); - async.done(); - }); - })); + Promise.all(testabilities).then((testabilities: Testability[]) => { + expect(registry.findTestabilityInTree(el)).toEqual(testabilities[0]); + expect(registry.findTestabilityInTree(el2)).toEqual(testabilities[1]); + + done(); + }, done.fail); + }, done.fail); + }); + + it('should allow to pass schemas', done => { + bootstrap(HelloCmpUsingCustomElement, testProviders).then(() => { + expect(el).toHaveText('hello world!'); + done(); + }, done.fail); + }); describe('change detection', () => { const log: string[] = []; @@ -529,7 +491,7 @@ function bootstrap( } it('should be triggered for all bootstrapped components in case change happens in one of them', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { + done => { @NgModule({ imports: [BrowserModule], declarations: [CompA, CompB], @@ -551,31 +513,30 @@ function bootstrap( expect(log).toContain('CompA:ngDoCheck'); expect(log).toContain('CompB:ngDoCheck'); - async.done(); - }); - })); + done(); + }, done.fail); + }); - it('should work in isolation for each component bootstrapped individually', - inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { - const refPromise1 = bootstrap(CompA); - const refPromise2 = bootstrap(CompB); - Promise.all([refPromise1, refPromise2]).then((refs) => { - log.length = 0; - el.querySelectorAll('#button-a')[0].click(); - expect(log).toContain('CompA:onClick'); - expect(log).toContain('CompA:ngDoCheck'); - expect(log).not.toContain('CompB:ngDoCheck'); + it('should work in isolation for each component bootstrapped individually', done => { + const refPromise1 = bootstrap(CompA); + const refPromise2 = bootstrap(CompB); + Promise.all([refPromise1, refPromise2]).then((refs) => { + log.length = 0; + el.querySelectorAll('#button-a')[0].click(); + expect(log).toContain('CompA:onClick'); + expect(log).toContain('CompA:ngDoCheck'); + expect(log).not.toContain('CompB:ngDoCheck'); - log.length = 0; - el2.querySelectorAll('#button-b')[0].click(); - expect(log).toContain('CompB:onClick'); - expect(log).toContain('CompB:ngDoCheck'); - expect(log).not.toContain('CompA:ngDoCheck'); + log.length = 0; + el2.querySelectorAll('#button-b')[0].click(); + expect(log).toContain('CompB:onClick'); + expect(log).toContain('CompB:ngDoCheck'); + expect(log).not.toContain('CompA:ngDoCheck'); - async.done(); - }); - })); + done(); + }, done.fail); + }); }); }); } diff --git a/packages/platform-browser/test/browser/meta_spec.ts b/packages/platform-browser/test/browser/meta_spec.ts index 317849bf46..e1e379b796 100644 --- a/packages/platform-browser/test/browser/meta_spec.ts +++ b/packages/platform-browser/test/browser/meta_spec.ts @@ -167,6 +167,16 @@ import {expect} from '@angular/platform-browser/testing/src/matchers'; expect(metaService.getTags(selector).length).toEqual(1); }); + it('should not add meta tag if it is already present on the page, even if the first tag with the same name has different other attributes', + () => { + metaService.addTag({name: 'description', content: 'aaa'}); + metaService.addTag({name: 'description', content: 'bbb'}); + metaService.addTag({name: 'description', content: 'aaa'}); + metaService.addTag({name: 'description', content: 'bbb'}); + + expect(metaService.getTags('name="description"').length).toEqual(2); + }); + it('should add meta tag if it is already present on the page and but has different attr', () => { const selector = 'property="fb:app_id"'; diff --git a/packages/platform-browser/test/browser/tools/spies.ts b/packages/platform-browser/test/browser/tools/spies.ts deleted file mode 100644 index c7c3c0d476..0000000000 --- a/packages/platform-browser/test/browser/tools/spies.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * @license - * 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 - */ - -import {Injector, ɵglobal as global} from '@angular/core'; -import {ApplicationRef} from '@angular/core/src/application_ref'; -import {SpyObject} from '@angular/core/testing/src/testing_internal'; - -export class SpyApplicationRef extends SpyObject { - constructor() { - super(ApplicationRef); - } -} - -export class SpyComponentRef extends SpyObject { - injector: any /** TODO #9100 */; - constructor() { - super(); - this.injector = - Injector.create([{provide: ApplicationRef, useClass: SpyApplicationRef, deps: []}]); - } -} - -export function callNgProfilerTimeChangeDetection(config?: any /** TODO #9100 */): void { - (global).ng.profiler.timeChangeDetection(config); -} diff --git a/packages/platform-browser/test/browser/tools/tools_spec.ts b/packages/platform-browser/test/browser/tools/tools_spec.ts index 3d26ddefe4..8c078a8138 100644 --- a/packages/platform-browser/test/browser/tools/tools_spec.ts +++ b/packages/platform-browser/test/browser/tools/tools_spec.ts @@ -6,15 +6,22 @@ * found in the LICENSE file at https://angular.io/license */ +import {ApplicationRef, Injector, ɵglobal as global} from '@angular/core'; import {disableDebugTools, enableDebugTools} from '@angular/platform-browser'; -import {callNgProfilerTimeChangeDetection, SpyComponentRef} from './spies'; - { describe('profiler', () => { if (isNode) return; + beforeEach(() => { - enableDebugTools((new SpyComponentRef())); + enableDebugTools({ + injector: Injector.create([{ + provide: ApplicationRef, + useValue: jasmine.createSpyObj( + 'ApplicationRef', ['bootstrap', 'tick', 'attachView', 'detachView']), + deps: [] + }]) + } as any); }); afterEach(() => { @@ -30,3 +37,7 @@ import {callNgProfilerTimeChangeDetection, SpyComponentRef} from './spies'; }); }); } + +export function callNgProfilerTimeChangeDetection(config?: any /** TODO #9100 */): void { + (global).ng.profiler.timeChangeDetection(config); +} diff --git a/packages/platform-browser/test/dom/events/event_manager_spec.ts b/packages/platform-browser/test/dom/events/event_manager_spec.ts index 0f08c19018..866afb8fb0 100644 --- a/packages/platform-browser/test/dom/events/event_manager_spec.ts +++ b/packages/platform-browser/test/dom/events/event_manager_spec.ts @@ -8,7 +8,6 @@ import {ɵgetDOM as getDOM} from '@angular/common'; import {NgZone} from '@angular/core/src/zone/ng_zone'; -import {beforeEach, describe, expect, it} from '@angular/core/testing/src/testing_internal'; import {DomEventsPlugin} from '@angular/platform-browser/src/dom/events/dom_events'; import {EventManager, EventManagerPlugin} from '@angular/platform-browser/src/dom/events/event_manager'; import {createMouseEvent, el} from '../../../testing/src/browser_util'; @@ -511,11 +510,11 @@ class FakeEventManagerPlugin extends EventManagerPlugin { super(doc); } - supports(eventName: string): boolean { + override supports(eventName: string): boolean { return this.supportedEvents.indexOf(eventName) > -1; } - addEventListener(element: any, eventName: string, handler: Function) { + override addEventListener(element: any, eventName: string, handler: Function) { this.eventHandler[eventName] = handler; return () => { delete this.eventHandler[eventName]; @@ -527,10 +526,10 @@ class FakeNgZone extends NgZone { constructor() { super({enableLongStackTrace: false, shouldCoalesceEventChangeDetection: true}); } - run(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any[]): T { + override run(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any[]): T { return fn(); } - runOutsideAngular(fn: Function) { + override runOutsideAngular(fn: Function) { return fn(); } } diff --git a/packages/platform-browser/test/dom/events/hammer_gestures_spec.ts b/packages/platform-browser/test/dom/events/hammer_gestures_spec.ts index 715cc5b482..a6e1007c80 100644 --- a/packages/platform-browser/test/dom/events/hammer_gestures_spec.ts +++ b/packages/platform-browser/test/dom/events/hammer_gestures_spec.ts @@ -7,7 +7,6 @@ */ import {NgZone} from '@angular/core'; import {fakeAsync, inject, tick} from '@angular/core/testing'; -import {afterEach, beforeEach, describe, expect, it,} from '@angular/core/testing/src/testing_internal'; import {EventManager} from '@angular/platform-browser'; import {HammerGestureConfig, HammerGesturesPlugin,} from '@angular/platform-browser/src/dom/events/hammer_gestures'; @@ -58,7 +57,7 @@ import {HammerGestureConfig, HammerGesturesPlugin,} from '@angular/platform-brow let originalHammerGlobal: any; // Fake Hammer instance ("mc") used to test the underlying event registration. - let fakeHammerInstance: {on: () => void, off: () => void}; + let fakeHammerInstance: {on: jasmine.Spy, off: jasmine.Spy}; // Inject the NgZone so that we can make it available to the plugin through a fake // EventManager. diff --git a/packages/platform-browser/test/dom/events/key_events_spec.ts b/packages/platform-browser/test/dom/events/key_events_spec.ts index f29d909759..b422577a6b 100644 --- a/packages/platform-browser/test/dom/events/key_events_spec.ts +++ b/packages/platform-browser/test/dom/events/key_events_spec.ts @@ -6,7 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -import {describe, expect, it} from '@angular/core/testing/src/testing_internal'; import {KeyEventsPlugin} from '@angular/platform-browser/src/dom/events/key_events'; { diff --git a/packages/platform-browser/test/dom/shared_styles_host_spec.ts b/packages/platform-browser/test/dom/shared_styles_host_spec.ts index b164847f47..2891d54ccd 100644 --- a/packages/platform-browser/test/dom/shared_styles_host_spec.ts +++ b/packages/platform-browser/test/dom/shared_styles_host_spec.ts @@ -7,7 +7,6 @@ */ import {ɵgetDOM as getDOM} from '@angular/common'; -import {beforeEach, describe, it} from '@angular/core/testing/src/testing_internal'; import {DomSharedStylesHost} from '@angular/platform-browser/src/dom/shared_styles_host'; import {expect} from '@angular/platform-browser/testing/src/matchers'; @@ -47,6 +46,15 @@ import {expect} from '@angular/platform-browser/testing/src/matchers'; expect(doc.head).toHaveText('a {};b {};'); }); + it('should remove style nodes when the host is removed', () => { + ssh.addStyles(['a {};']); + ssh.addHost(someHost); + expect(someHost.innerHTML).toEqual(''); + + ssh.removeHost(someHost); + expect(someHost.innerHTML).toEqual(''); + }); + it('should remove style nodes on destroy', () => { ssh.addStyles(['a {};']); ssh.addHost(someHost); diff --git a/packages/platform-browser/test/security/dom_sanitization_service_spec.ts b/packages/platform-browser/test/security/dom_sanitization_service_spec.ts index ee9ecb6a0a..147d0756a2 100644 --- a/packages/platform-browser/test/security/dom_sanitization_service_spec.ts +++ b/packages/platform-browser/test/security/dom_sanitization_service_spec.ts @@ -7,15 +7,14 @@ */ import {SecurityContext} from '@angular/core'; -import * as t from '@angular/core/testing/src/testing_internal'; import {DomSanitizerImpl} from '@angular/platform-browser/src/security/dom_sanitization_service'; { - t.describe('DOM Sanitization Service', () => { - t.it('accepts resource URL values for resource contexts', () => { + describe('DOM Sanitization Service', () => { + it('accepts resource URL values for resource contexts', () => { const svc = new DomSanitizerImpl(null); const resourceUrl = svc.bypassSecurityTrustResourceUrl('http://hello/world'); - t.expect(svc.sanitize(SecurityContext.URL, resourceUrl)).toBe('http://hello/world'); + expect(svc.sanitize(SecurityContext.URL, resourceUrl)).toBe('http://hello/world'); }); }); } diff --git a/packages/platform-browser/test/testing_public_spec.ts b/packages/platform-browser/test/testing_public_spec.ts index bb6fa0e575..b580fa01d8 100644 --- a/packages/platform-browser/test/testing_public_spec.ts +++ b/packages/platform-browser/test/testing_public_spec.ts @@ -70,7 +70,7 @@ class FancyService { } class MockFancyService extends FancyService { - value: string = 'mocked out value'; + override value: string = 'mocked out value'; } @Component({ @@ -335,9 +335,9 @@ const bTok = new InjectionToken('b'); }); describe('components with template url', () => { - beforeEach(waitForAsync(() => { + beforeEach(waitForAsync(async () => { TestBed.configureTestingModule({declarations: [CompWithUrlTemplate]}); - TestBed.compileComponents(); + await TestBed.compileComponents(); })); isBrowser && @@ -836,7 +836,6 @@ const bTok = new InjectionToken('b'); describe('errors', () => { let originalJasmineIt: (description: string, func: () => void) => jasmine.Spec; - let originalJasmineBeforeEach: (beforeEachFunction: (done: DoneFn) => void) => void; const patchJasmineIt = () => { let resolve: (result: any) => void; @@ -845,8 +844,9 @@ const bTok = new InjectionToken('b'); resolve = res; reject = rej; }); - originalJasmineIt = jasmine.getEnv().it; - jasmine.getEnv().it = (description: string, fn: (done: DoneFn) => void): any => { + const jasmineEnv = jasmine.getEnv() as any; + originalJasmineIt = jasmineEnv.it; + jasmineEnv.it = (description: string, fn: (done: DoneFn) => void): any => { const done = (() => resolve(null)); done.fail = (err) => reject(err); fn(done); @@ -855,26 +855,7 @@ const bTok = new InjectionToken('b'); return promise; }; - const restoreJasmineIt = () => jasmine.getEnv().it = originalJasmineIt; - - const patchJasmineBeforeEach = () => { - let resolve: (result: any) => void; - let reject: (error: any) => void; - const promise = new Promise((res, rej) => { - resolve = res; - reject = rej; - }); - originalJasmineBeforeEach = jasmine.getEnv().beforeEach; - jasmine.getEnv().beforeEach = (fn: (done: DoneFn) => void) => { - const done = (() => resolve(null)); - done.fail = (err) => reject(err); - fn(done); - }; - return promise; - }; - - const restoreJasmineBeforeEach = () => jasmine.getEnv().beforeEach = - originalJasmineBeforeEach; + const restoreJasmineIt = () => ((jasmine.getEnv() as any).it = originalJasmineIt); it('should fail when an asynchronous error is thrown', (done) => { const itPromise = patchJasmineIt(); @@ -921,21 +902,16 @@ const bTok = new InjectionToken('b'); it('should report an error for declared components with templateUrl which never call TestBed.compileComponents', () => { - const itPromise = patchJasmineIt(); - @Component({ selector: 'comp', - templateUrl: '/base/angular/packages/platform-browser/test/static_assets/test.html' + templateUrl: '/base/angular/packages/platform-browser/test/static_assets/test.html', }) class InlineCompWithUrlTemplate { } - expect( - () => - it('should fail', - withModule( - {declarations: [InlineCompWithUrlTemplate]}, - () => TestBed.createComponent(InlineCompWithUrlTemplate)))) + expect(withModule( + {declarations: [InlineCompWithUrlTemplate]}, + () => TestBed.createComponent(InlineCompWithUrlTemplate))) .toThrowError( ivyEnabled ? `Component 'InlineCompWithUrlTemplate' is not resolved: @@ -945,29 +921,20 @@ Did you run and wait for 'resolveComponentResources()'?` : stringify( InlineCompWithUrlTemplate)} which is using a "templateUrl" or "styleUrls", but they were never compiled. ` + `Please call "TestBed.compileComponents" before your test.`); - - restoreJasmineIt(); }); }); - modifiedInIvy(`Unknown property error thrown instead of logging a message`) .it('should error on unknown bound properties on custom elements by default', () => { @Component({template: ''}) class ComponentUsingInvalidProperty { } - const itPromise = patchJasmineIt(); - expect( - () => - it('should fail', - withModule( - {declarations: [ComponentUsingInvalidProperty]}, - () => TestBed.createComponent(ComponentUsingInvalidProperty)))) + () => withModule( + {declarations: [ComponentUsingInvalidProperty]}, + () => TestBed.createComponent(ComponentUsingInvalidProperty))()) .toThrowError(/Can't bind to 'someUnknownProp'/); - - restoreJasmineIt(); }); onlyInIvy(`Unknown property error logged instead of throwing`) diff --git a/packages/platform-server/BUILD.bazel b/packages/platform-server/BUILD.bazel index eade038378..130308d1a5 100644 --- a/packages/platform-server/BUILD.bazel +++ b/packages/platform-server/BUILD.bazel @@ -1,4 +1,4 @@ -load("//tools:defaults.bzl", "ng_module", "ng_package", "ts_api_guardian_test_npm_package") +load("//tools:defaults.bzl", "api_golden_test_npm_package", "ng_module", "ng_package") package(default_visibility = ["//visibility:public"]) @@ -50,12 +50,12 @@ ng_package( ], ) -ts_api_guardian_test_npm_package( +api_golden_test_npm_package( name = "platform-server_api", - actualDir = "angular/packages/platform-server/npm_package", data = [ ":npm_package", "//goldens:public-api", ], - goldenDir = "angular/goldens/public-api/platform-server", + golden_dir = "angular/goldens/public-api/platform-server", + npm_package = "angular/packages/platform-server/npm_package", ) diff --git a/packages/platform-server/package.json b/packages/platform-server/package.json index 3ac0c3fcef..bea2f09862 100644 --- a/packages/platform-server/package.json +++ b/packages/platform-server/package.json @@ -4,6 +4,9 @@ "description": "Angular - library for using Angular in Node.js", "author": "angular", "license": "MIT", + "engines": { + "node": "^12.14.1 || >=14.0.0" + }, "peerDependencies": { "@angular/animations": "0.0.0-PLACEHOLDER", "@angular/common": "0.0.0-PLACEHOLDER", @@ -14,7 +17,7 @@ }, "dependencies": { "domino": "^2.1.2", - "tslib": "^2.1.0", + "tslib": "^2.2.0", "xhr2": "^0.2.0" }, "repository": { @@ -33,11 +36,5 @@ "./__ivy_ngcc__/bundles/platform-server-init.umd.js", "./__ivy_ngcc__/esm2015/init/src/init.js", "./__ivy_ngcc__/fesm2015/init.js" - ], - "engines": { - "node": ">=8.0" - }, - "publishConfig":{ - "registry":"https://wombat-dressing-room.appspot.com" - } + ] } diff --git a/packages/platform-server/src/domino_adapter.ts b/packages/platform-server/src/domino_adapter.ts index 39d1c8f81d..f0df4b324a 100644 --- a/packages/platform-server/src/domino_adapter.ts +++ b/packages/platform-server/src/domino_adapter.ts @@ -36,33 +36,34 @@ export function serializeDocument(doc: Document): string { * DOM Adapter for the server platform based on https://github.com/fgnass/domino. */ export class DominoAdapter extends BrowserDomAdapter { - static makeCurrent() { + static override makeCurrent() { setDomTypes(); setRootDomAdapter(new DominoAdapter()); } - readonly supportsDOMEvents = false; + override readonly supportsDOMEvents = false; private static defaultDoc: Document; - createHtmlDocument(): HTMLDocument { + override createHtmlDocument(): HTMLDocument { return parseDocument('fakeTitle'); } - getDefaultDocument(): Document { + override getDefaultDocument(): Document { if (!DominoAdapter.defaultDoc) { DominoAdapter.defaultDoc = domino.createDocument(); } return DominoAdapter.defaultDoc; } - isElementNode(node: any): boolean { + override isElementNode(node: any): boolean { return node ? node.nodeType === DominoAdapter.defaultDoc.ELEMENT_NODE : false; } - isShadowRoot(node: any): boolean { + override isShadowRoot(node: any): boolean { return node.shadowRoot == node; } - getGlobalEventTarget(doc: Document, target: string): EventTarget|null { + /** @deprecated No longer being used in Ivy code. To be removed in version 14. */ + override getGlobalEventTarget(doc: Document, target: string): EventTarget|null { if (target === 'window') { return doc.defaultView; } @@ -75,12 +76,12 @@ export class DominoAdapter extends BrowserDomAdapter { return null; } - getBaseHref(doc: Document): string { + override getBaseHref(doc: Document): string { // TODO(alxhub): Need relative path logic from BrowserDomAdapter here? return doc.documentElement!.querySelector('base')?.getAttribute('href') || ''; } - dispatchEvent(el: Node, evt: any) { + override dispatchEvent(el: Node, evt: any) { el.dispatchEvent(evt); // Dispatch the event to the window also. @@ -91,11 +92,11 @@ export class DominoAdapter extends BrowserDomAdapter { } } - getUserAgent(): string { + override getUserAgent(): string { return 'Fake user agent'; } - getCookie(name: string): string { + override getCookie(name: string): string { throw new Error('getCookie has not been implemented'); } } diff --git a/packages/platform-server/src/http.ts b/packages/platform-server/src/http.ts index 0154c026db..37b40d7984 100644 --- a/packages/platform-server/src/http.ts +++ b/packages/platform-server/src/http.ts @@ -124,7 +124,7 @@ export class ZoneClientBackend extends return this.wrap(request); } - protected delegate(request: HttpRequest): Observable> { + protected override delegate(request: HttpRequest): Observable> { return this.backend.handle(request); } } diff --git a/packages/platform-server/src/server_events.ts b/packages/platform-server/src/server_events.ts index 6c6b910478..225f436e99 100644 --- a/packages/platform-server/src/server_events.ts +++ b/packages/platform-server/src/server_events.ts @@ -22,6 +22,7 @@ export class ServerEventManagerPlugin /* extends EventManagerPlugin which is pri return getDOM().onAndCancel(element, eventName, handler); } + /** @deprecated No longer being used in Ivy code. To be removed in version 14. */ addGlobalEventListener(element: string, eventName: string, handler: Function): Function { const target: HTMLElement = getDOM().getGlobalEventTarget(this.doc, element); if (!target) { diff --git a/packages/platform-server/src/server_renderer.ts b/packages/platform-server/src/server_renderer.ts index 33f21fa4ab..c24b8a426a 100644 --- a/packages/platform-server/src/server_renderer.ts +++ b/packages/platform-server/src/server_renderer.ts @@ -267,7 +267,7 @@ class EmulatedEncapsulationServerRenderer2 extends DefaultServerRenderer2 { super.setAttribute(element, this.hostAttr, ''); } - createElement(parent: any, name: string): Element { + override createElement(parent: any, name: string): Element { const el = super.createElement(parent, name, this.document); super.setAttribute(el, this.contentAttr, ''); return el; diff --git a/packages/platform-server/src/styles_host.ts b/packages/platform-server/src/styles_host.ts index e8364cb183..3461c8f5e2 100644 --- a/packages/platform-server/src/styles_host.ts +++ b/packages/platform-server/src/styles_host.ts @@ -33,7 +33,7 @@ export class ServerStylesHost extends SharedStylesHost { this._styleNodes.add(el); } - onStylesAdded(additions: Set) { + override onStylesAdded(additions: Set) { additions.forEach(style => this._addStyle(style)); } diff --git a/packages/platform-server/src/version.ts b/packages/platform-server/src/version.ts index 4a5fcc12eb..93b0886c6b 100644 --- a/packages/platform-server/src/version.ts +++ b/packages/platform-server/src/version.ts @@ -9,7 +9,7 @@ /** * @module * @description - * Entry point for all public APIs of the common package. + * Entry point for all public APIs of the platform-server package. */ import {Version} from '@angular/core'; diff --git a/packages/private/testing/src/render3.ts b/packages/private/testing/src/render3.ts index 5e51240263..53fd86d391 100644 --- a/packages/private/testing/src/render3.ts +++ b/packages/private/testing/src/render3.ts @@ -24,7 +24,7 @@ import {ɵresetJitOptions as resetJitOptions} from '@angular/core'; * * ``` * describe('something', () => { - * it('should do something', withBody('', async () => { + * it('should do something', withBody('', async () => { * const myApp = renderComponent(MyApp); * await whenRendered(myApp); * expect(getRenderedText(myApp)).toEqual('Hello World!'); diff --git a/packages/router/BUILD.bazel b/packages/router/BUILD.bazel index 3415be9ee0..4555ed360f 100644 --- a/packages/router/BUILD.bazel +++ b/packages/router/BUILD.bazel @@ -1,4 +1,4 @@ -load("//tools:defaults.bzl", "ng_module", "ng_package", "ts_api_guardian_test_npm_package") +load("//tools:defaults.bzl", "api_golden_test_npm_package", "ng_module", "ng_package") package(default_visibility = ["//visibility:public"]) @@ -44,12 +44,12 @@ ng_package( ], ) -ts_api_guardian_test_npm_package( +api_golden_test_npm_package( name = "router_api", - actualDir = "angular/packages/router/npm_package", data = [ ":npm_package", "//goldens:public-api", ], - goldenDir = "angular/goldens/public-api/router", + golden_dir = "angular/goldens/public-api/router", + npm_package = "angular/packages/router/npm_package", ) diff --git a/packages/router/karma.conf.js b/packages/router/karma.conf.js index 2b5cb9e95a..17ba88a9da 100644 --- a/packages/router/karma.conf.js +++ b/packages/router/karma.conf.js @@ -28,7 +28,7 @@ module.exports = function(config) { // Polyfills. 'node_modules/core-js/client/core.js', 'node_modules/reflect-metadata/Reflect.js', - 'third_party/shims_for_IE.js', + 'third_party/shims_for_internal_tests.js', // System.js for module loading 'node_modules/systemjs/dist/system-polyfills.js', diff --git a/packages/router/package.json b/packages/router/package.json index 0dbf4e1922..30e91c1a5a 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -13,24 +13,24 @@ }, "author": "angular", "license": "MIT", + "engines": { + "node": "^12.14.1 || >=14.0.0" + }, "bugs": { "url": "https://github.com/angular/angular/issues" }, "homepage": "https://github.com/angular/angular/tree/master/packages/router", "dependencies": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" }, "peerDependencies": { "@angular/core": "0.0.0-PLACEHOLDER", "@angular/common": "0.0.0-PLACEHOLDER", "@angular/platform-browser": "0.0.0-PLACEHOLDER", - "rxjs": "^6.5.3" + "rxjs": "^6.5.3 || ^7.0.0" }, "ng-update": { "packageGroup": "NG_UPDATE_PACKAGE_GROUP" }, - "sideEffects": false, - "publishConfig":{ - "registry":"https://wombat-dressing-room.appspot.com" - } + "sideEffects": false } diff --git a/packages/router/src/apply_redirects.ts b/packages/router/src/apply_redirects.ts index 391688a6ff..2cc993e10d 100644 --- a/packages/router/src/apply_redirects.ts +++ b/packages/router/src/apply_redirects.ts @@ -95,7 +95,8 @@ class ApplyRedirects { })); return urlTrees$.pipe(catchError((e: any) => { if (e instanceof AbsoluteRedirect) { - // after an absolute redirect we do not apply any more redirects! + // After an absolute redirect we do not apply any more redirects! + // If this implementation changes, update the documentation note in `redirectTo`. this.allowRedirects = false; // we need to run matching, so we can fetch all lazy-loaded modules return this.match(e.urlTree); diff --git a/packages/router/src/config.ts b/packages/router/src/config.ts index fbfd9a7f5d..0955c00e26 100644 --- a/packages/router/src/config.ts +++ b/packages/router/src/config.ts @@ -20,7 +20,7 @@ import {UrlSegment, UrlSegmentGroup} from './url_tree'; * * @see `Route` * @see `Router` - * @see [Router configuration guide](guide/router#configuration) + * @see [Router configuration guide](guide/router-reference#configuration) * @publicApi */ export type Routes = Route[]; @@ -396,8 +396,12 @@ export interface Route { * Default is 'prefix'. * * By default, the router checks URL elements from the left to see if the URL - * matches a given path, and stops when there is a match. For example, - * '/team/11/user' matches 'team/:id'. + * matches a given path and stops when there is a config match. Importantly there must still be a + * config match for each segment of the URL. For example, '/team/11/user' matches the prefix + * 'team/:id' if one of the route's children matches the segment 'user'. That is, the URL + * '/team/11/user` matches the config + * `{path: 'team/:id', children: [{path: ':user', component: User}]}` + * but does not match when there are no children as in `{path: 'team/:id', component: Team}`. * * The path-match strategy 'full' matches against the entire URL. * It is important to do this when redirecting empty-path routes. @@ -418,7 +422,10 @@ export interface Route { component?: Type; /** * A URL to redirect to when the path matches. + * * Absolute if the URL begins with a slash (/), otherwise relative to the path URL. + * Note that no further redirects are evaluated after an absolute redirect. + * * When not present, router does not redirect. */ redirectTo?: string; diff --git a/packages/router/src/create_router_state.ts b/packages/router/src/create_router_state.ts index 92ca55bdbf..8532faa045 100644 --- a/packages/router/src/create_router_state.ts +++ b/packages/router/src/create_router_state.ts @@ -28,21 +28,20 @@ function createNode( value._futureSnapshot = curr.value; const children = createOrReuseChildren(routeReuseStrategy, curr, prevState); return new TreeNode(value, children); - - // retrieve an activated route that is used to be displayed, but is not currently displayed } else { - const detachedRouteHandle = - routeReuseStrategy.retrieve(curr.value); - if (detachedRouteHandle) { - const tree: TreeNode = detachedRouteHandle.route; - setFutureSnapshotsOfActivatedRoutes(curr, tree); - return tree; - - } else { - const value = createActivatedRoute(curr.value); - const children = curr.children.map(c => createNode(routeReuseStrategy, c)); - return new TreeNode(value, children); + if (routeReuseStrategy.shouldAttach(curr.value)) { + // retrieve an activated route that is used to be displayed, but is not currently displayed + const detachedRouteHandle = routeReuseStrategy.retrieve(curr.value); + if (detachedRouteHandle !== null) { + const tree = (detachedRouteHandle as DetachedRouteHandleInternal).route; + setFutureSnapshotsOfActivatedRoutes(curr, tree); + return tree; + } } + + const value = createActivatedRoute(curr.value); + const children = curr.children.map(c => createNode(routeReuseStrategy, c)); + return new TreeNode(value, children); } } diff --git a/packages/router/src/directives/router_link_active.ts b/packages/router/src/directives/router_link_active.ts index 8617cb2e2c..257437f37d 100644 --- a/packages/router/src/directives/router_link_active.ts +++ b/packages/router/src/directives/router_link_active.ts @@ -168,7 +168,8 @@ export class RouterLinkActive implements OnChanges, OnDestroy, AfterContentInit } private isLinkActive(router: Router): (link: (RouterLink|RouterLinkWithHref)) => boolean { - const options = 'paths' in this.routerLinkActiveOptions ? + const options: boolean|IsActiveMatchOptions = + isActiveMatchOptions(this.routerLinkActiveOptions) ? this.routerLinkActiveOptions : // While the types should disallow `undefined` here, it's possible without strict inputs (this.routerLinkActiveOptions.exact || false); @@ -181,4 +182,12 @@ export class RouterLinkActive implements OnChanges, OnDestroy, AfterContentInit this.linkWithHref && isActiveCheckFn(this.linkWithHref) || this.links.some(isActiveCheckFn) || this.linksWithHrefs.some(isActiveCheckFn); } -} \ No newline at end of file +} + +/** + * Use instead of `'paths' in options` to be compatible with property renaming + */ +function isActiveMatchOptions(options: {exact: boolean}| + IsActiveMatchOptions): options is IsActiveMatchOptions { + return !!(options as IsActiveMatchOptions).paths; +} diff --git a/packages/router/src/directives/router_outlet.ts b/packages/router/src/directives/router_outlet.ts index 34c158262e..6e363e7565 100644 --- a/packages/router/src/directives/router_outlet.ts +++ b/packages/router/src/directives/router_outlet.ts @@ -6,8 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {Attribute, ChangeDetectorRef, ComponentFactoryResolver, ComponentRef, Directive, EventEmitter, Injector, OnDestroy, OnInit, Output, ViewContainerRef} from '@angular/core'; - +import {Attribute, ChangeDetectorRef, ComponentFactoryResolver, ComponentRef, Directive, EventEmitter, Injector, OnDestroy, OnInit, Output, ViewContainerRef,} from '@angular/core'; import {Data} from '../config'; import {ChildrenOutletContexts} from '../router_outlet_context'; import {ActivatedRoute} from '../router_state'; @@ -72,6 +71,16 @@ export interface RouterOutletContract { * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree. */ attach(ref: ComponentRef, activatedRoute: ActivatedRoute): void; + + /** + * Emits an activate event when a new component is instantiated + **/ + activateEvents?: EventEmitter; + + /** + * Emits a deactivate event when a component is destroyed. + */ + deactivateEvents?: EventEmitter; } /** diff --git a/packages/router/src/events.ts b/packages/router/src/events.ts index 2009892682..427b40570b 100644 --- a/packages/router/src/events.ts +++ b/packages/router/src/events.ts @@ -27,19 +27,21 @@ export type NavigationTrigger = 'imperative'|'popstate'|'hashchange'; * The following code shows how a class subscribes to router events. * * ```ts + * import {Event, RouterEvent, Router} from '@angular/router'; + * * class MyService { - * constructor(public router: Router, logger: Logger) { + * constructor(public router: Router) { * router.events.pipe( * filter((e: Event): e is RouterEvent => e instanceof RouterEvent) * ).subscribe((e: RouterEvent) => { - * logger.log(e.id, e.url); + * // Do something * }); * } * } * ``` * * @see `Event` - * @see [Router events summary](guide/router#router-events) + * @see [Router events summary](guide/router-reference#router-events) * @publicApi */ export class RouterEvent { @@ -100,7 +102,7 @@ export class NavigationStart extends RouterEvent { } /** @docsNotRequired */ - toString(): string { + override toString(): string { return `NavigationStart(id: ${this.id}, url: '${this.url}')`; } } @@ -126,7 +128,7 @@ export class NavigationEnd extends RouterEvent { } /** @docsNotRequired */ - toString(): string { + override toString(): string { return `NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${ this.urlAfterRedirects}')`; } @@ -134,7 +136,7 @@ export class NavigationEnd extends RouterEvent { /** * An event triggered when a navigation is canceled, directly or indirectly. - * This can happen when a route guard + * This can happen for several reasons including when a route guard * returns `false` or initiates a redirect by returning a `UrlTree`. * * @see `NavigationStart` @@ -155,7 +157,7 @@ export class NavigationCancel extends RouterEvent { } /** @docsNotRequired */ - toString(): string { + override toString(): string { return `NavigationCancel(id: ${this.id}, url: '${this.url}')`; } } @@ -181,7 +183,7 @@ export class NavigationError extends RouterEvent { } /** @docsNotRequired */ - toString(): string { + override toString(): string { return `NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`; } } @@ -205,7 +207,7 @@ export class RoutesRecognized extends RouterEvent { } /** @docsNotRequired */ - toString(): string { + override toString(): string { return `RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${ this.urlAfterRedirects}', state: ${this.state})`; } @@ -231,7 +233,7 @@ export class GuardsCheckStart extends RouterEvent { super(id, url); } - toString(): string { + override toString(): string { return `GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${ this.urlAfterRedirects}', state: ${this.state})`; } @@ -259,7 +261,7 @@ export class GuardsCheckEnd extends RouterEvent { super(id, url); } - toString(): string { + override toString(): string { return `GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${ this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`; } @@ -288,7 +290,7 @@ export class ResolveStart extends RouterEvent { super(id, url); } - toString(): string { + override toString(): string { return `ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${ this.urlAfterRedirects}', state: ${this.state})`; } @@ -313,7 +315,7 @@ export class ResolveEnd extends RouterEvent { super(id, url); } - toString(): string { + override toString(): string { return `ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${ this.urlAfterRedirects}', state: ${this.state})`; } diff --git a/packages/router/src/operators/activate_routes.ts b/packages/router/src/operators/activate_routes.ts index 094da9649c..8abe7300f1 100644 --- a/packages/router/src/operators/activate_routes.ts +++ b/packages/router/src/operators/activate_routes.ts @@ -123,6 +123,11 @@ export class ActivateRoutes { context.outlet.deactivate(); // Destroy the contexts for all the outlets that were in the component context.children.onOutletDeactivated(); + // Clear the information about the attached component on the context but keep the reference to + // the outlet. + context.attachRef = null; + context.resolver = null; + context.route = null; } } diff --git a/packages/router/src/recognize.ts b/packages/router/src/recognize.ts index 64d3f25459..cb12aa8172 100644 --- a/packages/router/src/recognize.ts +++ b/packages/router/src/recognize.ts @@ -251,6 +251,8 @@ function hasEmptyPathConfig(node: TreeNode) { function mergeEmptyPathMatches(nodes: Array>): Array> { const result: Array> = []; + // The set of nodes which contain children that were merged from two duplicate empty path nodes. + const mergedNodes: Set> = new Set(); for (const node of nodes) { if (!hasEmptyPathConfig(node)) { @@ -262,11 +264,20 @@ function mergeEmptyPathMatches(nodes: Array>): result.find(resultNode => node.value.routeConfig === resultNode.value.routeConfig); if (duplicateEmptyPathNode !== undefined) { duplicateEmptyPathNode.children.push(...node.children); + mergedNodes.add(duplicateEmptyPathNode); } else { result.push(node); } } - return result; + // For each node which has children from multiple sources, we need to recompute a new `TreeNode` + // by also merging those children. This is necessary when there are multiple empty path configs in + // a row. Put another way: whenever we combine children of two nodes, we need to also check if any + // of those children can be combined into a single node as well. + for (const mergedNode of mergedNodes) { + const mergedChildren = mergeEmptyPathMatches(mergedNode.children); + result.push(new TreeNode(mergedNode.value, mergedChildren)); + } + return result.filter(n => !mergedNodes.has(n)); } function checkOutletNameUniqueness(nodes: TreeNode[]): void { diff --git a/packages/router/src/router.ts b/packages/router/src/router.ts index f67a6c9a14..db34072a35 100644 --- a/packages/router/src/router.ts +++ b/packages/router/src/router.ts @@ -33,7 +33,6 @@ import {Checks, getAllRouteGuards} from './utils/preactivation'; import {isUrlTree} from './utils/type_guards'; - /** * @description * @@ -233,7 +232,12 @@ function defaultMalformedUriErrorHandler( } export type RestoredState = { - [k: string]: any; navigationId: number; + [k: string]: any, + // TODO(#27607): Remove `navigationId` and `ɵrouterPageId` and move to `ng` or `ɵ` namespace. + navigationId: number, + // The `ɵ` prefix is there to reduce the chance of colliding with any existing user properties on + // the history state. + ɵrouterPageId?: number, }; /** @@ -260,7 +264,7 @@ export type RestoredState = { * * @publicApi */ -export type Navigation = { +export interface Navigation { /** * The unique identifier of the current navigation. */ @@ -269,7 +273,7 @@ export type Navigation = { * The target URL passed into the `Router#navigateByUrl()` call before navigation. This is * the value before the router has parsed or applied redirects to it. */ - initialUrl: string | UrlTree; + initialUrl: string|UrlTree; /** * The initial target URL after being parsed with `UrlSerializer.extract()`. */ @@ -287,7 +291,7 @@ export type Navigation = { * * 'popstate'--Triggered by a popstate event. * * 'hashchange'--Triggered by a hashchange event. */ - trigger: 'imperative' | 'popstate' | 'hashchange'; + trigger: 'imperative'|'popstate'|'hashchange'; /** * Options that controlled the strategy used for this navigation. * See `NavigationExtras`. @@ -298,11 +302,12 @@ export type Navigation = { * is available, therefore this previous `Navigation` object has a `null` value * for its own `previousNavigation`. */ - previousNavigation: Navigation | null; -}; + previousNavigation: Navigation|null; +} export type NavigationTransition = { id: number, + targetPageId: number, currentUrlTree: UrlTree, currentRawUrl: UrlTree, extractedUrl: UrlTree, @@ -378,7 +383,6 @@ export const subsetMatchOptions: IsActiveMatchOptions = { queryParams: 'subset' }; - /** * @description * @@ -409,6 +413,24 @@ export class Router { */ private lastLocationChangeInfo: LocationChangeInfo|null = null; private navigationId: number = 0; + + /** + * The id of the currently active page in the router. + * Updated to the transition's target id on a successful navigation. + * + * This is used to track what page the router last activated. When an attempted navigation fails, + * the router can then use this to compute how to restore the state back to the previously active + * page. + */ + private currentPageId: number = 0; + /** + * The ɵrouterPageId of whatever page is currently active in the browser history. This is + * important for computing the target page id for new navigations because we need to ensure each + * page id in the browser history is 1 more than the previous entry. + */ + private get browserPageId(): number|undefined { + return (this.location.getState() as RestoredState | null)?.ɵrouterPageId; + } private configLoader: RouterConfigLoader; private ngModule: NgModuleRef; private console: Console; @@ -470,8 +492,16 @@ export class Router { /** * How to handle a navigation request to the current URL. One of: + * * - `'ignore'` : The router ignores the request. * - `'reload'` : The router reloads the URL. Use to implement a "refresh" feature. + * + * Note that this only configures whether the Route reprocesses the URL and triggers related + * action and events like redirects, guards, and resolvers. By default, the router re-uses a + * component instance when it re-navigates to the same component type without visiting a different + * component first. This behavior is configured by the `RouteReuseStrategy`. In order to reload + * routed components on same url navigation, you need to set `onSameUrlNavigation` to `'reload'` + * _and_ provide a `RouteReuseStrategy` which returns `false` for `shouldReuseRoute`. */ onSameUrlNavigation: 'reload'|'ignore' = 'ignore'; @@ -501,6 +531,25 @@ export class Router { */ relativeLinkResolution: 'legacy'|'corrected' = 'corrected'; + /** + * Configures how the Router attempts to restore state when a navigation is cancelled. + * + * 'replace' - Always uses `location.replaceState` to set the browser state to the state of the + * router before the navigation started. + * + * 'computed' - Will always return to the same state that corresponds to the actual Angular route + * when the navigation gets cancelled right after triggering a `popstate` event. + * + * The default value is `replace` + * + * @internal + */ + // TODO(atscott): Determine how/when/if to make this public API + // This shouldn’t be an option at all but may need to be in order to allow migration without a + // breaking change. We need to determine if it should be made into public api (or if we forgo + // the option and release as a breaking change bug fix in a major version). + canceledNavigationResolution: 'replace'|'computed' = 'replace'; + /** * Creates the router service. */ @@ -527,6 +576,7 @@ export class Router { this.transitions = new BehaviorSubject({ id: 0, + targetPageId: 0, currentUrlTree: this.currentUrlTree, currentRawUrl: this.currentUrlTree, extractedUrl: this.urlHandlingStrategy.extract(this.currentUrlTree), @@ -626,9 +676,7 @@ export class Router { tap(t => { if (this.urlUpdateStrategy === 'eager') { if (!t.extras.skipLocationChange) { - this.setBrowserUrl( - t.urlAfterRedirects, !!t.extras.replaceUrl, t.id, - t.extras.state); + this.setBrowserUrl(t.urlAfterRedirects, t); } this.browserUrlTree = t.urlAfterRedirects; } @@ -723,11 +771,8 @@ export class Router { filter(t => { if (!t.guardsResult) { - this.resetUrlToCurrentUrlTree(); - const navCancel = - new NavigationCancel(t.id, this.serializeUrl(t.extractedUrl), ''); - eventsSubject.next(navCancel); - t.resolve(false); + this.restoreHistory(t); + this.cancelNavigationTransition(t, ''); return false; } return true; @@ -752,11 +797,10 @@ export class Router { next: () => dataResolved = true, complete: () => { if (!dataResolved) { - const navCancel = new NavigationCancel( - t.id, this.serializeUrl(t.extractedUrl), + this.restoreHistory(t); + this.cancelNavigationTransition( + t, `At least one route resolver didn't emit any value.`); - eventsSubject.next(navCancel); - t.resolve(false); } } }), @@ -810,8 +854,7 @@ export class Router { if (this.urlUpdateStrategy === 'deferred') { if (!t.extras.skipLocationChange) { - this.setBrowserUrl( - this.rawUrlTree, !!t.extras.replaceUrl, t.id, t.extras.state); + this.setBrowserUrl(this.rawUrlTree, t); } this.browserUrlTree = t.urlAfterRedirects; } @@ -838,20 +881,29 @@ export class Router { * event is fired when a navigation gets cancelled but not caught by other * means. */ if (!completed && !errored) { - // Must reset to current URL tree here to ensure history.state is set. On a - // fresh page load, if a new navigation comes in before a successful - // navigation completes, there will be nothing in - // history.state.navigationId. This can cause sync problems with AngularJS - // sync code which looks for a value here in order to determine whether or - // not to handle a given popstate event or to leave it to the Angular - // router. - this.resetUrlToCurrentUrlTree(); - const navCancel = new NavigationCancel( - t.id, this.serializeUrl(t.extractedUrl), - `Navigation ID ${t.id} is not equal to the current navigation id ${ - this.navigationId}`); - eventsSubject.next(navCancel); - t.resolve(false); + const cancelationReason = `Navigation ID ${ + t.id} is not equal to the current navigation id ${this.navigationId}`; + if (this.canceledNavigationResolution === 'replace') { + // Must reset to current URL tree here to ensure history.state is set. On + // a fresh page load, if a new navigation comes in before a successful + // navigation completes, there will be nothing in + // history.state.navigationId. This can cause sync problems with + // AngularJS sync code which looks for a value here in order to determine + // whether or not to handle a given popstate event or to leave it to the + // Angular router. + this.restoreHistory(t); + this.cancelNavigationTransition(t, cancelationReason); + } else { + // We cannot trigger a `location.historyGo` if the + // cancellation was due to a new navigation before the previous could + // complete. This is because `location.historyGo` triggers a `popstate` + // which would also trigger another navigation. Instead, treat this as a + // redirect and do not reset the state. + this.cancelNavigationTransition(t, cancelationReason); + // TODO(atscott): The same problem happens here with a fresh page load + // and a new navigation before that completes where we won't set a page + // id. + } } // currentNavigation should always be reset to null here. If navigation was // successful, lastSuccessfulTransition will have already been set. Therefore @@ -859,6 +911,17 @@ export class Router { this.currentNavigation = null; }), catchError((e) => { + // TODO(atscott): The NavigationTransition `t` used here does not accurately + // reflect the current state of the whole transition because some operations + // return a new object rather than modifying the one in the outermost + // `switchMap`. + // The fix can likely be to: + // 1. Rename the outer `t` variable so it's not shadowed all the time and + // confusing + // 2. Keep reassigning to the outer variable after each stage to ensure it + // gets updated. Or change the implementations to not return a copy. + // Not changed yet because it affects existing code and would need to be + // tested more thoroughly. errored = true; /* This error type is issued during Redirect, and is handled as a * cancellation rather than an error. */ @@ -871,7 +934,7 @@ export class Router { // This is only applicable with initial navigation, so setting // `navigated` only when not redirecting resolves this scenario. this.navigated = true; - this.resetStateAndUrl(t.currentRouterState, t.currentUrlTree, t.rawUrl); + this.restoreHistory(t, true); } const navCancel = new NavigationCancel( t.id, this.serializeUrl(t.extractedUrl), e.message); @@ -903,7 +966,7 @@ export class Router { /* All other errors should reset to the router's internal URL reference to * the pre-error state. */ } else { - this.resetStateAndUrl(t.currentRouterState, t.currentUrlTree, t.rawUrl); + this.restoreHistory(t, true); const navError = new NavigationError(t.id, this.serializeUrl(t.extractedUrl), e); eventsSubject.next(navError); @@ -965,15 +1028,16 @@ export class Router { if (!this.locationSubscription) { this.locationSubscription = this.location.subscribe(event => { const currentChange = this.extractLocationChangeInfoFromEvent(event); + // The `setTimeout` was added in #12160 and is likely to support Angular/AngularJS + // hybrid apps. if (this.shouldScheduleNavigation(this.lastLocationChangeInfo, currentChange)) { - // The `setTimeout` was added in #12160 and is likely to support Angular/AngularJS - // hybrid apps. setTimeout(() => { const {source, state, urlTree} = currentChange; const extras: NavigationExtras = {replaceUrl: true}; if (state) { const stateCopy = {...state} as Partial; delete stateCopy.navigationId; + delete stateCopy.ɵrouterPageId; if (Object.keys(stateCopy).length !== 0) { extras.state = stateCopy; } @@ -1027,7 +1091,10 @@ export class Router { return this.serializeUrl(this.currentUrlTree); } - /** The current Navigation object if one exists */ + /** + * Returns the current `Navigation` object when the router is navigating, + * and `null` when idle. + */ getCurrentNavigation(): Navigation|null { return this.currentNavigation; } @@ -1286,11 +1353,11 @@ export class Router { t => { this.navigated = true; this.lastSuccessfulId = t.id; + this.currentPageId = t.targetPageId; (this.events as Subject) .next(new NavigationEnd( t.id, this.serializeUrl(t.extractedUrl), this.serializeUrl(this.currentUrlTree))); this.lastSuccessfulNavigation = this.currentNavigation; - this.currentNavigation = null; t.resolve(true); }, e => { @@ -1305,6 +1372,7 @@ export class Router { if (this.disposed) { return Promise.resolve(false); } + // * Imperative navigations (router.navigate) might trigger additional navigations to the same // URL via a popstate event and the locationChangeListener. We should skip these duplicate // navs. Duplicates may also be triggered by attempts to sync AngularJS and Angular router @@ -1346,8 +1414,34 @@ export class Router { } const id = ++this.navigationId; + let targetPageId: number; + if (this.canceledNavigationResolution === 'computed') { + const isInitialPage = this.currentPageId === 0; + if (isInitialPage) { + restoredState = this.location.getState() as RestoredState | null; + } + // If the `ɵrouterPageId` exist in the state then `targetpageId` should have the value of + // `ɵrouterPageId`. This is the case for something like a page refresh where we assign the + // target id to the previously set value for that page. + if (restoredState && restoredState.ɵrouterPageId) { + targetPageId = restoredState.ɵrouterPageId; + } else { + // If we're replacing the URL or doing a silent navigation, we do not want to increment the + // page id because we aren't pushing a new entry to history. + if (extras.replaceUrl || extras.skipLocationChange) { + targetPageId = this.browserPageId ?? 0; + } else { + targetPageId = (this.browserPageId ?? 0) + 1; + } + } + } else { + // This is unused when `canceledNavigationResolution` is not computed. + targetPageId = 0; + } + this.setTransition({ id, + targetPageId, source, restoredState, currentUrlTree: this.currentUrlTree, @@ -1368,28 +1462,82 @@ export class Router { }); } - private setBrowserUrl( - url: UrlTree, replaceUrl: boolean, id: number, state?: {[key: string]: any}) { + private setBrowserUrl(url: UrlTree, t: NavigationTransition) { const path = this.urlSerializer.serialize(url); - state = state || {}; - if (this.location.isCurrentPathEqualTo(path) || replaceUrl) { - // TODO(jasonaden): Remove first `navigationId` and rely on `ng` namespace. - this.location.replaceState(path, '', {...state, navigationId: id}); + const state = {...t.extras.state, ...this.generateNgRouterState(t.id, t.targetPageId)}; + if (this.location.isCurrentPathEqualTo(path) || !!t.extras.replaceUrl) { + this.location.replaceState(path, '', state); } else { - this.location.go(path, '', {...state, navigationId: id}); + this.location.go(path, '', state); } } - private resetStateAndUrl(storedState: RouterState, storedUrl: UrlTree, rawUrl: UrlTree): void { - (this as {routerState: RouterState}).routerState = storedState; - this.currentUrlTree = storedUrl; - this.rawUrlTree = this.urlHandlingStrategy.merge(this.currentUrlTree, rawUrl); - this.resetUrlToCurrentUrlTree(); + /** + * Performs the necessary rollback action to restore the browser URL to the + * state before the transition. + */ + private restoreHistory(t: NavigationTransition, restoringFromCaughtError = false) { + if (this.canceledNavigationResolution === 'computed') { + const targetPagePosition = this.currentPageId - t.targetPageId; + // The navigator change the location before triggered the browser event, + // so we need to go back to the current url if the navigation is canceled. + // Also, when navigation gets cancelled while using url update strategy eager, then we need to + // go back. Because, when `urlUpdateSrategy` is `eager`; `setBrowserUrl` method is called + // before any verification. + const browserUrlUpdateOccurred = + (t.source === 'popstate' || this.urlUpdateStrategy === 'eager' || + this.currentUrlTree === this.currentNavigation?.finalUrl); + if (browserUrlUpdateOccurred && targetPagePosition !== 0) { + this.location.historyGo(targetPagePosition); + } else if ( + this.currentUrlTree === this.currentNavigation?.finalUrl && targetPagePosition === 0) { + // We got to the activation stage (where currentUrlTree is set to the navigation's + // finalUrl), but we weren't moving anywhere in history (skipLocationChange or replaceUrl). + // We still need to reset the router state back to what it was when the navigation started. + this.resetState(t); + // TODO(atscott): resetting the `browserUrlTree` should really be done in `resetState`. + // Investigate if this can be done by running TGP. + this.browserUrlTree = t.currentUrlTree; + this.resetUrlToCurrentUrlTree(); + } else { + // The browser URL and router state was not updated before the navigation cancelled so + // there's no restoration needed. + } + } else if (this.canceledNavigationResolution === 'replace') { + // TODO(atscott): It seems like we should _always_ reset the state here. It would be a no-op + // for `deferred` navigations that haven't change the internal state yet because guards + // reject. For 'eager' navigations, it seems like we also really should reset the state + // because the navigation was cancelled. Investigate if this can be done by running TGP. + if (restoringFromCaughtError) { + this.resetState(t); + } + this.resetUrlToCurrentUrlTree(); + } + } + + private resetState(t: NavigationTransition): void { + (this as {routerState: RouterState}).routerState = t.currentRouterState; + this.currentUrlTree = t.currentUrlTree; + this.rawUrlTree = this.urlHandlingStrategy.merge(this.currentUrlTree, t.rawUrl); } private resetUrlToCurrentUrlTree(): void { this.location.replaceState( - this.urlSerializer.serialize(this.rawUrlTree), '', {navigationId: this.lastSuccessfulId}); + this.urlSerializer.serialize(this.rawUrlTree), '', + this.generateNgRouterState(this.lastSuccessfulId, this.currentPageId)); + } + + private cancelNavigationTransition(t: NavigationTransition, reason: string) { + const navCancel = new NavigationCancel(t.id, this.serializeUrl(t.extractedUrl), reason); + this.triggerEvent(navCancel); + t.resolve(false); + } + + private generateNgRouterState(navigationId: number, routerPageId?: number) { + if (this.canceledNavigationResolution === 'computed') { + return {navigationId, ɵrouterPageId: routerPageId}; + } + return {navigationId}; } } diff --git a/packages/router/src/router_config_loader.ts b/packages/router/src/router_config_loader.ts index 0810b785a9..e401e349fd 100644 --- a/packages/router/src/router_config_loader.ts +++ b/packages/router/src/router_config_loader.ts @@ -16,7 +16,12 @@ import {standardizeConfig} from './utils/config'; /** * The [DI token](guide/glossary/#di-token) for a router configuration. - * @see `ROUTES` + * + * `ROUTES` is a low level API for router configuration via dependency injection. + * + * We recommend that in almost all cases to use higher level APIs such as `RouterModule.forRoot()`, + * `RouterModule.forChild()`, `provideRoutes`, or `Router.resetConfig()`. + * * @publicApi */ export const ROUTES = new InjectionToken('ROUTES'); diff --git a/packages/router/src/router_module.ts b/packages/router/src/router_module.ts index 51293c5fd2..399a90cd8c 100644 --- a/packages/router/src/router_module.ts +++ b/packages/router/src/router_module.ts @@ -7,7 +7,7 @@ */ import {APP_BASE_HREF, HashLocationStrategy, Location, LOCATION_INITIALIZED, LocationStrategy, PathLocationStrategy, PlatformLocation, ViewportScroller} from '@angular/common'; -import {ANALYZE_FOR_ENTRY_COMPONENTS, APP_BOOTSTRAP_LISTENER, APP_INITIALIZER, ApplicationRef, Compiler, ComponentRef, Inject, Injectable, InjectionToken, Injector, ModuleWithProviders, NgModule, NgModuleFactoryLoader, NgProbeToken, Optional, Provider, SkipSelf, SystemJsNgModuleLoader} from '@angular/core'; +import {ANALYZE_FOR_ENTRY_COMPONENTS, APP_BOOTSTRAP_LISTENER, APP_INITIALIZER, ApplicationRef, Compiler, ComponentRef, Inject, Injectable, InjectionToken, Injector, ModuleWithProviders, NgModule, NgModuleFactoryLoader, NgProbeToken, OnDestroy, Optional, Provider, SkipSelf, SystemJsNgModuleLoader} from '@angular/core'; import {of, Subject} from 'rxjs'; import {EmptyOutletComponent} from './components/empty_outlet'; @@ -503,8 +503,9 @@ export function rootRoute(router: Router): ActivatedRoute { * pauses. It waits for the hook to be resolved. We then resolve it only in a bootstrap listener. */ @Injectable() -export class RouterInitializer { - private initNavigation: boolean = false; +export class RouterInitializer implements OnDestroy { + private initNavigation = false; + private destroyed = false; private resultOfPreactivationDone = new Subject(); constructor(private injector: Injector) {} @@ -512,6 +513,11 @@ export class RouterInitializer { appInitializer(): Promise { const p: Promise = this.injector.get(LOCATION_INITIALIZED, Promise.resolve(null)); return p.then(() => { + // If the injector was destroyed, the DI lookups below will fail. + if (this.destroyed) { + return Promise.resolve(true); + } + let resolve: Function = null!; const res = new Promise(r => resolve = r); const router = this.injector.get(Router); @@ -566,6 +572,10 @@ export class RouterInitializer { this.resultOfPreactivationDone.next(null!); this.resultOfPreactivationDone.complete(); } + + ngOnDestroy() { + this.destroyed = true; + } } export function getAppInitializer(r: RouterInitializer) { diff --git a/packages/router/src/router_state.ts b/packages/router/src/router_state.ts index faf6edd3e1..40ee95402f 100644 --- a/packages/router/src/router_state.ts +++ b/packages/router/src/router_state.ts @@ -59,7 +59,7 @@ export class RouterState extends Tree { setRouterState(this, root); } - toString(): string { + override toString(): string { return this.snapshot.toString(); } } @@ -98,6 +98,10 @@ export function createEmptyStateSnapshot( * The following example shows how to construct a component using information from a * currently activated route. * + * Note: the observables in this class only emit when the current and previous values differ based + * on shallow equality. For example, changing deeply nested properties in resolved `data` will not + * cause the `ActivatedRoute.data` `Observable` to emit a new value. + * * {@example router/activated-route/module.ts region="activated-route" * header="activated-route.component.ts"} * @@ -417,7 +421,7 @@ export class RouterStateSnapshot extends Tree { setRouterState(this, root); } - toString(): string { + override toString(): string { return serializeNode(this._root); } } diff --git a/packages/router/src/url_tree.ts b/packages/router/src/url_tree.ts index 6ed907e359..13841a2789 100644 --- a/packages/router/src/url_tree.ts +++ b/packages/router/src/url_tree.ts @@ -497,12 +497,15 @@ function serializeMatrixParams(params: {[key: string]: string}): string { } function serializeQueryParams(params: {[key: string]: any}): string { - const strParams: string[] = Object.keys(params).map((name) => { - const value = params[name]; - return Array.isArray(value) ? - value.map(v => `${encodeUriQuery(name)}=${encodeUriQuery(v)}`).join('&') : - `${encodeUriQuery(name)}=${encodeUriQuery(value)}`; - }); + const strParams: string[] = + Object.keys(params) + .map((name) => { + const value = params[name]; + return Array.isArray(value) ? + value.map(v => `${encodeUriQuery(name)}=${encodeUriQuery(v)}`).join('&') : + `${encodeUriQuery(name)}=${encodeUriQuery(value)}`; + }) + .filter(s => !!s); return strParams.length ? `?${strParams.join('&')}` : ''; } @@ -520,7 +523,7 @@ function matchQueryParams(str: string): string { return match ? match[0] : ''; } -const QUERY_PARAM_VALUE_RE = /^[^?&#]+/; +const QUERY_PARAM_VALUE_RE = /^[^&#]+/; // Return the value of the query param at the start of the string or an empty string function matchUrlQueryParamValue(str: string): string { const match = str.match(QUERY_PARAM_VALUE_RE); diff --git a/packages/router/src/utils/config.ts b/packages/router/src/utils/config.ts index fd284e5b4d..2ae61f646e 100644 --- a/packages/router/src/utils/config.ts +++ b/packages/router/src/utils/config.ts @@ -136,4 +136,4 @@ export function sortByMatchingOutlets(routes: Routes, outletName: string): Route const sortedConfig = routes.filter(r => getOutlet(r) === outletName); sortedConfig.push(...routes.filter(r => getOutlet(r) !== outletName)); return sortedConfig; -} \ No newline at end of file +} diff --git a/packages/router/src/version.ts b/packages/router/src/version.ts index 4a5fcc12eb..e03db09442 100644 --- a/packages/router/src/version.ts +++ b/packages/router/src/version.ts @@ -9,7 +9,7 @@ /** * @module * @description - * Entry point for all public APIs of the common package. + * Entry point for all public APIs of the router package. */ import {Version} from '@angular/core'; diff --git a/packages/router/test/bootstrap.spec.ts b/packages/router/test/bootstrap.spec.ts index e3b9a63915..a5521666f7 100644 --- a/packages/router/test/bootstrap.spec.ts +++ b/packages/router/test/bootstrap.spec.ts @@ -13,11 +13,25 @@ import {BrowserModule} from '@angular/platform-browser'; import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; import {NavigationEnd, Resolve, Router, RouterModule} from '@angular/router'; +// This is needed, because all files under `packages/` are compiled together as part of the +// [legacy-unit-tests-saucelabs][1] CI job, including the `lib.webworker.d.ts` typings brought in by +// [service-worker/worker/src/service-worker.d.ts][2]. +// +// [1]: +// https://github.com/angular/angular/blob/ffeea63f43e6a7fd46be4a8cd5a5d254c98dea08/.circleci/config.yml#L681 +// [2]: +// https://github.com/angular/angular/blob/316dc2f12ce8931f5ff66fa5f8da21c0d251a337/packages/service-worker/worker/src/service-worker.d.ts#L9 +declare var window: Window; + describe('bootstrap', () => { if (isNode) return; let log: any[] = []; let testProviders: any[] = null!; + @Component({template: 'simple'}) + class SimpleCmp { + } + @Component({selector: 'test-app', template: 'root '}) class RootCmp { constructor() { @@ -394,4 +408,36 @@ describe('bootstrap', () => { expect(window.removeEventListener).toHaveBeenCalledWith('popstate', jasmine.any(Function)); expect(window.removeEventListener).toHaveBeenCalledWith('hashchange', jasmine.any(Function)); }); + + it('can schedule a navigation from the NavigationEnd event #37460', async (done) => { + @NgModule({ + imports: [ + BrowserModule, + RouterModule.forRoot( + [ + {path: 'a', component: SimpleCmp}, + {path: 'b', component: SimpleCmp}, + ], + ) + ], + declarations: [RootCmp, SimpleCmp], + bootstrap: [RootCmp], + providers: [...testProviders], + }) + class TestModule { + } + + const res = await platformBrowserDynamic([]).bootstrapModule(TestModule); + const router = res.injector.get(Router); + router.events.subscribe(() => { + expect(router.getCurrentNavigation()?.id).toBeDefined(); + }); + router.events.subscribe(async (e) => { + if (e instanceof NavigationEnd && e.url === '/b') { + await router.navigate(['a']); + done(); + } + }); + await router.navigateByUrl('/b'); + }); }); diff --git a/packages/router/test/computed_state_restoration.spec.ts b/packages/router/test/computed_state_restoration.spec.ts new file mode 100644 index 0000000000..e4925938e4 --- /dev/null +++ b/packages/router/test/computed_state_restoration.spec.ts @@ -0,0 +1,645 @@ +/** + * @license + * 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 + */ + +import {CommonModule, Location, LocationStrategy, PlatformLocation} from '@angular/common'; +import {SpyLocation} from '@angular/common/testing'; +import {Component, EventEmitter, Injectable, NgModule} from '@angular/core'; +import {ComponentFixture, fakeAsync, TestBed, tick} from '@angular/core/testing'; +import {expect} from '@angular/platform-browser/testing/src/matchers'; +import {CanActivate, CanDeactivate, Resolve, Router, RouterModule, UrlTree} from '@angular/router'; +import {EMPTY, Observable, of, SubscriptionLike} from 'rxjs'; + +import {isUrlTree} from '../src/utils/type_guards'; +import {RouterTestingModule} from '../testing'; + +describe('`restoredState#ɵrouterPageId`', () => { + // TODO: Remove RouterSpyLocation after #38884 is submitted. + class RouterSpyLocation implements Location { + urlChanges: string[] = []; + private _history: LocationState[] = [new LocationState('', '', null)]; + private _historyIndex: number = 0; + /** @internal */ + _subject: EventEmitter = new EventEmitter(); + /** @internal */ + _baseHref: string = ''; + /** @internal */ + _platformStrategy: LocationStrategy = null!; + /** @internal */ + _platformLocation: PlatformLocation = null!; + /** @internal */ + _urlChangeListeners: ((url: string, state: unknown) => void)[] = []; + /** @internal */ + _urlChangeSubscription?: SubscriptionLike; + + setInitialPath(url: string) { + this._history[this._historyIndex].path = url; + } + + setBaseHref(url: string) { + this._baseHref = url; + } + + path(): string { + return this._history[this._historyIndex].path; + } + + getState(): unknown { + return this._history[this._historyIndex].state; + } + + isCurrentPathEqualTo(path: string, query: string = ''): boolean { + const givenPath = path.endsWith('/') ? path.substring(0, path.length - 1) : path; + const currPath = this.path().endsWith('/') ? + this.path().substring(0, this.path().length - 1) : + this.path(); + + return currPath == givenPath + (query.length > 0 ? ('?' + query) : ''); + } + + simulateUrlPop(pathname: string) { + this._subject.emit({'url': pathname, 'pop': true, 'type': 'popstate'}); + } + + simulateHashChange(pathname: string) { + // Because we don't prevent the native event, the browser will independently update the path + this.setInitialPath(pathname); + this.urlChanges.push('hash: ' + pathname); + this._subject.emit({'url': pathname, 'pop': true, 'type': 'hashchange'}); + } + + prepareExternalUrl(url: string): string { + if (url.length > 0 && !url.startsWith('/')) { + url = '/' + url; + } + return this._baseHref + url; + } + + go(path: string, query: string = '', state: any = null) { + path = this.prepareExternalUrl(path); + + if (this._historyIndex > 0) { + this._history.splice(this._historyIndex + 1); + } + this._history.push(new LocationState(path, query, state)); + this._historyIndex = this._history.length - 1; + + const locationState = this._history[this._historyIndex - 1]; + if (locationState.path == path && locationState.query == query) { + return; + } + + const url = path + (query.length > 0 ? ('?' + query) : ''); + this.urlChanges.push(url); + } + + replaceState(path: string, query: string = '', state: any = null) { + path = this.prepareExternalUrl(path); + + const history = this._history[this._historyIndex]; + if (history.path == path && history.query == query) { + return; + } + + history.path = path; + history.query = query; + history.state = state; + + const url = path + (query.length > 0 ? ('?' + query) : ''); + this.urlChanges.push('replace: ' + url); + } + + forward() { + if (this._historyIndex < (this._history.length - 1)) { + this._historyIndex++; + this._subject.emit( + {'url': this.path(), 'state': this.getState(), 'pop': true, 'type': 'popstate'}); + } + } + + back() { + if (this._historyIndex > 0) { + this._historyIndex--; + this._subject.emit( + {'url': this.path(), 'state': this.getState(), 'pop': true, 'type': 'popstate'}); + } + } + + historyGo(relativePosition: number = 0): void { + const nextPageIndex = this._historyIndex + relativePosition; + if (nextPageIndex >= 0 && nextPageIndex < this._history.length) { + this._historyIndex = nextPageIndex; + this._subject.emit( + {'url': this.path(), 'state': this.getState(), 'pop': true, 'type': 'popstate'}); + } + } + + onUrlChange(fn: (url: string, state: unknown) => void) { + this._urlChangeListeners.push(fn); + + if (!this._urlChangeSubscription) { + this._urlChangeSubscription = this.subscribe(v => { + this._notifyUrlChangeListeners(v.url, v.state); + }); + } + } + + /** @internal */ + _notifyUrlChangeListeners(url: string = '', state: unknown) { + this._urlChangeListeners.forEach(fn => fn(url, state)); + } + + subscribe( + onNext: (value: any) => void, onThrow?: ((error: any) => void)|null, + onReturn?: (() => void)|null): SubscriptionLike { + return this._subject.subscribe({next: onNext, error: onThrow, complete: onReturn}); + } + + normalize(url: string): string { + return null!; + } + } + + class LocationState { + constructor(public path: string, public query: string, public state: any) {} + } + + @Injectable({providedIn: 'root'}) + class MyCanDeactivateGuard implements CanDeactivate { + allow: boolean = true; + canDeactivate(): boolean { + return this.allow; + } + } + + @Injectable({providedIn: 'root'}) + class ThrowingCanActivateGuard implements CanActivate { + throw = false; + + constructor(private router: Router) {} + + canActivate(): boolean { + if (this.throw) { + throw new Error('error in guard'); + } + return true; + } + } + + @Injectable({providedIn: 'root'}) + class MyCanActivateGuard implements CanActivate { + allow: boolean = true; + redirectTo: string|null|UrlTree = null; + + constructor(private router: Router) {} + + canActivate(): boolean|UrlTree { + if (typeof this.redirectTo === 'string') { + this.router.navigateByUrl(this.redirectTo); + } else if (isUrlTree(this.redirectTo)) { + return this.redirectTo; + } + return this.allow; + } + } + @Injectable({providedIn: 'root'}) + class MyResolve implements Resolve> { + myresolve: Observable = of(2); + resolve(): Observable { + return this.myresolve; + } + } + + @NgModule( + {imports: [RouterModule.forChild([{path: '', component: SimpleCmp}])]}, + ) + class LoadedModule { + } + + let fixture: ComponentFixture; + + beforeEach(fakeAsync(() => { + TestBed.configureTestingModule({ + imports: [TestModule], + providers: [ + {provide: 'alwaysFalse', useValue: (a: any) => false}, + {provide: Location, useClass: RouterSpyLocation} + ] + }); + const router = TestBed.inject(Router); + (router as any).canceledNavigationResolution = 'computed'; + const location = TestBed.inject(Location); + fixture = createRoot(router, RootCmp); + router.resetConfig([ + { + path: 'first', + component: SimpleCmp, + canDeactivate: [MyCanDeactivateGuard], + canActivate: [MyCanActivateGuard, ThrowingCanActivateGuard], + resolve: [MyResolve] + }, + { + path: 'second', + component: SimpleCmp, + canDeactivate: [MyCanDeactivateGuard], + canActivate: [MyCanActivateGuard, ThrowingCanActivateGuard], + resolve: [MyResolve] + }, + { + path: 'third', + component: SimpleCmp, + canDeactivate: [MyCanDeactivateGuard], + canActivate: [MyCanActivateGuard, ThrowingCanActivateGuard], + resolve: [MyResolve] + }, + { + path: 'unguarded', + component: SimpleCmp, + }, + { + path: 'throwing', + component: ThrowingCmp, + }, + {path: 'loaded', loadChildren: () => of(LoadedModule), canLoad: ['alwaysFalse']} + ]); + router.navigateByUrl('/first'); + advance(fixture); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 1})); + + router.navigateByUrl('/second'); + advance(fixture); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + + router.navigateByUrl('/third'); + advance(fixture); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 3})); + + location.back(); + advance(fixture); + })); + + it('should work when CanActivate returns false', fakeAsync(() => { + const location = TestBed.inject(Location); + const router = TestBed.inject(Router); + expect(location.path()).toEqual('/second'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + + TestBed.inject(MyCanActivateGuard).allow = false; + location.back(); + advance(fixture); + expect(location.path()).toEqual('/second'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + + TestBed.inject(MyCanActivateGuard).allow = true; + location.back(); + advance(fixture); + expect(location.path()).toEqual('/first'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 1})); + + TestBed.inject(MyCanActivateGuard).allow = false; + location.forward(); + advance(fixture); + expect(location.path()).toEqual('/first'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 1})); + + router.navigateByUrl('/second'); + advance(fixture); + expect(location.path()).toEqual('/first'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 1})); + })); + + + it('should work when CanDeactivate returns false', fakeAsync(() => { + const location = TestBed.inject(Location); + const router = TestBed.inject(Router); + + TestBed.inject(MyCanDeactivateGuard).allow = false; + location.back(); + advance(fixture); + expect(location.path()).toEqual('/second'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + + location.forward(); + advance(fixture); + expect(location.path()).toEqual('/second'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + + router.navigateByUrl('third'); + advance(fixture); + expect(location.path()).toEqual('/second'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + + + TestBed.inject(MyCanDeactivateGuard).allow = true; + location.forward(); + advance(fixture); + expect(location.path()).toEqual('/third'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 3})); + })); + + it('should work when using `NavigationExtras.skipLocationChange`', fakeAsync(() => { + const location = TestBed.inject(Location); + const router = TestBed.inject(Router); + + expect(location.path()).toEqual('/second'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + + router.navigateByUrl('/first', {skipLocationChange: true}); + advance(fixture); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + + router.navigateByUrl('/third'); + advance(fixture); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 3})); + + location.back(); + advance(fixture); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + })); + + it('should work when using `NavigationExtras.replaceUrl`', fakeAsync(() => { + const location = TestBed.inject(Location); + const router = TestBed.inject(Router); + + expect(location.path()).toEqual('/second'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + + router.navigateByUrl('/first', {replaceUrl: true}); + advance(fixture); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + expect(location.path()).toEqual('/first'); + })); + + it('should work when CanLoad returns false', fakeAsync(() => { + const location = TestBed.inject(Location); + const router = TestBed.inject(Router); + + router.navigateByUrl('/loaded'); + advance(fixture); + expect(location.path()).toEqual('/second'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + })); + + it('should work when resolve empty', fakeAsync(() => { + const location = TestBed.inject(Location); + const router = TestBed.inject(Router); + + expect(location.path()).toEqual('/second'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + + TestBed.inject(MyResolve).myresolve = EMPTY; + + location.back(); + advance(fixture); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + expect(location.path()).toEqual('/second'); + + TestBed.inject(MyResolve).myresolve = of(2); + + location.back(); + advance(fixture); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 1})); + expect(location.path()).toEqual('/first'); + + TestBed.inject(MyResolve).myresolve = EMPTY; + + // We should cancel the navigation to `/third` when myresolve is empty + router.navigateByUrl('/third'); + advance(fixture); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 1})); + expect(location.path()).toEqual('/first'); + + location.historyGo(2); + advance(fixture); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 1})); + expect(location.path()).toEqual('/first'); + + TestBed.inject(MyResolve).myresolve = of(2); + location.historyGo(2); + advance(fixture); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 3})); + expect(location.path()).toEqual('/third'); + + TestBed.inject(MyResolve).myresolve = EMPTY; + location.historyGo(-2); + advance(fixture); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 3})); + expect(location.path()).toEqual('/third'); + })); + + + it('should work when an error occured during navigation', fakeAsync(() => { + const location = TestBed.inject(Location); + const router = TestBed.inject(Router); + + expect(location.path()).toEqual('/second'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + + + router.navigateByUrl('/invalid').catch(() => null); + advance(fixture); + expect(location.path()).toEqual('/second'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + + location.back(); + advance(fixture); + expect(location.path()).toEqual('/first'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 1})); + })); + + it('should work when urlUpdateStrategy="eager"', fakeAsync(() => { + const location = TestBed.inject(Location) as SpyLocation; + const router = TestBed.inject(Router); + expect(location.path()).toEqual('/second'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + router.urlUpdateStrategy = 'eager'; + + TestBed.inject(MyCanActivateGuard).allow = false; + router.navigateByUrl('/first'); + advance(fixture); + expect(location.path()).toEqual('/second'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + + location.back(); + advance(fixture); + expect(location.path()).toEqual('/second'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + })); + + it('should work when CanActivate redirects', fakeAsync(() => { + const location = TestBed.inject(Location); + + TestBed.inject(MyCanActivateGuard).redirectTo = '/unguarded'; + location.back(); + advance(fixture); + expect(location.path()).toEqual('/unguarded'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + + TestBed.inject(MyCanActivateGuard).redirectTo = null; + + location.back(); + advance(fixture); + expect(location.path()).toEqual('/first'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 1})); + })); + + it('should work when CanActivate redirects and urlUpdateStrategy="eager"', fakeAsync(() => { + const location = TestBed.inject(Location); + const router = TestBed.inject(Router); + router.urlUpdateStrategy = 'eager'; + + TestBed.inject(MyCanActivateGuard).redirectTo = '/unguarded'; + router.navigateByUrl('/third'); + advance(fixture); + expect(location.path()).toEqual('/unguarded'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 4})); + + TestBed.inject(MyCanActivateGuard).redirectTo = null; + + location.back(); + advance(fixture); + expect(location.path()).toEqual('/third'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 3})); + })); + + it('should work when CanActivate redirects with UrlTree and urlUpdateStrategy="eager"', + fakeAsync(() => { + // Note that this test is different from the above case because we are able to specifically + // handle the `UrlTree` case as a proper redirect and set `replaceUrl: true` on the + // follow-up navigation. + const location = TestBed.inject(Location); + const router = TestBed.inject(Router); + router.urlUpdateStrategy = 'eager'; + + TestBed.inject(MyCanActivateGuard).redirectTo = router.createUrlTree(['unguarded']); + router.navigateByUrl('/third'); + advance(fixture); + expect(location.path()).toEqual('/unguarded'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 3})); + + TestBed.inject(MyCanActivateGuard).redirectTo = null; + + location.back(); + advance(fixture); + expect(location.path()).toEqual('/second'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + })); + + for (const urlUpdateSrategy of ['deferred', 'eager'] as const) { + it(`restores history correctly when an error is thrown in guard with urlUpdateStrategy ${ + urlUpdateSrategy}`, + fakeAsync(() => { + const location = TestBed.inject(Location); + const router = TestBed.inject(Router); + router.urlUpdateStrategy = urlUpdateSrategy; + + TestBed.inject(ThrowingCanActivateGuard).throw = true; + + expect(() => { + location.back(); + advance(fixture); + }).toThrow(); + expect(location.path()).toEqual('/second'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + + TestBed.inject(ThrowingCanActivateGuard).throw = false; + location.back(); + advance(fixture); + expect(location.path()).toEqual('/first'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 1})); + })); + + it(`restores history correctly when component throws error in constructor with urlUpdateStrategy ${ + urlUpdateSrategy}`, + fakeAsync(() => { + const location = TestBed.inject(Location); + const router = TestBed.inject(Router); + router.urlUpdateStrategy = urlUpdateSrategy; + + router.navigateByUrl('/throwing').catch(() => null); + advance(fixture); + expect(location.path()).toEqual('/second'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + + location.back(); + advance(fixture); + expect(location.path()).toEqual('/first'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 1})); + })); + } + + it('restores history correctly when component throws error in constructor and replaceUrl=true', + fakeAsync(() => { + const location = TestBed.inject(Location); + const router = TestBed.inject(Router); + + router.navigateByUrl('/throwing', {replaceUrl: true}).catch(() => null); + advance(fixture); + expect(location.path()).toEqual('/second'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + + location.back(); + advance(fixture); + expect(location.path()).toEqual('/first'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 1})); + })); + + it('restores history correctly when component throws error in constructor and skipLocationChange=true', + fakeAsync(() => { + const location = TestBed.inject(Location); + const router = TestBed.inject(Router); + + router.navigateByUrl('/throwing', {skipLocationChange: true}).catch(() => null); + advance(fixture); + expect(location.path()).toEqual('/second'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 2})); + + location.back(); + advance(fixture); + expect(location.path()).toEqual('/first'); + expect(location.getState()).toEqual(jasmine.objectContaining({ɵrouterPageId: 1})); + })); +}); + +function createRoot(router: Router, type: any): ComponentFixture { + const f = TestBed.createComponent(type); + advance(f); + router.initialNavigation(); + advance(f); + return f; +} + +@Component({selector: 'simple-cmp', template: `simple`}) +class SimpleCmp { +} + +@Component({selector: 'root-cmp', template: ``}) +class RootCmp { +} + +@Component({selector: 'throwing-cmp', template: ''}) +class ThrowingCmp { + constructor() { + throw new Error('Throwing Cmp'); + } +} + + + +function advance(fixture: ComponentFixture, millis?: number): void { + tick(millis); + fixture.detectChanges(); +} + +@NgModule({ + imports: [RouterTestingModule, CommonModule], + exports: [SimpleCmp, RootCmp, ThrowingCmp], + entryComponents: [SimpleCmp, RootCmp, ThrowingCmp], + declarations: [SimpleCmp, RootCmp, ThrowingCmp] +}) +class TestModule { +} diff --git a/packages/router/test/create_router_state.spec.ts b/packages/router/test/create_router_state.spec.ts index 7afb907eda..98ecd2a7c3 100644 --- a/packages/router/test/create_router_state.spec.ts +++ b/packages/router/test/create_router_state.spec.ts @@ -92,25 +92,18 @@ describe('create router state', () => { checkActivatedRoute(currC[1], ComponentB, 'right'); }); - it('should cache the retrieved routeReuseStrategy', () => { + it('should not retrieve routes when `shouldAttach` is always false', () => { const config = [ {path: 'a', component: ComponentA}, {path: 'b', component: ComponentB, outlet: 'left'}, {path: 'c', component: ComponentC, outlet: 'left'} ]; - spyOn(reuseStrategy, 'retrieve').and.callThrough(); + spyOn(reuseStrategy, 'retrieve'); const prevState = createRouterState(reuseStrategy, createState(config, 'a(left:b)'), emptyState()); advanceState(prevState); - - // Expect 2 calls as the baseline setup - expect(reuseStrategy.retrieve).toHaveBeenCalledTimes(2); - - // This call should produce a reused activated route - const state = createRouterState(reuseStrategy, createState(config, 'a(left:c)'), prevState); - - // Verify the retrieve method has been called one more time - expect(reuseStrategy.retrieve).toHaveBeenCalledTimes(3); + createRouterState(reuseStrategy, createState(config, 'a(left:c)'), prevState); + expect(reuseStrategy.retrieve).not.toHaveBeenCalled(); }); it('should consistently represent future and current state', () => { diff --git a/packages/router/test/create_url_tree.spec.ts b/packages/router/test/create_url_tree.spec.ts index bf704d577d..8fd407906a 100644 --- a/packages/router/test/create_url_tree.spec.ts +++ b/packages/router/test/create_url_tree.spec.ts @@ -27,6 +27,16 @@ describe('createUrlTree', () => { expect(serializer.serialize(t2)).toEqual('/a/c/c2?m=v1&m=v2'); }); + it('should support parameter with empty arrays as values', () => { + const p1 = serializer.parse('/a/c'); + const t1 = create(p1.root.children[PRIMARY_OUTLET], 1, p1, ['c2'], {m: []}); + expect(serializer.serialize(t1)).toEqual('/a/c/c2'); + + const p2 = serializer.parse('/a/c'); + const t2 = create(p2.root.children[PRIMARY_OUTLET], 1, p2, ['c2'], {m: [], n: 1}); + expect(serializer.serialize(t2)).toEqual('/a/c/c2?n=1'); + }); + it('should set query params', () => { const p = serializer.parse('/'); const t = createRoot(p, [], {a: 'hey'}); diff --git a/packages/router/test/integration.spec.ts b/packages/router/test/integration.spec.ts index 818ab08e91..b3bc41553b 100644 --- a/packages/router/test/integration.spec.ts +++ b/packages/router/test/integration.spec.ts @@ -6,18 +6,19 @@ * found in the LICENSE file at https://angular.io/license */ -import {CommonModule, Location} from '@angular/common'; +import {APP_BASE_HREF, CommonModule, Location, LOCATION_INITIALIZED, LocationStrategy, PlatformLocation} from '@angular/common'; import {SpyLocation} from '@angular/common/testing'; -import {ChangeDetectionStrategy, Component, Injectable, NgModule, NgModuleFactoryLoader, NgModuleRef, NgZone, OnDestroy, ViewChild, ɵConsole as Console, ɵNoopNgZone as NoopNgZone} from '@angular/core'; +import {ChangeDetectionStrategy, Component, EventEmitter, Injectable, NgModule, NgModuleFactoryLoader, NgModuleRef, NgZone, OnDestroy, ViewChild, ɵConsole as Console, ɵNoopNgZone as NoopNgZone} from '@angular/core'; import {ComponentFixture, fakeAsync, inject, TestBed, tick} from '@angular/core/testing'; -import {describe} from '@angular/core/testing/src/testing_internal'; import {By} from '@angular/platform-browser/src/dom/debug/by'; import {expect} from '@angular/platform-browser/testing/src/matchers'; import {ActivatedRoute, ActivatedRouteSnapshot, ActivationEnd, ActivationStart, CanActivate, CanDeactivate, ChildActivationEnd, ChildActivationStart, DefaultUrlSerializer, DetachedRouteHandle, Event, GuardsCheckEnd, GuardsCheckStart, Navigation, NavigationCancel, NavigationEnd, NavigationError, NavigationStart, ParamMap, Params, PreloadAllModules, PreloadingStrategy, PRIMARY_OUTLET, Resolve, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, Router, RouteReuseStrategy, RouterEvent, RouterLink, RouterLinkWithHref, RouterModule, RouterPreloader, RouterStateSnapshot, RoutesRecognized, RunGuardsAndResolvers, UrlHandlingStrategy, UrlSegmentGroup, UrlSerializer, UrlTree} from '@angular/router'; -import {EMPTY, Observable, Observer, of, Subscription} from 'rxjs'; +import {EMPTY, Observable, Observer, of, Subscription, SubscriptionLike} from 'rxjs'; import {delay, filter, first, map, mapTo, tap} from 'rxjs/operators'; +import {RouterInitializer} from '../src/router_module'; import {forEach} from '../src/utils/collection'; +import {isUrlTree} from '../src/utils/type_guards'; import {RouterTestingModule, SpyNgModuleFactoryLoader} from '../testing'; describe('Integration', () => { @@ -187,6 +188,47 @@ describe('Integration', () => { expect(navigation.extras.state).toEqual(state); }))); + it('should navigate correctly when using `Location#historyGo', + fakeAsync(inject([Router, Location], (router: Router, location: SpyLocation) => { + router.resetConfig([ + {path: 'first', component: SimpleCmp}, + {path: 'second', component: SimpleCmp}, + + ]); + + createRoot(router, RootCmp); + + router.navigateByUrl('/first'); + tick(); + router.navigateByUrl('/second'); + tick(); + expect(router.url).toEqual('/second'); + + location.historyGo(-1); + tick(); + expect(router.url).toEqual('/first'); + + location.historyGo(1); + tick(); + expect(router.url).toEqual('/second'); + + location.historyGo(-100); + tick(); + expect(router.url).toEqual('/second'); + + location.historyGo(100); + tick(); + expect(router.url).toEqual('/second'); + + location.historyGo(0); + tick(); + expect(router.url).toEqual('/second'); + + location.historyGo(); + tick(); + expect(router.url).toEqual('/second'); + }))); + it('should not error if state is not {[key: string]: any}', fakeAsync(inject([Router, Location], (router: Router, location: SpyLocation) => { router.resetConfig([ @@ -406,10 +448,10 @@ describe('Integration', () => { @Component({ template: ` - - - - ` + + + + ` }) class NamedOutletHost { logDeactivate(route: string) { @@ -554,6 +596,39 @@ describe('Integration', () => { {}, ]); })); + + it('should work between aux outlets under two levels of empty path parents', fakeAsync(() => { + TestBed.configureTestingModule({imports: [TestModule]}); + const router = TestBed.inject(Router); + router.resetConfig([{ + path: '', + children: [ + { + path: '', + component: NamedOutletHost, + children: [ + {path: 'one', component: Child1, outlet: 'first'}, + {path: 'two', component: Child2, outlet: 'first'}, + ] + }, + ] + }]); + + const fixture = createRoot(router, RootCmp); + + router.navigateByUrl('/(first:one)'); + advance(fixture); + expect(log).toEqual(['child1 constructor']); + + log.length = 0; + router.navigateByUrl('/(first:two)'); + advance(fixture); + expect(log).toEqual([ + 'child1 destroy', + 'first deactivate', + 'child2 constructor', + ]); + })); }); it('should not wait for prior navigations to start a new navigation', @@ -927,7 +1002,7 @@ describe('Integration', () => { expect(fixture.nativeElement).toHaveText('team 33 [ , right: ]'); }))); - it('should should set `state` with urlUpdateStrategy="eagar"', + it('should set `state` with urlUpdateStrategy="eagar"', fakeAsync(inject([Router, Location], (router: Router, location: SpyLocation) => { router.urlUpdateStrategy = 'eager'; router.resetConfig([ @@ -2216,11 +2291,11 @@ describe('Integration', () => { @Component({ selector: 'someCmp', template: ` - Link - - Link - - ` + Link + + Link + + ` }) class CmpWithLink { } @@ -2588,7 +2663,6 @@ describe('Integration', () => { expect(location.path()).toEqual('/initial'); }))); }); - describe('guards', () => { describe('CanActivate', () => { describe('should not activate a route when CanActivate returns false', () => { @@ -2813,161 +2887,6 @@ describe('Integration', () => { }))); }); - describe('should not break the history', () => { - @Injectable({providedIn: 'root'}) - class MyGuard implements CanDeactivate { - allow: boolean = true; - canDeactivate(): boolean { - return this.allow; - } - } - - @Component({selector: 'parent', template: ''}) - class Parent { - } - - @Component({selector: 'home', template: 'home'}) - class Home { - } - - @Component({selector: 'child1', template: 'child1'}) - class Child1 { - } - - @Component({selector: 'child2', template: 'child2'}) - class Child2 { - } - - @Component({selector: 'child3', template: 'child3'}) - class Child3 { - } - - @Component({selector: 'child4', template: 'child4'}) - class Child4 { - } - - @Component({selector: 'child5', template: 'child5'}) - class Child5 { - } - - @NgModule({ - declarations: [Parent, Home, Child1, Child2, Child3, Child4, Child5], - entryComponents: [Child1, Child2, Child3, Child4, Child5], - imports: [RouterModule] - }) - class TestModule { - } - - let fixture: ComponentFixture; - - beforeEach(fakeAsync(() => { - TestBed.configureTestingModule({imports: [TestModule]}); - const router = TestBed.get(Router); - const location = TestBed.get(Location); - fixture = createRoot(router, Parent); - - router.resetConfig([ - {path: '', component: Home}, - {path: 'first', component: Child1}, - {path: 'second', component: Child2}, - {path: 'third', component: Child3, canDeactivate: [MyGuard]}, - {path: 'fourth', component: Child4}, - {path: 'fifth', component: Child5}, - ]); - - // Create a navigation history of pages 1-5, and go back to 3 so that there is both - // back and forward history. - router.navigateByUrl('/first'); - advance(fixture); - router.navigateByUrl('/second'); - advance(fixture); - router.navigateByUrl('/third'); - advance(fixture); - router.navigateByUrl('/fourth'); - advance(fixture); - router.navigateByUrl('/fifth'); - advance(fixture); - location.back(); - advance(fixture); - location.back(); - advance(fixture); - })); - - // TODO(https://github.com/angular/angular/issues/13586) - // A fix to this requires much more design - xit('when navigate back using Back button', fakeAsync(() => { - const location = TestBed.get(Location); - expect(location.path()).toEqual('/third'); - - TestBed.get(MyGuard).allow = false; - location.back(); - advance(fixture); - expect(location.path()).toEqual('/third'); - expect(fixture.nativeElement).toHaveText('child3'); - - TestBed.get(MyGuard).allow = true; - location.back(); - advance(fixture); - expect(location.path()).toEqual('/second'); - expect(fixture.nativeElement).toHaveText('child2'); - })); - - it('when navigate back imperatively', fakeAsync(() => { - const router = TestBed.get(Router); - const location = TestBed.get(Location); - expect(location.path()).toEqual('/third'); - - TestBed.get(MyGuard).allow = false; - router.navigateByUrl('/second'); - advance(fixture); - expect(location.path()).toEqual('/third'); - expect(fixture.nativeElement).toHaveText('child3'); - - TestBed.get(MyGuard).allow = true; - location.back(); - advance(fixture); - expect(location.path()).toEqual('/second'); - expect(fixture.nativeElement).toHaveText('child2'); - })); - - // TODO(https://github.com/angular/angular/issues/13586) - // A fix to this requires much more design - xit('when navigate back using Foward button', fakeAsync(() => { - const location = TestBed.get(Location); - expect(location.path()).toEqual('/third'); - - TestBed.get(MyGuard).allow = false; - location.forward(); - advance(fixture); - expect(location.path()).toEqual('/third'); - expect(fixture.nativeElement).toHaveText('child3'); - - TestBed.get(MyGuard).allow = true; - location.forward(); - advance(fixture); - expect(location.path()).toEqual('/fourth'); - expect(fixture.nativeElement).toHaveText('child4'); - })); - - it('when navigate forward imperatively', fakeAsync(() => { - const router = TestBed.get(Router); - const location = TestBed.get(Location); - expect(location.path()).toEqual('/third'); - - TestBed.get(MyGuard).allow = false; - router.navigateByUrl('/fourth'); - advance(fixture); - expect(location.path()).toEqual('/third'); - expect(fixture.nativeElement).toHaveText('child3'); - - TestBed.get(MyGuard).allow = true; - location.forward(); - advance(fixture); - expect(location.path()).toEqual('/fourth'); - expect(fixture.nativeElement).toHaveText('child4'); - })); - }); - describe('should redirect when guard returns UrlTree', () => { beforeEach(() => TestBed.configureTestingModule({ providers: [ @@ -4681,10 +4600,10 @@ describe('Integration', () => { it('should expose an isActive property', fakeAsync(() => { @Component({ template: ` -

    {{rla.isActive}}

    - - - ` +

    {{rla.isActive}}

    + + + ` }) class ComponentWithRouterLink { } @@ -5591,8 +5510,8 @@ describe('Integration', () => { selector: 'link-cmp', template: `link - - ` + + ` }) class RelativeLinkCmp { @ViewChild(RouterLink) buttonLink!: RouterLink; @@ -5728,11 +5647,23 @@ describe('Integration', () => { } } + it('should be injectable', () => { + TestBed.configureTestingModule({ + imports: [RouterTestingModule], + providers: [{provide: RouteReuseStrategy, useClass: AttachDetachReuseStrategy}] + }); + + const router = TestBed.inject(Router); + + expect(router.routeReuseStrategy).toBeInstanceOf(AttachDetachReuseStrategy); + }); + it('should support attaching & detaching fragments', fakeAsync(inject([Router, Location], (router: Router, location: Location) => { const fixture = createRoot(router, RootCmp); router.routeReuseStrategy = new AttachDetachReuseStrategy(); + spyOn(router.routeReuseStrategy, 'retrieve').and.callThrough(); router.resetConfig([ { @@ -5750,14 +5681,19 @@ describe('Integration', () => { expect(location.path()).toEqual('/a/b'); expect(teamCmp).toBeDefined(); expect(simpleCmp).toBeDefined(); + expect(router.routeReuseStrategy.retrieve).not.toHaveBeenCalled(); router.navigateByUrl('/c'); advance(fixture); expect(location.path()).toEqual('/c'); expect(fixture.debugElement.children[1].componentInstance).toBeAnInstanceOf(UserCmp); + // We have still not encountered a route that should be reattached + expect(router.routeReuseStrategy.retrieve).not.toHaveBeenCalled(); router.navigateByUrl('/a;p=1/b;p=2'); advance(fixture); + // We retrieve both the stored route snapshots + expect(router.routeReuseStrategy.retrieve).toHaveBeenCalledTimes(2); const teamCmp2 = fixture.debugElement.children[1].componentInstance; const simpleCmp2 = fixture.debugElement.children[1].children[1].componentInstance; expect(location.path()).toEqual('/a;p=1/b;p=2'); @@ -5867,6 +5803,42 @@ describe('Integration', () => { expect(fixture).toContainComponent(Tool2Component, '(e)'); })); }); + + describe('RouterInitializer', () => { + it('should not throw from appInitializer if module is destroyed before location is initialized', + done => { + let resolveInitializer: () => void; + let moduleRef: NgModuleRef; + + @NgModule({ + imports: [RouterModule.forRoot([])], + providers: [ + { + provide: LOCATION_INITIALIZED, + useValue: new Promise(resolve => resolveInitializer = resolve) + }, + { + // Required when running the tests in a browser + provide: APP_BASE_HREF, + useValue: '' + } + ] + }) + class SelfDestructModule { + constructor(ref: NgModuleRef, routerInitializer: RouterInitializer) { + moduleRef = ref; + routerInitializer.appInitializer().then(done, done.fail); + } + } + + TestBed.resetTestingModule() + .configureTestingModule({imports: [SelfDestructModule], declarations: [SimpleCmp]}) + .createComponent(SimpleCmp); + + moduleRef!.destroy(); + resolveInitializer!(); + }); + }); }); describe('Testing router options', () => { @@ -5953,8 +5925,8 @@ class AbsoluteLinkCmp { selector: 'link-cmp', template: `link - -` + + ` }) class DummyLinkCmp { private exact: boolean; @@ -6116,9 +6088,9 @@ class OutletInNgIf { @Component({ selector: 'link-cmp', template: ` - ` + ` }) class DummyLinkWithParentCmp { private exact: boolean; diff --git a/packages/router/test/recognize.spec.ts b/packages/router/test/recognize.spec.ts index e692097332..eff0951df6 100644 --- a/packages/router/test/recognize.spec.ts +++ b/packages/router/test/recognize.spec.ts @@ -626,9 +626,16 @@ describe('recognize', () => { }] }], '(c:c)'); - checkActivatedRoute(s.root.children[0], '', {}, ComponentA); - checkActivatedRoute(s.root.children[0].children[0], '', {}, ComponentB); - checkActivatedRoute(s.root.children[0].children[0].children[0], 'c', {}, ComponentC, 'c'); + const [compAConfig] = s.root.children; + checkActivatedRoute(compAConfig, '', {}, ComponentA); + expect(compAConfig.children.length).toBe(1); + + const [compBConfig] = compAConfig.children; + checkActivatedRoute(compBConfig, '', {}, ComponentB); + expect(compBConfig.children.length).toBe(1); + + const [compCConfig] = compBConfig.children; + checkActivatedRoute(compCConfig, 'c', {}, ComponentC, 'c'); }); it('should not persist a primary segment beyond the boundary of a named outlet match', () => { diff --git a/packages/router/test/regression_integration.spec.ts b/packages/router/test/regression_integration.spec.ts index 9dd5b8ba32..371431b9e9 100644 --- a/packages/router/test/regression_integration.spec.ts +++ b/packages/router/test/regression_integration.spec.ts @@ -6,8 +6,9 @@ * found in the LICENSE file at https://angular.io/license */ -import {CommonModule} from '@angular/common'; -import {ChangeDetectionStrategy, Component, ContentChild, NgModule, TemplateRef, Type, ViewChild, ViewContainerRef} from '@angular/core'; +import {CommonModule, Location} from '@angular/common'; +import {SpyLocation} from '@angular/common/testing'; +import {ChangeDetectionStrategy, ChangeDetectorRef, Component, NgModule, TemplateRef, Type, ViewChild, ViewContainerRef} from '@angular/core'; import {ComponentFixture, fakeAsync, TestBed, tick} from '@angular/core/testing'; import {Router} from '@angular/router'; import {RouterTestingModule} from '@angular/router/testing'; @@ -187,6 +188,94 @@ describe('Integration', () => { expect(fixture.nativeElement.innerHTML).toContain('isActive: true'); })); }); + + it('should not reactivate a deactivated outlet when destroyed and recreated - #41379', + fakeAsync(() => { + @Component({template: 'simple'}) + class SimpleComponent { + } + + @Component({template: ` `}) + class AppComponent { + outletVisible = true; + } + + TestBed.configureTestingModule({ + imports: [RouterTestingModule.withRoutes( + [{path: ':id', component: SimpleComponent, outlet: 'aux'}])], + declarations: [SimpleComponent, AppComponent], + }); + + const router = TestBed.inject(Router); + const fixture = createRoot(router, AppComponent); + const componentCdr = fixture.componentRef.injector.get(ChangeDetectorRef); + + router.navigate([{outlets: {aux: ['1234']}}]); + advance(fixture); + expect(fixture.nativeElement.innerHTML).toContain('simple'); + + router.navigate([{outlets: {aux: null}}]); + advance(fixture); + expect(fixture.nativeElement.innerHTML).not.toContain('simple'); + + fixture.componentInstance.outletVisible = false; + componentCdr.detectChanges(); + expect(fixture.nativeElement.innerHTML).not.toContain('simple'); + expect(fixture.nativeElement.innerHTML).not.toContain('router-outlet'); + + fixture.componentInstance.outletVisible = true; + componentCdr.detectChanges(); + expect(fixture.nativeElement.innerHTML).toContain('router-outlet'); + expect(fixture.nativeElement.innerHTML).not.toContain('simple'); + })); + + describe('useHash', () => { + it('should restore hash to match current route - #28561', fakeAsync(() => { + @Component({selector: 'root-cmp', template: ``}) + class RootCmp { + } + + @Component({template: 'simple'}) + class SimpleCmp { + } + + TestBed.configureTestingModule({ + imports: [RouterTestingModule.withRoutes([ + {path: '', component: SimpleCmp}, + {path: 'one', component: SimpleCmp, canActivate: ['returnRootUrlTree']} + ])], + declarations: [SimpleCmp, RootCmp], + providers: [ + { + provide: 'returnRootUrlTree', + useFactory: (router: Router) => () => { + return router.parseUrl('/'); + }, + deps: [Router] + }, + ], + }); + + const router = TestBed.inject(Router); + const location = TestBed.inject(Location) as SpyLocation; + + router.navigateByUrl('/'); + // Will setup location change listeners + const fixture = createRoot(router, RootCmp); + + location.simulateHashChange('/one'); + advance(fixture); + + const BASE_ERROR_MESSAGE = + 'This asserts current behavior, which is incorrect. When #28561 is fixed, it should be: '; + + expect(location.path()).toEqual('/one', BASE_ERROR_MESSAGE + '/'); + const urlChanges = ['replace: /', 'hash: /one']; + expect(location.urlChanges) + .toEqual( + urlChanges, BASE_ERROR_MESSAGE + JSON.stringify(urlChanges.concat('replace: /'))); + })); + }); }); function advance(fixture: ComponentFixture): void { diff --git a/packages/router/test/router_preloader.spec.ts b/packages/router/test/router_preloader.spec.ts index b1e4a82478..d5401f177b 100644 --- a/packages/router/test/router_preloader.spec.ts +++ b/packages/router/test/router_preloader.spec.ts @@ -470,11 +470,11 @@ describe('RouterPreloader', () => { }); class BrokenModuleFactory extends NgModuleFactory { - moduleType: Type = LoadedModule1; + override moduleType: Type = LoadedModule1; constructor() { super(); } - create(_parentInjector: Injector|null): NgModuleRef { + override create(_parentInjector: Injector|null): NgModuleRef { throw 'Error: Broken module'; } } diff --git a/packages/router/test/url_tree.spec.ts b/packages/router/test/url_tree.spec.ts index 8adc90c2d7..4ccbffe99c 100644 --- a/packages/router/test/url_tree.spec.ts +++ b/packages/router/test/url_tree.spec.ts @@ -26,6 +26,11 @@ describe('UrlTree', () => { 'k/(a;b)': 'c', }); }); + + it('should allow question marks in query param values', () => { + const tree = serializer.parse('/path/to?first=http://foo/bar?baz=true&second=123'); + expect(tree.queryParams).toEqual({'first': 'http://foo/bar?baz=true', 'second': '123'}); + }); }); describe('containsTree', () => { diff --git a/packages/router/testing/src/router_testing_module.ts b/packages/router/testing/src/router_testing_module.ts index e7dc95e23a..a1ee2b000d 100644 --- a/packages/router/testing/src/router_testing_module.ts +++ b/packages/router/testing/src/router_testing_module.ts @@ -9,7 +9,7 @@ import {Location, LocationStrategy} from '@angular/common'; import {MockLocationStrategy, SpyLocation} from '@angular/common/testing'; import {Compiler, Injectable, Injector, ModuleWithProviders, NgModule, NgModuleFactory, NgModuleFactoryLoader, Optional} from '@angular/core'; -import {ChildrenOutletContexts, ExtraOptions, NoPreloading, PreloadingStrategy, provideRoutes, Route, Router, ROUTER_CONFIGURATION, RouterModule, ROUTES, Routes, UrlHandlingStrategy, UrlSerializer, ɵassignExtraOptionsToRouter as assignExtraOptionsToRouter, ɵflatten as flatten, ɵROUTER_PROVIDERS as ROUTER_PROVIDERS} from '@angular/router'; +import {ChildrenOutletContexts, ExtraOptions, NoPreloading, PreloadingStrategy, provideRoutes, Route, Router, ROUTER_CONFIGURATION, RouteReuseStrategy, RouterModule, ROUTES, Routes, UrlHandlingStrategy, UrlSerializer, ɵassignExtraOptionsToRouter as assignExtraOptionsToRouter, ɵflatten as flatten, ɵROUTER_PROVIDERS as ROUTER_PROVIDERS} from '@angular/router'; @@ -115,7 +115,8 @@ export function setupTestingRouter( export function setupTestingRouter( urlSerializer: UrlSerializer, contexts: ChildrenOutletContexts, location: Location, loader: NgModuleFactoryLoader, compiler: Compiler, injector: Injector, routes: Route[][], - opts?: ExtraOptions|UrlHandlingStrategy, urlHandlingStrategy?: UrlHandlingStrategy) { + opts?: ExtraOptions|UrlHandlingStrategy, urlHandlingStrategy?: UrlHandlingStrategy, + routeReuseStrategy?: RouteReuseStrategy) { const router = new Router( null!, urlSerializer, contexts, location, injector, loader, compiler, flatten(routes)); if (opts) { @@ -131,6 +132,11 @@ export function setupTestingRouter( if (urlHandlingStrategy) { router.urlHandlingStrategy = urlHandlingStrategy; } + + if (routeReuseStrategy) { + router.routeReuseStrategy = routeReuseStrategy; + } + return router; } @@ -170,7 +176,8 @@ export function setupTestingRouter( useFactory: setupTestingRouter, deps: [ UrlSerializer, ChildrenOutletContexts, Location, NgModuleFactoryLoader, Compiler, Injector, - ROUTES, ROUTER_CONFIGURATION, [UrlHandlingStrategy, new Optional()] + ROUTES, ROUTER_CONFIGURATION, [UrlHandlingStrategy, new Optional()], + [RouteReuseStrategy, new Optional()] ] }, {provide: PreloadingStrategy, useExisting: NoPreloading}, provideRoutes([]) diff --git a/packages/service-worker/BUILD.bazel b/packages/service-worker/BUILD.bazel index 0d3ea6c507..79df7c2851 100644 --- a/packages/service-worker/BUILD.bazel +++ b/packages/service-worker/BUILD.bazel @@ -1,4 +1,4 @@ -load("//tools:defaults.bzl", "ng_module", "ng_package", "ts_api_guardian_test_npm_package") +load("//tools:defaults.bzl", "api_golden_test_npm_package", "ng_module", "ng_package") package(default_visibility = ["//visibility:public"]) @@ -59,12 +59,12 @@ ng_package( ], ) -ts_api_guardian_test_npm_package( +api_golden_test_npm_package( name = "service-worker_api", - actualDir = "angular/packages/service-worker/npm_package", data = [ ":npm_package", "//goldens:public-api", ], - goldenDir = "angular/goldens/public-api/service-worker", + golden_dir = "angular/goldens/public-api/service-worker", + npm_package = "angular/packages/service-worker/npm_package", ) diff --git a/packages/service-worker/cli/tsconfig.json b/packages/service-worker/cli/tsconfig.json index 4b9edf0ef1..f7f78dabdb 100644 --- a/packages/service-worker/cli/tsconfig.json +++ b/packages/service-worker/cli/tsconfig.json @@ -9,6 +9,7 @@ "strictPropertyInitialization": true, "outDir": "../../../dist/all/@angular/service-worker/cli-custom", "noImplicitAny": true, + "noImplicitOverride": true, "noFallthroughCasesInSwitch": true, "rootDir": ".", "paths": { diff --git a/packages/service-worker/package.json b/packages/service-worker/package.json index 9619220e51..002df0f166 100644 --- a/packages/service-worker/package.json +++ b/packages/service-worker/package.json @@ -4,8 +4,11 @@ "description": "Angular - service worker tooling!", "author": "angular", "license": "MIT", + "engines": { + "node": "^12.14.1 || >=14.0.0" + }, "dependencies": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" }, "peerDependencies": { "@angular/core": "0.0.0-PLACEHOLDER", @@ -22,8 +25,5 @@ "ng-update": { "packageGroup": "NG_UPDATE_PACKAGE_GROUP" }, - "sideEffects": false, - "publishConfig":{ - "registry":"https://wombat-dressing-room.appspot.com" - } + "sideEffects": false } diff --git a/packages/service-worker/src/push.ts b/packages/service-worker/src/push.ts index 2be7bd443d..7f2cedaa4e 100644 --- a/packages/service-worker/src/push.ts +++ b/packages/service-worker/src/push.ts @@ -45,7 +45,7 @@ import {ERR_SW_NOT_SUPPORTED, NgswCommChannel, PushEvent} from './low_level'; * { * "notification": { * "actions": NotificationAction[], - * "badge": USVString + * "badge": USVString, * "body": DOMString, * "data": any, * "dir": "auto"|"ltr"|"rtl", @@ -81,6 +81,9 @@ import {ERR_SW_NOT_SUPPORTED, NgswCommChannel, PushEvent} from './low_level'; * * + * You can read more on handling notification clicks in the [Service worker notifications + * guide](guide/service-worker-notifications). + * * @see [Push Notifications](https://developers.google.com/web/fundamentals/codelabs/push-notifications/) * @see [Angular Push Notifications](https://blog.angular-university.io/angular-push-notifications/) * @see [MDN: Push API](https://developer.mozilla.org/en-US/docs/Web/API/Push_API) diff --git a/packages/service-worker/test/comm_spec.ts b/packages/service-worker/test/comm_spec.ts index efbc3d55e0..34b6bcc586 100644 --- a/packages/service-worker/test/comm_spec.ts +++ b/packages/service-worker/test/comm_spec.ts @@ -91,7 +91,7 @@ import {MockPushManager, MockPushSubscription, MockServiceWorkerContainer, MockS ], }); - const context: any = global || window; + const context: any = globalThis; const originalDescriptor = Object.getOwnPropertyDescriptor(context, 'navigator'); const patchedDescriptor = {value: {serviceWorker: undefined}, configurable: true}; @@ -120,7 +120,7 @@ import {MockPushManager, MockPushSubscription, MockServiceWorkerContainer, MockS ] }); - const context: any = global || window; + const context: any = globalThis; const originalDescriptor = Object.getOwnPropertyDescriptor(context, 'navigator'); const patchedDescriptor = {value: {serviceWorker: mock}, configurable: true}; diff --git a/packages/service-worker/test/integration_spec.ts b/packages/service-worker/test/integration_spec.ts index eeee1ad2b7..6f07246906 100644 --- a/packages/service-worker/test/integration_spec.ts +++ b/packages/service-worker/test/integration_spec.ts @@ -9,19 +9,20 @@ import {NgswCommChannel} from '@angular/service-worker/src/low_level'; import {SwPush} from '@angular/service-worker/src/push'; import {SwUpdate} from '@angular/service-worker/src/update'; -import {MockServiceWorkerContainer, MockServiceWorkerRegistration} from '@angular/service-worker/testing/mock'; +import {MockServiceWorkerContainer} from '@angular/service-worker/testing/mock'; import {CacheDatabase} from '@angular/service-worker/worker/src/db-cache'; import {Driver} from '@angular/service-worker/worker/src/driver'; import {Manifest} from '@angular/service-worker/worker/src/manifest'; import {MockRequest} from '@angular/service-worker/worker/testing/fetch'; import {MockFileSystemBuilder, MockServerStateBuilder, tmpHashTableForFs} from '@angular/service-worker/worker/testing/mock'; import {SwTestHarness, SwTestHarnessBuilder} from '@angular/service-worker/worker/testing/scope'; +import {envIsSupported} from '@angular/service-worker/worker/testing/utils'; import {Observable} from 'rxjs'; import {take} from 'rxjs/operators'; (function() { // Skip environments that don't support the minimum APIs needed to run the SW tests. -if (!SwTestHarness.envIsSupported()) { +if (!envIsSupported()) { return; } @@ -78,7 +79,6 @@ const serverUpdate = describe('ngsw + companion lib', () => { let mock: MockServiceWorkerContainer; let comm: NgswCommChannel; - let reg: MockServiceWorkerRegistration; let scope: SwTestHarness; let driver: Driver; @@ -87,9 +87,9 @@ describe('ngsw + companion lib', () => { mock = new MockServiceWorkerContainer(); comm = new NgswCommChannel(mock as any); scope = new SwTestHarnessBuilder().withServerState(server).build(); - driver = new Driver(scope, scope, new CacheDatabase(scope, scope)); + driver = new Driver(scope, scope, new CacheDatabase(scope)); - scope.clients.add('default'); + scope.clients.add('default', scope.registration.scope); scope.clients.getMock('default')!.queue.subscribe(msg => { mock.sendMessage(msg); }); @@ -102,7 +102,6 @@ describe('ngsw + companion lib', () => { }); mock.setupSw(); - reg = mock.mockRegistration!; await Promise.all(scope.handleFetch(new MockRequest('/only.txt'), 'default')); await driver.initialized; @@ -117,9 +116,7 @@ describe('ngsw + companion lib', () => { const update = new SwUpdate(comm); scope.updateServerState(serverUpdate); - const gotUpdateNotice = (async () => { - const notice = await obsToSinglePromise(update.available); - })(); + const gotUpdateNotice = (async () => await obsToSinglePromise(update.available))(); await update.checkForUpdate(); await gotUpdateNotice; diff --git a/packages/service-worker/worker/main.ts b/packages/service-worker/worker/main.ts index 6a600c63f0..4d380fc253 100644 --- a/packages/service-worker/worker/main.ts +++ b/packages/service-worker/worker/main.ts @@ -10,7 +10,7 @@ import {Adapter} from './src/adapter'; import {CacheDatabase} from './src/db-cache'; import {Driver} from './src/driver'; -const scope = self as any as ServiceWorkerGlobalScope; +const scope = self as unknown as ServiceWorkerGlobalScope; -const adapter = new Adapter(scope.registration.scope); -const driver = new Driver(scope, adapter, new CacheDatabase(scope, adapter)); +const adapter = new Adapter(scope.registration.scope, self.caches); +new Driver(scope, adapter, new CacheDatabase(adapter)); diff --git a/packages/service-worker/worker/src/adapter.ts b/packages/service-worker/worker/src/adapter.ts index 5174ef670a..1bee5c20a4 100644 --- a/packages/service-worker/worker/src/adapter.ts +++ b/packages/service-worker/worker/src/adapter.ts @@ -7,6 +7,7 @@ */ import {NormalizedUrl} from './api'; +import {NamedCacheStorage} from './named-cache-storage'; /** @@ -15,20 +16,20 @@ import {NormalizedUrl} from './api'; * Mostly, this is used to mock out identifiers which are otherwise read * from the global scope. */ -export class Adapter { - readonly cacheNamePrefix: string; - private readonly origin: string; +export class Adapter { + readonly caches: NamedCacheStorage; + readonly origin: string; - constructor(protected readonly scopeUrl: string) { + constructor(protected readonly scopeUrl: string, caches: T) { const parsedScopeUrl = this.parseUrl(this.scopeUrl); // Determine the origin from the registration scope. This is used to differentiate between // relative and absolute URLs. this.origin = parsedScopeUrl.origin; - // Suffixing `ngsw` with the baseHref to avoid clash of cache names for SWs with different - // scopes on the same domain. - this.cacheNamePrefix = 'ngsw:' + parsedScopeUrl.path; + // Use the baseHref in the cache name prefix to avoid clash of cache names for SWs with + // different scopes on the same domain. + this.caches = new NamedCacheStorage(caches, `ngsw:${parsedScopeUrl.path}`); } /** @@ -103,14 +104,3 @@ export class Adapter { }); } } - -/** - * An event context in which an operation is taking place, which allows - * the delaying of Service Worker shutdown until certain triggers occur. - */ -export interface Context { - /** - * Delay shutdown of the Service Worker until the given promise resolves. - */ - waitUntil(fn: Promise): void; -} diff --git a/packages/service-worker/worker/src/app-version.ts b/packages/service-worker/worker/src/app-version.ts index 7e1054d85c..b6ad441279 100644 --- a/packages/service-worker/worker/src/app-version.ts +++ b/packages/service-worker/worker/src/app-version.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {Adapter, Context} from './adapter'; +import {Adapter} from './adapter'; import {CacheState, NormalizedUrl, UpdateCacheStatus, UpdateSource} from './api'; import {AssetGroup, LazyAssetGroup, PrefetchAssetGroup} from './assets'; import {DataGroup} from './data'; @@ -68,28 +68,25 @@ export class AppVersion implements UpdateSource { constructor( private scope: ServiceWorkerGlobalScope, private adapter: Adapter, private database: Database, - private idle: IdleScheduler, private debugHandler: DebugHandler, readonly manifest: Manifest, + idle: IdleScheduler, private debugHandler: DebugHandler, readonly manifest: Manifest, readonly manifestHash: string) { // The hashTable within the manifest is an Object - convert it to a Map for easier lookups. - Object.keys(this.manifest.hashTable).forEach(url => { - this.hashTable.set(adapter.normalizeUrl(url), this.manifest.hashTable[url]); + Object.keys(manifest.hashTable).forEach(url => { + this.hashTable.set(adapter.normalizeUrl(url), manifest.hashTable[url]); }); // Process each `AssetGroup` declared in the manifest. Each declared group gets an `AssetGroup` - // instance - // created for it, of a type that depends on the configuration mode. + // instance created for it, of a type that depends on the configuration mode. + const assetCacheNamePrefix = `${manifestHash}:assets`; this.assetGroups = (manifest.assetGroups || []).map(config => { - // Every asset group has a cache that's prefixed by the manifest hash and the name of the - // group. - const prefix = `${adapter.cacheNamePrefix}:${this.manifestHash}:assets`; // Check the caching mode, which determines when resources will be fetched/updated. switch (config.installMode) { case 'prefetch': return new PrefetchAssetGroup( - this.scope, this.adapter, this.idle, config, this.hashTable, this.database, prefix); + scope, adapter, idle, config, this.hashTable, database, assetCacheNamePrefix); case 'lazy': return new LazyAssetGroup( - this.scope, this.adapter, this.idle, config, this.hashTable, this.database, prefix); + scope, adapter, idle, config, this.hashTable, database, assetCacheNamePrefix); } }); @@ -98,8 +95,7 @@ export class AppVersion implements UpdateSource { (manifest.dataGroups || []) .map( config => new DataGroup( - this.scope, this.adapter, config, this.database, this.debugHandler, - `${adapter.cacheNamePrefix}:${config.version}:data`)); + scope, adapter, config, database, debugHandler, `${config.version}:data`)); // This keeps backwards compatibility with app versions without navigation urls. // Fix: https://github.com/angular/angular/issues/27209 @@ -139,7 +135,7 @@ export class AppVersion implements UpdateSource { } } - async handleFetch(req: Request, context: Context): Promise { + async handleFetch(req: Request, event: ExtendableEvent): Promise { // Check the request against each `AssetGroup` in sequence. If an `AssetGroup` can't handle the // request, // it will return `null`. Thus, the first non-null response is the SW's answer to the request. @@ -156,7 +152,7 @@ export class AppVersion implements UpdateSource { } // No response has been found yet. Maybe this group will have one. - return group.handleFetch(req, context); + return group.handleFetch(req, event); }, Promise.resolve(null)); // The result of the above is the asset response, if there is any, or null otherwise. Return the @@ -174,7 +170,7 @@ export class AppVersion implements UpdateSource { return resp; } - return group.handleFetch(req, context); + return group.handleFetch(req, event); }, Promise.resolve(null)); // If the data caching group returned a response, go with it. @@ -199,7 +195,7 @@ export class AppVersion implements UpdateSource { // This was a navigation request. Re-enter `handleFetch` with a request for // the URL. - return this.handleFetch(this.adapter.newRequest(this.indexUrl), context); + return this.handleFetch(this.adapter.newRequest(this.indexUrl), event); } return null; @@ -288,11 +284,14 @@ export class AppVersion implements UpdateSource { } /** - * Erase this application version, by cleaning up all the caches. + * Return a list of the names of all caches used by this version. */ - async cleanup(): Promise { - await Promise.all(this.assetGroups.map(group => group.cleanup())); - await Promise.all(this.dataGroups.map(group => group.cleanup())); + async getCacheNames(): Promise { + const allGroupCacheNames = await Promise.all([ + ...this.assetGroups.map(group => group.getCacheNames()), + ...this.dataGroups.map(group => group.getCacheNames()), + ]); + return ([] as string[]).concat(...allGroupCacheNames); } /** diff --git a/packages/service-worker/worker/src/assets.ts b/packages/service-worker/worker/src/assets.ts index ebaeba4fd2..ec33c3b7a4 100644 --- a/packages/service-worker/worker/src/assets.ts +++ b/packages/service-worker/worker/src/assets.ts @@ -6,12 +6,14 @@ * found in the LICENSE file at https://angular.io/license */ -import {Adapter, Context} from './adapter'; +import {Adapter} from './adapter'; import {CacheState, NormalizedUrl, UpdateCacheStatus, UpdateSource, UrlMetadata} from './api'; import {Database, Table} from './database'; +import {CacheTable} from './db-cache'; import {errorToString, SwCriticalError, SwUnrecoverableStateError} from './error'; import {IdleScheduler} from './idle'; import {AssetGroupConfig} from './manifest'; +import {NamedCache} from './named-cache-storage'; import {sha1Binary} from './sha1'; /** @@ -38,9 +40,9 @@ export abstract class AssetGroup { /** * A Promise which resolves to the `Cache` used to back this asset group. This - * is openedfrom the constructor. + * is opened from the constructor. */ - protected cache: Promise; + protected cache: Promise; /** * Group name from the configuration. @@ -55,7 +57,7 @@ export abstract class AssetGroup { constructor( protected scope: ServiceWorkerGlobalScope, protected adapter: Adapter, protected idle: IdleScheduler, protected config: AssetGroupConfig, - protected hashes: Map, protected db: Database, protected prefix: string) { + protected hashes: Map, protected db: Database, cacheNamePrefix: string) { this.name = config.name; // Normalize the config's URLs to take the ServiceWorker's scope into account. @@ -65,13 +67,13 @@ export abstract class AssetGroup { this.patterns = config.patterns.map(pattern => new RegExp(pattern)); // This is the primary cache, which holds all of the cached requests for this group. If a - // resource - // isn't in this cache, it hasn't been fetched yet. - this.cache = scope.caches.open(`${this.prefix}:${config.name}:cache`); + // resource isn't in this cache, it hasn't been fetched yet. + this.cache = adapter.caches.open(`${cacheNamePrefix}:${config.name}:cache`); // This is the metadata table, which holds specific information for each cached URL, such as // the timestamp of when it was added to the cache. - this.metadata = this.db.open(`${this.prefix}:${config.name}:meta`, config.cacheQueryOptions); + this.metadata = + this.db.open(`${cacheNamePrefix}:${config.name}:meta`, config.cacheQueryOptions); } async cacheStatus(url: string): Promise { @@ -99,17 +101,20 @@ export abstract class AssetGroup { abstract initializeFully(updateFrom?: UpdateSource): Promise; /** - * Clean up all the cached data for this group. + * Return a list of the names of all caches used by this group. */ - async cleanup(): Promise { - await this.scope.caches.delete(`${this.prefix}:${this.config.name}:cache`); - await this.db.delete(`${this.prefix}:${this.config.name}:meta`); + async getCacheNames(): Promise { + const [cache, metadata] = await Promise.all([ + this.cache, + this.metadata as Promise, + ]); + return [cache.name, metadata.cacheName]; } /** * Process a request for a given resource and return it, or return null if it's not available. */ - async handleFetch(req: Request, ctx: Context): Promise { + async handleFetch(req: Request, _event: ExtendableEvent): Promise { const url = this.adapter.normalizeUrl(req.url); // Either the request matches one of the known resource URLs, one of the patterns for // dynamically matched URLs, or neither. Determine which is the case for this request in @@ -135,10 +140,9 @@ export abstract class AssetGroup { // This resource has no hash, and yet exists in the cache. Check how old this request is // to make sure it's still usable. if (await this.needToRevalidate(req, cachedResponse)) { - this.idle.schedule( - `revalidate(${this.prefix}, ${this.config.name}): ${req.url}`, async () => { - await this.fetchAndCacheOnce(req); - }); + this.idle.schedule(`revalidate(${cache.name}): ${req.url}`, async () => { + await this.fetchAndCacheOnce(req); + }); } // In either case (revalidation or not), the cached response must be good. @@ -314,7 +318,7 @@ export abstract class AssetGroup { try { // This response is safe to cache (as long as it's cloned). Wait until the cache operation // is complete. - const cache = await this.scope.caches.open(`${this.prefix}:${this.config.name}:cache`); + const cache = await this.cache; await cache.put(req, res.clone()); // If the request is not hashed, update its metadata, especially the timestamp. This is @@ -450,7 +454,6 @@ export abstract class AssetGroup { protected async maybeUpdate(updateFrom: UpdateSource, req: Request, cache: Cache): Promise { const url = this.adapter.normalizeUrl(req.url); - const meta = await this.metadata; // Check if this resource is hashed and already exists in the cache of a prior version. if (this.hashes.has(url)) { const hash = this.hashes.get(url)!; @@ -463,7 +466,6 @@ export abstract class AssetGroup { if (res !== null) { // Copy to this cache. await cache.put(req, res); - await meta.write(req.url, {ts: this.adapter.time, used: false} as UrlMetadata); // No need to do anything further with this resource, it's now cached properly. return true; @@ -497,7 +499,7 @@ export abstract class AssetGroup { * An `AssetGroup` that prefetches all of its resources during initialization. */ export class PrefetchAssetGroup extends AssetGroup { - async initializeFully(updateFrom?: UpdateSource): Promise { + override async initializeFully(updateFrom?: UpdateSource): Promise { // Open the cache which actually holds requests. const cache = await this.cache; @@ -571,7 +573,7 @@ export class PrefetchAssetGroup extends AssetGroup { } export class LazyAssetGroup extends AssetGroup { - async initializeFully(updateFrom?: UpdateSource): Promise { + override async initializeFully(updateFrom?: UpdateSource): Promise { // No action necessary if no update source is available - resources managed in this group // are all lazily loaded, so there's nothing to initialize. if (updateFrom === undefined) { diff --git a/packages/service-worker/worker/src/data.ts b/packages/service-worker/worker/src/data.ts index 327c7011a3..636d6321fa 100644 --- a/packages/service-worker/worker/src/data.ts +++ b/packages/service-worker/worker/src/data.ts @@ -6,10 +6,12 @@ * found in the LICENSE file at https://angular.io/license */ -import {Adapter, Context} from './adapter'; +import {Adapter} from './adapter'; import {Database, Table} from './database'; +import {CacheTable} from './db-cache'; import {DebugHandler} from './debug'; import {DataGroupConfig} from './manifest'; +import {NamedCache} from './named-cache-storage'; /** * A metadata record of how old a particular cached resource is. @@ -227,7 +229,7 @@ export class DataGroup { /** * The `Cache` instance in which resources belonging to this group are cached. */ - private readonly cache: Promise; + private readonly cache: Promise; /** * Tracks the LRU state of resources in this cache. @@ -247,13 +249,11 @@ export class DataGroup { constructor( private scope: ServiceWorkerGlobalScope, private adapter: Adapter, private config: DataGroupConfig, private db: Database, private debugHandler: DebugHandler, - private prefix: string) { - this.patterns = this.config.patterns.map(pattern => new RegExp(pattern)); - this.cache = this.scope.caches.open(`${this.prefix}:dynamic:${this.config.name}:cache`); - this.lruTable = this.db.open( - `${this.prefix}:dynamic:${this.config.name}:lru`, this.config.cacheQueryOptions); - this.ageTable = this.db.open( - `${this.prefix}:dynamic:${this.config.name}:age`, this.config.cacheQueryOptions); + cacheNamePrefix: string) { + this.patterns = config.patterns.map(pattern => new RegExp(pattern)); + this.cache = adapter.caches.open(`${cacheNamePrefix}:${config.name}:cache`); + this.lruTable = this.db.open(`${cacheNamePrefix}:${config.name}:lru`, config.cacheQueryOptions); + this.ageTable = this.db.open(`${cacheNamePrefix}:${config.name}:age`, config.cacheQueryOptions); } /** @@ -294,7 +294,7 @@ export class DataGroup { * Process a fetch event and return a `Response` if the resource is covered by this group, * or `null` otherwise. */ - async handleFetch(req: Request, ctx: Context): Promise { + async handleFetch(req: Request, event: ExtendableEvent): Promise { // Do nothing if (!this.patterns.some(pattern => pattern.test(req.url))) { return null; @@ -314,9 +314,9 @@ export class DataGroup { // Handle the request with whatever strategy was selected. switch (this.config.strategy) { case 'freshness': - return this.handleFetchWithFreshness(req, ctx, lru); + return this.handleFetchWithFreshness(req, event, lru); case 'performance': - return this.handleFetchWithPerformance(req, ctx, lru); + return this.handleFetchWithPerformance(req, event, lru); default: throw new Error(`Unknown strategy: ${this.config.strategy}`); } @@ -337,7 +337,7 @@ export class DataGroup { } } - private async handleFetchWithPerformance(req: Request, ctx: Context, lru: LruList): + private async handleFetchWithPerformance(req: Request, event: ExtendableEvent, lru: LruList): Promise { let res: Response|null|undefined = null; @@ -348,7 +348,7 @@ export class DataGroup { res = fromCache.res; // Check the age of the resource. if (this.config.refreshAheadMs !== undefined && fromCache.age >= this.config.refreshAheadMs) { - ctx.waitUntil(this.safeCacheResponse(req, this.safeFetch(req), lru)); + event.waitUntil(this.safeCacheResponse(req, this.safeFetch(req), lru)); } } @@ -367,7 +367,7 @@ export class DataGroup { res = this.adapter.newResponse(null, {status: 504, statusText: 'Gateway Timeout'}); // Cache the network response eventually. - ctx.waitUntil(this.safeCacheResponse(req, networkFetch, lru)); + event.waitUntil(this.safeCacheResponse(req, networkFetch, lru)); } else { // The request completed in time, so cache it inline with the response flow. await this.safeCacheResponse(req, res, lru); @@ -376,7 +376,7 @@ export class DataGroup { return res; } - private async handleFetchWithFreshness(req: Request, ctx: Context, lru: LruList): + private async handleFetchWithFreshness(req: Request, event: ExtendableEvent, lru: LruList): Promise { // Start with a network fetch. const [timeoutFetch, networkFetch] = this.networkFetchWithTimeout(req); @@ -392,7 +392,7 @@ export class DataGroup { // If the network fetch times out or errors, fall back on the cache. if (res === undefined) { - ctx.waitUntil(this.safeCacheResponse(req, networkFetch, lru, true)); + event.waitUntil(this.safeCacheResponse(req, networkFetch, lru, true)); // Ignore the age, the network response will be cached anyway due to the // behavior of freshness. @@ -550,11 +550,22 @@ export class DataGroup { async cleanup(): Promise { // Remove both the cache and the database entries which track LRU stats. await Promise.all([ - this.scope.caches.delete(`${this.prefix}:dynamic:${this.config.name}:cache`), - this.db.delete(`${this.prefix}:dynamic:${this.config.name}:age`), - this.db.delete(`${this.prefix}:dynamic:${this.config.name}:lru`), + this.cache.then(cache => this.adapter.caches.delete(cache.name)), + this.ageTable.then(table => this.db.delete(table.name)), + this.lruTable.then(table => this.db.delete(table.name)), ]); } + /** + * Return a list of the names of all caches used by this group. + */ + async getCacheNames(): Promise { + const [cache, ageTable, lruTable] = await Promise.all([ + this.cache, + this.ageTable as Promise, + this.lruTable as Promise, + ]); + return [cache.name, ageTable.cacheName, lruTable.cacheName]; + } /** * Clear the state of the cache for a particular resource. diff --git a/packages/service-worker/worker/src/database.ts b/packages/service-worker/worker/src/database.ts index 323024a717..0f1d3c455a 100644 --- a/packages/service-worker/worker/src/database.ts +++ b/packages/service-worker/worker/src/database.ts @@ -10,6 +10,11 @@ * An abstract table, with the ability to read/write objects stored under keys. */ export interface Table { + /** + * The name of this table in the database. + */ + name: string; + /** * Delete a key from the table. */ diff --git a/packages/service-worker/worker/src/db-cache.ts b/packages/service-worker/worker/src/db-cache.ts index e738d42861..5ff1f9a678 100644 --- a/packages/service-worker/worker/src/db-cache.ts +++ b/packages/service-worker/worker/src/db-cache.ts @@ -8,6 +8,7 @@ import {Adapter} from './adapter'; import {Database, NotFound, Table} from './database'; +import {NamedCache} from './named-cache-storage'; /** @@ -15,27 +16,32 @@ import {Database, NotFound, Table} from './database'; * state within mock `Response` objects. */ export class CacheDatabase implements Database { - private tables = new Map>(); + private cacheNamePrefix = 'db'; + private tables = new Map(); - constructor(private scope: ServiceWorkerGlobalScope, private adapter: Adapter) {} + constructor(private adapter: Adapter) {} 'delete'(name: string): Promise { if (this.tables.has(name)) { this.tables.delete(name); } - return this.scope.caches.delete(`${this.adapter.cacheNamePrefix}:db:${name}`); + return this.adapter.caches.delete(`${this.cacheNamePrefix}:${name}`); } - list(): Promise { - return this.scope.caches.keys().then( - keys => keys.filter(key => key.startsWith(`${this.adapter.cacheNamePrefix}:db:`))); + async list(): Promise { + const prefix = `${this.cacheNamePrefix}:`; + const allCacheNames = await this.adapter.caches.keys(); + const dbCacheNames = allCacheNames.filter(name => name.startsWith(prefix)); + + // Return the un-prefixed table names, so they can be used with other `CacheDatabase` methods + // (for example, for opening/deleting a table). + return dbCacheNames.map(name => name.slice(prefix.length)); } - open(name: string, cacheQueryOptions?: CacheQueryOptions): Promise { + async open(name: string, cacheQueryOptions?: CacheQueryOptions): Promise
    { if (!this.tables.has(name)) { - const table = - this.scope.caches.open(`${this.adapter.cacheNamePrefix}:db:${name}`) - .then(cache => new CacheTable(name, cache, this.adapter, cacheQueryOptions)); + const cache = await this.adapter.caches.open(`${this.cacheNamePrefix}:${name}`); + const table = new CacheTable(name, cache, this.adapter, cacheQueryOptions); this.tables.set(name, table); } return this.tables.get(name)!; @@ -46,8 +52,10 @@ export class CacheDatabase implements Database { * A `Table` backed by a `Cache`. */ export class CacheTable implements Table { + cacheName = this.cache.name; + constructor( - readonly table: string, private cache: Cache, private adapter: Adapter, + readonly name: string, private cache: NamedCache, private adapter: Adapter, private cacheQueryOptions?: CacheQueryOptions) {} private request(key: string): Request { @@ -65,7 +73,7 @@ export class CacheTable implements Table { read(key: string): Promise { return this.cache.match(this.request(key), this.cacheQueryOptions).then(res => { if (res === undefined) { - return Promise.reject(new NotFound(this.table, key)); + return Promise.reject(new NotFound(this.name, key)); } return res.json(); }); diff --git a/packages/service-worker/worker/src/debug.ts b/packages/service-worker/worker/src/debug.ts index 20fa8b1199..80b4b575fd 100644 --- a/packages/service-worker/worker/src/debug.ts +++ b/packages/service-worker/worker/src/debug.ts @@ -9,6 +9,7 @@ import {Adapter} from './adapter'; import {Debuggable, DebugLogger} from './api'; +const SW_VERSION = '0.0.0-PLACEHOLDER'; const DEBUG_LOG_BUFFER_SIZE = 100; interface DebugMessage { @@ -37,6 +38,7 @@ export class DebugHandler implements DebugLogger { const msgState = `NGSW Debug Info: +Driver version: ${SW_VERSION} Driver state: ${state.state} (${state.why}) Latest manifest hash: ${state.latestHash || 'none'} Last update check: ${this.since(state.lastUpdateCheck)}`; diff --git a/packages/service-worker/worker/src/driver.ts b/packages/service-worker/worker/src/driver.ts index 94c02baeee..a40fde67cc 100644 --- a/packages/service-worker/worker/src/driver.ts +++ b/packages/service-worker/worker/src/driver.ts @@ -10,6 +10,7 @@ import {Adapter} from './adapter'; import {CacheState, Debuggable, DebugIdleState, DebugState, DebugVersion, NormalizedUrl, UpdateCacheStatus, UpdateSource} from './api'; import {AppVersion} from './app-version'; import {Database} from './database'; +import {CacheTable} from './db-cache'; import {DebugHandler} from './debug'; import {errorToString} from './error'; import {IdleScheduler} from './idle'; @@ -110,6 +111,9 @@ export class Driver implements Debuggable, UpdateSource { debugger: DebugHandler; + // A promise resolving to the control DB table. + private controlTable = this.db.open('control'); + constructor( private scope: ServiceWorkerGlobalScope, private adapter: Adapter, private db: Database) { // Set up all the event handlers that the SW needs. @@ -348,12 +352,52 @@ export class Driver implements Debuggable, UpdateSource { NOTIFICATION_OPTION_NAMES.filter(name => name in notification) .forEach(name => options[name] = notification[name]); + const notificationAction = action === '' || action === undefined ? 'default' : action; + + const onActionClick = notification?.data?.onActionClick[notificationAction]; + + const urlToOpen = new URL(onActionClick?.url ?? '', this.scope.registration.scope).href; + + switch (onActionClick?.operation) { + case 'openWindow': + await this.scope.clients.openWindow(urlToOpen); + break; + case 'focusLastFocusedOrOpen': { + let matchingClient = await this.getLastFocusedMatchingClient(this.scope); + if (matchingClient) { + await matchingClient?.focus(); + } else { + await this.scope.clients.openWindow(urlToOpen); + } + break; + } + case 'navigateLastFocusedOrOpen': { + let matchingClient = await this.getLastFocusedMatchingClient(this.scope); + if (matchingClient) { + matchingClient = await matchingClient.navigate(urlToOpen); + await matchingClient?.focus(); + } else { + await this.scope.clients.openWindow(urlToOpen); + } + break; + } + default: + break; + } + await this.broadcast({ type: 'NOTIFICATION_CLICK', data: {action, notification: options}, }); } + private async getLastFocusedMatchingClient(scope: ServiceWorkerGlobalScope): + Promise { + const windowClients = await scope.clients.matchAll({type: 'window'}); + + // As per the spec windowClients are `sorted in the most recently focused order` + return windowClients[0]; + } private async reportStatus(client: Client, promise: Promise, nonce: number): Promise { const response = {type: 'STATUS', nonce, status: true}; try { @@ -477,8 +521,7 @@ export class Driver implements Debuggable, UpdateSource { // the SW has run or the DB state has been wiped or is inconsistent. In that case, // load a fresh copy of the manifest and reset the state from scratch. - // Open up the DB table. - const table = await this.db.open('control'); + const table = await this.controlTable; // Attempt to load the needed state from the DB. If this fails, the catch {} block // will populate these variables with freshly constructed values. @@ -502,22 +545,15 @@ export class Driver implements Debuggable, UpdateSource { // Successfully loaded from saved state. This implies a manifest exists, so // the update check needs to happen in the background. - this.idle.schedule('init post-load (update, cleanup)', async () => { + this.idle.schedule('init post-load (update)', async () => { await this.checkForUpdate(); - try { - await this.cleanupCaches(); - } catch (err) { - // Nothing to do - cleanup failed. Just log it. - this.debugger.log(err, 'cleanupCaches @ init post-load'); - } }); } catch (_) { // Something went wrong. Try to start over by fetching a new manifest from the // server and building up an empty initial state. const manifest = await this.fetchLatestManifest(); const hash = hashManifest(manifest); - manifests = {}; - manifests[hash] = manifest; + manifests = {[hash]: manifest}; assignments = {}; latest = {latest: hash}; @@ -533,6 +569,11 @@ export class Driver implements Debuggable, UpdateSource { // with a new copy of the manifest has been produced. At this point, the `Driver` // can have its internals hydrated from the state. + // Schedule cleaning up obsolete caches in the background. + this.idle.schedule('init post-load (cleanup)', async () => { + await this.cleanupCaches(); + }); + // Initialize the `versions` map by setting each hash to a new `AppVersion` instance // for that manifest. Object.keys(manifests).forEach((hash: ManifestHash) => { @@ -609,7 +650,10 @@ export class Driver implements Debuggable, UpdateSource { private async assignVersion(event: FetchEvent): Promise { // First, check whether the event has a (non empty) client ID. If it does, the version may // already be associated. - const clientId = event.clientId; + // + // NOTE: For navigation requests, we care about the `resultingClientId`. If it is undefined or + // the empty string (which is the case for sub-resource requests), we look at `clientId`. + const clientId = event.resultingClientId || event.clientId; if (clientId) { // Check if there is an assigned client id. if (this.clientVersionMap.has(clientId)) { @@ -628,8 +672,10 @@ export class Driver implements Debuggable, UpdateSource { } const client = await this.scope.clients.get(clientId); + if (client) { + await this.updateClient(client); + } - await this.updateClient(client); appVersion = this.lookupVersionByHash(this.latestHash, 'assignVersion'); } @@ -718,11 +764,8 @@ export class Driver implements Debuggable, UpdateSource { } private async deleteAllCaches(): Promise { - const cacheNames = await this.scope.caches.keys(); - const ownCacheNames = - cacheNames.filter(name => name.startsWith(`${this.adapter.cacheNamePrefix}:`)); - - await Promise.all(ownCacheNames.map(name => this.scope.caches.delete(name))); + const cacheNames = await this.adapter.caches.keys(); + await Promise.all(cacheNames.map(name => this.adapter.caches.delete(name))); } /** @@ -858,8 +901,7 @@ export class Driver implements Debuggable, UpdateSource { * Synchronize the existing state to the underlying database. */ private async sync(): Promise { - // Open up the DB table. - const table = await this.db.open('control'); + const table = await this.controlTable; // Construct a serializable map of hashes to manifests. const manifests: ManifestMap = {}; @@ -888,56 +930,45 @@ export class Driver implements Debuggable, UpdateSource { } async cleanupCaches(): Promise { - // Query for all currently active clients, and list the client ids. This may skip - // some clients in the browser back-forward cache, but not much can be done about - // that. - const activeClients: ClientId[] = - (await this.scope.clients.matchAll()).map(client => client.id); + try { + // Query for all currently active clients, and list the client IDs. This may skip some clients + // in the browser back-forward cache, but not much can be done about that. + const activeClients = + new Set((await this.scope.clients.matchAll()).map(client => client.id)); - // A simple list of client ids that the SW has kept track of. Subtracting - // activeClients from this list will result in the set of client ids which are - // being tracked but are no longer used in the browser, and thus can be cleaned up. - const knownClients: ClientId[] = Array.from(this.clientVersionMap.keys()); + // A simple list of client IDs that the SW has kept track of. Subtracting `activeClients` from + // this list will result in the set of client IDs which are being tracked but are no longer + // used in the browser, and thus can be cleaned up. + const knownClients: ClientId[] = Array.from(this.clientVersionMap.keys()); - // Remove clients in the clientVersionMap that are no longer active. - knownClients.filter(id => activeClients.indexOf(id) === -1) - .forEach(id => this.clientVersionMap.delete(id)); + // Remove clients in the `clientVersionMap` that are no longer active. + const obsoleteClients = knownClients.filter(id => !activeClients.has(id)); + obsoleteClients.forEach(id => this.clientVersionMap.delete(id)); - // Next, determine the set of versions which are still used. All others can be - // removed. - const usedVersions = new Set(); - this.clientVersionMap.forEach((version, _) => usedVersions.add(version)); + // Next, determine the set of versions which are still used. All others can be removed. + const usedVersions = new Set(this.clientVersionMap.values()); - // Collect all obsolete versions by filtering out used versions from the set of all versions. - const obsoleteVersions = - Array.from(this.versions.keys()) - .filter(version => !usedVersions.has(version) && version !== this.latestHash); + // Collect all obsolete versions by filtering out used versions from the set of all versions. + const obsoleteVersions = + Array.from(this.versions.keys()) + .filter(version => !usedVersions.has(version) && version !== this.latestHash); - // Remove all the versions which are no longer used. - await obsoleteVersions.reduce(async (previous, version) => { - // Wait for the other cleanup operations to complete. - await previous; + // Remove all the versions which are no longer used. + obsoleteVersions.forEach(version => this.versions.delete(version)); - // Try to get past the failure of one particular version to clean up (this - // shouldn't happen, but handle it just in case). - try { - // Get ahold of the AppVersion for this particular hash. - const instance = this.versions.get(version)!; + // Commit all the changes to the saved state. + await this.sync(); - // Delete it from the canonical map. - this.versions.delete(version); - - // Clean it up. - await instance.cleanup(); - } catch (err) { - // Oh well? Not much that can be done here. These caches will be removed when - // the SW revs its format version, which happens from time to time. - this.debugger.log(err, `cleanupCaches - cleanup ${version}`); - } - }, Promise.resolve()); - - // Commit all the changes to the saved state. - await this.sync(); + // Delete all caches that are no longer needed. + const allCaches = await this.adapter.caches.keys(); + const usedCaches = new Set(await this.getCacheNames()); + const cachesToDelete = allCaches.filter(name => !usedCaches.has(name)); + await Promise.all(cachesToDelete.map(name => this.adapter.caches.delete(name))); + } catch (err) { + // Oh well? Not much that can be done here. These caches will be removed on the next attempt + // or when the SW revs its format version, which happens from time to time. + this.debugger.log(err, 'cleanupCaches'); + } } /** @@ -946,9 +977,13 @@ export class Driver implements Debuggable, UpdateSource { * (Since at this point the SW has claimed all clients, it is safe to remove those caches.) */ async cleanupOldSwCaches(): Promise { - const cacheNames = await this.scope.caches.keys(); + // This is an exceptional case, where we need to interact with caches that would not be + // generated by this ServiceWorker (but by old versions of it). Use the native `CacheStorage` + // directly. + const caches = this.adapter.caches.original; + const cacheNames = await caches.keys(); const oldSwCacheNames = cacheNames.filter(name => /^ngsw:(?!\/)/.test(name)); - await Promise.all(oldSwCacheNames.map(name => this.scope.caches.delete(name))); + await Promise.all(oldSwCacheNames.map(name => caches.delete(name))); } /** @@ -1017,7 +1052,9 @@ export class Driver implements Debuggable, UpdateSource { await Promise.all(affectedClients.map(async clientId => { const client = await this.scope.clients.get(clientId); - client.postMessage({type: 'UNRECOVERABLE_STATE', reason}); + if (client) { + client.postMessage({type: 'UNRECOVERABLE_STATE', reason}); + } })); } @@ -1103,4 +1140,12 @@ export class Driver implements Debuggable, UpdateSource { }); } } + + private async getCacheNames(): Promise { + const controlTable = await this.controlTable as CacheTable; + const appVersions = Array.from(this.versions.values()); + const appVersionCacheNames = + await Promise.all(appVersions.map(version => version.getCacheNames())); + return [controlTable.cacheName].concat(...appVersionCacheNames); + } } diff --git a/packages/service-worker/worker/src/named-cache-storage.ts b/packages/service-worker/worker/src/named-cache-storage.ts new file mode 100644 index 0000000000..a9ccadbf55 --- /dev/null +++ b/packages/service-worker/worker/src/named-cache-storage.ts @@ -0,0 +1,45 @@ +/** + * @license + * 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 + */ + +export interface NamedCache extends Cache { + readonly name: string; +} + +/** + * A wrapper around `CacheStorage` to allow interacting with caches more easily and consistently by: + * - Adding a `name` property to all opened caches, which can be used to easily perform other + * operations that require the cache name. + * - Name-spacing cache names to avoid conflicts with other caches on the same domain. + */ +export class NamedCacheStorage implements CacheStorage { + constructor(readonly original: T, private cacheNamePrefix: string) {} + + delete(cacheName: string): Promise { + return this.original.delete(`${this.cacheNamePrefix}:${cacheName}`); + } + + has(cacheName: string): Promise { + return this.original.has(`${this.cacheNamePrefix}:${cacheName}`); + } + + async keys(): Promise { + const prefix = `${this.cacheNamePrefix}:`; + const allCacheNames = await this.original.keys(); + const ownCacheNames = allCacheNames.filter(name => name.startsWith(prefix)); + return ownCacheNames.map(name => name.slice(prefix.length)); + } + + match(request: RequestInfo, options?: MultiCacheQueryOptions): Promise { + return this.original.match(request, options); + } + + async open(cacheName: string): Promise { + const cache = await this.original.open(`${this.cacheNamePrefix}:${cacheName}`); + return Object.assign(cache, {name: cacheName}); + } +} diff --git a/packages/service-worker/worker/src/service-worker.d.ts b/packages/service-worker/worker/src/service-worker.d.ts index a608f597de..b4ea4880de 100644 --- a/packages/service-worker/worker/src/service-worker.d.ts +++ b/packages/service-worker/worker/src/service-worker.d.ts @@ -1,123 +1,19 @@ -// tslint:disable:file-header /** - * Copyright (c) 2016, Tiernan Cridland + * @license + * Copyright Google LLC All Rights Reserved. * - * Permission to use, copy, modify, and/or distribute this software for any purpose with or without - * fee is hereby - * granted, provided that the above copyright notice and this permission notice appear in all - * copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * SPECIAL, DIRECT, - * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER - * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION - * WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - * - * Typings for Service Worker - * @author Tiernan Cridland - * @email tiernanc@gmail.com - * @license: ISC + * 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 */ -interface ExtendableEvent extends Event { - waitUntil(fn: Promise): void; -} - -// Client API - -declare class Client { - frameType: ClientFrameType; - id: string; - url: string; - postMessage(message: any): void; -} - -interface Clients { - claim(): Promise; - get(id: string): Promise; - matchAll(options?: ClientMatchOptions): Promise>; -} - -interface ClientMatchOptions { - includeUncontrolled?: boolean; - type?: ClientMatchTypes; -} - -interface WindowClient { - focused: boolean; - visibilityState: WindowClientState; - focus(): Promise; - navigate(url: string): Promise; -} - -type ClientFrameType = 'auxiliary'|'top-level'|'nested'|'none'; -type ClientMatchTypes = 'window'|'worker'|'sharedworker'|'all'; -type WindowClientState = 'hidden'|'visible'|'prerender'|'unloaded'; - -// Fetch API - -interface FetchEvent extends ExtendableEvent { - clientId: string|null; - request: Request; - respondWith(response: Promise|Response): Promise; -} - -interface InstallEvent extends ExtendableEvent { - activeWorker: ServiceWorker; -} - -interface ActivateEvent extends ExtendableEvent {} - -// Notification API - -interface NotificationEvent extends ExtendableEvent { - action: string; - notification: Notification; -} - -// Push API - -interface PushEvent extends ExtendableEvent { - data: PushMessageData; -} - -interface PushMessageData { - arrayBuffer(): ArrayBuffer; - blob(): Blob; - json(): any; - text(): string; -} - -// Sync API - -interface SyncEvent extends ExtendableEvent { - lastChance: boolean; - tag: string; -} - -interface ExtendableMessageEvent extends ExtendableEvent { - data: any; - source: Client|Object; -} - -// ServiceWorkerGlobalScope - -interface ServiceWorkerGlobalScope { - caches: CacheStorage; - clients: Clients; - registration: ServiceWorkerRegistration; - - addEventListener(event: 'activate', fn: (event?: ExtendableEvent) => any): void; - addEventListener(event: 'message', fn: (event?: ExtendableMessageEvent) => any): void; - addEventListener(event: 'fetch', fn: (event?: FetchEvent) => any): void; - addEventListener(event: 'install', fn: (event?: ExtendableEvent) => any): void; - addEventListener(event: 'push', fn: (event?: PushEvent) => any): void; - addEventListener(event: 'notificationclick', fn: (event?: NotificationEvent) => any): void; - addEventListener(event: 'sync', fn: (event?: SyncEvent) => any): void; - - fetch(request: Request|string): Promise; - skipWaiting(): Promise; + +/// + +export declare global { + interface ServiceWorkerGlobalScope { + /** + * Disallow accessing `CacheStorage APIs directly to ensure that all accesses go through a + * `NamedCacheStorage` instance (exposed by the `Adapter`). + */ + caches: unknown; + } } diff --git a/packages/service-worker/worker/test/data_spec.ts b/packages/service-worker/worker/test/data_spec.ts index 448b95861b..fe5b04a8b6 100644 --- a/packages/service-worker/worker/test/data_spec.ts +++ b/packages/service-worker/worker/test/data_spec.ts @@ -13,10 +13,11 @@ import {MockCache} from '../testing/cache'; import {MockRequest} from '../testing/fetch'; import {MockFileSystemBuilder, MockServerStateBuilder, tmpHashTableForFs} from '../testing/mock'; import {SwTestHarness, SwTestHarnessBuilder} from '../testing/scope'; +import {envIsSupported} from '../testing/utils'; (function() { // Skip environments that don't support the minimum APIs needed to run the SW tests. -if (!SwTestHarness.envIsSupported()) { +if (!envIsSupported()) { return; } @@ -126,7 +127,7 @@ describe('data cache', () => { let driver: Driver; beforeEach(async () => { scope = new SwTestHarnessBuilder().withServerState(server).build(); - driver = new Driver(scope, scope, new CacheDatabase(scope, scope)); + driver = new Driver(scope, scope, new CacheDatabase(scope)); // Initialize. expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); @@ -144,7 +145,7 @@ describe('data cache', () => { describe('in performance mode', () => { it('names the caches correctly', async () => { expect(await makeRequest(scope, '/api/test')).toEqual('version 1'); - const keys = await scope.caches.keys(); + const keys = await scope.caches.original.keys(); expect(keys.every(key => key.startsWith('ngsw:/:'))).toEqual(true); }); diff --git a/packages/service-worker/worker/test/happy_spec.ts b/packages/service-worker/worker/test/happy_spec.ts index fcaf4bd27d..fede0a01a0 100644 --- a/packages/service-worker/worker/test/happy_spec.ts +++ b/packages/service-worker/worker/test/happy_spec.ts @@ -12,13 +12,15 @@ import {Driver, DriverReadyState} from '../src/driver'; import {AssetGroupConfig, DataGroupConfig, Manifest} from '../src/manifest'; import {sha1} from '../src/sha1'; import {clearAllCaches, MockCache} from '../testing/cache'; +import {MockWindowClient} from '../testing/clients'; import {MockRequest, MockResponse} from '../testing/fetch'; import {MockFileSystem, MockFileSystemBuilder, MockServerState, MockServerStateBuilder, tmpHashTableForFs} from '../testing/mock'; import {SwTestHarness, SwTestHarnessBuilder} from '../testing/scope'; +import {envIsSupported} from '../testing/utils'; (function() { // Skip environments that don't support the minimum APIs needed to run the SW tests. -if (!SwTestHarness.envIsSupported()) { +if (!envIsSupported()) { return; } @@ -304,7 +306,7 @@ describe('Driver', () => { brokenServer.reset(); scope = new SwTestHarnessBuilder().withServerState(server).build(); - driver = new Driver(scope, scope, new CacheDatabase(scope, scope)); + driver = new Driver(scope, scope, new CacheDatabase(scope)); }); it('activates without waiting', async () => { @@ -402,7 +404,8 @@ describe('Driver', () => { expect(driver['latestHash']).toBeNull(); // Pushing a message initializes the driver (fetches assets). - await scope.handleMessage({action: 'foo'}, 'someClient'); + scope.handleMessage({action: 'foo'}, 'someClient'); + await new Promise(resolve => setTimeout(resolve)); // Wait for async operations to complete. expect(driver['latestHash']).toEqual(jasmine.any(String)); server.assertSawRequestFor('/ngsw.json'); server.assertSawRequestFor('/foo.txt'); @@ -538,7 +541,6 @@ describe('Driver', () => { it('handles empty client ID', async () => { // Initialize the SW. expect(await makeNavigationRequest(scope, '/foo/file1', '')).toEqual('this is foo'); - expect(await makeNavigationRequest(scope, '/bar/file2', null)).toEqual('this is foo'); await driver.initialized; // Update to a new version. @@ -547,7 +549,6 @@ describe('Driver', () => { // Correctly handle navigation requests, even if `clientId` is null/empty. expect(await makeNavigationRequest(scope, '/foo/file1', '')).toEqual('this is foo v2'); - expect(await makeNavigationRequest(scope, '/bar/file2', null)).toEqual('this is foo v2'); }); it('checks for updates on restart', async () => { @@ -555,10 +556,10 @@ describe('Driver', () => { await driver.initialized; scope = new SwTestHarnessBuilder() - .withCacheState(scope.caches.dehydrate()) + .withCacheState(scope.caches.original.dehydrate()) .withServerState(serverUpdate) .build(); - driver = new Driver(scope, scope, new CacheDatabase(scope, scope)); + driver = new Driver(scope, scope, new CacheDatabase(scope)); expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); await driver.initialized; serverUpdate.assertNoOtherRequests(); @@ -611,10 +612,10 @@ describe('Driver', () => { serverUpdate.clearRequests(); scope = new SwTestHarnessBuilder() - .withCacheState(scope.caches.dehydrate()) + .withCacheState(scope.caches.original.dehydrate()) .withServerState(serverUpdate) .build(); - driver = new Driver(scope, scope, new CacheDatabase(scope, scope)); + driver = new Driver(scope, scope, new CacheDatabase(scope)); expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); expect(await makeRequest(scope, '/foo.txt', 'new')).toEqual('this is foo v2'); @@ -673,16 +674,16 @@ describe('Driver', () => { await driver.initialized; scope = new SwTestHarnessBuilder() - .withCacheState(scope.caches.dehydrate()) + .withCacheState(scope.caches.original.dehydrate()) .withServerState(serverUpdate) .build(); - driver = new Driver(scope, scope, new CacheDatabase(scope, scope)); + driver = new Driver(scope, scope, new CacheDatabase(scope)); expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); await driver.initialized; serverUpdate.assertNoOtherRequests(); let keys = await scope.caches.keys(); - let hasOriginalCaches = keys.some(name => name.startsWith(`ngsw:/:${manifestHash}:`)); + let hasOriginalCaches = keys.some(name => name.startsWith(`${manifestHash}:`)); expect(hasOriginalCaches).toEqual(true); scope.clients.remove('default'); @@ -691,14 +692,50 @@ describe('Driver', () => { await driver.idle.empty; serverUpdate.clearRequests(); - driver = new Driver(scope, scope, new CacheDatabase(scope, scope)); + driver = new Driver(scope, scope, new CacheDatabase(scope)); expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo v2'); keys = await scope.caches.keys(); - hasOriginalCaches = keys.some(name => name.startsWith(`ngsw:/:${manifestHash}:`)); + hasOriginalCaches = keys.some(name => name.startsWith(`${manifestHash}:`)); expect(hasOriginalCaches).toEqual(false); }); + it('cleans up properly when failing to load stored state', async () => { + // Initialize the SW and cache the original app-version. + expect(await makeRequest(scope, '/foo.txt')).toBe('this is foo'); + await driver.initialized; + + // Update and cache the updated app-version. + scope.updateServerState(serverUpdate); + expect(await driver.checkForUpdate()).toBeTrue(); + expect(await makeRequest(scope, '/foo.txt', 'newClient')).toBe('this is foo v2'); + + // Verify both app-versions are stored in the cache. + let cacheNames = await scope.caches.keys(); + let hasOriginalVersion = cacheNames.some(name => name.startsWith(`${manifestHash}:`)); + let hasUpdatedVersion = cacheNames.some(name => name.startsWith(`${manifestUpdateHash}:`)); + expect(hasOriginalVersion).withContext('Has caches for original version').toBeTrue(); + expect(hasUpdatedVersion).withContext('Has caches for updated version').toBeTrue(); + + // Simulate failing to load the stored state (and thus starting from an empty state). + scope.caches.delete('db:control'); + driver = new Driver(scope, scope, new CacheDatabase(scope)); + + expect(await makeRequest(scope, '/foo.txt')).toBe('this is foo v2'); + await driver.initialized; + + // Verify that the caches for the obsolete original version are cleaned up. + // await driver.cleanupCaches(); + scope.advance(6000); + await driver.idle.empty; + + cacheNames = await scope.caches.keys(); + hasOriginalVersion = cacheNames.some(name => name.startsWith(`${manifestHash}:`)); + hasUpdatedVersion = cacheNames.some(name => name.startsWith(`${manifestUpdateHash}:`)); + expect(hasOriginalVersion).withContext('Has caches for original version').toBeFalse(); + expect(hasUpdatedVersion).withContext('Has caches for updated version').toBeTrue(); + }); + it('shows notifications for push notifications', async () => { expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); await driver.initialized; @@ -723,30 +760,369 @@ describe('Driver', () => { }]); }); - it('broadcasts notification click events with action', async () => { - expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); - await driver.initialized; - await scope.handleClick( - {title: 'This is a test with action', body: 'Test body with action'}, 'button'); - const message: any = scope.clients.getMock('default')!.messages[0]; + describe('notification click events', () => { + it('broadcasts notification click events with action', async () => { + expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); + await driver.initialized; + await scope.handleClick( + {title: 'This is a test with action', body: 'Test body with action'}, 'button'); + const message = scope.clients.getMock('default')!.messages[0]; - expect(message.type).toEqual('NOTIFICATION_CLICK'); - expect(message.data.action).toEqual('button'); - expect(message.data.notification.title).toEqual('This is a test with action'); - expect(message.data.notification.body).toEqual('Test body with action'); - }); + expect(message.type).toEqual('NOTIFICATION_CLICK'); + expect(message.data.action).toEqual('button'); + expect(message.data.notification.title).toEqual('This is a test with action'); + expect(message.data.notification.body).toEqual('Test body with action'); + }); - it('broadcasts notification click events without action', async () => { - expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); - await driver.initialized; - await scope.handleClick( - {title: 'This is a test without action', body: 'Test body without action'}); - const message: any = scope.clients.getMock('default')!.messages[0]; + it('broadcasts notification click events without action', async () => { + expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); + await driver.initialized; + await scope.handleClick({ + title: 'This is a test without action', + body: 'Test body without action', + }); + const message = scope.clients.getMock('default')!.messages[0]; - expect(message.type).toEqual('NOTIFICATION_CLICK'); - expect(message.data.action).toBeUndefined(); - expect(message.data.notification.title).toEqual('This is a test without action'); - expect(message.data.notification.body).toEqual('Test body without action'); + expect(message.type).toEqual('NOTIFICATION_CLICK'); + expect(message.data.action).toBe(''); + expect(message.data.notification.title).toEqual('This is a test without action'); + expect(message.data.notification.body).toEqual('Test body without action'); + }); + + describe('Client interactions', () => { + describe('`openWindow` operation', () => { + it('opens a new client window at url', async () => { + expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); + + spyOn(scope.clients, 'openWindow'); + const url = 'foo'; + + await driver.initialized; + await scope.handleClick( + { + title: 'This is a test with url', + body: 'Test body with url', + data: { + onActionClick: { + foo: {operation: 'openWindow', url}, + }, + }, + }, + 'foo'); + expect(scope.clients.openWindow) + .toHaveBeenCalledWith(`${scope.registration.scope}${url}`); + }); + + it('opens a new client window with `/` when no `url`', async () => { + expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); + + spyOn(scope.clients, 'openWindow'); + + await driver.initialized; + await scope.handleClick( + { + title: 'This is a test without url', + body: 'Test body without url', + data: { + onActionClick: { + foo: {operation: 'openWindow'}, + }, + }, + }, + 'foo'); + expect(scope.clients.openWindow).toHaveBeenCalledWith(`${scope.registration.scope}`); + }); + }); + + describe('`focusLastFocusedOrOpen` operation', () => { + it('focuses last client keeping previous url', async () => { + expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); + + scope.clients.add('fooBar', 'http://localhost/unique', 'window'); + const mockClient = scope.clients.getMock('fooBar') as MockWindowClient; + const url = 'foo'; + + expect(mockClient.url).toBe('http://localhost/unique'); + expect(mockClient.focused).toBeFalse(); + + await driver.initialized; + await scope.handleClick( + { + title: 'This is a test with operation focusLastFocusedOrOpen', + body: 'Test body with operation focusLastFocusedOrOpen', + data: { + onActionClick: { + foo: {operation: 'focusLastFocusedOrOpen', url}, + }, + }, + }, + 'foo'); + expect(mockClient.url).toBe('http://localhost/unique'); + expect(mockClient.focused).toBeTrue(); + }); + + it('falls back to openWindow at url when no last client to focus', async () => { + expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); + spyOn(scope.clients, 'openWindow'); + spyOn(scope.clients, 'matchAll').and.returnValue(Promise.resolve([])); + const url = 'foo'; + + await driver.initialized; + await scope.handleClick( + { + title: 'This is a test with operation focusLastFocusedOrOpen', + body: 'Test body with operation focusLastFocusedOrOpen', + data: { + onActionClick: { + foo: {operation: 'focusLastFocusedOrOpen', url}, + }, + }, + }, + 'foo'); + expect(scope.clients.openWindow) + .toHaveBeenCalledWith(`${scope.registration.scope}${url}`); + }); + + it('falls back to openWindow at `/` when no last client and no `url`', async () => { + expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); + spyOn(scope.clients, 'openWindow'); + spyOn(scope.clients, 'matchAll').and.returnValue(Promise.resolve([])); + + await driver.initialized; + await scope.handleClick( + { + title: 'This is a test with operation focusLastFocusedOrOpen', + body: 'Test body with operation focusLastFocusedOrOpen', + data: { + onActionClick: { + foo: {operation: 'focusLastFocusedOrOpen'}, + }, + }, + }, + 'foo'); + expect(scope.clients.openWindow).toHaveBeenCalledWith(`${scope.registration.scope}`); + }); + }); + + describe('`navigateLastFocusedOrOpen` operation', () => { + it('navigates last client to `url`', async () => { + expect(await makeRequest(scope, '/foo.txt')).toBe('this is foo'); + + scope.clients.add('fooBar', 'http://localhost/unique', 'window'); + const mockClient = scope.clients.getMock('fooBar') as MockWindowClient; + const url = 'foo'; + + expect(mockClient.url).toBe('http://localhost/unique'); + expect(mockClient.focused).toBeFalse(); + + await driver.initialized; + await scope.handleClick( + { + title: 'This is a test with operation navigateLastFocusedOrOpen', + body: 'Test body with operation navigateLastFocusedOrOpen', + data: { + onActionClick: { + foo: {operation: 'navigateLastFocusedOrOpen', url}, + }, + }, + }, + 'foo'); + expect(mockClient.url).toBe(`${scope.registration.scope}${url}`); + expect(mockClient.focused).toBeTrue(); + }); + + it('navigates last client to `/` if no `url`', async () => { + expect(await makeRequest(scope, '/foo.txt')).toBe('this is foo'); + + scope.clients.add('fooBar', 'http://localhost/unique', 'window'); + const mockClient = scope.clients.getMock('fooBar') as MockWindowClient; + + expect(mockClient.url).toBe('http://localhost/unique'); + expect(mockClient.focused).toBeFalse(); + + await driver.initialized; + await scope.handleClick( + { + title: 'This is a test with operation navigateLastFocusedOrOpen', + body: 'Test body with operation navigateLastFocusedOrOpen', + data: { + onActionClick: { + foo: {operation: 'navigateLastFocusedOrOpen'}, + }, + }, + }, + 'foo'); + expect(mockClient.url).toBe(scope.registration.scope); + expect(mockClient.focused).toBeTrue(); + }); + + it('falls back to openWindow at url when no last client to focus', async () => { + expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); + spyOn(scope.clients, 'openWindow'); + spyOn(scope.clients, 'matchAll').and.returnValue(Promise.resolve([])); + const url = 'foo'; + + await driver.initialized; + await scope.handleClick( + { + title: 'This is a test with operation navigateLastFocusedOrOpen', + body: 'Test body with operation navigateLastFocusedOrOpen', + data: { + onActionClick: { + foo: {operation: 'navigateLastFocusedOrOpen', url}, + }, + }, + }, + 'foo'); + expect(scope.clients.openWindow) + .toHaveBeenCalledWith(`${scope.registration.scope}${url}`); + }); + + it('falls back to openWindow at `/` when no last client and no `url`', async () => { + expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); + spyOn(scope.clients, 'openWindow'); + spyOn(scope.clients, 'matchAll').and.returnValue(Promise.resolve([])); + + await driver.initialized; + await scope.handleClick( + { + title: 'This is a test with operation navigateLastFocusedOrOpen', + body: 'Test body with operation navigateLastFocusedOrOpen', + data: { + onActionClick: { + foo: {operation: 'navigateLastFocusedOrOpen'}, + }, + }, + }, + 'foo'); + expect(scope.clients.openWindow).toHaveBeenCalledWith(`${scope.registration.scope}`); + }); + }); + + describe('No matching onActionClick field', () => { + it('no client interaction', async () => { + expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); + spyOn(scope.clients, 'openWindow'); + + await driver.initialized; + await scope.handleClick( + { + title: 'This is a test without onActionClick field', + body: 'Test body without onActionClick field', + data: { + onActionClick: { + fooz: {operation: 'focusLastFocusedOrOpen', url: 'fooz'}, + }, + }, + }, + 'foo'); + expect(scope.clients.openWindow).not.toHaveBeenCalled(); + }); + }); + + describe('no action', () => { + it('uses onActionClick default when no specific action is clicked', async () => { + expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); + spyOn(scope.clients, 'openWindow'); + const url = 'fooz'; + + await driver.initialized; + await scope.handleClick( + { + title: 'This is a test without action', + body: 'Test body without action', + data: { + onActionClick: { + default: {operation: 'openWindow', url}, + }, + }, + }, + ''); + expect(scope.clients.openWindow) + .toHaveBeenCalledWith(`${scope.registration.scope}${url}`); + }); + + describe('no onActionClick default', () => { + it('has no client interaction', async () => { + expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); + spyOn(scope.clients, 'openWindow'); + + await driver.initialized; + await scope.handleClick( + {title: 'This is a test without action', body: 'Test body without action'}); + expect(scope.clients.openWindow).not.toHaveBeenCalled(); + }); + }); + }); + + describe('URL resolution', () => { + it('should resolve relative to service worker scope', async () => { + (scope.registration.scope as string) = 'http://localhost/foo/bar/'; + + expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); + + spyOn(scope.clients, 'openWindow'); + + await driver.initialized; + await scope.handleClick( + { + title: 'This is a test with a relative url', + body: 'Test body with a relative url', + data: { + onActionClick: { + foo: {operation: 'openWindow', url: 'baz/qux'}, + }, + }, + }, + 'foo'); + expect(scope.clients.openWindow).toHaveBeenCalledWith('http://localhost/foo/bar/baz/qux'); + }); + + it('should resolve with an absolute path', async () => { + (scope.registration.scope as string) = 'http://localhost/foo/bar/'; + + expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); + + spyOn(scope.clients, 'openWindow'); + + await driver.initialized; + await scope.handleClick( + { + title: 'This is a test with an absolute path url', + body: 'Test body with an absolute path url', + data: { + onActionClick: { + foo: {operation: 'openWindow', url: '/baz/qux'}, + }, + }, + }, + 'foo'); + expect(scope.clients.openWindow).toHaveBeenCalledWith('http://localhost/baz/qux'); + }); + + it('should resolve other origins', async () => { + (scope.registration.scope as string) = 'http://localhost/foo/bar/'; + + expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); + + spyOn(scope.clients, 'openWindow'); + + await driver.initialized; + await scope.handleClick( + { + title: 'This is a test with external origin', + body: 'Test body with external origin', + data: { + onActionClick: { + foo: {operation: 'openWindow', url: 'http://other.host/baz/qux'}, + }, + }, + }, + 'foo'); + expect(scope.clients.openWindow).toHaveBeenCalledWith('http://other.host/baz/qux'); + }); + }); + }); }); it('prefetches updates to lazy cache when set', async () => { @@ -905,28 +1281,28 @@ describe('Driver', () => { describe('serving ngsw/state', () => { it('should show debug info (when in NORMAL state)', async () => { expect(await makeRequest(scope, '/ngsw/state')) - .toMatch(/^NGSW Debug Info:\n\nDriver state: NORMAL/); + .toMatch(/^NGSW Debug Info:\n\nDriver version: .+\nDriver state: NORMAL/); }); it('should show debug info (when in EXISTING_CLIENTS_ONLY state)', async () => { driver.state = DriverReadyState.EXISTING_CLIENTS_ONLY; expect(await makeRequest(scope, '/ngsw/state')) - .toMatch(/^NGSW Debug Info:\n\nDriver state: EXISTING_CLIENTS_ONLY/); + .toMatch(/^NGSW Debug Info:\n\nDriver version: .+\nDriver state: EXISTING_CLIENTS_ONLY/); }); it('should show debug info (when in SAFE_MODE state)', async () => { driver.state = DriverReadyState.SAFE_MODE; expect(await makeRequest(scope, '/ngsw/state')) - .toMatch(/^NGSW Debug Info:\n\nDriver state: SAFE_MODE/); + .toMatch(/^NGSW Debug Info:\n\nDriver version: .+\nDriver state: SAFE_MODE/); }); it('should show debug info when the scope is not root', async () => { const newScope = new SwTestHarnessBuilder('http://localhost/foo/bar/').withServerState(server).build(); - new Driver(newScope, newScope, new CacheDatabase(newScope, newScope)); + new Driver(newScope, newScope, new CacheDatabase(newScope)); expect(await makeRequest(newScope, '/foo/bar/ngsw/state')) - .toMatch(/^NGSW Debug Info:\n\nDriver state: NORMAL/); + .toMatch(/^NGSW Debug Info:\n\nDriver version: .+\nDriver state: NORMAL/); }); }); @@ -937,12 +1313,12 @@ describe('Driver', () => { const cacheKeysFor = (baseHref: string, manifestHash: string) => [`ngsw:${baseHref}:db:control`, `ngsw:${baseHref}:${manifestHash}:assets:eager:cache`, - `ngsw:${baseHref}:db:ngsw:${baseHref}:${manifestHash}:assets:eager:meta`, + `ngsw:${baseHref}:db:${manifestHash}:assets:eager:meta`, `ngsw:${baseHref}:${manifestHash}:assets:lazy:cache`, - `ngsw:${baseHref}:db:ngsw:${baseHref}:${manifestHash}:assets:lazy:meta`, - `ngsw:${baseHref}:42:data:dynamic:api:cache`, - `ngsw:${baseHref}:db:ngsw:${baseHref}:42:data:dynamic:api:lru`, - `ngsw:${baseHref}:db:ngsw:${baseHref}:42:data:dynamic:api:age`, + `ngsw:${baseHref}:db:${manifestHash}:assets:lazy:meta`, + `ngsw:${baseHref}:42:data:api:cache`, + `ngsw:${baseHref}:db:42:data:api:lru`, + `ngsw:${baseHref}:db:42:data:api:age`, ]; const createManifestWithBaseHref = (baseHref: string, distDir: MockFileSystem): Manifest => ({ @@ -992,7 +1368,8 @@ describe('Driver', () => { }); const getClientAssignments = async (sw: SwTestHarness, baseHref: string) => { - const cache = await sw.caches.open(`ngsw:${baseHref}:db:control`) as unknown as MockCache; + const cache = + await sw.caches.original.open(`ngsw:${baseHref}:db:control`) as unknown as MockCache; const dehydrated = cache.dehydrate(); return JSON.parse(dehydrated['/assignments'].body!) as any; }; @@ -1012,7 +1389,7 @@ describe('Driver', () => { .withCacheState(initialCacheState) .withServerState(serverState) .build(); - const newDriver = new Driver(newScope, newScope, new CacheDatabase(newScope, newScope)); + const newDriver = new Driver(newScope, newScope, new CacheDatabase(newScope)); await makeRequest(newScope, newManifest.index, baseHref.replace(/\//g, '_')); await newDriver.initialized; @@ -1027,14 +1404,14 @@ describe('Driver', () => { it('includes the SW scope in all cache names', async () => { // SW with scope `/`. const [rootScope, rootManifestHash] = await initializeSwFor('/'); - const cacheNames = await rootScope.caches.keys(); + const cacheNames = await rootScope.caches.original.keys(); expect(cacheNames).toEqual(cacheKeysFor('/', rootManifestHash)); expect(cacheNames.every(name => name.includes('/'))).toBe(true); // SW with scope `/foo/`. const [fooScope, fooManifestHash] = await initializeSwFor('/foo/'); - const fooCacheNames = await fooScope.caches.keys(); + const fooCacheNames = await fooScope.caches.original.keys(); expect(fooCacheNames).toEqual(cacheKeysFor('/foo/', fooManifestHash)); expect(fooCacheNames.every(name => name.includes('/foo/'))).toBe(true); @@ -1049,8 +1426,8 @@ describe('Driver', () => { // Add new SW with different scope. const [barScope, barManifestHash] = - await initializeSwFor('/bar/', await fooScope.caches.dehydrate()); - const barCacheNames = await barScope.caches.keys(); + await initializeSwFor('/bar/', await fooScope.caches.original.dehydrate()); + const barCacheNames = await barScope.caches.original.keys(); const barAssignments = await getClientAssignments(barScope, '/bar/'); expect(barAssignments).toEqual({_bar_: barManifestHash}); @@ -1080,7 +1457,7 @@ describe('Driver', () => { // Add new SW with same scope. const [fooScope2, fooManifestHash2] = - await initializeSwFor('/foo/', await fooScope.caches.dehydrate()); + await initializeSwFor('/foo/', await fooScope.caches.original.dehydrate()); // Update client `_foo_` but not client `_bar_`. await fooScope2.handleMessage({action: 'CHECK_FOR_UPDATES'}, '_foo_'); @@ -1147,6 +1524,7 @@ describe('Driver', () => { // Another 6 seconds. scope.advance(6000); await driver.idle.empty; + await new Promise(resolve => setTimeout(resolve)); // Wait for async operations to complete. serverUpdate.assertSawRequestFor('/unhashed/a.txt'); // Now the new version of the resource should be served. @@ -1158,9 +1536,9 @@ describe('Driver', () => { expect(await makeRequest(scope, '/unhashed/a.txt')).toEqual('this is unhashed'); server.clearRequests(); - const state = scope.caches.dehydrate(); + const state = scope.caches.original.dehydrate(); scope = new SwTestHarnessBuilder().withCacheState(state).withServerState(server).build(); - driver = new Driver(scope, scope, new CacheDatabase(scope, scope)); + driver = new Driver(scope, scope, new CacheDatabase(scope)); expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); await driver.initialized; server.assertNoRequestFor('/unhashed/a.txt'); @@ -1182,10 +1560,10 @@ describe('Driver', () => { server.clearRequests(); scope = new SwTestHarnessBuilder() - .withCacheState(scope.caches.dehydrate()) + .withCacheState(scope.caches.original.dehydrate()) .withServerState(serverUpdate) .build(); - driver = new Driver(scope, scope, new CacheDatabase(scope, scope)); + driver = new Driver(scope, scope, new CacheDatabase(scope)); expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo'); await driver.initialized; @@ -1377,7 +1755,7 @@ describe('Driver', () => { scope = new SwTestHarnessBuilder('http://localhost/base/href/') .withServerState(serverWithBaseHref) .build(); - driver = new Driver(scope, scope, new CacheDatabase(scope, scope)); + driver = new Driver(scope, scope, new CacheDatabase(scope)); }); it('initializes prefetched content correctly, after a request kicks it off', async () => { @@ -1483,26 +1861,29 @@ describe('Driver', () => { 'ngsuu:active', 'not:ngsw:active', 'NgSw:StAgEd', - 'ngsw:/:active', - 'ngsw:/foo/:staged', + 'ngsw:/:db:control', + 'ngsw:/foo/:active', + 'ngsw:/bar/:staged', ]; const allCacheNames = oldSwCacheNames.concat(otherCacheNames); - await Promise.all(allCacheNames.map(name => scope.caches.open(name))); - expect(await scope.caches.keys()).toEqual(allCacheNames); + await Promise.all(allCacheNames.map(name => scope.caches.original.open(name))); + expect(await scope.caches.original.keys()) + .toEqual(jasmine.arrayWithExactContents(allCacheNames)); await driver.cleanupOldSwCaches(); - expect(await scope.caches.keys()).toEqual(otherCacheNames); + expect(await scope.caches.original.keys()) + .toEqual(jasmine.arrayWithExactContents(otherCacheNames)); }); it('should delete other caches even if deleting one of them fails', async () => { const oldSwCacheNames = ['ngsw:active', 'ngsw:staged', 'ngsw:manifest:a1b2c3:super:duper']; const deleteSpy = - spyOn(scope.caches, 'delete') + spyOn(scope.caches.original, 'delete') .and.callFake( (cacheName: string) => Promise.reject(`Failed to delete cache '${cacheName}'.`)); - await Promise.all(oldSwCacheNames.map(name => scope.caches.open(name))); + await Promise.all(oldSwCacheNames.map(name => scope.caches.original.open(name))); const error = await driver.cleanupOldSwCaches().catch(err => err); expect(error).toBe('Failed to delete cache \'ngsw:active\'.'); @@ -1515,7 +1896,7 @@ describe('Driver', () => { it('does not crash with bad index hash', async () => { scope = new SwTestHarnessBuilder().withServerState(brokenServer).build(); (scope.registration as any).scope = 'http://site.com'; - driver = new Driver(scope, scope, new CacheDatabase(scope, scope)); + driver = new Driver(scope, scope, new CacheDatabase(scope)); expect(await makeRequest(scope, '/foo.txt')).toEqual('this is foo (broken)'); }); @@ -1526,10 +1907,10 @@ describe('Driver', () => { server.clearRequests(); scope = new SwTestHarnessBuilder() - .withCacheState(scope.caches.dehydrate()) + .withCacheState(scope.caches.original.dehydrate()) .withServerState(brokenServer) .build(); - driver = new Driver(scope, scope, new CacheDatabase(scope, scope)); + driver = new Driver(scope, scope, new CacheDatabase(scope)); await driver.checkForUpdate(); scope.advance(12000); @@ -1686,7 +2067,7 @@ describe('Driver', () => { expect(driver.state).toBe(DriverReadyState.NORMAL); // Ensure the data has been stored in the DB. - const db: MockCache = await scope.caches.open('ngsw:/:db:control') as any; + const db: MockCache = await scope.caches.open('db:control') as any; const getLatestHashFromDb = async () => (await (await db.match('/latest')).json()).latest; expect(await getLatestHashFromDb()).toBe(manifestHash); @@ -1813,7 +2194,7 @@ describe('Driver', () => { // Create initial server state and initialize the SW. scope = new SwTestHarnessBuilder().withServerState(serverState1).build(); - driver = new Driver(scope, scope, new CacheDatabase(scope, scope)); + driver = new Driver(scope, scope, new CacheDatabase(scope)); // Verify that all three clients are able to make the request. expect(await makeRequest(scope, '/foo.hash.js', 'client1')).toBe('console.log("FOO");'); @@ -1891,7 +2272,7 @@ describe('Driver', () => { // Create initial server state and initialize the SW. scope = new SwTestHarnessBuilder().withServerState(originalServer).build(); - driver = new Driver(scope, scope, new CacheDatabase(scope, scope)); + driver = new Driver(scope, scope, new CacheDatabase(scope)); expect(await makeRequest(scope, '/foo.hash.js')).toBe('console.log("FOO");'); await driver.initialized; @@ -1904,10 +2285,10 @@ describe('Driver', () => { // Update the server state to emulate deploying a new version (where `foo.hash.js` does not // exist any more). Keep the cache though. scope = new SwTestHarnessBuilder() - .withCacheState(scope.caches.dehydrate()) + .withCacheState(scope.caches.original.dehydrate()) .withServerState(updatedServer) .build(); - driver = new Driver(scope, scope, new CacheDatabase(scope, scope)); + driver = new Driver(scope, scope, new CacheDatabase(scope)); // The SW is still able to serve `foo.hash.js` from the cache. expect(await makeRequest(scope, '/foo.hash.js')).toBe('console.log("FOO");'); @@ -1925,6 +2306,62 @@ describe('Driver', () => { // latest one. expect(driver.state).toEqual(DriverReadyState.EXISTING_CLIENTS_ONLY); }); + + it('is handled correctly even if some of the clients no longer exist', async () => { + const originalFiles = new MockFileSystemBuilder() + .addFile('/index.html', '') + .addFile('/foo.hash.js', 'console.log("FOO");') + .build(); + + const updatedFiles = new MockFileSystemBuilder() + .addFile('/index.html', '') + .addFile('/bar.hash.js', 'console.log("BAR");') + .build(); + + const {serverState: originalServer, manifest} = generateMockServerState(originalFiles); + const {serverState: updatedServer} = generateMockServerState(updatedFiles); + + // Create initial server state and initialize the SW. + scope = new SwTestHarnessBuilder().withServerState(originalServer).build(); + driver = new Driver(scope, scope, new CacheDatabase(scope)); + + expect(await makeRequest(scope, '/foo.hash.js', 'client-1')).toBe('console.log("FOO");'); + expect(await makeRequest(scope, '/foo.hash.js', 'client-2')).toBe('console.log("FOO");'); + await driver.initialized; + + // Update the server state to emulate deploying a new version (where `foo.hash.js` does not + // exist any more). Keep the cache though. + scope = new SwTestHarnessBuilder() + .withCacheState(scope.caches.original.dehydrate()) + .withServerState(updatedServer) + .build(); + driver = new Driver(scope, scope, new CacheDatabase(scope)); + + // The SW is still able to serve `foo.hash.js` from the cache. + expect(await makeRequest(scope, '/foo.hash.js', 'client-1')).toBe('console.log("FOO");'); + expect(await makeRequest(scope, '/foo.hash.js', 'client-2')).toBe('console.log("FOO");'); + + // Remove `foo.hash.js` from the cache to emulate the browser evicting files from the cache. + await removeAssetFromCache(scope, manifest, '/foo.hash.js'); + + // Remove one of the clients to emulate closing a browser tab. + scope.clients.remove('client-1'); + + // Retrieve the remaining client to ensure it is notified. + const mockClient2 = scope.clients.getMock('client-2')!; + expect(mockClient2.messages).toEqual([]); + + // Try to retrieve `foo.hash.js`, which is neither in the cache nor on the server. + // This should put the SW in an unrecoverable state and notify clients (even if some of the + // previously known clients no longer exist). + expect(await makeRequest(scope, '/foo.hash.js', 'client-2')).toBeNull(); + expect(mockClient2.messages).toEqual([jasmine.objectContaining( + {type: 'UNRECOVERABLE_STATE'})]); + + // This should also enter the `SW` into degraded mode, because the broken version was the + // latest one. + expect(driver.state).toEqual(DriverReadyState.EXISTING_CLIENTS_ONLY); + }); }); describe('backwards compatibility with v5', () => { @@ -1935,7 +2372,7 @@ describe('Driver', () => { .build(); scope = new SwTestHarnessBuilder().withServerState(serverV5).build(); - driver = new Driver(scope, scope, new CacheDatabase(scope, scope)); + driver = new Driver(scope, scope, new CacheDatabase(scope)); }); // Test this bug: https://github.com/angular/angular/issues/27209 @@ -1989,7 +2426,7 @@ describe('Driver', () => { const freshnessManifest: Manifest = {...manifest, navigationRequestStrategy: 'freshness'}; const server = serverBuilderBase.withManifest(freshnessManifest).build(); const scope = new SwTestHarnessBuilder().withServerState(server).build(); - const driver = new Driver(scope, scope, new CacheDatabase(scope, scope)); + const driver = new Driver(scope, scope, new CacheDatabase(scope)); return {server, scope, driver}; } @@ -2001,15 +2438,13 @@ async function removeAssetFromCache( scope: SwTestHarness, appVersionManifest: Manifest, assetPath: string) { const assetGroupName = appVersionManifest.assetGroups?.find(group => group.urls.includes(assetPath))?.name; - const cacheName = `${scope.cacheNamePrefix}:${sha1(JSON.stringify(appVersionManifest))}:assets:${ - assetGroupName}:cache`; + const cacheName = `${sha1(JSON.stringify(appVersionManifest))}:assets:${assetGroupName}:cache`; const cache = await scope.caches.open(cacheName); return cache.delete(assetPath); } async function makeRequest( - scope: SwTestHarness, url: string, clientId: string|null = 'default', - init?: Object): Promise { + scope: SwTestHarness, url: string, clientId = 'default', init?: Object): Promise { const [resPromise, done] = scope.handleFetch(new MockRequest(url, init), clientId); await done; const res = await resPromise; @@ -2020,8 +2455,7 @@ async function makeRequest( } function makeNavigationRequest( - scope: SwTestHarness, url: string, clientId?: string|null, - init: Object = {}): Promise { + scope: SwTestHarness, url: string, clientId?: string, init: Object = {}): Promise { return makeRequest(scope, url, clientId, { headers: { Accept: 'text/plain, text/html, text/css', diff --git a/packages/service-worker/worker/test/idle_spec.ts b/packages/service-worker/worker/test/idle_spec.ts index 3d223c6ce3..8575e20f3e 100644 --- a/packages/service-worker/worker/test/idle_spec.ts +++ b/packages/service-worker/worker/test/idle_spec.ts @@ -8,10 +8,11 @@ import {IdleScheduler} from '../src/idle'; import {SwTestHarness, SwTestHarnessBuilder} from '../testing/scope'; +import {envIsSupported} from '../testing/utils'; (function() { // Skip environments that don't support the minimum APIs needed to run the SW tests. -if (!SwTestHarness.envIsSupported()) { +if (!envIsSupported()) { return; } diff --git a/packages/service-worker/worker/test/prefetch_spec.ts b/packages/service-worker/worker/test/prefetch_spec.ts index df8970c2eb..24cee1d23c 100644 --- a/packages/service-worker/worker/test/prefetch_spec.ts +++ b/packages/service-worker/worker/test/prefetch_spec.ts @@ -10,13 +10,15 @@ import {PrefetchAssetGroup} from '../src/assets'; import {CacheDatabase} from '../src/db-cache'; import {IdleScheduler} from '../src/idle'; import {MockCache} from '../testing/cache'; +import {MockExtendableEvent} from '../testing/events'; import {MockRequest} from '../testing/fetch'; import {MockFileSystemBuilder, MockServerStateBuilder, tmpHashTable, tmpManifestSingleAssetGroup} from '../testing/mock'; -import {SwTestHarness, SwTestHarnessBuilder} from '../testing/scope'; +import {SwTestHarnessBuilder} from '../testing/scope'; +import {envIsSupported} from '../testing/utils'; (function() { // Skip environments that don't support the minimum APIs needed to run the SW tests. -if (!SwTestHarness.envIsSupported()) { +if (!envIsSupported()) { return; } @@ -31,7 +33,9 @@ const server = new MockServerStateBuilder().withStaticFiles(dist).withManifest(m const scope = new SwTestHarnessBuilder().withServerState(server).build(); -const db = new CacheDatabase(scope, scope); +const db = new CacheDatabase(scope); + +const testEvent = new MockExtendableEvent('test'); describe('prefetch assets', () => { @@ -50,26 +54,27 @@ describe('prefetch assets', () => { it('fully caches the two files', async () => { await group.initializeFully(); scope.updateServerState(); - const res1 = await group.handleFetch(scope.newRequest('/foo.txt'), scope); - const res2 = await group.handleFetch(scope.newRequest('/bar.txt'), scope); + const res1 = await group.handleFetch(scope.newRequest('/foo.txt'), testEvent); + const res2 = await group.handleFetch(scope.newRequest('/bar.txt'), testEvent); expect(await res1!.text()).toEqual('this is foo'); expect(await res2!.text()).toEqual('this is bar'); }); it('persists the cache across restarts', async () => { await group.initializeFully(); - const freshScope = new SwTestHarnessBuilder().withCacheState(scope.caches.dehydrate()).build(); + const freshScope = + new SwTestHarnessBuilder().withCacheState(scope.caches.original.dehydrate()).build(); group = new PrefetchAssetGroup( freshScope, freshScope, idle, manifest.assetGroups![0], tmpHashTable(manifest), - new CacheDatabase(freshScope, freshScope), 'test'); + new CacheDatabase(freshScope), 'test'); await group.initializeFully(); - const res1 = await group.handleFetch(scope.newRequest('/foo.txt'), scope); - const res2 = await group.handleFetch(scope.newRequest('/bar.txt'), scope); + const res1 = await group.handleFetch(scope.newRequest('/foo.txt'), testEvent); + const res2 = await group.handleFetch(scope.newRequest('/bar.txt'), testEvent); expect(await res1!.text()).toEqual('this is foo'); expect(await res2!.text()).toEqual('this is bar'); }); it('caches properly if resources are requested before initialization', async () => { - const res1 = await group.handleFetch(scope.newRequest('/foo.txt'), scope); - const res2 = await group.handleFetch(scope.newRequest('/bar.txt'), scope); + const res1 = await group.handleFetch(scope.newRequest('/foo.txt'), testEvent); + const res2 = await group.handleFetch(scope.newRequest('/bar.txt'), testEvent); expect(await res1!.text()).toEqual('this is foo'); expect(await res2!.text()).toEqual('this is bar'); scope.updateServerState(); @@ -82,14 +87,14 @@ describe('prefetch assets', () => { const badScope = new SwTestHarnessBuilder().withServerState(badServer).build(); group = new PrefetchAssetGroup( badScope, badScope, idle, manifest.assetGroups![0], tmpHashTable(manifest), - new CacheDatabase(badScope, badScope), 'test'); + new CacheDatabase(badScope), 'test'); const err = await errorFrom(group.initializeFully()); expect(err.message).toContain('Hash mismatch'); }); it('CacheQueryOptions are passed through', async () => { await group.initializeFully(); const matchSpy = spyOn(MockCache.prototype, 'match').and.callThrough(); - await group.handleFetch(scope.newRequest('/foo.txt'), scope); + await group.handleFetch(scope.newRequest('/foo.txt'), testEvent); expect(matchSpy).toHaveBeenCalledWith(new MockRequest('/foo.txt'), {ignoreVary: true}); }); }); diff --git a/packages/service-worker/worker/testing/clients.ts b/packages/service-worker/worker/testing/clients.ts new file mode 100644 index 0000000000..cbdda4963f --- /dev/null +++ b/packages/service-worker/worker/testing/clients.ts @@ -0,0 +1,108 @@ +/** + * @license + * 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 + */ + +import {Subject} from 'rxjs'; + + +export class MockClient implements Client { + readonly messages: any[] = []; + readonly queue = new Subject(); + lastFocusedAt = 0; + + constructor( + readonly id: string, readonly url: string, readonly type: ClientTypes = 'all', + readonly frameType: FrameType = 'top-level') {} + + postMessage(message: any): void { + this.messages.push(message); + this.queue.next(message); + } +} + +export class MockWindowClient extends MockClient implements WindowClient { + readonly focused: boolean = false; + readonly visibilityState: VisibilityState = 'visible'; + + constructor(id: string, url: string, frameType: FrameType = 'top-level') { + super(id, url, 'window', frameType); + } + + async focus(): Promise { + // This is only used for relatively ordering clients based on focus order, so we don't need to + // use `Adapter#time`. + this.lastFocusedAt = Date.now(); + (this.focused as boolean) = true; + return this; + } + + async navigate(url: string): Promise { + (this.url as string) = url; + return this; + } +} + +export class MockClients implements Clients { + private clients = new Map(); + + add(clientId: string, url: string, type: ClientTypes = 'window'): void { + if (this.clients.has(clientId)) { + const existingClient = this.clients.get(clientId)!; + if (existingClient.url === url) { + return; + } + throw new Error( + `Trying to add mock client with same ID (${existingClient.id}) and different URL ` + + `(${existingClient.url} --> ${url})`); + } + + const client = (type === 'window') ? new MockWindowClient(clientId, url) : + new MockClient(clientId, url, type); + this.clients.set(clientId, client); + } + + remove(clientId: string): void { + this.clients.delete(clientId); + } + + async get(id: string): Promise { + return this.clients.get(id)!; + } + + getMock(id: string): MockClient|undefined { + return this.clients.get(id); + } + + async matchAll(options?: T): + Promise> { + const type = options?.type ?? 'window'; + const allClients = Array.from(this.clients.values()); + const matchedClients = + (type === 'all') ? allClients : allClients.filter(client => client.type === type); + + // Order clients according to the [spec](https://w3c.github.io/ServiceWorker/#clients-matchall): + // In most recently focused then most recently created order, with windows clients before other + // clients. + return matchedClients + // Sort in most recently created order. + .reverse() + // Sort in most recently focused order. + .sort((a, b) => b.lastFocusedAt - a.lastFocusedAt) + // Sort windows clients before other clients (otherwise leave existing order). + .sort((a, b) => { + const aScore = (a.type === 'window') ? 1 : 0; + const bScore = (b.type === 'window') ? 1 : 0; + return bScore - aScore; + }) as any; + } + + async openWindow(url: string): Promise { + return null; + } + + async claim(): Promise {} +} diff --git a/packages/service-worker/worker/testing/events.ts b/packages/service-worker/worker/testing/events.ts new file mode 100644 index 0000000000..bedd3a7ce1 --- /dev/null +++ b/packages/service-worker/worker/testing/events.ts @@ -0,0 +1,124 @@ +/** + * @license + * 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 + */ + +export class MockEvent implements Event { + readonly AT_TARGET = -1; + readonly BUBBLING_PHASE = -1; + readonly CAPTURING_PHASE = -1; + readonly NONE = -1; + + readonly bubbles = false; + cancelBubble = false; + readonly cancelable = false; + readonly composed = false; + readonly currentTarget = null; + readonly defaultPrevented = false; + readonly eventPhase = -1; + readonly isTrusted = false; + returnValue = false; + readonly srcElement = null; + readonly target = null; + readonly timeStamp = Date.now(); + + constructor(readonly type: string) {} + + composedPath(): EventTarget[] { + this.notImplemented(); + } + initEvent(type: string, bubbles?: boolean, cancelable?: boolean): void { + this.notImplemented(); + } + preventDefault(): void { + this.notImplemented(); + } + stopImmediatePropagation(): void { + this.notImplemented(); + } + stopPropagation(): void { + this.notImplemented(); + } + + private notImplemented(): never { + throw new Error('Method not implemented in `MockEvent`.'); + } +} + +export class MockExtendableEvent extends MockEvent implements ExtendableEvent { + private queue: Promise[] = []; + + get ready(): Promise { + return (async () => { + while (this.queue.length > 0) { + await this.queue.shift(); + } + })(); + } + + waitUntil(promise: Promise): void { + this.queue.push(promise); + } +} + +export class MockActivateEvent extends MockExtendableEvent { + constructor() { + super('activate'); + } +} + +export class MockFetchEvent extends MockExtendableEvent implements FetchEvent { + readonly preloadResponse = Promise.resolve(); + response: Promise = Promise.resolve(undefined); + + constructor( + readonly request: Request, readonly clientId: string, readonly resultingClientId: string) { + super('fetch'); + } + + respondWith(r: Response|Promise): void { + this.response = Promise.resolve(r); + } +} + +export class MockInstallEvent extends MockExtendableEvent { + constructor() { + super('install'); + } +} + +export class MockExtendableMessageEvent extends MockExtendableEvent implements + ExtendableMessageEvent { + readonly lastEventId = ''; + readonly origin = ''; + readonly ports: ReadonlyArray = []; + + constructor(readonly data: any, readonly source: Client|MessagePort|ServiceWorker|null) { + super('message'); + } +} + +export class MockNotificationEvent extends MockExtendableEvent implements NotificationEvent { + readonly notification = { + ...this._notification, + close: () => undefined, + } as Notification; + + constructor(private _notification: Partial, readonly action = '') { + super('notification'); + } +} + +export class MockPushEvent extends MockExtendableEvent implements PushEvent { + readonly data = { + json: () => this._data, + text: () => JSON.stringify(this._data), + } as PushMessageData; + + constructor(private _data: object) { + super('push'); + } +} diff --git a/packages/service-worker/worker/testing/fetch.ts b/packages/service-worker/worker/testing/fetch.ts index 43ed7e33d8..06a2d8c1cf 100644 --- a/packages/service-worker/worker/testing/fetch.ts +++ b/packages/service-worker/worker/testing/fetch.ts @@ -99,7 +99,6 @@ export class MockHeaders implements Headers { export class MockRequest extends MockBody implements Request { readonly isHistoryNavigation: boolean = false; readonly isReloadNavigation: boolean = false; - readonly body!: ReadableStream; readonly cache: RequestCache = 'default'; readonly credentials: RequestCredentials = 'omit'; readonly destination: RequestDestination = 'document'; diff --git a/packages/service-worker/worker/testing/scope.ts b/packages/service-worker/worker/testing/scope.ts index 57e77055ee..16328c5343 100644 --- a/packages/service-worker/worker/testing/scope.ts +++ b/packages/service-worker/worker/testing/scope.ts @@ -6,32 +6,19 @@ * found in the LICENSE file at https://angular.io/license */ -import {Subject} from 'rxjs'; - -import {Adapter, Context} from '../src/adapter'; +import {Adapter} from '../src/adapter'; import {AssetGroupConfig, Manifest} from '../src/manifest'; import {sha1} from '../src/sha1'; import {MockCacheStorage} from './cache'; +import {MockClient, MockClients} from './clients'; +import {MockActivateEvent, MockExtendableMessageEvent, MockFetchEvent, MockInstallEvent, MockNotificationEvent, MockPushEvent} from './events'; import {MockHeaders, MockRequest, MockResponse} from './fetch'; import {MockServerState, MockServerStateBuilder} from './mock'; import {normalizeUrl, parseUrl} from './utils'; const EMPTY_SERVER_STATE = new MockServerStateBuilder().build(); -export class MockClient { - queue = new Subject(); - - constructor(readonly id: string) {} - - readonly messages: Object[] = []; - - postMessage(message: Object): void { - this.messages.push(message); - this.queue.next(message); - } -} - export class SwTestHarnessBuilder { private origin = parseUrl(this.scopeUrl).origin; private server = EMPTY_SERVER_STATE; @@ -50,43 +37,17 @@ export class SwTestHarnessBuilder { } build(): SwTestHarness { - return new SwTestHarness(this.server, this.caches, this.scopeUrl); + return new SwTestHarnessImpl(this.server, this.caches, this.scopeUrl) as SwTestHarness; } } -export class MockClients implements Clients { - private clients = new Map(); +export type SwTestHarness = SwTestHarnessImpl&ServiceWorkerGlobalScope; - add(clientId: string): void { - if (this.clients.has(clientId)) { - return; - } - this.clients.set(clientId, new MockClient(clientId)); - } - - remove(clientId: string): void { - this.clients.delete(clientId); - } - - async get(id: string): Promise { - return this.clients.get(id)! as any as Client; - } - - getMock(id: string): MockClient|undefined { - return this.clients.get(id); - } - - async matchAll(): Promise { - return Array.from(this.clients.values()) as any[] as Client[]; - } - - async claim(): Promise {} -} - -export class SwTestHarness extends Adapter implements ServiceWorkerGlobalScope, Context { +export class SwTestHarnessImpl extends Adapter implements + Partial { readonly clients = new MockClients(); - private eventHandlers = new Map(); - private skippedWaiting = true; + private eventHandlers = new Map(); + private skippedWaiting = false; private selfMessageQueue: any[] = []; autoAdvanceTime = false; @@ -110,23 +71,7 @@ export class SwTestHarness extends Adapter implements ServiceWorkerGlobalScope, }, } as any; - static envIsSupported(): boolean { - if (typeof URL === 'function') { - return true; - } - - // If we're in a browser that doesn't support URL at this point, don't go any further - // since browser builds use requirejs which will fail on the `require` call below. - if (typeof window !== 'undefined' && window) { - return false; - } - - // In older Node.js versions, the `URL` global does not exist. We can use `url` instead. - const url = (typeof require === 'function') && require('url'); - return url && (typeof url.parse === 'function') && (typeof url.resolve === 'function'); - } - - get time() { + override get time() { return this.mockTime; } @@ -139,11 +84,10 @@ export class SwTestHarness extends Adapter implements ServiceWorkerGlobalScope, fired: boolean, }[] = []; - parseUrl = parseUrl; + override parseUrl = parseUrl; - constructor( - private server: MockServerState, readonly caches: MockCacheStorage, scopeUrl: string) { - super(scopeUrl); + constructor(private server: MockServerState, caches: MockCacheStorage, scopeUrl: string) { + super(scopeUrl, caches); } async resolveSelfMessages(): Promise { @@ -190,23 +134,37 @@ export class SwTestHarness extends Adapter implements ServiceWorkerGlobalScope, } } - addEventListener(event: string, handler: Function): void { - this.eventHandlers.set(event, handler); + addEventListener( + type: string, listener: EventListenerOrEventListenerObject, + options?: boolean|AddEventListenerOptions): void { + if (options !== undefined) { + throw new Error('Mock `addEventListener()` does not support `options`.'); + } + + const handler: EventListener = + (typeof listener === 'function') ? listener : evt => listener.handleEvent(evt); + this.eventHandlers.set(type, handler); } - removeEventListener(event: string, handler?: Function): void { - this.eventHandlers.delete(event); + removeEventListener( + type: string, listener: EventListenerOrEventListenerObject, + options?: boolean|AddEventListenerOptions): void { + if (options !== undefined) { + throw new Error('Mock `removeEventListener()` does not support `options`.'); + } + + this.eventHandlers.delete(type); } - newRequest(url: string, init: Object = {}): Request { + override newRequest(url: string, init: Object = {}): Request { return new MockRequest(normalizeUrl(url, this.scopeUrl), init); } - newResponse(body: string, init: Object = {}): Response { + override newResponse(body: string, init: Object = {}): Response { return new MockResponse(body, init); } - newHeaders(headers: {[name: string]: string}): Headers { + override newHeaders(headers: {[name: string]: string}): Headers { return Object.keys(headers).reduce((mock, name) => { mock.set(name, headers[name]); return mock; @@ -217,20 +175,21 @@ export class SwTestHarness extends Adapter implements ServiceWorkerGlobalScope, this.skippedWaiting = true; } - waitUntil(promise: Promise): void {} - - handleFetch(req: Request, clientId: string|null = null): - [Promise, Promise] { + handleFetch(req: Request, clientId = ''): [Promise, Promise] { if (!this.eventHandlers.has('fetch')) { throw new Error('No fetch handler registered'); } - const event = new MockFetchEvent(req, clientId); - this.eventHandlers.get('fetch')!.call(this, event); - if (clientId) { - this.clients.add(clientId); + const isNavigation = req.mode === 'navigate'; + + if (clientId && !this.clients.getMock(clientId)) { + this.clients.add(clientId, isNavigation ? req.url : this.scopeUrl); } + const event = isNavigation ? new MockFetchEvent(req, '', clientId) : + new MockFetchEvent(req, clientId, ''); + this.eventHandlers.get('fetch')!.call(this, event); + return [event.response, event.ready]; } @@ -238,14 +197,15 @@ export class SwTestHarness extends Adapter implements ServiceWorkerGlobalScope, if (!this.eventHandlers.has('message')) { throw new Error('No message handler registered'); } - let event: MockMessageEvent; - if (clientId === null) { - event = new MockMessageEvent(data, null); - } else { - this.clients.add(clientId); - event = new MockMessageEvent(data, this.clients.getMock(clientId) || null); + + if (clientId && !this.clients.getMock(clientId)) { + this.clients.add(clientId, this.scopeUrl); } + + const event = + new MockExtendableMessageEvent(data, clientId && this.clients.getMock(clientId) || null); this.eventHandlers.get('message')!.call(this, event); + return event.ready; } @@ -267,7 +227,7 @@ export class SwTestHarness extends Adapter implements ServiceWorkerGlobalScope, return event.ready; } - timeout(ms: number): Promise { + override timeout(ms: number): Promise { const promise = new Promise(resolve => { this.timers.push({ at: this.mockTime + ms, @@ -294,7 +254,7 @@ export class SwTestHarness extends Adapter implements ServiceWorkerGlobalScope, }); } - isClient(obj: any): obj is Client { + override isClient(obj: any): obj is Client { return obj instanceof MockClient; } } @@ -351,60 +311,3 @@ export class ConfigBuilder { }; } } - -class OneTimeContext implements Context { - private queue: Promise[] = []; - - waitUntil(promise: Promise): void { - this.queue.push(promise); - } - - get ready(): Promise { - return (async () => { - while (this.queue.length > 0) { - await this.queue.shift(); - } - })(); - } -} - -class MockExtendableEvent extends OneTimeContext {} - -class MockFetchEvent extends MockExtendableEvent { - response: Promise = Promise.resolve(undefined); - - constructor(readonly request: Request, readonly clientId: string|null) { - super(); - } - - respondWith(promise: Promise): Promise { - this.response = promise; - return promise; - } -} - -class MockMessageEvent extends MockExtendableEvent { - constructor(readonly data: Object, readonly source: MockClient|null) { - super(); - } -} - -class MockPushEvent extends MockExtendableEvent { - constructor(private _data: Object) { - super(); - } - data = { - json: () => this._data, - }; -} - -class MockNotificationEvent extends MockExtendableEvent { - constructor(private _notification: any, readonly action?: string) { - super(); - } - readonly notification = {...this._notification, close: () => undefined}; -} - -class MockInstallEvent extends MockExtendableEvent {} - -class MockActivateEvent extends MockExtendableEvent {} diff --git a/packages/service-worker/worker/testing/utils.ts b/packages/service-worker/worker/testing/utils.ts index 761907eecf..787ab712ec 100644 --- a/packages/service-worker/worker/testing/utils.ts +++ b/packages/service-worker/worker/testing/utils.ts @@ -9,6 +9,27 @@ import {NormalizedUrl} from '../src/api'; +/** + * Determine whether the current environment provides all necessary APIs to run ServiceWorker tests. + * + * @return Whether ServiceWorker tests can be run in the current environment. + */ +export function envIsSupported(): boolean { + if (typeof URL === 'function') { + return true; + } + + // If we're in a browser that doesn't support URL at this point, don't go any further + // since browser builds use requirejs which will fail on the `require` call below. + if (typeof window !== 'undefined' && window) { + return false; + } + + // In older Node.js versions, the `URL` global does not exist. We can use `url` instead. + const url = (typeof require === 'function') && require('url'); + return url && (typeof url.parse === 'function') && (typeof url.resolve === 'function'); +} + /** * Get a normalized representation of a URL relative to a provided base URL. * diff --git a/packages/tsconfig-build-no-strict.json b/packages/tsconfig-build-no-strict.json deleted file mode 100644 index c8f428a8f7..0000000000 --- a/packages/tsconfig-build-no-strict.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig-build.json", - "compilerOptions": { - "strict": false - }, - "bazelOptions": { - "suppressTsconfigOverrideWarnings": true, - "devmodeTargetOverride": "es5" - } -} diff --git a/packages/tsconfig-build.json b/packages/tsconfig-build.json index e9793106cc..7bfa7c1761 100644 --- a/packages/tsconfig-build.json +++ b/packages/tsconfig-build.json @@ -8,6 +8,7 @@ "declaration": true, "stripInternal": true, "noImplicitAny": true, + "noImplicitOverride": true, "strictNullChecks": true, "strict": true, "strictPropertyInitialization": true, diff --git a/packages/tsconfig-legacy-saucelabs.json b/packages/tsconfig-legacy-saucelabs.json new file mode 100644 index 0000000000..55a8be3522 --- /dev/null +++ b/packages/tsconfig-legacy-saucelabs.json @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + // The project uses Bazel for TypeScript compilation. Unlike with Bazel, we build all + // sources as part of a single TypeScript compilation. This results in `@internal` + // declarations not being omitted between the logical as defined per the Bazel targets. + // This can cause issues where the `override` keyword is needed for the legacy TS + // compilation, but not within Bazel where the overridden member has `@internal`. + "noImplicitOverride": false, + } +} diff --git a/packages/tsconfig.json b/packages/tsconfig.json index 36e81fb949..681addcbb2 100644 --- a/packages/tsconfig.json +++ b/packages/tsconfig.json @@ -14,6 +14,7 @@ "strictPropertyInitialization": true, "outDir": "../dist/all/@angular", "noImplicitAny": true, + "noImplicitOverride": true, "noFallthroughCasesInSwitch": true, "paths": { "selenium-webdriver": ["./node_modules/@types/selenium-webdriver/index.d.ts"], @@ -37,6 +38,7 @@ "bazel", "common/locales", "compiler-cli/integrationtest", + "compiler-cli/test/compliance", "core/schematics", "elements/schematics", // Do not build the example package because there are no legacy tests that need to be diff --git a/packages/upgrade/BUILD.bazel b/packages/upgrade/BUILD.bazel index 576adf70e4..e0772833ba 100644 --- a/packages/upgrade/BUILD.bazel +++ b/packages/upgrade/BUILD.bazel @@ -1,4 +1,4 @@ -load("//tools:defaults.bzl", "ng_module", "ng_package", "ts_api_guardian_test_npm_package") +load("//tools:defaults.bzl", "api_golden_test_npm_package", "ng_module", "ng_package") package(default_visibility = ["//visibility:public"]) @@ -39,12 +39,12 @@ ng_package( ], ) -ts_api_guardian_test_npm_package( +api_golden_test_npm_package( name = "upgrade_api", - actualDir = "angular/packages/upgrade/npm_package", data = [ ":npm_package", "//goldens:public-api", ], - goldenDir = "angular/goldens/public-api/upgrade", + golden_dir = "angular/goldens/public-api/upgrade", + npm_package = "angular/packages/upgrade/npm_package", ) diff --git a/packages/upgrade/package.json b/packages/upgrade/package.json index 243018f290..3e2c07c4fc 100644 --- a/packages/upgrade/package.json +++ b/packages/upgrade/package.json @@ -4,8 +4,11 @@ "description": "Angular - the library for easing update from v1 to v2", "author": "angular", "license": "MIT", + "engines": { + "node": "^12.14.1 || >=14.0.0" + }, "dependencies": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" }, "peerDependencies": { "@angular/core": "0.0.0-PLACEHOLDER", @@ -21,8 +24,5 @@ "ng-update": { "packageGroup": "NG_UPDATE_PACKAGE_GROUP" }, - "sideEffects": false, - "publishConfig":{ - "registry":"https://wombat-dressing-room.appspot.com" - } + "sideEffects": false } diff --git a/packages/upgrade/src/common/src/downgrade_component.ts b/packages/upgrade/src/common/src/downgrade_component.ts index b0949e3d85..f48e7c0cc4 100644 --- a/packages/upgrade/src/common/src/downgrade_component.ts +++ b/packages/upgrade/src/common/src/downgrade_component.ts @@ -232,7 +232,7 @@ class ParentInjectorPromise extends SyncPromise { element.data!(this.injectorKey, this); } - resolve(injector: Injector): void { + override resolve(injector: Injector): void { // Store the real injector on the element. this.element.data!(this.injectorKey, injector); diff --git a/packages/upgrade/src/common/src/version.ts b/packages/upgrade/src/common/src/version.ts index 4a5fcc12eb..e19761a96f 100644 --- a/packages/upgrade/src/common/src/version.ts +++ b/packages/upgrade/src/common/src/version.ts @@ -9,7 +9,7 @@ /** * @module * @description - * Entry point for all public APIs of the common package. + * Entry point for all public APIs of the upgrade package. */ import {Version} from '@angular/core'; diff --git a/packages/upgrade/src/common/test/helpers/common_test_helpers.ts b/packages/upgrade/src/common/test/helpers/common_test_helpers.ts index 72a02dcd88..f6e5f0ba5f 100644 --- a/packages/upgrade/src/common/test/helpers/common_test_helpers.ts +++ b/packages/upgrade/src/common/test/helpers/common_test_helpers.ts @@ -27,7 +27,7 @@ const ng1Versions = [ }, { label: '1.8', - files: [`angular/${ANGULARJS_FILENAME}`, 'angular-mocks/angular-mocks.js'], + files: [`angular-1.8/${ANGULARJS_FILENAME}`, 'angular-mocks-1.8/angular-mocks.js'], }, ]; diff --git a/packages/upgrade/static/src/upgrade_module.ts b/packages/upgrade/static/src/upgrade_module.ts index 1e54a7834a..24a87ae37e 100644 --- a/packages/upgrade/static/src/upgrade_module.ts +++ b/packages/upgrade/static/src/upgrade_module.ts @@ -116,7 +116,7 @@ import {NgAdapterInjector} from './util'; * * {@example upgrade/static/ts/full/module.ts region='bootstrap-ng1'} * - * Finally, kick off the whole process, by bootstraping your top level Angular `NgModule`. + * Finally, kick off the whole process, by bootstrapping your top level Angular `NgModule`. * * {@example upgrade/static/ts/full/module.ts region='bootstrap-ng2'} * @@ -236,7 +236,17 @@ export class UpgradeModule { }); }; - (wrappedInterval as any)['cancel'] = intervalDelegate.cancel; + (Object.keys(intervalDelegate) as (keyof IIntervalService)[]) + .forEach(prop => (wrappedInterval as any)[prop] = intervalDelegate[prop]); + + // the `flush` method will be present when ngMocks is used + if (intervalDelegate.hasOwnProperty('flush')) { + (wrappedInterval as any)['flush'] = () => { + (intervalDelegate as any)['flush'](); + return wrappedInterval; + }; + } + return wrappedInterval; } ]); diff --git a/packages/zone.js/karma-dist-sauce-jasmine3.conf.js b/packages/zone.js/karma-dist-sauce-jasmine3.conf.js index 15111c5b43..377ef15935 100644 --- a/packages/zone.js/karma-dist-sauce-jasmine3.conf.js +++ b/packages/zone.js/karma-dist-sauce-jasmine3.conf.js @@ -10,6 +10,6 @@ module.exports = function(config) { require('./karma-dist-jasmine.conf.js')(config); require('./sauce.conf')(config, [ 'SL_IOS9', 'SL_CHROME', 'SL_FIREFOX_54', 'SL_SAFARI8', 'SL_SAFARI9', 'SL_SAFARI10', 'SL_IOS8', - 'SL_IOS9', 'SL_IOS10', 'SL_IE11', 'SL_MSEDGE15', 'SL_ANDROID4.4', 'SL_ANDROID5.1' + 'SL_IOS9', 'SL_IOS10', 'SL_MSEDGE15', 'SL_ANDROID4.4', 'SL_ANDROID5.1' ]) }; diff --git a/packages/zone.js/lib/browser/browser.ts b/packages/zone.js/lib/browser/browser.ts index a6190c42ef..88521a71f6 100644 --- a/packages/zone.js/lib/browser/browser.ts +++ b/packages/zone.js/lib/browser/browser.ts @@ -66,7 +66,7 @@ Zone.__load_patch('EventTarget', (global: any, Zone: ZoneType, api: _ZonePrivate // patch XMLHttpRequestEventTarget's addEventListener/removeEventListener const XMLHttpRequestEventTarget = (global as any)['XMLHttpRequestEventTarget']; if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) { - api.patchEventTarget(global, [XMLHttpRequestEventTarget.prototype]); + api.patchEventTarget(global, api, [XMLHttpRequestEventTarget.prototype]); } }); diff --git a/packages/zone.js/lib/browser/event-target-legacy.ts b/packages/zone.js/lib/browser/event-target-legacy.ts index 9cf7a939f9..5bebb2c395 100644 --- a/packages/zone.js/lib/browser/event-target-legacy.ts +++ b/packages/zone.js/lib/browser/event-target-legacy.ts @@ -112,7 +112,7 @@ export function eventTargetLegacyPatch(_global: any, api: _ZonePrivate) { } // vh is validateHandler to check event handler // is valid or not(for security check) - api.patchEventTarget(_global, apiTypes, { + api.patchEventTarget(_global, api, apiTypes, { vh: checkIEAndCrossContext, transferEventName: (eventName: string) => { const pointerEventName = pointerEventsMap[eventName]; diff --git a/packages/zone.js/lib/browser/event-target.ts b/packages/zone.js/lib/browser/event-target.ts index 8ef5418f2a..215ac3d13e 100644 --- a/packages/zone.js/lib/browser/event-target.ts +++ b/packages/zone.js/lib/browser/event-target.ts @@ -29,7 +29,7 @@ export function eventTargetPatch(_global: any, api: _ZonePrivate) { if (!EVENT_TARGET || !EVENT_TARGET.prototype) { return; } - api.patchEventTarget(_global, [EVENT_TARGET && EVENT_TARGET.prototype]); + api.patchEventTarget(_global, api, [EVENT_TARGET && EVENT_TARGET.prototype]); return true; } diff --git a/packages/zone.js/lib/browser/shadydom.ts b/packages/zone.js/lib/browser/shadydom.ts index ca7d5ba86c..ef3e0c9192 100644 --- a/packages/zone.js/lib/browser/shadydom.ts +++ b/packages/zone.js/lib/browser/shadydom.ts @@ -20,7 +20,7 @@ Zone.__load_patch('shadydom', (global: any, Zone: ZoneType, api: _ZonePrivate) = if (proto && proto.hasOwnProperty('addEventListener')) { proto[Zone.__symbol__('addEventListener')] = null; proto[Zone.__symbol__('removeEventListener')] = null; - api.patchEventTarget(global, [proto]); + api.patchEventTarget(global, api, [proto]); } }); }); diff --git a/packages/zone.js/lib/browser/webapis-rtc-peer-connection.ts b/packages/zone.js/lib/browser/webapis-rtc-peer-connection.ts index 1b31e0c85c..9ee71dea5c 100644 --- a/packages/zone.js/lib/browser/webapis-rtc-peer-connection.ts +++ b/packages/zone.js/lib/browser/webapis-rtc-peer-connection.ts @@ -22,5 +22,5 @@ Zone.__load_patch('RTCPeerConnection', (global: any, Zone: ZoneType, api: _ZoneP RTCPeerConnection.prototype[addSymbol] = null; RTCPeerConnection.prototype[removeSymbol] = null; - api.patchEventTarget(global, [RTCPeerConnection.prototype], {useG: false}); + api.patchEventTarget(global, api, [RTCPeerConnection.prototype], {useG: false}); }); diff --git a/packages/zone.js/lib/browser/websocket.ts b/packages/zone.js/lib/browser/websocket.ts index d11432c821..fecb814966 100644 --- a/packages/zone.js/lib/browser/websocket.ts +++ b/packages/zone.js/lib/browser/websocket.ts @@ -13,7 +13,7 @@ export function apply(api: _ZonePrivate, _global: any) { // On Safari window.EventTarget doesn't exist so need to patch WS add/removeEventListener // On older Chrome, no need since EventTarget was already patched if (!(_global).EventTarget) { - api.patchEventTarget(_global, [WS.prototype]); + api.patchEventTarget(_global, api, [WS.prototype]); } (_global).WebSocket = function(x: any, y: any) { const socket = arguments.length > 1 ? new WS(x, y) : new WS(x); diff --git a/packages/zone.js/lib/common/events.ts b/packages/zone.js/lib/common/events.ts index 7d70918eca..186773e39c 100644 --- a/packages/zone.js/lib/common/events.ts +++ b/packages/zone.js/lib/common/events.ts @@ -28,8 +28,11 @@ if (typeof window !== 'undefined') { passiveSupported = true; } }); - window.addEventListener('test', options, options); - window.removeEventListener('test', options, options); + // Note: We pass the `options` object as the event handler too. This is not compatible with the + // signature of `addEventListener` or `removeEventListener` but enables us to remove the handler + // without an actual handler. + window.addEventListener('test', options as any, options); + window.removeEventListener('test', options as any, options); } catch (err) { passiveSupported = false; } @@ -86,7 +89,7 @@ export interface PatchEventTargetOptions { } export function patchEventTarget( - _global: any, apis: any[], patchOptions?: PatchEventTargetOptions) { + _global: any, api: _ZonePrivate, apis: any[], patchOptions?: PatchEventTargetOptions) { const ADD_EVENT_LISTENER = (patchOptions && patchOptions.add) || ADD_EVENT_LISTENER_STR; const REMOVE_EVENT_LISTENER = (patchOptions && patchOptions.rm) || REMOVE_EVENT_LISTENER_STR; @@ -101,7 +104,7 @@ export function patchEventTarget( const PREPEND_EVENT_LISTENER = 'prependListener'; const PREPEND_EVENT_LISTENER_SOURCE = '.' + PREPEND_EVENT_LISTENER + ':'; - const invokeTask = function(task: any, target: any, event: Event) { + const invokeTask = function(task: any, target: any, event: Event): Error|undefined { // for better performance, check isRemoved which is set // by removeEventListener if (task.isRemoved) { @@ -114,7 +117,15 @@ export function patchEventTarget( task.originalDelegate = delegate; } // invoke static task.invoke - task.invoke(task, target, [event]); + // need to try/catch error here, otherwise, the error in one event listener + // will break the executions of the other event listeners. Also error will + // not remove the event listener when `once` options is true. + let error; + try { + task.invoke(task, target, [event]); + } catch (err) { + error = err; + } const options = task.options; if (options && typeof options === 'object' && options.once) { // if options.once is true, after invoke once remove listener here @@ -123,10 +134,10 @@ export function patchEventTarget( const delegate = task.originalDelegate ? task.originalDelegate : task.callback; target[REMOVE_EVENT_LISTENER].call(target, event.type, delegate, options); } + return error; }; - // global shared zoneAwareCallback to handle all event callback with capture = false - const globalZoneAwareCallback = function(this: unknown, event: Event) { + function globalCallback(context: unknown, event: Event, isCapture: boolean) { // https://github.com/angular/zone.js/issues/911, in IE, sometimes // event will be undefined, so we need to use window.event event = event || _global.event; @@ -135,13 +146,15 @@ export function patchEventTarget( } // event.target is needed for Samsung TV and SourceBuffer // || global is needed https://github.com/angular/zone.js/issues/190 - const target: any = this || event.target || _global; - const tasks = target[zoneSymbolEventNames[event.type][FALSE_STR]]; + const target: any = context || event.target || _global; + const tasks = target[zoneSymbolEventNames[event.type][isCapture ? TRUE_STR : FALSE_STR]]; if (tasks) { + const errors = []; // invoke all tasks which attached to current target with given event.type and capture = false // for performance concern, if task.length === 1, just invoke if (tasks.length === 1) { - invokeTask(tasks[0], target, event); + const err = invokeTask(tasks[0], target, event); + err && errors.push(err); } else { // https://github.com/angular/zone.js/issues/836 // copy the tasks array before invoke, to avoid @@ -151,42 +164,33 @@ export function patchEventTarget( if (event && (event as any)[IMMEDIATE_PROPAGATION_SYMBOL] === true) { break; } - invokeTask(copyTasks[i], target, event); + const err = invokeTask(copyTasks[i], target, event); + err && errors.push(err); + } + } + // Since there is only one error, we don't need to schedule microTask + // to throw the error. + if (errors.length === 1) { + throw errors[0]; + } else { + for (let i = 0; i < errors.length; i++) { + const err = errors[i]; + api.nativeScheduleMicroTask(() => { + throw err; + }); } } } + } + + // global shared zoneAwareCallback to handle all event callback with capture = false + const globalZoneAwareCallback = function(this: unknown, event: Event) { + return globalCallback(this, event, false); }; // global shared zoneAwareCallback to handle all event callback with capture = true const globalZoneAwareCaptureCallback = function(this: unknown, event: Event) { - // https://github.com/angular/zone.js/issues/911, in IE, sometimes - // event will be undefined, so we need to use window.event - event = event || _global.event; - if (!event) { - return; - } - // event.target is needed for Samsung TV and SourceBuffer - // || global is needed https://github.com/angular/zone.js/issues/190 - const target: any = this || event.target || _global; - const tasks = target[zoneSymbolEventNames[event.type][TRUE_STR]]; - if (tasks) { - // invoke all tasks which attached to current target with given event.type and capture = false - // for performance concern, if task.length === 1, just invoke - if (tasks.length === 1) { - invokeTask(tasks[0], target, event); - } else { - // https://github.com/angular/zone.js/issues/836 - // copy the tasks array before invoke, to avoid - // the callback will remove itself or other listener - const copyTasks = tasks.slice(); - for (let i = 0; i < copyTasks.length; i++) { - if (event && (event as any)[IMMEDIATE_PROPAGATION_SYMBOL] === true) { - break; - } - invokeTask(copyTasks[i], target, event); - } - } - } + return globalCallback(this, event, true); }; function patchEventTargetMethods(obj: any, patchOptions?: PatchEventTargetOptions) { diff --git a/packages/zone.js/lib/extra/socket-io.ts b/packages/zone.js/lib/extra/socket-io.ts index b3cbdd3104..696065aeab 100644 --- a/packages/zone.js/lib/extra/socket-io.ts +++ b/packages/zone.js/lib/extra/socket-io.ts @@ -8,7 +8,7 @@ Zone.__load_patch('socketio', (global: any, Zone: ZoneType, api: _ZonePrivate) => { (Zone as any)[Zone.__symbol__('socketio')] = function patchSocketIO(io: any) { // patch io.Socket.prototype event listener related method - api.patchEventTarget(global, [io.Socket.prototype], { + api.patchEventTarget(global, api, [io.Socket.prototype], { useG: false, chkDup: false, rt: true, diff --git a/packages/zone.js/lib/jasmine/jasmine.ts b/packages/zone.js/lib/jasmine/jasmine.ts index ff76d4a975..cbdd2f8d37 100644 --- a/packages/zone.js/lib/jasmine/jasmine.ts +++ b/packages/zone.js/lib/jasmine/jasmine.ts @@ -163,9 +163,9 @@ Zone.__load_patch('jasmine', (global: any, Zone: ZoneType, api: _ZonePrivate) => let spyObj: any; if (propertyNames) { const defineProperty = Object.defineProperty; - Object.defineProperty = function(obj: any, p: string, attributes: any) { + Object.defineProperty = function(obj: T, p: PropertyKey, attributes: any) { return defineProperty.call( - this, obj, p, {...attributes, configurable: true, enumerable: true}); + this, obj, p, {...attributes, configurable: true, enumerable: true}) as T; }; try { spyObj = originalCreateSpyObj.apply(this, args); diff --git a/packages/zone.js/lib/node/events.ts b/packages/zone.js/lib/node/events.ts index f09f8a4216..d2e6832bba 100644 --- a/packages/zone.js/lib/node/events.ts +++ b/packages/zone.js/lib/node/events.ts @@ -8,7 +8,7 @@ import {patchEventTarget} from '../common/events'; -Zone.__load_patch('EventEmitter', (global: any) => { +Zone.__load_patch('EventEmitter', (global: any, Zone: ZoneType, api: _ZonePrivate) => { // For EventEmitter const EE_ADD_LISTENER = 'addListener'; const EE_PREPEND_LISTENER = 'prependListener'; @@ -34,7 +34,7 @@ Zone.__load_patch('EventEmitter', (global: any) => { }; function patchEventEmitterMethods(obj: any) { - const result = patchEventTarget(global, [obj], { + const result = patchEventTarget(global, api, [obj], { useG: false, add: EE_ADD_LISTENER, rm: EE_REMOVE_LISTENER, diff --git a/packages/zone.js/lib/zone.ts b/packages/zone.js/lib/zone.ts index 92bd2f2bbf..59f23745b8 100644 --- a/packages/zone.js/lib/zone.ts +++ b/packages/zone.js/lib/zone.ts @@ -337,7 +337,7 @@ interface _ZonePrivate { onUnhandledError: (error: Error) => void; microtaskDrainDone: () => void; showUncaughtError: () => boolean; - patchEventTarget: (global: any, apis: any[], options?: any) => boolean[]; + patchEventTarget: (global: any, api: _ZonePrivate, apis: any[], options?: any) => boolean[]; patchOnProperties: (obj: any, properties: string[]|null, prototype?: any) => void; patchThen: (ctro: Function) => void; patchMethod: @@ -359,6 +359,7 @@ interface _ZonePrivate { filterProperties: (target: any, onProperties: string[], ignoreProperties: any[]) => string[]; attachOriginToPatched: (target: any, origin: any) => void; _redefineProperty: (target: any, callback: string, desc: any) => void; + nativeScheduleMicroTask: (func: Function) => void; patchCallbacks: (api: _ZonePrivate, target: any, targetName: string, method: string, callbacks: string[]) => void; @@ -1343,27 +1344,31 @@ const Zone: ZoneType = (function(global: any) { let _isDrainingMicrotaskQueue: boolean = false; let nativeMicroTaskQueuePromise: any; + function nativeScheduleMicroTask(func: Function) { + if (!nativeMicroTaskQueuePromise) { + if (global[symbolPromise]) { + nativeMicroTaskQueuePromise = global[symbolPromise].resolve(0); + } + } + if (nativeMicroTaskQueuePromise) { + let nativeThen = nativeMicroTaskQueuePromise[symbolThen]; + if (!nativeThen) { + // native Promise is not patchable, we need to use `then` directly + // issue 1078 + nativeThen = nativeMicroTaskQueuePromise['then']; + } + nativeThen.call(nativeMicroTaskQueuePromise, func); + } else { + global[symbolSetTimeout](func, 0); + } + } + function scheduleMicroTask(task?: MicroTask) { // if we are not running in any task, and there has not been anything scheduled // we must bootstrap the initial task creation by manually scheduling the drain if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) { // We are not running in Task, so we need to kickstart the microtask queue. - if (!nativeMicroTaskQueuePromise) { - if (global[symbolPromise]) { - nativeMicroTaskQueuePromise = global[symbolPromise].resolve(0); - } - } - if (nativeMicroTaskQueuePromise) { - let nativeThen = nativeMicroTaskQueuePromise[symbolThen]; - if (!nativeThen) { - // native Promise is not patchable, we need to use `then` directly - // issue 1078 - nativeThen = nativeMicroTaskQueuePromise['then']; - } - nativeThen.call(nativeMicroTaskQueuePromise, drainMicroTaskQueue); - } else { - global[symbolSetTimeout](drainMicroTaskQueue, 0); - } + nativeScheduleMicroTask(drainMicroTaskQueue); } task && _microTaskQueue.push(task); } @@ -1428,7 +1433,8 @@ const Zone: ZoneType = (function(global: any) { filterProperties: () => [], attachOriginToPatched: () => noop, _redefineProperty: () => noop, - patchCallbacks: () => noop + patchCallbacks: () => noop, + nativeScheduleMicroTask: nativeScheduleMicroTask }; let _currentZoneFrame: _ZoneFrame = {parent: null, zone: new Zone(null, null)}; let _currentTask: Task|null = null; diff --git a/packages/zone.js/package.json b/packages/zone.js/package.json index 634d141e0c..13edca69e3 100644 --- a/packages/zone.js/package.json +++ b/packages/zone.js/package.json @@ -8,18 +8,18 @@ "fesm2015": "./fesm2015/zone.js", "typings": "./zone.d.ts", "dependencies": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" }, "devDependencies": { "@externs/nodejs": "^1.5.0", "@types/node": "^10.9.4", - "domino": "2.1.2", + "domino": "2.1.6", "jest": "^26.4", - "google-closure-compiler": "^20200927.0.0", - "mocha": "^3.1.2", + "google-closure-compiler": "^20210601.0.0", + "mocha": "^9.0.0", "mock-require": "3.0.3", "promises-aplus-tests": "^2.1.2", - "typescript": "4.2.3" + "typescript": "~4.3.4" }, "scripts": { "closuretest": "./scripts/closure/closure_compiler.sh", diff --git a/packages/zone.js/rollup.config.js b/packages/zone.js/rollup.config.js deleted file mode 100644 index 8053a1fea5..0000000000 --- a/packages/zone.js/rollup.config.js +++ /dev/null @@ -1,58 +0,0 @@ -const node = require('rollup-plugin-node-resolve'); -const commonjs = require('rollup-plugin-commonjs'); - -// Parse the stamp file produced by Bazel from the version control system -let version = ''; -if (bazel_version_file) { - const versionTag = require('fs') - .readFileSync(bazel_version_file, {encoding: 'utf-8'}) - .split('\n') - .find(s => s.startsWith('BUILD_SCM_VERSION')); - // Don't assume BUILD_SCM_VERSION exists - if (versionTag) { - version = versionTag.split(' ')[1].trim(); - } -} - -// Add 'use strict' to the bundle, https://github.com/angular/angular/pull/40456 -// When rollup build esm bundle of zone.js, there will be no 'use strict' -// since all esm bundles are `strict`, but when webpack load the esm bundle, -// because zone.js is a module without export and import, webpack is unable -// to determine the bundle is `esm` module or not, so it doesn't add the 'use strict' -// which webpack does to all other `esm` modules which has export or import. -// And it causes issues such as https://github.com/angular/angular/issues/40215 -// `this` should be `undefined` but is assigned with `Window` instead. -const banner = `'use strict'; -/** - * @license Angular v${version} - * (c) 2010-2021 Google LLC. https://angular.io/ - * License: MIT - */`; - -module.exports = { - plugins: [ - node({ - mainFields: ['es2015', 'module', 'jsnext:main', 'main'], - }), - commonjs(), - ], - external: id => { - if (/build-esm/.test(id)) { - return false; - } - return /rxjs/.test(id) || /electron/.test(id); - }, - output: { - globals: { - electron: 'electron', - 'rxjs/Observable': 'Rx', - 'rxjs/Subscriber': 'Rx', - 'rxjs/Subscription': 'Rx', - 'rxjs/Scheduler': 'Rx.Scheduler', - 'rxjs/scheduler/asap': 'Rx.Scheduler', - 'rxjs/scheduler/async': 'Rx.Scheduler', - 'rxjs/symbol/rxSubscriber': 'Rx.Symbol' - }, - banner - }, -} diff --git a/packages/zone.js/sauce.conf.js b/packages/zone.js/sauce.conf.js index f63b7597e6..ac4f5c00eb 100644 --- a/packages/zone.js/sauce.conf.js +++ b/packages/zone.js/sauce.conf.js @@ -38,12 +38,6 @@ module.exports = function(config, ignoredLaunchers) { // 'SL_IOS9': {base: 'SauceLabs', browserName: 'iphone', platform: 'OS X 10.10', version: // '9.3'}, 'SL_IOS10': {base: 'SauceLabs', browserName: 'iphone', platform: 'OS X 10.10', version: '10.3'}, - 'SL_IE11': { - base: 'SauceLabs', - browserName: 'internet explorer', - platform: 'Windows 10', - version: '11' - }, 'SL_MSEDGE': { base: 'SauceLabs', browserName: 'MicrosoftEdge', diff --git a/packages/zone.js/test/browser/XMLHttpRequest.spec.ts b/packages/zone.js/test/browser/XMLHttpRequest.spec.ts index da23b072ff..2c21c49f41 100644 --- a/packages/zone.js/test/browser/XMLHttpRequest.spec.ts +++ b/packages/zone.js/test/browser/XMLHttpRequest.spec.ts @@ -103,6 +103,85 @@ describe('XMLHttpRequest', function() { req!.send(); }); + it('should run onload listeners before internal readystatechange', function(done) { + const logs: string[] = []; + const xhrZone = Zone.current.fork({ + name: 'xhr', + onInvokeTask: (delegate, curr, target, task, applyThis, applyArgs) => { + logs.push('invokeTask ' + task.source); + return delegate.invokeTask(target, task, applyThis, applyArgs); + } + }); + + xhrZone.run(function() { + const req = new XMLHttpRequest(); + req.onload = function() { + logs.push('onload'); + (window as any)[Zone.__symbol__('setTimeout')](() => { + expect(logs).toEqual([ + 'invokeTask XMLHttpRequest.addEventListener:load', 'onload', + 'invokeTask XMLHttpRequest.send' + ]) + done(); + }); + }; + req.open('get', '/', true); + req.send(); + }); + }); + + it('should invoke xhr task even onload listener throw error', function(done) { + const oriWindowError = window.onerror; + const logs: string[] = []; + window.onerror = function(err: any) { + logs.push(err); + }; + try { + const xhrZone = Zone.current.fork({ + name: 'xhr', + onInvokeTask: (delegate, curr, target, task, applyThis, applyArgs) => { + logs.push('invokeTask ' + task.source); + return delegate.invokeTask(target, task, applyThis, applyArgs); + }, + onHasTask: (delegate, curr, target, hasTaskState) => { + if (hasTaskState.change === 'macroTask') { + logs.push('hasTask ' + hasTaskState.macroTask); + } + return delegate.hasTask(target, hasTaskState); + } + }); + + xhrZone.run(function() { + const req = new XMLHttpRequest(); + req.onload = function() { + logs.push('onload'); + throw new Error('test'); + }; + const unhandledRejection = (e: PromiseRejectionEvent) => { + fail('should not be here'); + }; + window.addEventListener('unhandledrejection', unhandledRejection); + req.addEventListener('load', () => { + logs.push('onload1'); + (window as any)[Zone.__symbol__('setTimeout')](() => { + expect(logs).toEqual([ + 'hasTask true', 'invokeTask XMLHttpRequest.addEventListener:load', 'onload', + 'invokeTask XMLHttpRequest.addEventListener:load', 'onload1', + 'invokeTask XMLHttpRequest.send', 'hasTask false', 'Uncaught Error: test' + ]); + window.removeEventListener('unhandledrejection', unhandledRejection); + window.onerror = oriWindowError; + done(); + }); + }); + req.open('get', '/', true); + req.send(); + }); + } catch (e: any) { + window.onerror = oriWindowError; + } + }); + it('should return null when access ontimeout first time without error', function() { let req: XMLHttpRequest = new XMLHttpRequest(); expect(req.ontimeout).toBe(null); diff --git a/packages/zone.js/test/browser/browser.spec.ts b/packages/zone.js/test/browser/browser.spec.ts index 05f7ea4465..b73ddbf351 100644 --- a/packages/zone.js/test/browser/browser.spec.ts +++ b/packages/zone.js/test/browser/browser.spec.ts @@ -348,7 +348,7 @@ describe('Zone', function() { (HTMLSpanElement.prototype as any)[zoneSymbol('addEventListener')] = null; - patchEventTarget(window, [HTMLSpanElement.prototype]); + patchEventTarget(window, null as any, [HTMLSpanElement.prototype]); const span = document.createElement('span'); document.body.appendChild(span); @@ -1037,7 +1037,7 @@ describe('Zone', function() { })); it('should change options to boolean if not support passive', () => { - patchEventTarget(window, [TestEventListener.prototype]); + patchEventTarget(window, null as any, [TestEventListener.prototype]); const testEventListener = new TestEventListener(); const listener = function() {}; @@ -2490,9 +2490,260 @@ describe('Zone', function() { expect(hookSpy).not.toHaveBeenCalled(); expect(logs).toEqual([]); })); + + it('should re-throw the error when the only listener throw error', function(done: DoneFn) { + // override global.onerror to prevent jasmine report error + let oriWindowOnError = window.onerror; + let logs: string[] = []; + window.onerror = function(err: any) { + logs.push(err); + }; + try { + const listener1 = function() { + throw new Error('test1'); + }; + button.addEventListener('click', listener1); + + const mouseEvent = document.createEvent('MouseEvent'); + mouseEvent.initEvent('click', true, true); + + const unhandledRejection = (e: PromiseRejectionEvent) => { + fail('should not be here'); + }; + window.addEventListener('unhandledrejection', unhandledRejection); + + button.dispatchEvent(mouseEvent); + expect(logs).toEqual(['Uncaught Error: test1']); + + setTimeout(() => { + expect(logs).toEqual(['Uncaught Error: test1']); + window.removeEventListener('unhandledrejection', unhandledRejection); + window.onerror = oriWindowOnError; + done() + }); + } catch (e: any) { + window.onerror = oriWindowOnError; + } + }); + + it('should not re-throw the error when zone onHandleError handled the error and the only listener throw error', + function(done: DoneFn) { + // override global.onerror to prevent jasmine report error + let oriWindowOnError = window.onerror; + window.onerror = function() {}; + try { + let logs: string[] = []; + const listener1 = function() { + throw new Error('test1'); + }; + const zone = Zone.current.fork({ + name: 'error', + onHandleError: (delegate, curr, target, error) => { + logs.push('zone handled ' + target.name + ' ' + error.message); + return false; + } + }); + + zone.runGuarded(() => { + button.addEventListener('click', listener1); + }); + + const mouseEvent = document.createEvent('MouseEvent'); + mouseEvent.initEvent('click', true, true); + + const unhandledRejection = (e: PromiseRejectionEvent) => { + logs.push(e.reason.message); + }; + window.addEventListener('unhandledrejection', unhandledRejection); + + button.dispatchEvent(mouseEvent); + expect(logs).toEqual(['zone handled error test1']); + + setTimeout(() => { + expect(logs).toEqual(['zone handled error test1']); + window.removeEventListener('unhandledrejection', unhandledRejection); + window.onerror = oriWindowOnError; + done(); + }); + } catch (e: any) { + window.onerror = oriWindowOnError; + } + }); + + it('should be able to continue to invoke remaining listeners even some listener throw error', + function(done: DoneFn) { + // override global.onerror to prevent jasmine report error + let oriWindowOnError = window.onerror; + window.onerror = function() {}; + try { + let logs: string[] = []; + const listener1 = function() { + logs.push('listener1'); + }; + const listener2 = function() { + throw new Error('test1'); + }; + const listener3 = function() { + throw new Error('test2'); + }; + const listener4 = { + handleEvent: function() { + logs.push('listener2'); + } + }; + + button.addEventListener('click', listener1); + button.addEventListener('click', listener2); + button.addEventListener('click', listener3); + button.addEventListener('click', listener4); + + const mouseEvent = document.createEvent('MouseEvent'); + mouseEvent.initEvent('click', true, true); + + const unhandledRejection = (e: PromiseRejectionEvent) => { + logs.push(e.reason.message); + }; + window.addEventListener('unhandledrejection', unhandledRejection); + + button.dispatchEvent(mouseEvent); + expect(logs).toEqual(['listener1', 'listener2']); + + setTimeout(() => { + expect(logs).toEqual(['listener1', 'listener2', 'test1', 'test2']); + window.removeEventListener('unhandledrejection', unhandledRejection); + window.onerror = oriWindowOnError; + done() + }); + } catch (e: any) { + window.onerror = oriWindowOnError; + } + }); + + it('should be able to continue to invoke remaining listeners even some listener throw error with onHandleError zone', + function(done: DoneFn) { + // override global.onerror to prevent jasmine report error + let oriWindowOnError = window.onerror; + window.onerror = function() {}; + try { + const zone = Zone.current.fork({ + name: 'error', + onHandleError: (delegate, curr, target, error) => { + logs.push('zone handled ' + target.name + ' ' + error.message); + return false; + } + }); + let logs: string[] = []; + const listener1 = function() { + logs.push('listener1'); + }; + const listener2 = function() { + throw new Error('test1'); + }; + const listener3 = function() { + throw new Error('test2'); + }; + const listener4 = { + handleEvent: function() { + logs.push('listener2'); + } + }; + + zone.runGuarded(() => { + button.addEventListener('click', listener1); + button.addEventListener('click', listener2); + button.addEventListener('click', listener3); + button.addEventListener('click', listener4); + }); + + const mouseEvent = document.createEvent('MouseEvent'); + mouseEvent.initEvent('click', true, true); + + const unhandledRejection = (e: PromiseRejectionEvent) => { + fail('should not be here'); + }; + window.addEventListener('unhandledrejection', unhandledRejection); + + button.dispatchEvent(mouseEvent); + expect(logs).toEqual([ + 'listener1', 'zone handled error test1', 'zone handled error test2', 'listener2' + ]); + + setTimeout(() => { + expect(logs).toEqual([ + 'listener1', 'zone handled error test1', 'zone handled error test2', 'listener2' + ]); + window.removeEventListener('unhandledrejection', unhandledRejection); + window.onerror = oriWindowOnError; + done(); + }); + } catch (e: any) { + window.onerror = oriWindowOnError; + } + }); + + it('should be able to continue to invoke remaining listeners even some listener throw error in the different zones', + function(done: DoneFn) { + // override global.onerror to prevent jasmine report error + let oriWindowOnError = window.onerror; + let logs: string[] = []; + window.onerror = function(err: any) { + logs.push(err); + }; + try { + const zone1 = Zone.current.fork({ + name: 'zone1', + onHandleError: (delegate, curr, target, error) => { + logs.push(error.message); + return false; + } + }); + const listener1 = function() { + logs.push('listener1'); + }; + const listener2 = function() { + throw new Error('test1'); + }; + const listener3 = function() { + throw new Error('test2'); + }; + const listener4 = { + handleEvent: function() { + logs.push('listener2'); + } + }; + + button.addEventListener('click', listener1); + zone1.run(() => { + button.addEventListener('click', listener2); + }); + button.addEventListener('click', listener3); + button.addEventListener('click', listener4); + + const mouseEvent = document.createEvent('MouseEvent'); + mouseEvent.initEvent('click', true, true); + + const unhandledRejection = (e: PromiseRejectionEvent) => { + fail('should not be here'); + }; + window.addEventListener('unhandledrejection', unhandledRejection); + + button.dispatchEvent(mouseEvent); + expect(logs).toEqual(['listener1', 'test1', 'listener2', 'Uncaught Error: test2']); + + setTimeout(() => { + expect(logs).toEqual(['listener1', 'test1', 'listener2', 'Uncaught Error: test2']); + window.removeEventListener('unhandledrejection', unhandledRejection); + window.onerror = oriWindowOnError; + done(); + }); + } catch (e: any) { + window.onerror = oriWindowOnError; + } + }); }); - describe('unhandle promise rejection', () => { + // TODO: Re-enable via https://github.com/angular/angular/pull/41526 + xdescribe('unhandle promise rejection', () => { const AsyncTestZoneSpec = (Zone as any)['AsyncTestZoneSpec']; const asyncTest = function(testFn: Function) { return (done: Function) => { @@ -2566,6 +2817,7 @@ describe('Zone', function() { expect(evt.type).toEqual('unhandledrejection'); expect(evt.promise.constructor.name).toEqual('Promise'); expect(evt.reason.message).toBe('promise error'); + evt.preventDefault(); }; window.addEventListener('unhandledrejection', listener1); window.addEventListener('unhandledrejection', listener2); diff --git a/packages/zone.js/test/common/Error.spec.ts b/packages/zone.js/test/common/Error.spec.ts index 19dca94f48..ed377237e0 100644 --- a/packages/zone.js/test/common/Error.spec.ts +++ b/packages/zone.js/test/common/Error.spec.ts @@ -19,22 +19,22 @@ class BaseError extends Error { this._nativeError = nativeError; } - get message() { + override get message() { return this._nativeError.message; } - set message(message) { + override set message(message) { this._nativeError.message = message; } - get name() { + override get name() { return this._nativeError.name; } - get stack() { + override get stack() { return (this._nativeError as any).stack; } - set stack(value) { + override set stack(value) { (this._nativeError as any).stack = value; } - toString() { + override toString() { return this._nativeError.toString(); } } @@ -47,7 +47,7 @@ class WrappedError extends BaseError { this.originalError = error; } - get stack() { + override get stack() { return ((this.originalError instanceof Error ? this.originalError : this._nativeError) as any) .stack; } @@ -58,7 +58,7 @@ class TestError extends WrappedError { super(`${message} caused by: ${error instanceof Error ? error.message : error}`, error); } - get message() { + override get message() { return 'test ' + this.originalError.message; } } @@ -68,11 +68,11 @@ class TestMessageError extends WrappedError { super(`${message} caused by: ${error instanceof Error ? error.message : error}`, error); } - get message() { + override get message() { return 'test ' + this.originalError.message; } - set message(value) { + override set message(value) { this.originalError.message = value; } } diff --git a/packages/zone.js/test/common/Promise.spec.ts b/packages/zone.js/test/common/Promise.spec.ts index 323972d016..e2f9bbdc09 100644 --- a/packages/zone.js/test/common/Promise.spec.ts +++ b/packages/zone.js/test/common/Promise.spec.ts @@ -122,7 +122,7 @@ describe( super(fn); } - static get[Symbol.species]() { + static override get[Symbol.species]() { return MyPromise; } } diff --git a/packages/zone.js/test/common/util.spec.ts b/packages/zone.js/test/common/util.spec.ts index c790f360ef..727e5454cb 100644 --- a/packages/zone.js/test/common/util.spec.ts +++ b/packages/zone.js/test/common/util.spec.ts @@ -91,7 +91,7 @@ describe('utils', function() { } } class ChildType extends Type { - method(..._args: any[]) { + override method(..._args: any[]) { childArgs = _args; childSelf = this; return 'ChildOK'; diff --git a/packages/zone.js/test/common/zone.spec.ts b/packages/zone.js/test/common/zone.spec.ts index a18d2da306..7216ee371f 100644 --- a/packages/zone.js/test/common/zone.spec.ts +++ b/packages/zone.js/test/common/zone.spec.ts @@ -334,23 +334,23 @@ describe('Zone', function() { Zone.assertZonePatched(); }); - xit('should throw error if ZoneAwarePromise has been overwritten', () => { - class WrongPromise { - static resolve(value: any) {} + // xit('should throw error if ZoneAwarePromise has been overwritten', () => { + // class WrongPromise { + // static resolve(value: any) {} - then() {} - } + // then() {} + // } - const ZoneAwarePromise = global.Promise; - try { - global.Promise = WrongPromise; - expect(Zone.assertZonePatched()).toThrow(); - } finally { - // restore it. - global.Promise = ZoneAwarePromise; - } - Zone.assertZonePatched(); - }); + // const ZoneAwarePromise = global.Promise; + // try { + // global.Promise = WrongPromise; + // expect(Zone.assertZonePatched()).toThrow(); + // } finally { + // // restore it. + // global.Promise = ZoneAwarePromise; + // } + // Zone.assertZonePatched(); + // }); }); }); diff --git a/packages/zone.js/test/karma_test.bzl b/packages/zone.js/test/karma_test.bzl index 611979f597..c47a7ea79c 100644 --- a/packages/zone.js/test/karma_test.bzl +++ b/packages/zone.js/test/karma_test.bzl @@ -70,7 +70,7 @@ def karma_test(name, env_srcs, env_deps, env_entry_point, test_srcs, test_deps, ":" + name + "_env_rollup.umd", ] + bootstrap + _karma_test_required_dist_files, - browsers = ["//dev-infra/browsers/chromium:chromium"], + browsers = ["//dev-infra/bazel/browsers/chromium:chromium"], static_files = [ ":assets/sample.json", ":assets/worker.js", @@ -94,7 +94,7 @@ def karma_test(name, env_srcs, env_deps, env_entry_point, test_srcs, test_deps, ":" + name + "_env_rollup.umd", "//packages/zone.js/bundles:zone-testing-bundle.umd.min.js", ] + _karma_test_required_dist_files, - browsers = ["//dev-infra/browsers/chromium:chromium"], + browsers = ["//dev-infra/bazel/browsers/chromium:chromium"], config_file = "//:karma-js.conf.js", configuration_env_vars = ["KARMA_WEB_TEST_MODE"], data = [ diff --git a/packages/zone.js/test/typings/package.json b/packages/zone.js/test/typings/package.json index ec79b4ff5c..bdf3334b3f 100644 --- a/packages/zone.js/test/typings/package.json +++ b/packages/zone.js/test/typings/package.json @@ -14,6 +14,6 @@ "zone.js": "file:../../../../dist/bin/packages/zone.js/npm_package" }, "devDependencies": { - "typescript": "~4.2.3" + "typescript": "~4.3.4" } } diff --git a/packages/zone.js/test/webdriver/test.sauce.js b/packages/zone.js/test/webdriver/test.sauce.js index 84fe2b3903..b485f56b6f 100644 --- a/packages/zone.js/test/webdriver/test.sauce.js +++ b/packages/zone.js/test/webdriver/test.sauce.js @@ -19,7 +19,6 @@ const desiredCapabilities = { /*ios84: {browserName: 'iphone', platform: 'OS X 10.10', version: '8.4'},*/ ios10: {browserName: 'iphone', platform: 'OS X 10.10', version: '10.3'}, ios11: {browserName: 'iphone', platform: 'OS X 10.12', version: '11.2'}, - ie11: {browserName: 'internet explorer', platform: 'Windows 10', version: '11'}, // andriod44: {browserName: 'android', platform: 'Linux', version: '4.4'}, android51: {browserName: 'android', platform: 'Linux', version: '5.1'}, }; diff --git a/packages/zone.js/tsconfig.json b/packages/zone.js/tsconfig.json index 6ee93c8e1e..abf52609e4 100644 --- a/packages/zone.js/tsconfig.json +++ b/packages/zone.js/tsconfig.json @@ -9,6 +9,7 @@ "noEmitOnError": false, "stripInternal": false, "strict": true, + "noImplicitOverride": true, "lib": [ "es5", "dom", diff --git a/packages/zone.js/yarn.lock b/packages/zone.js/yarn.lock index cb8ce9a214..a0ad2ab888 100644 --- a/packages/zone.js/yarn.lock +++ b/packages/zone.js/yarn.lock @@ -2,151 +2,177 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" + integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== dependencies: - "@babel/highlight" "^7.10.4" + "@babel/highlight" "^7.14.5" + +"@babel/compat-data@^7.14.5": + version "7.14.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.7.tgz#7b047d7a3a89a67d2258dc61f604f098f1bc7e08" + integrity sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw== "@babel/core@^7.1.0", "@babel/core@^7.7.5": - version "7.11.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.6.tgz#3a9455dc7387ff1bac45770650bc13ba04a15651" - integrity sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg== + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.8.tgz#20cdf7c84b5d86d83fac8710a8bc605a7ba3f010" + integrity sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q== dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.6" - "@babel/helper-module-transforms" "^7.11.0" - "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.11.5" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.11.5" - "@babel/types" "^7.11.5" + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.14.8" + "@babel/helper-compilation-targets" "^7.14.5" + "@babel/helper-module-transforms" "^7.14.8" + "@babel/helpers" "^7.14.8" + "@babel/parser" "^7.14.8" + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.8" + "@babel/types" "^7.14.8" convert-source-map "^1.7.0" debug "^4.1.0" - gensync "^1.0.0-beta.1" + gensync "^1.0.0-beta.2" json5 "^2.1.2" - lodash "^4.17.19" - resolve "^1.3.2" - semver "^5.4.1" + semver "^6.3.0" source-map "^0.5.0" -"@babel/generator@^7.11.5", "@babel/generator@^7.11.6": - version "7.11.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.6.tgz#b868900f81b163b4d464ea24545c61cbac4dc620" - integrity sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA== +"@babel/generator@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.8.tgz#bf86fd6af96cf3b74395a8ca409515f89423e070" + integrity sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg== dependencies: - "@babel/types" "^7.11.5" + "@babel/types" "^7.14.8" jsesc "^2.5.1" source-map "^0.5.0" -"@babel/helper-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" - integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== +"@babel/helper-compilation-targets@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz#7a99c5d0967911e972fe2c3411f7d5b498498ecf" + integrity sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw== dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/compat-data" "^7.14.5" + "@babel/helper-validator-option" "^7.14.5" + browserslist "^4.16.6" + semver "^6.3.0" -"@babel/helper-get-function-arity@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" - integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== +"@babel/helper-function-name@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" + integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== dependencies: - "@babel/types" "^7.10.4" + "@babel/helper-get-function-arity" "^7.14.5" + "@babel/template" "^7.14.5" + "@babel/types" "^7.14.5" -"@babel/helper-member-expression-to-functions@^7.10.4": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz#ae69c83d84ee82f4b42f96e2a09410935a8f26df" - integrity sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q== +"@babel/helper-get-function-arity@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" + integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== dependencies: - "@babel/types" "^7.11.0" + "@babel/types" "^7.14.5" -"@babel/helper-module-imports@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" - integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== +"@babel/helper-hoist-variables@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" + integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== dependencies: - "@babel/types" "^7.10.4" + "@babel/types" "^7.14.5" -"@babel/helper-module-transforms@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" - integrity sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg== +"@babel/helper-member-expression-to-functions@^7.14.5": + version "7.14.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz#97e56244beb94211fe277bd818e3a329c66f7970" + integrity sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA== dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/template" "^7.10.4" - "@babel/types" "^7.11.0" - lodash "^4.17.19" + "@babel/types" "^7.14.5" -"@babel/helper-optimise-call-expression@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" - integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== +"@babel/helper-module-imports@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" + integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== dependencies: - "@babel/types" "^7.10.4" + "@babel/types" "^7.14.5" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" - integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== - -"@babel/helper-replace-supers@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" - integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== +"@babel/helper-module-transforms@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.8.tgz#d4279f7e3fd5f4d5d342d833af36d4dd87d7dc49" + integrity sha512-RyE+NFOjXn5A9YU1dkpeBaduagTlZ0+fccnIcAGbv1KGUlReBj7utF7oEth8IdIBQPcux0DDgW5MFBH2xu9KcA== dependencies: - "@babel/helper-member-expression-to-functions" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/helper-module-imports" "^7.14.5" + "@babel/helper-replace-supers" "^7.14.5" + "@babel/helper-simple-access" "^7.14.8" + "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/helper-validator-identifier" "^7.14.8" + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.8" + "@babel/types" "^7.14.8" -"@babel/helper-simple-access@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" - integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== +"@babel/helper-optimise-call-expression@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" + integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== dependencies: - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/types" "^7.14.5" -"@babel/helper-split-export-declaration@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" - integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" + integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== + +"@babel/helper-replace-supers@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz#0ecc0b03c41cd567b4024ea016134c28414abb94" + integrity sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow== dependencies: - "@babel/types" "^7.11.0" + "@babel/helper-member-expression-to-functions" "^7.14.5" + "@babel/helper-optimise-call-expression" "^7.14.5" + "@babel/traverse" "^7.14.5" + "@babel/types" "^7.14.5" -"@babel/helper-validator-identifier@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" - integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== - -"@babel/helpers@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" - integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== +"@babel/helper-simple-access@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz#82e1fec0644a7e775c74d305f212c39f8fe73924" + integrity sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg== dependencies: - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/types" "^7.14.8" -"@babel/highlight@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" - integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== +"@babel/helper-split-export-declaration@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" + integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== dependencies: - "@babel/helper-validator-identifier" "^7.10.4" + "@babel/types" "^7.14.5" + +"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.8.tgz#32be33a756f29e278a0d644fa08a2c9e0f88a34c" + integrity sha512-ZGy6/XQjllhYQrNw/3zfWRwZCTVSiBLZ9DHVZxn9n2gip/7ab8mv2TWlKPIBk26RwedCBoWdjLmn+t9na2Gcow== + +"@babel/helper-validator-option@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" + integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== + +"@babel/helpers@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.8.tgz#839f88f463025886cff7f85a35297007e2da1b77" + integrity sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw== + dependencies: + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.8" + "@babel/types" "^7.14.8" + +"@babel/highlight@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" + integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== + dependencies: + "@babel/helper-validator-identifier" "^7.14.5" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" - integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.5", "@babel/parser@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.8.tgz#66fd41666b2d7b840bd5ace7f7416d5ac60208d4" + integrity sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -163,11 +189,11 @@ "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-class-properties@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz#6644e6a0baa55a61f9e3231f6c9eeb6ee46c124c" - integrity sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA== + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" @@ -225,37 +251,43 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/template@^7.10.4", "@babel/template@^7.3.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" - integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.5.tgz#be777b93b518eb6d76ee2e1ea1d143daa11e61c3" - integrity sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ== +"@babel/template@^7.14.5", "@babel/template@^7.3.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" + integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.5" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.11.5" - "@babel/types" "^7.11.5" + "@babel/code-frame" "^7.14.5" + "@babel/parser" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.14.5", "@babel/traverse@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.8.tgz#c0253f02677c5de1a8ff9df6b0aacbec7da1a8ce" + integrity sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.14.8" + "@babel/helper-function-name" "^7.14.5" + "@babel/helper-hoist-variables" "^7.14.5" + "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/parser" "^7.14.8" + "@babel/types" "^7.14.8" debug "^4.1.0" globals "^11.1.0" - lodash "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" - integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== +"@babel/types@^7.0.0", "@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.3.0", "@babel/types@^7.3.3": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.8.tgz#38109de8fcadc06415fbd9b74df0065d4d41c728" + integrity sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q== dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" + "@babel/helper-validator-identifier" "^7.14.8" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -288,97 +320,97 @@ resolve-from "^5.0.0" "@istanbuljs/schema@^0.1.2": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" - integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^26.5.0": - version "26.5.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.5.0.tgz#89a1c5ae8329907fda842ebc5b475d5c9f935766" - integrity sha512-oh59scth4yf8XUgMJb8ruY7BHm0X5JZDNgGGsVnlOt2XQuq9s2NMllIrN4n70Yds+++bjrTGZ9EoOKraaPKPlg== +"@jest/console@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" + integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== dependencies: - "@jest/types" "^26.5.0" + "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^26.5.0" - jest-util "^26.5.0" + jest-message-util "^26.6.2" + jest-util "^26.6.2" slash "^3.0.0" -"@jest/core@^26.5.0": - version "26.5.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.5.0.tgz#32d7caf46a49d4a14cbbd3a2eb3ef39f149e984d" - integrity sha512-hDtgfzYxnrQn54+0JlbqpXM4+bqDfK0ooMlNE4Nn3VBsB4RbmytAn4/kVVIcMa+aYwRr/fwzWuGJwBETVg1sDw== +"@jest/core@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" + integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== dependencies: - "@jest/console" "^26.5.0" - "@jest/reporters" "^26.5.0" - "@jest/test-result" "^26.5.0" - "@jest/transform" "^26.5.0" - "@jest/types" "^26.5.0" + "@jest/console" "^26.6.2" + "@jest/reporters" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" - jest-changed-files "^26.5.0" - jest-config "^26.5.0" - jest-haste-map "^26.5.0" - jest-message-util "^26.5.0" + jest-changed-files "^26.6.2" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" jest-regex-util "^26.0.0" - jest-resolve "^26.5.0" - jest-resolve-dependencies "^26.5.0" - jest-runner "^26.5.0" - jest-runtime "^26.5.0" - jest-snapshot "^26.5.0" - jest-util "^26.5.0" - jest-validate "^26.5.0" - jest-watcher "^26.5.0" + jest-resolve "^26.6.2" + jest-resolve-dependencies "^26.6.3" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + jest-watcher "^26.6.2" micromatch "^4.0.2" p-each-series "^2.1.0" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^26.5.0": - version "26.5.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.5.0.tgz#4381b6b2fc291dcff51e248780196bc035da7190" - integrity sha512-0F3G9EyZU2NAP0/c/5EqVx4DmldQtRxj0gMl3p3ciSCdyMiCyDmpdE7O0mKTSiFDyl1kU4TfgEVf0r0vMkmYcw== +"@jest/environment@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" + integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== dependencies: - "@jest/fake-timers" "^26.5.0" - "@jest/types" "^26.5.0" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" - jest-mock "^26.5.0" + jest-mock "^26.6.2" -"@jest/fake-timers@^26.5.0": - version "26.5.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.5.0.tgz#107ceeb580bc42dd6e0843df5bbc92cb4fe9cb00" - integrity sha512-sQK6xUembaZ0qLnZpSjJJuJiKvyrjCJhaYjbmatFpj5+cM8h2D7YEkeEBC26BMzvF1O3tNM9OL7roqyBmom0KA== +"@jest/fake-timers@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" + integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== dependencies: - "@jest/types" "^26.5.0" + "@jest/types" "^26.6.2" "@sinonjs/fake-timers" "^6.0.1" "@types/node" "*" - jest-message-util "^26.5.0" - jest-mock "^26.5.0" - jest-util "^26.5.0" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" -"@jest/globals@^26.5.0": - version "26.5.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.5.0.tgz#b9b7d05ee6722c894ce67aff216ed6b04d3fe187" - integrity sha512-TCKx3XWR9h/yyhQbz0C1sXkK2e8WJOnkP40T9bewNpf2Ahr1UEyKXnCoQO0JCpXFkWGTXBNo1QAgTQ3+LhXfcA== +"@jest/globals@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" + integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== dependencies: - "@jest/environment" "^26.5.0" - "@jest/types" "^26.5.0" - expect "^26.5.0" + "@jest/environment" "^26.6.2" + "@jest/types" "^26.6.2" + expect "^26.6.2" -"@jest/reporters@^26.5.0": - version "26.5.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.5.0.tgz#07c7742993db9d680bcc6cda58106e8d283d2111" - integrity sha512-lUl5bbTHflDO9dQa85ZTHasPBVsyC48t9sg/VN2wC3OJryclFNqN4Xfo2FgnNl/pzCnzO2MVgMyIij5aNkod2w== +"@jest/reporters@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" + integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^26.5.0" - "@jest/test-result" "^26.5.0" - "@jest/transform" "^26.5.0" - "@jest/types" "^26.5.0" + "@jest/console" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" @@ -389,73 +421,73 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.0.2" - jest-haste-map "^26.5.0" - jest-resolve "^26.5.0" - jest-util "^26.5.0" - jest-worker "^26.5.0" + jest-haste-map "^26.6.2" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" slash "^3.0.0" source-map "^0.6.0" string-length "^4.0.1" terminal-link "^2.0.0" - v8-to-istanbul "^5.0.1" + v8-to-istanbul "^7.0.0" optionalDependencies: node-notifier "^8.0.0" -"@jest/source-map@^26.5.0": - version "26.5.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.5.0.tgz#98792457c85bdd902365cd2847b58fff05d96367" - integrity sha512-jWAw9ZwYHJMe9eZq/WrsHlwF8E3hM9gynlcDpOyCb9bR8wEd9ZNBZCi7/jZyzHxC7t3thZ10gO2IDhu0bPKS5g== +"@jest/source-map@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" + integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== dependencies: callsites "^3.0.0" graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@^26.5.0": - version "26.5.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.5.0.tgz#d5bdf2eaf12ceddd359c2506fe806afafecc9a9e" - integrity sha512-CaVXxDQi31LPOsz5/+iajNHQlA1Je/jQ8uYH/lCa6Y/UrkO+sDHeEH3x/inbx06PctVDnTwIlCcBvNNbC4FCvQ== +"@jest/test-result@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" + integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== dependencies: - "@jest/console" "^26.5.0" - "@jest/types" "^26.5.0" + "@jest/console" "^26.6.2" + "@jest/types" "^26.6.2" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^26.5.0": - version "26.5.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.5.0.tgz#617808a1fa869c5181e43a5b841db084746b667e" - integrity sha512-23oofRXqPEy37HyHWIYf7lzzOqtGBkai5erZiL6RgxlyXE7a0lCihf6b5DfAvcD3yUtbXmh3EzpjJDVH57zQrg== +"@jest/test-sequencer@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" + integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== dependencies: - "@jest/test-result" "^26.5.0" + "@jest/test-result" "^26.6.2" graceful-fs "^4.2.4" - jest-haste-map "^26.5.0" - jest-runner "^26.5.0" - jest-runtime "^26.5.0" + jest-haste-map "^26.6.2" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" -"@jest/transform@^26.5.0": - version "26.5.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.5.0.tgz#16404eaddf6034fe713da37b236756fc6b956db0" - integrity sha512-Kt4WciOruTyTkJ2DZ+xtZiejRj3v22BrXCYZoGRbI0N6Q6tt2HdsWrrEtn6nlK24QWKC389xKkVk4Xr2gWBZQA== +"@jest/transform@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" + integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^26.5.0" + "@jest/types" "^26.6.2" babel-plugin-istanbul "^6.0.0" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.2.4" - jest-haste-map "^26.5.0" + jest-haste-map "^26.6.2" jest-regex-util "^26.0.0" - jest-util "^26.5.0" + jest-util "^26.6.2" micromatch "^4.0.2" pirates "^4.0.1" slash "^3.0.0" source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/types@^26.5.0": - version "26.5.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.5.0.tgz#163f6e00c5ac9bb6fc91c3802eaa9d0dd6e1474a" - integrity sha512-nH9DFLqaIhB+RVgjivemvMiFSWw/BKwbZGxBAMv8CCTvUyFoK8RwHhAlmlXIvMBrf5Z3YQ4p9cq3Qh9EDctGvA== +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" @@ -464,9 +496,9 @@ chalk "^4.0.0" "@sinonjs/commons@^1.7.0": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.1.tgz#e7df00f98a203324f6dc7cc606cad9d4a8ab2217" - integrity sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw== + version "1.8.3" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" + integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== dependencies: type-detect "4.0.8" @@ -477,10 +509,15 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": - version "7.1.10" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.10.tgz#ca58fc195dd9734e77e57c6f2df565623636ab40" - integrity sha512-x8OM8XzITIMyiwl5Vmo2B1cR1S1Ipkyv4mdlbJjMa1lmuKvKY9FrBbEANIaMlnWn5Rf7uO+rC/VgYabNkE17Hw== + version "7.1.15" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.15.tgz#2ccfb1ad55a02c83f8e0ad327cbc332f55eb1024" + integrity sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -489,31 +526,31 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.2" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.2.tgz#f3d71178e187858f7c45e30380f8f1b7415a12d8" - integrity sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ== + version "7.6.3" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.3.tgz#f456b4b2ce79137f768aa130d2423d2f0ccfaba5" + integrity sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.0.3" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.3.tgz#b8aaeba0a45caca7b56a5de9459872dde3727214" - integrity sha512-uCoznIPDmnickEi6D0v11SBpW0OuVqHJCa7syXqQHy5uktSCreIlt0iglsCnmvz8yCb38hGcWeseA8cWJSwv5Q== + version "7.4.1" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.15.tgz#db9e4238931eb69ef8aab0ad6523d4d4caa39d03" - integrity sha512-Pzh9O3sTK8V6I1olsXpCfj2k/ygO2q1X0vhhnDrEQyYLHZesWz+zMZMVcwXLCYf0U36EtmyYaFGPfXlTtDHe3A== + version "7.14.2" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" + integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== dependencies: "@babel/types" "^7.3.0" "@types/graceful-fs@^4.1.2": - version "4.1.3" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" - integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ== + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== dependencies: "@types/node" "*" @@ -530,45 +567,55 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" - integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== dependencies: "@types/istanbul-lib-report" "*" "@types/node@*": - version "14.11.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.11.4.tgz#bf6ea3d5f7b1504232b11acbc40e1ac4c750d3b9" - integrity sha512-KmoLCUeW2cWKkEOQ0gQcECuqOc0g7B7zcmRPQNMT4ntNm0luKv3BTLcqIyWpTxkhLDzLTdMus11j/6DROaZdPw== + version "16.4.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.7.tgz#f7afa78769d4b477f5092d7c3468e2e8653d779c" + integrity sha512-aDDY54sst8sx47CWT6QQqIZp45yURq4dic0+HCYfYNcY5Ejlb/CLmFnRLfy3wQuYafOeh3lB/DAKaqRKBtcZmA== "@types/node@^10.9.4": - version "10.17.36" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.36.tgz#c6b24a8e82501936f01e04343f9ac81a663d2bac" - integrity sha512-nuBoODRCq2h+7PplPyLOR51YjFqB2WoZHZCXQ8ScI5VLf3/BXHXohAKHX1m72Pd9YR6QgnJ1i9bThJB3C8gnKw== + version "10.17.60" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== + +"@types/normalize-package-data@^2.4.0": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" + integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== "@types/prettier@^2.0.0": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.1.1.tgz#be148756d5480a84cde100324c03a86ae5739fb5" - integrity sha512-2zs+O+UkDsJ1Vcp667pd3f8xearMdopz/z54i99wtRDI5KLmngk7vlrYZD0ZjKHaROR03EznlBbVY9PfAEyJIQ== + version "2.3.2" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.3.2.tgz#fc8c2825e4ed2142473b4a81064e6e081463d1b3" + integrity sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog== "@types/stack-utils@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" - integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== "@types/yargs-parser@*": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" - integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + version "20.2.1" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" + integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== "@types/yargs@^15.0.0": - version "15.0.7" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.7.tgz#dad50a7a234a35ef9460737a56024287a3de1d2b" - integrity sha512-Gf4u3EjaPNcC9cTu4/j2oN14nSVhr8PQ+BvBcBQHAhDZfl0bVIiLgvnRXv/dn58XhTm9UXvBpvJpDlwV65QxOA== + version "15.0.14" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.14.tgz#26d821ddb89e70492160b66d10a0eb6df8f6fb06" + integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== dependencies: "@types/yargs-parser" "*" -abab@^2.0.3: +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== + +abab@^2.0.3, abab@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== @@ -591,22 +638,34 @@ acorn@^7.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -ajv@^6.12.3: - version "6.12.5" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.5.tgz#19b0e8bae8f476e5ba666300387775fb1a00a4da" - integrity sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag== +acorn@^8.2.4: + version "8.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" + integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" + debug "4" + +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== ansi-escapes@^4.2.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: - type-fest "^0.11.0" + type-fest "^0.21.3" + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= ansi-regex@^5.0.0: version "5.0.0" @@ -635,10 +694,10 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== +anymatch@^3.0.3, anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" @@ -650,6 +709,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -665,28 +729,11 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-filter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" - integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -702,33 +749,21 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -available-typed-arrays@^1.0.0, available-typed-arrays@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" - integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== +available-typed-arrays@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.4.tgz#9e0ae84ecff20caae6a94a1c3bc39b955649b7a9" + integrity sha512-SA5mXJWrId1TaQjfxUYghbqQ/hYioKmLJvPJyDuYRtXXenFNMjj4hSSt1Cf1xsuXSXrtxrVC5Ot4eU6cOtBDdA== + +babel-jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" + integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== dependencies: - array-filter "^1.0.0" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.10.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" - integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== - -babel-jest@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.5.0.tgz#afe11a083b4e584f63e9de29d2075cb96f42d2a4" - integrity sha512-Cy16ZJrds81C+JASaOIGNlpCeqW3PTOq36owv+Zzwde5NiWz+zNduwxUNF57vxc/3SnIWo8HHqTczhN8GLoXTw== - dependencies: - "@jest/transform" "^26.5.0" - "@jest/types" "^26.5.0" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" "@types/babel__core" "^7.1.7" babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^26.5.0" + babel-preset-jest "^26.6.2" chalk "^4.0.0" graceful-fs "^4.2.4" slash "^3.0.0" @@ -744,20 +779,20 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.5.0.tgz#3916b3a28129c29528de91e5784a44680db46385" - integrity sha512-ck17uZFD3CDfuwCLATWZxkkuGGFhMij8quP8CNhwj8ek1mqFgbFzRJ30xwC04LLscj/aKsVFfRST+b5PT7rSuw== +babel-plugin-jest-hoist@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" + integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-preset-current-node-syntax@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.4.tgz#826f1f8e7245ad534714ba001f84f7e906c3b615" - integrity sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w== +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" @@ -770,19 +805,20 @@ babel-preset-current-node-syntax@^0.1.3: "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.5.0.tgz#f1b166045cd21437d1188d29f7fba470d5bdb0e7" - integrity sha512-F2vTluljhqkiGSJGBg/jOruA8vIIIL11YrxRcO7nviNTMbbofPSHwnm8mgP7d/wS7wRSexRoI6X1A6T74d4LQA== +babel-preset-jest@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" + integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== dependencies: - babel-plugin-jest-hoist "^26.5.0" - babel-preset-current-node-syntax "^0.1.3" + babel-plugin-jest-hoist "^26.6.2" + babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== base@^0.11.1: version "0.11.2" @@ -797,12 +833,10 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== brace-expansion@^1.1.7: version "1.1.11" @@ -828,7 +862,7 @@ braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.1: +braces@^3.0.1, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -840,10 +874,21 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browser-stdout@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" - integrity sha1-81HTKWnTL6XXpVZxVCY9korjvR8= +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +browserslist@^4.16.6: + version "4.16.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" + integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== + dependencies: + caniuse-lite "^1.0.30001219" + colorette "^1.2.2" + electron-to-chromium "^1.3.723" + escalade "^3.1.1" + node-releases "^1.1.71" bser@2.1.1: version "2.1.1" @@ -853,9 +898,9 @@ bser@2.1.1: node-int64 "^0.4.0" buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== cache-base@^1.0.1: version "1.0.1" @@ -872,20 +917,33 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^5.3.1: +camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== camelcase@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e" - integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + +caniuse-lite@^1.0.30001219: + version "1.0.30001248" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001248.tgz#26ab45e340f155ea5da2920dadb76a533cb8ebce" + integrity sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw== capture-exit@^2.0.0: version "2.0.0" @@ -894,11 +952,6 @@ capture-exit@^2.0.0: dependencies: rsvp "^4.8.4" -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - chalk@2.x, chalk@^2.0.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -908,10 +961,10 @@ chalk@2.x, chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" @@ -921,11 +974,31 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== +chokidar@3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +cjs-module-lexer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" + integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -936,10 +1009,19 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -cliui@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.1.tgz#a4cb67aad45cd83d8d05128fc9f4d8fbb887e6b3" - integrity sha512-rcvHOWyGyid6I1WjT/3NatKj2kDt9OdSHSXpyLXaMWFbKpGACNW8pRhhdPUq9MWUOdwn8Rz9AVETjF4105rZZQ== +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: string-width "^4.2.0" strip-ansi "^6.0.0" @@ -1011,7 +1093,12 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -combined-stream@^1.0.6, combined-stream@~1.0.6: +colorette@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" + integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== + +combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -1028,13 +1115,6 @@ commander@2.3.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873" integrity sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM= -commander@2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q= - dependencies: - graceful-readlink ">= 1.0.0" - component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -1046,9 +1126,9 @@ concat-map@0.0.1: integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== dependencies: safe-buffer "~5.1.1" @@ -1057,7 +1137,7 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= @@ -1092,20 +1172,13 @@ cssom@~0.3.6: resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== -cssstyle@^2.2.0: +cssstyle@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: cssom "~0.3.6" -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - data-urls@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" @@ -1122,12 +1195,19 @@ debug@2.2.0: dependencies: ms "0.7.1" -debug@2.6.8: - version "2.6.8" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" - integrity sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw= +debug@4, debug@^4.1.0, debug@^4.1.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== dependencies: - ms "2.0.0" + ms "2.1.2" + +debug@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" debug@^2.2.0, debug@^2.3.3: version "2.6.9" @@ -1136,17 +1216,20 @@ debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@^4.1.0, debug@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" - integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== - dependencies: - ms "2.1.2" +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decimal.js@^10.2.0: - version "10.2.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" - integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +decimal.js@^10.2.1: + version "10.3.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" + integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== decode-uri-component@^0.2.0: version "0.2.0" @@ -1202,20 +1285,20 @@ detect-newline@^3.0.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -diff-sequences@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.5.0.tgz#ef766cf09d43ed40406611f11c6d8d9dd8b2fefd" - integrity sha512-ZXx86srb/iYy6jG71k++wBN9P9J05UNQ5hQHQd9MtMPvcqXPx/vKU69jfHV637D00Q2gSgPk2D+jSx3l1lDW/Q== +diff-sequences@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" + integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== diff@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" integrity sha1-fyjS657nsVqX79ic5j3P2qPMur8= -diff@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" - integrity sha1-yc45Okt8vQsFinJck98pkCeGj/k= +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== domexception@^2.0.1: version "2.0.1" @@ -1224,23 +1307,20 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" -domino@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/domino/-/domino-2.1.2.tgz#70e8367839ee8ad8bde3aeb4857cf3d93bd98b85" - integrity sha512-nzg76s4Smji9teyLwOnqqUCdFVOho+OQFqUwp+42Wo+SEZ1FGw7uhemv6OKk2qp8YIgnGB3jVt0sJWU96wbPgA== +domino@2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/domino/-/domino-2.1.6.tgz#fe4ace4310526e5e7b9d12c7de01b7f485a57ffe" + integrity sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ== -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" +electron-to-chromium@^1.3.723: + version "1.3.791" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.791.tgz#e38f325ff22470bdcff34409d58c0baf9c2e3e93" + integrity sha512-Tdx7w1fZpeWOOBluK+kXTAKCXyc79K65RB6Zp0+sPSZZhDjXlrxfGlXrlMGVVQUrKCyEZFQs1UBBLNz5IdbF0g== emittery@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.1.tgz#c02375a927a40948c0345cc903072597f5270451" - integrity sha512-d34LN4L6h18Bzz9xpoku2nPwKxCPlPMr3EEKTkoEBi+1/+b0lcRkRJ1UVyyZaKNeqGR3swcGl6s390DNO4YVgQ== + version "0.7.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" + integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== emoji-regex@^8.0.0: version "8.0.0" @@ -1254,40 +1334,35 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" -es-abstract@^1.17.4, es-abstract@^1.17.5: - version "1.17.7" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" - integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.2" - is-regex "^1.1.1" - object-inspect "^1.8.0" - object-keys "^1.1.1" - object.assign "^4.1.1" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" + is-arrayish "^0.2.1" -es-abstract@^1.18.0-next.0: - version "1.18.0-next.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" - integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== +es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: + version "1.18.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.4.tgz#c6b7a1acd6bb1c8b5afeb54a53c46ad02fab346d" + integrity sha512-xjDAPJRxKc1uoTkdW8MEk7Fq/2bzz3YoCADYniDV7+KITCUdu9c90fj1aKI7nEZFZxRrHlDo3wtma/C6QkhlXQ== dependencies: + call-bind "^1.0.2" es-to-primitive "^1.2.1" function-bind "^1.1.1" + get-intrinsic "^1.1.1" has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.2" - is-negative-zero "^2.0.0" - is-regex "^1.1.1" - object-inspect "^1.8.0" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + is-callable "^1.2.3" + is-negative-zero "^2.0.1" + is-regex "^1.1.3" + is-string "^1.0.6" + object-inspect "^1.11.0" object-keys "^1.1.1" - object.assign "^4.1.1" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.1" es-to-primitive@^1.2.1: version "1.2.1" @@ -1298,17 +1373,22 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -escalade@^3.0.2, escalade@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.0.tgz#e8e2d7c7a8b76f6ee64c2181d6b8151441602d4e" - integrity sha512-mAk+hPSO8fLDkhV7V0dXazH5pDc6MrjBTPyD3VeKzxnVFjH1MIxbCdqGZB9O8+EwWakZs3ZCbDS4IpRt79V1ig== +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-string-regexp@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1" integrity sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE= -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: +escape-string-regexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -1318,13 +1398,13 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -escodegen@^1.14.1: - version "1.14.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== dependencies: esprima "^4.0.1" - estraverse "^4.2.0" + estraverse "^5.2.0" esutils "^2.0.2" optionator "^0.8.1" optionalDependencies: @@ -1335,10 +1415,10 @@ esprima@^4.0.0, esprima@^4.0.1: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== +estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== esutils@^2.0.2: version "2.0.3" @@ -1346,9 +1426,9 @@ esutils@^2.0.2: integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== exec-sh@^0.3.2: - version "0.3.4" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" - integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== + version "0.3.6" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" + integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== execa@^1.0.0: version "1.0.0" @@ -1364,9 +1444,9 @@ execa@^1.0.0: strip-eof "^1.0.0" execa@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -1396,16 +1476,16 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expect@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-26.5.0.tgz#089c0cc4d6c545c7388ddefffa0f1e2e8e38d282" - integrity sha512-oIOy3mHWjnF5ZICuaui5kdtJZQ+D7XHWyUQDxk1WhIRCkcIYc24X23bOfikgCNU6i9wcSqLQhwPOqeRp09naxg== +expect@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" + integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== dependencies: - "@jest/types" "^26.5.0" + "@jest/types" "^26.6.2" ansi-styles "^4.0.0" jest-get-type "^26.3.0" - jest-matcher-utils "^26.5.0" - jest-message-util "^26.5.0" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" jest-regex-util "^26.0.0" extend-shallow@^2.0.1: @@ -1423,11 +1503,6 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -1442,21 +1517,6 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -1491,6 +1551,14 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -1499,6 +1567,11 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -1509,18 +1582,13 @@ foreach@^2.0.5: resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: asynckit "^0.4.0" - combined-stream "^1.0.6" + combined-stream "^1.0.8" mime-types "^2.1.12" formatio@1.1.1: @@ -1542,31 +1610,40 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== +fsevents@^2.1.2, fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== get-caller-file@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== -get-caller-file@^2.0.5: +get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -1591,12 +1668,12 @@ get-value@^2.0.3, get-value@^2.0.6: resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: - assert-plus "^1.0.0" + is-glob "^4.0.1" glob@3.2.11: version "3.2.11" @@ -1606,22 +1683,10 @@ glob@3.2.11: inherits "2" minimatch "0.3" -glob@7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" - integrity sha1-gFIR3wT6rxxjo2ADBs31reULLsg= - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@7.1.7, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -1635,50 +1700,50 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -google-closure-compiler-java@^20200927.0.0: - version "20200927.0.0" - resolved "https://registry.yarnpkg.com/google-closure-compiler-java/-/google-closure-compiler-java-20200927.0.0.tgz#e9d5490e470e494e187735402f66d5982ead1753" - integrity sha512-pW9n+DTdxKSMcI2GJe8Q/40Hu8eNzC4o6AC11ta3nACH+NlA2zTcuVV+qfF7Ttv+guvIul/ppEHoOU/18EVoDg== +google-closure-compiler-java@^20210601.0.0: + version "20210601.0.0" + resolved "https://registry.yarnpkg.com/google-closure-compiler-java/-/google-closure-compiler-java-20210601.0.0.tgz#88dc11b334bee6a704d9674c5143fd2e0d553517" + integrity sha512-bH6nIwOmp4qDWvlbXx5/DE3XA2aDGQoCpmRYZJGONY1Sy6Xfbq0ioXRHH9eBDP9hxhCJ5Sd/K89A0NZ8Nz9RJA== -google-closure-compiler-linux@^20200927.0.0: - version "20200927.0.0" - resolved "https://registry.yarnpkg.com/google-closure-compiler-linux/-/google-closure-compiler-linux-20200927.0.0.tgz#f4f556a75ed9b58959b3c881ade444377079121d" - integrity sha512-2g+AvtoZPf+VEWFnjTjA0HcQc+ZqkFLamhUkmJjA4lesIa46ALib+30HmvvSmb2VXa/Q68nwxqa/JyEvwG6E+Q== +google-closure-compiler-linux@^20210601.0.0: + version "20210601.0.0" + resolved "https://registry.yarnpkg.com/google-closure-compiler-linux/-/google-closure-compiler-linux-20210601.0.0.tgz#6e5dd7b00b96dc1fd1ba30e3401af85558768322" + integrity sha512-rnEQt7zz/1P1SfPhJiHQpfCgMPrsVVyEgDs09h67xn6+LXa9L0RP+hrJDEHqSWwjDPz0BkfUUv6zkqZvp1h/lw== -google-closure-compiler-osx@^20200927.0.0: - version "20200927.0.0" - resolved "https://registry.yarnpkg.com/google-closure-compiler-osx/-/google-closure-compiler-osx-20200927.0.0.tgz#e4c0c81f9a71ffdb01ec59fb885d3e55f50c7406" - integrity sha512-MO86OSu+X/+ppJco6C3HgQFb48AE8uIqA4SlnqDYWnWTEmdlWWrWJdNcWy4KOnobS0Cn41ZVPoijW9ZVMQnG6Q== +google-closure-compiler-osx@^20210601.0.0: + version "20210601.0.0" + resolved "https://registry.yarnpkg.com/google-closure-compiler-osx/-/google-closure-compiler-osx-20210601.0.0.tgz#e23356bc9ef6e68c2980f60a207f603767b50b21" + integrity sha512-A5r4s/WthR2iLMM0mxsluw8EW2AcOomC5ri/H6FjzpMq0RVEnLTgaGYdXolUAfEzH/7XtJJT2+JkYk3HSLCtrg== -google-closure-compiler-windows@^20200927.0.0: - version "20200927.0.0" - resolved "https://registry.yarnpkg.com/google-closure-compiler-windows/-/google-closure-compiler-windows-20200927.0.0.tgz#3ae710394f64423e045fd00bc69904a536eb1e15" - integrity sha512-kEAWvn46ingRhWwVWnHHlKR7qpXEk5iLfmeL/wzllqcABZNybNk/jHIsN5p25u5a6L/m7io/J/SupvGiKRka5A== +google-closure-compiler-windows@^20210601.0.0: + version "20210601.0.0" + resolved "https://registry.yarnpkg.com/google-closure-compiler-windows/-/google-closure-compiler-windows-20210601.0.0.tgz#b5400d06bbf0bbd2602ee3ae0c2bc7ebd5829692" + integrity sha512-6r94bPShnB0XXh9+5/qXGDHJN2PQGhF9yJPcgBZj+FAZlQGzlYkT0pkyp+loZT3lG+YRbjD28Lgo7xMcY4xgkA== -google-closure-compiler@^20200927.0.0: - version "20200927.0.0" - resolved "https://registry.yarnpkg.com/google-closure-compiler/-/google-closure-compiler-20200927.0.0.tgz#6e92f355f73e9228dedadb31ae77407e9b638533" - integrity sha512-YvzkL48zWPF4cYm0lbivWV15oGUsMF9cjlNho9jhCwuOUTSDNzZPLlbbV+dt8UviEeCiuivO9zGnGxjg+5hDHw== +google-closure-compiler@^20210601.0.0: + version "20210601.0.0" + resolved "https://registry.yarnpkg.com/google-closure-compiler/-/google-closure-compiler-20210601.0.0.tgz#34597c33c9285ebd3a5364f5299f6c9ddc9fc88a" + integrity sha512-lzzEoG2VTB7uUjnWnMyeZMU163w69HJpM27yh8Up9Ha5McHZeESjt3NRwU8cWMbCRdY06nFbRCDIVCRcadHCiw== dependencies: chalk "2.x" - google-closure-compiler-java "^20200927.0.0" + google-closure-compiler-java "^20210601.0.0" minimist "1.x" vinyl "2.x" vinyl-sourcemaps-apply "^0.2.0" optionalDependencies: - google-closure-compiler-linux "^20200927.0.0" - google-closure-compiler-osx "^20200927.0.0" - google-closure-compiler-windows "^20200927.0.0" + google-closure-compiler-linux "^20210601.0.0" + google-closure-compiler-osx "^20210601.0.0" + google-closure-compiler-windows "^20210601.0.0" graceful-fs@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + version "4.2.6" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== growl@1.9.2: version "1.9.2" @@ -1690,23 +1755,10 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== has-flag@^3.0.0: version "3.0.0" @@ -1718,10 +1770,10 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== +has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== has-value@^0.3.1: version "0.3.1" @@ -1761,10 +1813,15 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -he@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" - integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== html-encoding-sniffer@^2.0.1: version "2.0.1" @@ -1778,14 +1835,22 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" + "@tootallnate/once" "1" + agent-base "6" + debug "4" + +https-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" + integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + dependencies: + agent-base "6" + debug "4" human-signals@^1.1.1: version "1.1.1" @@ -1825,10 +1890,14 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" is-accessor-descriptor@^0.1.6: version "0.1.6" @@ -1845,19 +1914,45 @@ is-accessor-descriptor@^1.0.0: kind-of "^6.0.0" is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" + integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== + dependencies: + call-bind "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-bigint@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" + integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" + integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== + dependencies: + call-bind "^1.0.2" is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.4, is-callable@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" - integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== +is-callable@^1.1.4, is-callable@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== is-ci@^2.0.0: version "2.0.0" @@ -1866,6 +1961,13 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-core-module@^2.2.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491" + integrity sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -1881,9 +1983,9 @@ is-data-descriptor@^1.0.0: kind-of "^6.0.0" is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5" + integrity sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A== is-descriptor@^0.1.0: version "0.1.6" @@ -1904,9 +2006,9 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: kind-of "^6.0.2" is-docker@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" - integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" @@ -1920,6 +2022,16 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -1931,14 +2043,26 @@ is-generator-fn@^2.0.0: integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-generator-function@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.7.tgz#d2132e529bb0000a7f80794d4bdf5cd5e5813522" - integrity sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw== + version "1.0.9" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.9.tgz#e5f82c2323673e7fcad3d12858c83c4039f6399c" + integrity sha512-ZJ34p1uvIfptHCN7sFTjGibB9/oBg17sHqzDLfuwhvmN/qLVvIQXRQ8licZQ35WJ8KuEQt/etnnzQFI9C9Ue/A== -is-negative-zero@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" - integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number-object@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" + integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== is-number@^3.0.0: version "3.0.0" @@ -1952,6 +2076,11 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -1959,17 +2088,18 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-potential-custom-element-name@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" - integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== -is-regex@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" - integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== +is-regex@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" + integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== dependencies: - has-symbols "^1.0.1" + call-bind "^1.0.2" + has-symbols "^1.0.2" is-stream@^1.1.0: version "1.1.0" @@ -1977,32 +2107,43 @@ is-stream@^1.1.0: integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== +is-string@^1.0.5, is-string@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" + integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: - has-symbols "^1.0.1" + has-symbols "^1.0.2" is-typed-array@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.3.tgz#a4ff5a5e672e1a55f99c7f54e59597af5c1df04d" - integrity sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ== + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.5.tgz#f32e6e096455e329eb7b423862456aa213f0eb4e" + integrity sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug== dependencies: - available-typed-arrays "^1.0.0" - es-abstract "^1.17.4" + available-typed-arrays "^1.0.2" + call-bind "^1.0.2" + es-abstract "^1.18.0-next.2" foreach "^2.0.5" has-symbols "^1.0.1" -is-typedarray@^1.0.0, is-typedarray@~1.0.0: +is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -2037,11 +2178,6 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - istanbul-lib-coverage@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" @@ -2091,67 +2227,67 @@ jade@0.26.3: commander "0.6.1" mkdirp "0.3.0" -jest-changed-files@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.5.0.tgz#181b901368decb4fc21d3cace9b4c4819232b667" - integrity sha512-RAHoXqxa7gO1rZz88qpsLpzJ2mQU12UaFWadacKHuMbBZwFK+yl0j9YoD9Y/wBpv1ILG2SdCuxFHggX+9VU7qA== +jest-changed-files@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" + integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== dependencies: - "@jest/types" "^26.5.0" + "@jest/types" "^26.6.2" execa "^4.0.0" throat "^5.0.0" -jest-cli@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.5.0.tgz#4404fb5cbdfb250946160374d5e3fc9655f9b57f" - integrity sha512-bI0h6GQGbyN0SSZu3nPilwrkrZ8dBC93erwTiEoJ+kGjtNuXsB183hTZ0HCiHLzf88oE0SQB1hYp8RgyytH+Bg== +jest-cli@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" + integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== dependencies: - "@jest/core" "^26.5.0" - "@jest/test-result" "^26.5.0" - "@jest/types" "^26.5.0" + "@jest/core" "^26.6.3" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" import-local "^3.0.2" is-ci "^2.0.0" - jest-config "^26.5.0" - jest-util "^26.5.0" - jest-validate "^26.5.0" + jest-config "^26.6.3" + jest-util "^26.6.2" + jest-validate "^26.6.2" prompts "^2.0.1" - yargs "^16.0.3" + yargs "^15.4.1" -jest-config@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.5.0.tgz#3959e47223496e2ae2605e073578a359cab99445" - integrity sha512-OM6eXIEmQXAuonCk8aNPMRjPFcKWa3IIoSlq5BPgIflmQBzM/COcI7XsWSIEPWPa9WcYTJBWj8kNqEYjczmIFw== +jest-config@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" + integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^26.5.0" - "@jest/types" "^26.5.0" - babel-jest "^26.5.0" + "@jest/test-sequencer" "^26.6.3" + "@jest/types" "^26.6.2" + babel-jest "^26.6.3" chalk "^4.0.0" deepmerge "^4.2.2" glob "^7.1.1" graceful-fs "^4.2.4" - jest-environment-jsdom "^26.5.0" - jest-environment-node "^26.5.0" + jest-environment-jsdom "^26.6.2" + jest-environment-node "^26.6.2" jest-get-type "^26.3.0" - jest-jasmine2 "^26.5.0" + jest-jasmine2 "^26.6.3" jest-regex-util "^26.0.0" - jest-resolve "^26.5.0" - jest-util "^26.5.0" - jest-validate "^26.5.0" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" micromatch "^4.0.2" - pretty-format "^26.5.0" + pretty-format "^26.6.2" -jest-diff@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.5.0.tgz#bd01cef2d00b2668a0207ef47ab8eb1e33613253" - integrity sha512-CmDMMPkVMxrrh0Dv/4M9kh1tsYsZnYTQMMTvIFpePBSk9wMVfcyfg30TCq+oR9AzGbw8vsI50Gk1HmlMMlhoJg== +jest-diff@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" + integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== dependencies: chalk "^4.0.0" - diff-sequences "^26.5.0" + diff-sequences "^26.6.2" jest-get-type "^26.3.0" - pretty-format "^26.5.0" + pretty-format "^26.6.2" jest-docblock@^26.0.0: version "26.0.0" @@ -2160,130 +2296,131 @@ jest-docblock@^26.0.0: dependencies: detect-newline "^3.0.0" -jest-each@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.5.0.tgz#39197a9d1abdd32ff5b8a9931507ab117c551c02" - integrity sha512-+oO3ykDgypHSyyK2xOsh8XDUwMtg3HoJ4wMNFNHxhcACFbUgaCOfLy+eTCn5pIKhtigU3BmkYt7k3MtTb5pJOQ== +jest-each@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" + integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== dependencies: - "@jest/types" "^26.5.0" + "@jest/types" "^26.6.2" chalk "^4.0.0" jest-get-type "^26.3.0" - jest-util "^26.5.0" - pretty-format "^26.5.0" + jest-util "^26.6.2" + pretty-format "^26.6.2" -jest-environment-jsdom@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.5.0.tgz#f9a6726402fde787632a69df5ff3390ab04337a3" - integrity sha512-Xuqh3bx8egymaJR566ECkiztIIVOIWWPGIxo++ziWyCOqQChUguRCH1hRXBbfINPbb/SRFe7GCD+SunaUgTmCw== +jest-environment-jsdom@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" + integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== dependencies: - "@jest/environment" "^26.5.0" - "@jest/fake-timers" "^26.5.0" - "@jest/types" "^26.5.0" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" - jest-mock "^26.5.0" - jest-util "^26.5.0" + jest-mock "^26.6.2" + jest-util "^26.6.2" jsdom "^16.4.0" -jest-environment-node@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.5.0.tgz#3f49ba40abe87209df96f7991015cac996e04563" - integrity sha512-LaYl/ek5mb1VDP1/+jMH2N1Ec4fFUhSYmc8EZqigBgMov/2US8U5l7D3IlOf78e+wARUxPxUpTcybVVzAOu3jg== +jest-environment-node@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" + integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== dependencies: - "@jest/environment" "^26.5.0" - "@jest/fake-timers" "^26.5.0" - "@jest/types" "^26.5.0" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" - jest-mock "^26.5.0" - jest-util "^26.5.0" + jest-mock "^26.6.2" + jest-util "^26.6.2" jest-get-type@^26.3.0: version "26.3.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== -jest-haste-map@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.5.0.tgz#ba4c48dbf69e0529709bd0d76660d87eefce820a" - integrity sha512-AjB1b53uqN7Cf2VN80x0wJajVZ+BMZC+G2CmWoG143faaMw7IhIcs3FTPuSgOx7cn3/bag7lgCq93naAvLO6EQ== +jest-haste-map@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" + integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== dependencies: - "@jest/types" "^26.5.0" + "@jest/types" "^26.6.2" "@types/graceful-fs" "^4.1.2" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.4" jest-regex-util "^26.0.0" - jest-serializer "^26.5.0" - jest-util "^26.5.0" - jest-worker "^26.5.0" + jest-serializer "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" micromatch "^4.0.2" sane "^4.0.3" walker "^1.0.7" optionalDependencies: fsevents "^2.1.2" -jest-jasmine2@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.5.0.tgz#49d57db63f49a183813263b41e61e2a5f988e6a3" - integrity sha512-NOA6PLORHTRTROOp5VysKCUVpFAjMMXUS1Xw7FvTMeYK5Ewx4rpxhFqiJ7JT4pENap9g9OuXo4cWR/MwCDTEeQ== +jest-jasmine2@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" + integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.5.0" - "@jest/source-map" "^26.5.0" - "@jest/test-result" "^26.5.0" - "@jest/types" "^26.5.0" + "@jest/environment" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" - expect "^26.5.0" + expect "^26.6.2" is-generator-fn "^2.0.0" - jest-each "^26.5.0" - jest-matcher-utils "^26.5.0" - jest-message-util "^26.5.0" - jest-runtime "^26.5.0" - jest-snapshot "^26.5.0" - jest-util "^26.5.0" - pretty-format "^26.5.0" + jest-each "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + pretty-format "^26.6.2" throat "^5.0.0" -jest-leak-detector@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.5.0.tgz#a5671ffbc6308e45ad31b42cb2ef0722488a4e57" - integrity sha512-xZHvvTBbj3gUTtunLjPqP594BT6IUEpwA0AQpEQjVR8eBq8+R3qgU/KhoAcVcV0iqRM6pXtX7hKPZ5mLdynVSQ== +jest-leak-detector@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" + integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== dependencies: jest-get-type "^26.3.0" - pretty-format "^26.5.0" + pretty-format "^26.6.2" -jest-matcher-utils@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.5.0.tgz#1195d6a35c4c710ad286b775b966f3fdb7a2102d" - integrity sha512-QgbbxqFT8wiTi4o/7MWj2vHlcmMjACG8vnJ9pJ7svVDmkzEnTUGdHXWLKB1aZhbnyXetMNRF+TSMcDS9aGfuzA== +jest-matcher-utils@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" + integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== dependencies: chalk "^4.0.0" - jest-diff "^26.5.0" + jest-diff "^26.6.2" jest-get-type "^26.3.0" - pretty-format "^26.5.0" + pretty-format "^26.6.2" -jest-message-util@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.5.0.tgz#87f8c440dace55095d247442638c70b892836895" - integrity sha512-UEOqdoTfX0AFyReL4q5N3CfDBWt+AtQzeszZuuGapU39vwEk90rTSBghCA/3FFEZzvGfH2LE4+0NaBI81Cu2Ow== +jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" + integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== dependencies: "@babel/code-frame" "^7.0.0" - "@jest/types" "^26.5.0" + "@jest/types" "^26.6.2" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" graceful-fs "^4.2.4" micromatch "^4.0.2" + pretty-format "^26.6.2" slash "^3.0.0" stack-utils "^2.0.2" -jest-mock@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.5.0.tgz#56efcea2dfd550b77ceb5ef280cf8c6114ef32db" - integrity sha512-8D1UmbnmjdkvTdYygTW26KZr95Aw0/3gEmMZQWkxIEAgEESVDbwDG8ygRlXSY214x9hFjtKezvfQUp36Ogl75w== +jest-mock@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" + integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== dependencies: - "@jest/types" "^26.5.0" + "@jest/types" "^26.6.2" "@types/node" "*" jest-pnp-resolver@^1.2.2: @@ -2296,220 +2433,224 @@ jest-regex-util@^26.0.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== -jest-resolve-dependencies@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.5.0.tgz#6c4a863685e6c63b225e903c6006a70fb8ecac0a" - integrity sha512-2e3YdS+dlTY00s0CEiMAa7Ap/mPfPaQV7d6Fzp7BQqHXO/2QhXn/yVTxnxR+dOIo/NOh7pqXZTQSn+2iWwPQQA== +jest-resolve-dependencies@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" + integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== dependencies: - "@jest/types" "^26.5.0" + "@jest/types" "^26.6.2" jest-regex-util "^26.0.0" - jest-snapshot "^26.5.0" + jest-snapshot "^26.6.2" -jest-resolve@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.5.0.tgz#31f68344dd88af70f00bc8bb531de6687565c680" - integrity sha512-c34L8Lrw4fFzRiCLzwePziKRfHitjsAnY15ID0e9Se4ISikmZ5T9icLEFAGHnfaxfb+9r8EKdrbg89gjRdrQvw== +jest-resolve@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" + integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== dependencies: - "@jest/types" "^26.5.0" + "@jest/types" "^26.6.2" chalk "^4.0.0" - escalade "^3.1.0" graceful-fs "^4.2.4" jest-pnp-resolver "^1.2.2" - jest-util "^26.5.0" - resolve "^1.17.0" + jest-util "^26.6.2" + read-pkg-up "^7.0.1" + resolve "^1.18.1" slash "^3.0.0" -jest-runner@^26.5.0: - version "26.5.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.5.1.tgz#a56c1e1fbed7470ae69ebd5456ba4d4443c8701f" - integrity sha512-gFHXehvMZD8qwNzaIl2MDFFI99m4kKk06H2xh2u4IkC+tHYIJjE5J175l9cbL3RuU2slfS2m57KZgcPZfbTavQ== +jest-runner@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" + integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== dependencies: - "@jest/console" "^26.5.0" - "@jest/environment" "^26.5.0" - "@jest/test-result" "^26.5.0" - "@jest/types" "^26.5.0" + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" emittery "^0.7.1" exit "^0.1.2" graceful-fs "^4.2.4" - jest-config "^26.5.0" + jest-config "^26.6.3" jest-docblock "^26.0.0" - jest-haste-map "^26.5.0" - jest-leak-detector "^26.5.0" - jest-message-util "^26.5.0" - jest-resolve "^26.5.0" - jest-runtime "^26.5.0" - jest-util "^26.5.0" - jest-worker "^26.5.0" + jest-haste-map "^26.6.2" + jest-leak-detector "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + jest-runtime "^26.6.3" + jest-util "^26.6.2" + jest-worker "^26.6.2" source-map-support "^0.5.6" throat "^5.0.0" -jest-runtime@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.5.0.tgz#c9b3eeb5ead70710ea17f6058df405cac31bb926" - integrity sha512-CujjQWpMcsvSg0L+G3iEz6s7Th5IbiZseAaw/5R7Eb+IfnJdyPdjJ+EoXNV8n07snvW5nZTwV9QIfy6Vjris8A== +jest-runtime@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" + integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== dependencies: - "@jest/console" "^26.5.0" - "@jest/environment" "^26.5.0" - "@jest/fake-timers" "^26.5.0" - "@jest/globals" "^26.5.0" - "@jest/source-map" "^26.5.0" - "@jest/test-result" "^26.5.0" - "@jest/transform" "^26.5.0" - "@jest/types" "^26.5.0" + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/globals" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" "@types/yargs" "^15.0.0" chalk "^4.0.0" + cjs-module-lexer "^0.6.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.2.4" - jest-config "^26.5.0" - jest-haste-map "^26.5.0" - jest-message-util "^26.5.0" - jest-mock "^26.5.0" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" jest-regex-util "^26.0.0" - jest-resolve "^26.5.0" - jest-snapshot "^26.5.0" - jest-util "^26.5.0" - jest-validate "^26.5.0" + jest-resolve "^26.6.2" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" slash "^3.0.0" strip-bom "^4.0.0" - yargs "^16.0.3" + yargs "^15.4.1" -jest-serializer@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.5.0.tgz#f5425cc4c5f6b4b355f854b5f0f23ec6b962bc13" - integrity sha512-+h3Gf5CDRlSLdgTv7y0vPIAoLgX/SI7T4v6hy+TEXMgYbv+ztzbg5PSN6mUXAT/hXYHvZRWm+MaObVfqkhCGxA== +jest-serializer@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" + integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== dependencies: "@types/node" "*" graceful-fs "^4.2.4" -jest-snapshot@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.5.0.tgz#2b76366e2d621775f39733e5764492b2e44b0bcd" - integrity sha512-WTNJef67o7cCvwAe5foVCNqG3MzIW/CyU4FZvMrhBPZsJeXwfBY7kfOlydZigxtcytnvmNE2pqznOfD5EcQgrQ== +jest-snapshot@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" + integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^26.5.0" + "@jest/types" "^26.6.2" "@types/babel__traverse" "^7.0.4" "@types/prettier" "^2.0.0" chalk "^4.0.0" - expect "^26.5.0" + expect "^26.6.2" graceful-fs "^4.2.4" - jest-diff "^26.5.0" + jest-diff "^26.6.2" jest-get-type "^26.3.0" - jest-haste-map "^26.5.0" - jest-matcher-utils "^26.5.0" - jest-message-util "^26.5.0" - jest-resolve "^26.5.0" + jest-haste-map "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" natural-compare "^1.4.0" - pretty-format "^26.5.0" + pretty-format "^26.6.2" semver "^7.3.2" -jest-util@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.5.0.tgz#f4e0fb80cf82db127d68c7c5b2749a427a80b450" - integrity sha512-CSQ0uzE7JdHDCQo3K8jlyWRIF2xNLdpu9nbjo8okGDanaNsF7WonhusFvjOg7QiWn1SThe7wFRh8Jx2ls1Gx4Q== +jest-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== dependencies: - "@jest/types" "^26.5.0" + "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" graceful-fs "^4.2.4" is-ci "^2.0.0" micromatch "^4.0.2" -jest-validate@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.5.0.tgz#6e417ec5066e315752da1350797a89fc5907f97a" - integrity sha512-603+CHUJD4nAZ+tY/A+wu3g8KEcBey2a7YOMU9W8e4u7mCezhaDasw20ITaZHoR2R2MZhThL6jApPSj0GvezrQ== +jest-validate@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" + integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== dependencies: - "@jest/types" "^26.5.0" + "@jest/types" "^26.6.2" camelcase "^6.0.0" chalk "^4.0.0" jest-get-type "^26.3.0" leven "^3.1.0" - pretty-format "^26.5.0" + pretty-format "^26.6.2" -jest-watcher@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.5.0.tgz#3aedd339ee3dfb5801e71ae9a00da08369679317" - integrity sha512-INLKhpc9QbO5zy2HkS1CJUncByrCLFDZQOY30d9ojiuGO02ofL1BygDRDRtFvT/oWSZ8Y0fbkrr1oXU2ay/MqA== +jest-watcher@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" + integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== dependencies: - "@jest/test-result" "^26.5.0" - "@jest/types" "^26.5.0" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^26.5.0" + jest-util "^26.6.2" string-length "^4.0.1" -jest-worker@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.5.0.tgz#87deee86dbbc5f98d9919e0dadf2c40e3152fa30" - integrity sha512-kTw66Dn4ZX7WpjZ7T/SUDgRhapFRKWmisVAF0Rv4Fu8SLFD7eLbqpLvbxVqYhSgaWa7I+bW7pHnbyfNsH6stug== +jest-worker@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== dependencies: "@types/node" "*" merge-stream "^2.0.0" supports-color "^7.0.0" jest@^26.4: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-26.5.0.tgz#d973c13a3843587b89b02dab1fbcd1f3bf111f09" - integrity sha512-yW1QTkdpxVWTV2M5cOwVdEww8dRGqL5bb7FOG3YQoMtf7oReCEawmU0+tOKkZUSfcOymbXmCfdBQLzuwOLCx0w== + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" + integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== dependencies: - "@jest/core" "^26.5.0" + "@jest/core" "^26.6.3" import-local "^3.0.2" - jest-cli "^26.5.0" + jest-cli "^26.6.3" js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + js-yaml@^3.13.1: - version "3.14.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" - integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" esprima "^4.0.0" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - jsdom@^16.4.0: - version "16.4.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" - integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== + version "16.6.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.6.0.tgz#f79b3786682065492a3da6a60a4695da983805ac" + integrity sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg== dependencies: - abab "^2.0.3" - acorn "^7.1.1" + abab "^2.0.5" + acorn "^8.2.4" acorn-globals "^6.0.0" cssom "^0.4.4" - cssstyle "^2.2.0" + cssstyle "^2.3.0" data-urls "^2.0.0" - decimal.js "^10.2.0" + decimal.js "^10.2.1" domexception "^2.0.1" - escodegen "^1.14.1" + escodegen "^2.0.0" + form-data "^3.0.0" html-encoding-sniffer "^2.0.1" - is-potential-custom-element-name "^1.0.0" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" nwsapi "^2.2.0" - parse5 "5.1.1" - request "^2.88.2" - request-promise-native "^1.0.8" - saxes "^5.0.0" + parse5 "6.0.1" + saxes "^5.0.1" symbol-tree "^3.2.4" - tough-cookie "^3.0.1" + tough-cookie "^4.0.0" w3c-hr-time "^1.0.2" w3c-xmlserializer "^2.0.0" webidl-conversions "^6.1.0" whatwg-encoding "^1.0.5" whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - ws "^7.2.3" + whatwg-url "^8.5.0" + ws "^7.4.5" xml-name-validator "^3.0.0" jsesc@^2.5.1: @@ -2517,43 +2658,18 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json3@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" - integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json5@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + version "2.2.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== dependencies: minimist "^1.2.5" -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -2596,6 +2712,11 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -2603,71 +2724,25 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash._baseassign@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" - integrity sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4= +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: - lodash._basecopy "^3.0.0" - lodash.keys "^3.0.0" + p-locate "^5.0.0" -lodash._basecopy@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" - integrity sha1-jaDmqHbPNEwK2KVIghEd08XHyjY= +lodash@^4.7.0: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -lodash._basecreate@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" - integrity sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE= - -lodash._getnative@^3.0.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" - integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= - -lodash._isiterateecall@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" - integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw= - -lodash.create@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" - integrity sha1-1/KEnw29p+BGgruM1yqwIkYd6+c= +log-symbols@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: - lodash._baseassign "^3.0.0" - lodash._basecreate "^3.0.0" - lodash._isiterateecall "^3.0.0" - -lodash.isarguments@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= - -lodash.isarray@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" - integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U= - -lodash.keys@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" - integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo= - dependencies: - lodash._getnative "^3.0.0" - lodash.isarguments "^3.0.0" - lodash.isarray "^3.0.0" - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - -lodash@^4.17.19: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + chalk "^4.1.0" + is-unicode-supported "^0.1.0" lolex@1.3.2: version "1.3.2" @@ -2679,6 +2754,13 @@ lru-cache@2: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" integrity sha1-bUUk6LlV+V1PW1iFHOId1y+06VI= +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + make-dir@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -2730,24 +2812,24 @@ micromatch@^3.1.4: to-regex "^3.0.2" micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== dependencies: braces "^3.0.1" - picomatch "^2.0.5" + picomatch "^2.2.3" -mime-db@1.44.0: - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== +mime-db@1.49.0: + version "1.49.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" + integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== +mime-types@^2.1.12: + version "2.1.32" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" + integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== dependencies: - mime-db "1.44.0" + mime-db "1.49.0" mimic-fn@^2.1.0: version "2.1.0" @@ -2762,7 +2844,7 @@ minimatch@0.3: lru-cache "2" sigmund "~1.0.0" -minimatch@^3.0.2, minimatch@^3.0.4: +minimatch@3.0.4, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -2815,23 +2897,36 @@ mocha@^2.5.3: supports-color "1.2.0" to-iso-string "0.0.2" -mocha@^3.1.2: - version "3.5.3" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.3.tgz#1e0480fe36d2da5858d1eb6acc38418b26eaa20d" - integrity sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg== +mocha@^9.0.0: + version "9.0.3" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.0.3.tgz#128cd6bbd3ee0adcdaef715f357f76ec1e6227c7" + integrity sha512-hnYFrSefHxYS2XFGtN01x8un0EwNu2bzKvhpRFhgoybIvMaOkkL60IVPmkb5h6XDmUl4IMSB+rT5cIO4/4bJgg== dependencies: - browser-stdout "1.3.0" - commander "2.9.0" - debug "2.6.8" - diff "3.2.0" - escape-string-regexp "1.0.5" - glob "7.1.1" - growl "1.9.2" - he "1.1.1" - json3 "3.3.2" - lodash.create "3.1.1" - mkdirp "0.5.1" - supports-color "3.1.2" + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.2" + debug "4.3.1" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.1.7" + growl "1.10.5" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "3.0.4" + ms "2.1.3" + nanoid "3.1.23" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + which "2.0.2" + wide-align "1.1.3" + workerpool "6.1.5" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" mock-require@3.0.3: version "3.0.3" @@ -2856,6 +2951,16 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +nanoid@3.1.23: + version "3.1.23" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" + integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -2894,9 +2999,9 @@ node-modules-regexp@^1.0.0: integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= node-notifier@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.0.tgz#a7eee2d51da6d0f7ff5094bc7108c911240c1620" - integrity sha512-46z7DUmcjoYdaWyXouuFNNfUo6eFa94t23c53c+lG/9Cvauk4a98rAUp9672X5dxGdQmLpPzTxzu8f/OeEPaFA== + version "8.0.2" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" + integrity sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg== dependencies: growly "^1.3.0" is-wsl "^2.2.0" @@ -2905,6 +3010,21 @@ node-notifier@^8.0.0: uuid "^8.3.0" which "^2.0.2" +node-releases@^1.1.71: + version "1.1.73" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" + integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== + +normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -2912,7 +3032,7 @@ normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0: +normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -2936,11 +3056,6 @@ nwsapi@^2.2.0: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" @@ -2950,10 +3065,10 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" - integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== +object-inspect@^1.11.0, object-inspect@^1.9.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" + integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" @@ -2967,13 +3082,13 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.1.tgz#303867a666cdd41936ecdedfb1f8f3e32a478cdd" - integrity sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA== +object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.18.0-next.0" has-symbols "^1.0.1" object-keys "^1.1.1" @@ -3011,9 +3126,9 @@ optionator@^0.8.1: word-wrap "~1.2.3" p-each-series@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" - integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" + integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== p-finally@^1.0.0: version "1.0.0" @@ -3027,6 +3142,13 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -3034,15 +3156,32 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -parse5@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" - integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== pascalcase@^0.1.1: version "0.1.1" @@ -3070,19 +3209,14 @@ path-key@^3.0.0, path-key@^3.1.0: integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picomatch@^2.0.4, picomatch@^2.0.5: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== pirates@^4.0.1: version "4.0.1" @@ -3108,15 +3242,15 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -pretty-format@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.5.0.tgz#3320e4952f8e6918fc8c26c6df7aad9734818ac2" - integrity sha512-NcgRuuTutUJ9+Br4P19DFThpJYnYBiugfRmZEA6pXrUeG+IcMSmppb88rU+iPA+XAJcjTYlCb5Ed6miHg/Qqqw== +pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== dependencies: - "@jest/types" "^26.5.0" + "@jest/types" "^26.6.2" ansi-regex "^5.0.0" ansi-styles "^4.0.0" - react-is "^16.12.0" + react-is "^17.0.1" process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: version "2.0.1" @@ -3133,14 +3267,14 @@ promises-aplus-tests@^2.1.2: underscore "~1.8.3" prompts@^2.0.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" - integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== + version "2.4.1" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" + integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ== dependencies: kleur "^3.0.3" - sisteransi "^1.0.4" + sisteransi "^1.0.5" -psl@^1.1.28: +psl@^1.1.33: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== @@ -3153,20 +3287,41 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@^2.1.0, punycode@^2.1.1: +punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" -react-is@^16.12.0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" readable-stream@^2.3.5: version "2.3.7" @@ -3181,6 +3336,13 @@ readable-stream@^2.3.5: string_decoder "~1.1.1" util-deprecate "~1.0.1" +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -3195,9 +3357,9 @@ remove-trailing-separator@^1.0.1: integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== repeat-string@^1.6.1: version "1.6.1" @@ -3209,53 +3371,16 @@ replace-ext@^1.0.0: resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a" integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw== -request-promise-core@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" - integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== - dependencies: - lodash "^4.17.19" - -request-promise-native@^1.0.8: - version "1.0.9" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" - integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== - dependencies: - request-promise-core "1.1.4" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.88.2: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -3273,11 +3398,12 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.17.0, resolve@^1.3.2: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== +resolve@^1.10.0, resolve@^1.18.1: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== dependencies: + is-core-module "^2.2.0" path-parse "^1.0.6" ret@~0.1.10: @@ -3297,7 +3423,7 @@ rsvp@^4.8.4: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== -safe-buffer@^5.0.1, safe-buffer@^5.1.2: +safe-buffer@^5.1.0, safe-buffer@^5.1.2: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -3314,7 +3440,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -3344,14 +3470,14 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -saxes@^5.0.0: +saxes@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== dependencies: xmlchars "^2.2.0" -semver@^5.4.1, semver@^5.5.0: +"semver@2 || 3 || 4 || 5", semver@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -3362,9 +3488,23 @@ semver@^6.0.0, semver@^6.3.0: integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== semver@^7.3.2: - version "7.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +serialize-javascript@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" @@ -3405,6 +3545,15 @@ shellwords@^0.1.1: resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + sigmund@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" @@ -3425,7 +3574,7 @@ sinon@^1.10.3: samsam "1.1.2" util ">=0.10.3 <1" -sisteransi@^1.0.4: +sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== @@ -3485,9 +3634,9 @@ source-map-support@^0.5.6: source-map "^0.6.0" source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.6: version "0.5.7" @@ -3504,6 +3653,32 @@ source-map@^0.7.3: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#8a595135def9592bda69709474f1cbeea7c2467f" + integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ== + split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -3516,25 +3691,10 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - stack-utils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593" - integrity sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg== + version "2.0.3" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" + integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== dependencies: escape-string-regexp "^2.0.0" @@ -3546,43 +3706,46 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - string-length@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" - integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: char-regex "^1.0.2" strip-ansi "^6.0.0" +"string-width@^1.0.2 || 2": + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + string-width@^4.1.0, string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + version "4.2.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" + integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string.prototype.trimend@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.5" -string.prototype.trimstart@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.5" string_decoder@~1.1.1: version "1.1.1" @@ -3591,6 +3754,13 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + strip-ansi@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" @@ -3613,17 +3783,22 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +strip-json-comments@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + supports-color@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e" integrity sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4= -supports-color@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" - integrity sha1-cqJiiU2dQIuVbKBf83su2KbiotU= +supports-color@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: - has-flag "^1.0.0" + has-flag "^4.0.0" supports-color@^5.3.0: version "5.5.0" @@ -3640,9 +3815,9 @@ supports-color@^7.0.0, supports-color@^7.1.0: has-flag "^4.0.0" supports-hyperlinks@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" - integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== + version "2.2.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" + integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== dependencies: has-flag "^4.0.0" supports-color "^7.0.0" @@ -3721,46 +3896,26 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -tough-cookie@^2.3.3, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== +tough-cookie@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" + integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== dependencies: - psl "^1.1.28" + psl "^1.1.33" punycode "^2.1.1" + universalify "^0.1.2" -tough-cookie@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" - integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== - dependencies: - ip-regex "^2.1.0" - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" - integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== - dependencies: - punycode "^2.1.1" - -tslib@^2.1.0: +tr46@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" - integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== dependencies: - safe-buffer "^5.0.1" + punycode "^2.1.1" -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +tslib@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" + integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== type-check@~0.3.2: version "0.3.2" @@ -3774,10 +3929,20 @@ type-detect@4.0.8: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" - integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== typedarray-to-buffer@^3.1.5: version "3.1.5" @@ -3786,10 +3951,20 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.3.tgz#39062d8019912d43726298f09493d598048c1ce3" - integrity sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw== +typescript@~4.3.4: + version "4.3.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" + integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== + +unbox-primitive@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" underscore@~1.8.3: version "1.8.3" @@ -3806,6 +3981,11 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" +universalify@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -3814,13 +3994,6 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -uri-js@^4.2.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" - integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== - dependencies: - punycode "^2.1.0" - urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" @@ -3837,9 +4010,9 @@ util-deprecate@~1.0.1: integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= "util@>=0.10.3 <1": - version "0.12.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.3.tgz#971bb0292d2cc0c892dab7c6a5d37c2bec707888" - integrity sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog== + version "0.12.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" + integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== dependencies: inherits "^2.0.3" is-arguments "^1.0.4" @@ -3848,33 +4021,27 @@ util-deprecate@~1.0.1: safe-buffer "^5.1.2" which-typed-array "^1.1.2" -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - uuid@^8.3.0: - version "8.3.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.1.tgz#2ba2e6ca000da60fce5a196954ab241131e05a31" - integrity sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg== + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -v8-to-istanbul@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-5.0.1.tgz#0608f5b49a481458625edb058488607f25498ba5" - integrity sha512-mbDNjuDajqYe3TXFk5qxcQy8L1msXNE37WTlLoqqpBfRsimbNcrlhQlDPntmECEcUvdC+AQ8CyMMf6EUx1r74Q== +v8-to-istanbul@^7.0.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1" + integrity sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" source-map "^0.7.3" -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" vinyl-sourcemaps-apply@^0.2.0: version "0.2.1" @@ -3938,27 +4105,51 @@ whatwg-mimetype@^2.3.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== -whatwg-url@^8.0.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.3.0.tgz#d1e11e565334486cdb280d3101b9c3fd1c867582" - integrity sha512-BQRf/ej5Rp3+n7k0grQXZj9a1cHtsp4lqj01p59xBWFKdezR8sO37XnpafwNqiFac/v2Il12EIMjX/Y4VZtT8Q== +whatwg-url@^8.0.0, whatwg-url@^8.5.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== dependencies: - lodash.sortby "^4.7.0" - tr46 "^2.0.2" + lodash "^4.7.0" + tr46 "^2.1.0" webidl-conversions "^6.1.0" +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + which-typed-array@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.2.tgz#e5f98e56bda93e3dac196b01d47c1156679c00b2" - integrity sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ== + version "1.1.4" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff" + integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA== dependencies: available-typed-arrays "^1.0.2" - es-abstract "^1.17.5" + call-bind "^1.0.0" + es-abstract "^1.18.0-next.1" foreach "^2.0.5" function-bind "^1.1.1" has-symbols "^1.0.1" is-typed-array "^1.1.3" +which@2.0.2, which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -3966,18 +4157,32 @@ which@^1.2.9: dependencies: isexe "^2.0.0" -which@^2.0.1, which@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== +wide-align@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== dependencies: - isexe "^2.0.0" + string-width "^1.0.2 || 2" word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +workerpool@6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.5.tgz#0f7cf076b6215fd7e1da903ff6f22ddd1886b581" + integrity sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw== + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -4002,10 +4207,10 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@^7.2.3: - version "7.3.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" - integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== +ws@^7.4.5: + version "7.5.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" + integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== xml-name-validator@^3.0.0: version "3.0.0" @@ -4017,25 +4222,80 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -y18n@^5.0.1: - version "5.0.2" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.2.tgz#48218df5da2731b4403115c39a1af709c873f829" - integrity sha512-CkwaeZw6dQgqgPGeTWKMXCRmMcBgETFlTml1+ZOO+q7kGst8NREJ+eWwFNPVUQ4QGdAaklbqCZHH6Zuep1RjiA== +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== -yargs-parser@^20.0.0: - version "20.2.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.1.tgz#28f3773c546cdd8a69ddae68116b48a5da328e77" - integrity sha512-yYsjuSkjbLMBp16eaOt7/siKTjNVjMm3SoJnIg3sEh/JsvqVVDyjRKmaJV4cl+lNIgq6QEco2i3gDebJl7/vLA== +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yargs@^16.0.3: - version "16.0.3" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.0.3.tgz#7a919b9e43c90f80d4a142a89795e85399a7e54c" - integrity sha512-6+nLw8xa9uK1BOEOykaiYAJVh6/CjxWXK/q9b5FpRgNslt8s22F2xMBqVIKgCRjNgGvGPBy8Vog7WN7yh4amtA== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== dependencies: - cliui "^7.0.0" - escalade "^3.0.2" + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" get-caller-file "^2.0.5" require-directory "^2.1.1" string-width "^4.2.0" - y18n "^5.0.1" - yargs-parser "^20.0.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^15.4.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/renovate.json b/renovate.json index a60fcbd7dc..48c89222d7 100644 --- a/renovate.json +++ b/renovate.json @@ -1,84 +1,136 @@ { - "pinVersions": false, - "semanticCommits": true, - "semanticPrefix": "build", - "commitMessage": "{{semanticPrefix}} update {{#if groupName}}{{{groupName}}} packages{{else}}{{{depName}}} to version {{{newVersion}}}{{/if}}", - "separateMajorMinor": false, - "prHourlyLimit": 2, - "labels": [ - "target: minor", - "comp: build & ci", - "action: merge" - ], - "timezone": "America/Tijuana", - "lockFileMaintenance": { - "enabled": true + "pinVersions": false, + "semanticCommits": true, + "semanticPrefix": "build", + "separateMajorMinor": false, + "prHourlyLimit": 2, + "labels": [ + "target: minor", + "comp: build & ci", + "action: review" + ], + "timezone": "America/Tijuana", + "lockFileMaintenance": { + "enabled": true + }, + "schedule": [ + "after 10pm every weekday", + "before 4am every weekday", + "every weekend" + ], + "baseBranches": [ + "master" + ], + "ignoreDeps": [ + "@babel/core", + "@babel/generator", + "@babel/parser", + "@babel/preset-env", + "@babel/template", + "@babel/traverse", + "@babel/types", + "@types/babel__core", + "@types/babel__generator", + "@types/babel__template", + "@types/babel__traverse", + "@types/node", + "@types/selenium-webdriver", + "angular-1.5", + "angular-1.6", + "angular-1.7", + "angular-1.8", + "angular-mocks-1.5", + "angular-mocks-1.6", + "angular-mocks-1.7", + "angular-mocks-1.8", + "puppeteer", + "rollup", + "selenium-webdriver", + "watchr" + ], + "packageFiles": [ + "WORKSPACE", + "integration/bazel/WORKSPACE", + "package.json", + "packages/**/package.json", + "aio/package.json" + ], + "packageRules": [ + { + "packagePatterns": [ + "^@angular/.*", + "^@angular-devkit/.*", + "^@schematics/.*" + ], + "groupName": "angular", + "pinVersions": false }, - "schedule": [ - "after 10pm every weekday", - "before 4am every weekday", - "every weekend" - ], - "baseBranches": [ - "master" - ], - "ignoreDeps": [ - "@types/node", - "@microsoft/api-extractor" - ], - "packageFiles": [ - "WORKSPACE", - "integration/bazel/WORKSPACE", - "package.json", - "packages/**/package.json", - "tools/ts-api-guardian/package.json", - "aio/package.json" - ], - "packageRules": [ - { - "packagePatterns": [ - "^@angular/.*", - "^@angular-devkit/.*", - "^@schematics/.*" - ], - "groupName": "Angular", - "pinVersions": false - }, - { - "packagePatterns": [ - "^@babel/.*" - ], - "groupName": "Babel", - "pinVersions": false - }, - { - "packagePatterns": [ - "^@bazel/.*", - "^build_bazel.*", - "bazel_toolchains" - ], - "groupName": "Bazel", - "pinVersions": false - }, - { - "packageNames": [ - "typescript", - "rxjs", - "tslib" - ], - "separateMinorPatch": true - }, - { - "packageNames": [ - "typescript", - "rxjs", - "tslib" - ], - "updateTypes": [ - "minor", - "major" - ], - "enabled": false - } - ] - } + { + "packagePatterns": [ + "^@babel/.*" + ], + "groupName": "babel", + "pinVersions": false + }, + { + "packagePatterns": [ + "^@bazel/.*", + "^build_bazel.*" + ], + "groupName": "bazel", + "pinVersions": false + }, + { + "packagePatterns": [ + "^remark-.*", + "remark" + ], + "groupName": "remark", + "pinVersions": false + }, + { + "packageNames": [ + "typescript", + "rxjs", + "tslib" + ], + "separateMinorPatch": true + }, + { + "packageNames": [ + "typescript", + "rxjs", + "tslib" + ], + "updateTypes": [ + "minor", + "major" + ], + "enabled": false + }, + { + "matchCurrentVersion": "0.0.0-PLACEHOLDER", + "enabled": false + }, + { + "excludePackagePatterns": [ + "^@angular/.*", + "^@angular-devkit/.*", + "^@schematics/.*" + ], + "matchPackagePatterns": [ + "*" + ], + "matchUpdateTypes": [ + "minor", + "patch" + ], + "matchCurrentVersion": ">=1", + "groupName": "all non-major dependencies", + "groupSlug": "all-minor-patch", + "schedule": [ + "after 1am on Thursday" + ] + } + ] +} diff --git a/scripts/build/angular-in-memory-web-api.js b/scripts/build/angular-in-memory-web-api.js index db0b247217..0e8ac2ddb4 100644 --- a/scripts/build/angular-in-memory-web-api.js +++ b/scripts/build/angular-in-memory-web-api.js @@ -8,29 +8,47 @@ 'use strict'; -const {chmod, cp, mkdir, rm} = require('shelljs'); +const {resolve} = require('path'); +const {chmod, cp, mkdir, rm, test} = require('shelljs'); const {baseDir, bazelBin, bazelCmd, exec, scriptPath} = require('./package-builder'); + +module.exports = { + buildAngularInMemoryWebApiPackage, +}; + /** - * Build the `angular-in-memory-web-api` npm package and copy it to `dist/packages-dist/misc`. + * Build the `angular-in-memory-web-api` npm package and copy it to `destDir` for other + * scripts/tests to use. + * + * NOTE: The `angular-in-memory-web-api` package is not built as part of `package-builder`'s + * `buildTargetPackages()` nor is it copied into the same directory as the Angular packages + * (e.g. `dist/packages-dist/`) despite its source's being inside `packages/`, because it is + * not published to npm under the `@angular` scope (as happens for the rest of the packages). + * + * @param {string} destDir Path to the output directory into which we copy the npm package. + * This path should either be absolute or relative to the project root. */ -function buildAngularInMemoryWebAPIPackage() { +function buildAngularInMemoryWebApiPackage(destDir) { console.info('##############################'); console.info(`${scriptPath}:`); console.info(' Building angular-in-memory-web-api npm package'); console.info('##############################'); exec(`${bazelCmd} build //packages/misc/angular-in-memory-web-api:npm_package`); + // Create the output directory. + const absDestDir = resolve(baseDir, destDir); + if (!test('-d', absDestDir)) { + mkdir('-p', absDestDir); + } + const buildOutputDir = `${bazelBin}/packages/misc/angular-in-memory-web-api/npm_package`; - const distTargetDir = `${baseDir}/dist/packages-dist/misc/angular-in-memory-web-api`; + const distTargetDir = `${absDestDir}/angular-in-memory-web-api`; console.info(`# Copy artifacts to ${distTargetDir}`); - mkdir('-p', distTargetDir); rm('-rf', distTargetDir); cp('-R', buildOutputDir, distTargetDir); chmod('-R', 'u+w', distTargetDir); console.info(''); } - -module.exports = {buildAngularInMemoryWebAPIPackage}; diff --git a/scripts/build/build-ivy-npm-packages.js b/scripts/build/build-ivy-npm-packages.js index 2a013564d0..64870240f9 100755 --- a/scripts/build/build-ivy-npm-packages.js +++ b/scripts/build/build-ivy-npm-packages.js @@ -9,13 +9,24 @@ 'use strict'; -const {buildZoneJsPackage} = require('./zone-js-builder'); +const {buildAngularInMemoryWebApiPackage} = require('./angular-in-memory-web-api'); const {buildTargetPackages} = require('./package-builder'); +const {buildZoneJsPackage} = require('./zone-js-builder'); // Build the ivy packages into `dist/packages-dist-ivy-aot/`. buildTargetPackages('dist/packages-dist-ivy-aot', true, 'Ivy AOT'); +// Build the `angular-in-memory-web-api` npm package into +// `dist/angular-in-memory-web-api-dist-ivy-aot/`, because it might be needed by other +// scripts/targets. +// +// NOTE: +// The `-ivy-aot` suffix is only used to differentiate from the packages built by the +// `build-packages-dist.js` script, so that there is no conflict when persisting them to the +// workspace on CI. +buildAngularInMemoryWebApiPackage('dist/angular-in-memory-web-api-dist-ivy-aot'); + // Build the `zone.js` npm package into `dist/zone.js-dist-ivy-aot/`, because it might be needed by // other scripts/tests. // diff --git a/scripts/build/build-packages-dist.js b/scripts/build/build-packages-dist.js index 8ecda36989..c0f7c641cc 100755 --- a/scripts/build/build-packages-dist.js +++ b/scripts/build/build-packages-dist.js @@ -9,22 +9,18 @@ 'use strict'; -const {buildZoneJsPackage} = require('./zone-js-builder'); -const {buildDevInfraPackage} = require('./dev-infra-builder'); +const {buildAngularInMemoryWebApiPackage} = require('./angular-in-memory-web-api'); const {buildTargetPackages} = require('./package-builder'); -const {buildAngularInMemoryWebAPIPackage} = require('./angular-in-memory-web-api'); +const {buildZoneJsPackage} = require('./zone-js-builder'); // Build the legacy (view engine) npm packages into `dist/packages-dist/`. buildTargetPackages('dist/packages-dist', false, 'Production'); +// Build the `angular-in-memory-web-api` npm package into `dist/angular-in-memory-web-api-dist/`, +// because it might be needed by other scripts/targets. +buildAngularInMemoryWebApiPackage('dist/angular-in-memory-web-api-dist'); + // Build the `zone.js` npm package into `dist/zone.js-dist/`, because it might be needed by other // scripts/tests. buildZoneJsPackage('dist/zone.js-dist'); - -// Build the `angular-dev-infra` npm package into `dist/packages-dist/@angular/dev-infra-private` -buildDevInfraPackage(); - -// Build the `angular-in-memory-web-api` npm package into -// `dist/packages-dist/misc/angular-in-memory-web-api` -buildAngularInMemoryWebAPIPackage(); diff --git a/scripts/build/dev-infra-builder.js b/scripts/build/dev-infra-builder.js deleted file mode 100644 index 625f8aaacf..0000000000 --- a/scripts/build/dev-infra-builder.js +++ /dev/null @@ -1,36 +0,0 @@ -/** - * @license - * 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 - */ - -'use strict'; - -const {chmod, cp, mkdir, rm} = require('shelljs'); -const {baseDir, bazelBin, bazelCmd, exec, scriptPath} = require('./package-builder'); - -/** - * Build the `@angular/dev-infra-private` npm package and copies it to `dist/packages-dist`. - */ -function buildDevInfraPackage() { - console.info('##############################'); - console.info(`${scriptPath}:`); - console.info(' Building @angular/dev-infra-private npm package'); - console.info('##############################'); - exec(`${bazelCmd} build //dev-infra:npm_package`); - - const buildOutputDir = `${bazelBin}/dev-infra/npm_package`; - const distTargetDir = `${baseDir}/dist/packages-dist/dev-infra-private`; - - console.info(`# Copy artifacts to ${distTargetDir}`); - mkdir('-p', distTargetDir); - rm('-rf', distTargetDir); - cp('-R', buildOutputDir, distTargetDir); - chmod('-R', 'u+w', distTargetDir); - - console.info(''); -} - -module.exports = {buildDevInfraPackage}; diff --git a/scripts/build/package-builder.js b/scripts/build/package-builder.js index 530a286f67..9081eb70b4 100644 --- a/scripts/build/package-builder.js +++ b/scripts/build/package-builder.js @@ -58,14 +58,14 @@ module.exports = { /** * Build the Angular packages. * - * @param {string} destPath Path to the output directory into which we copy the npm packages. + * @param {string} destDir Path to the output directory into which we copy the npm packages. * This path should either be absolute or relative to the project root. * @param {boolean} enableIvy True, if Ivy should be used. * @param {string} description Human-readable description of the build. * @param {boolean?} isRelease True, if the build should be stamped for a release. * @returns {Array<{name: string, outputPath: string}} A list of packages built. */ -function buildTargetPackages(destPath, enableIvy, description, isRelease = false) { +function buildTargetPackages(destDir, enableIvy, description, isRelease = false) { console.info('##################################'); console.info(`${scriptPath}:`); console.info(' Building @angular/* npm packages'); @@ -81,21 +81,33 @@ function buildTargetPackages(destPath, enableIvy, description, isRelease = false bazelCmd} query --output=label "attr('tags', '\\[.*release-with-framework.*\\]', //packages/...) intersect kind('ng_package|pkg_npm', //packages/...)"`; const targets = exec(getTargetsCmd, true).split(/\r?\n/); + // If we are in release mode, run `bazel clean` to ensure the execroot and action cache + // are not populated. This is necessary because targets using `npm_package` rely on + // workspace status variables for the package version. Such NPM package targets are not + // rebuilt if only the workspace status variables change. This could result in accidental + // re-use of previously built package output with a different `version` in the `package.json`. + if (isRelease) { + console.info('Building in release mode. Resetting the Bazel execroot and action cache..'); + exec(`${bazelCmd} clean`); + } + // Use either `--config=snapshot` or `--config=release` so that builds are created with the // correct embedded version info. exec(`${bazelCmd} build --config=${isRelease ? 'release' : 'snapshot'} --config=${ enableIvy ? 'ivy' : 'view-engine'} ${targets.join(' ')}`); // Create the output directory. - const absDestPath = resolve(baseDir, destPath); - if (!test('-d', absDestPath)) mkdir('-p', absDestPath); + const absDestDir = resolve(baseDir, destDir); + if (!test('-d', absDestDir)) { + mkdir('-p', absDestDir); + } targets.forEach(target => { const pkg = target.replace(/\/\/packages\/(.*):npm_package/, '$1'); // Skip any that don't have an "npm_package" target. const srcDir = `${bazelBin}/packages/${pkg}/npm_package`; - const destDir = `${absDestPath}/${pkg}`; + const destDir = `${absDestDir}/${pkg}`; if (test('-d', srcDir)) { console.info(`# Copy artifacts to ${destDir}`); diff --git a/scripts/build/zone-js-builder.js b/scripts/build/zone-js-builder.js index 41108f7088..604b2eb7b0 100644 --- a/scripts/build/zone-js-builder.js +++ b/scripts/build/zone-js-builder.js @@ -20,17 +20,17 @@ module.exports = { /** * Build the `zone.js` npm package into `dist/bin/packages/zone.js/npm_package/` and copy it to - * `destPath` for other scripts/tests to use. + * `destDir` for other scripts/tests to use. * * NOTE: The `zone.js` package is not built as part of `package-builder`'s `buildTargetPackages()` * nor is it copied into the same directory as the Angular packages (e.g. * `dist/packages-dist/`) despite its source's being inside `packages/`, because it is not * published to npm under the `@angular` scope (as happens for the rest of the packages). * - * @param {string} destPath Path to the output directory into which we copy the npm package. + * @param {string} destDir Path to the output directory into which we copy the npm package. * This path should either be absolute or relative to the project root. */ -function buildZoneJsPackage(destPath) { +function buildZoneJsPackage(destDir) { console.info('##############################'); console.info(`${scriptPath}:`); console.info(' Building zone.js npm package'); @@ -38,22 +38,24 @@ function buildZoneJsPackage(destPath) { exec(`${bazelCmd} run //packages/zone.js:npm_package.pack`); // Create the output directory. - const absDestPath = resolve(baseDir, destPath); - if (!test('-d', absDestPath)) mkdir('-p', absDestPath); + const absDestDir = resolve(baseDir, destDir); + if (!test('-d', absDestDir)) { + mkdir('-p', absDestDir); + } - // Copy artifacts to `destPath`, so they can be easier persisted on CI and used by non-bazel + // Copy artifacts to `destDir`, so they can be easier persisted on CI and used by non-bazel // scripts/tests. const buildOutputDir = `${bazelBin}/packages/zone.js/npm_package`; - const distTargetDir = `${absDestPath}/zone.js`; + const distTargetDir = `${absDestDir}/zone.js`; console.info(`# Copy npm_package artifacts to ${distTargetDir}`); rm('-rf', distTargetDir); cp('-R', buildOutputDir, distTargetDir); chmod('-R', 'u+w', distTargetDir); - // Copy `zone.js.tgz` to `destPath`, so we can test + // Copy `zone.js.tgz` to `destDir`, so we can test // the archive generated by the `npm_package.pack` rule. - const distArchiveTargetDir = `${absDestPath}/archive`; + const distArchiveTargetDir = `${absDestDir}/archive`; console.info(`# Copy npm_package archive file to ${distArchiveTargetDir}`); rm('-rf', distArchiveTargetDir); mkdir('-p', distArchiveTargetDir); diff --git a/scripts/ci/update-deps-to-dist-packages.js b/scripts/ci/update-framework-deps-to-dist-packages.js similarity index 89% rename from scripts/ci/update-deps-to-dist-packages.js rename to scripts/ci/update-framework-deps-to-dist-packages.js index 022bf8ab7b..6f96714d8b 100644 --- a/scripts/ci/update-deps-to-dist-packages.js +++ b/scripts/ci/update-framework-deps-to-dist-packages.js @@ -29,8 +29,9 @@ const updated = []; const skipped = []; function updateDeps(dependencies) { for (const packageName of Object.keys(dependencies)) { - // We're only interested to update packages in the @angular scope - if (!packageName.startsWith('@angular/')) { + // We're only interested to update packages in the `@angular` scope. The shared dev-infra + // package is not updated as it's not a package that is part of the Angular framework. + if (!packageName.startsWith('@angular/') || packageName === '@angular/dev-infra-private') { continue; } diff --git a/scripts/puppeteer-chromedriver-versions.js b/scripts/puppeteer-chromedriver-versions.js deleted file mode 100644 index 1d34981bd4..0000000000 --- a/scripts/puppeteer-chromedriver-versions.js +++ /dev/null @@ -1,33 +0,0 @@ -/** - * @license - * 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 - */ - - -// Mapping of puppeteer releases to their default Chrome version -// derived from https://github.com/puppeteer/puppeteer/blob/master/docs/api.md. -// The puppeteer package.json file contains the compatible Chrome revision such as -// "chromium_revision": "722234" but this does not map easily to the Chrome version -// so we use this mapping here instead. -module.exports = { - '5.4.1': '87.0.4280.0', - '5.3.1': '86.0.4240.0', - '5.2.1': '85.0.4182.0', - '5.1.0': '84.0.4147.0', - '3.3.0': '83.0.4103.0', - '3.2.0': '83.0.4103.0', - '3.1.0': '83.0.4103.0', - '3.0.0': '81.0.4044.0', - '2.1.1': '80.0.3987.0', - '2.1.0': '80.0.3987.0', - '2.0.0': '79.0.3942.0', - '1.20.0': '78.0.3882.0', - '1.19.0': '77.0.3803.0', - '1.17.0': '76.0.3803.0', - '1.15.0': '75.0.3765.0', - '1.13.0': '74.0.3723.0', - '1.12.2': '73.0.3679.0', -}; diff --git a/scripts/release/publish-latest b/scripts/release/publish-latest index 57b2d34273..3a82453361 100755 --- a/scripts/release/publish-latest +++ b/scripts/release/publish-latest @@ -20,5 +20,5 @@ $BAZEL build --config=release $NPM_PACKAGE_LABELS # publish all packages in sequence to make it easier to spot any errors or warnings for packageLabel in $NPM_PACKAGE_LABELS; do echo "publishing $packageLabel" - $BAZEL run --config=release -- ${packageLabel}.publish --access public --tag latest + $BAZEL run --config=release -- ${packageLabel}.publish --access public --tag latest --registry https://wombat-dressing-room.appspot.com done diff --git a/scripts/release/publish-next b/scripts/release/publish-next index 5f49d1b79e..d7d95c4474 100755 --- a/scripts/release/publish-next +++ b/scripts/release/publish-next @@ -20,5 +20,5 @@ $BAZEL build --config=release $NPM_PACKAGE_LABELS # publish all packages in sequence to make it easier to spot any errors or warnings for packageLabel in $NPM_PACKAGE_LABELS; do echo "publishing $packageLabel" - $BAZEL run --config=release -- ${packageLabel}.publish --access public --tag next + $BAZEL run --config=release -- ${packageLabel}.publish --access public --tag next --registry https://wombat-dressing-room.appspot.com done diff --git a/test-main.js b/test-main.js index b935f6bf39..6e8ca29aa7 100644 --- a/test-main.js +++ b/test-main.js @@ -9,7 +9,7 @@ // Tun on full stack traces in errors to help debugging Error.stackTraceLimit = Infinity; -jasmine.DEFAULT_TIMEOUT_INTERVAL = 100; +jasmine.DEFAULT_TIMEOUT_INTERVAL = 15000; // Cancel Karma's synchronous start, // we will call `__karma__.start()` later, once all the specs are loaded. @@ -134,42 +134,6 @@ Promise function loadCustomElementsPolyfills() { - var loadedPromise = Promise.resolve(); - - // The custom elements polyfill relies on `MutationObserver`. - if (!window.MutationObserver) { - loadedPromise = loadedPromise - .then(function() { - return System.import('node_modules/mutation-observer/index.js'); - }) - .then(function(MutationObserver) { - window.MutationObserver = MutationObserver; - }); - } - - // The custom elements polyfill relies on `Object.setPrototypeOf()`. - if (!Object.setPrototypeOf) { - var getDescriptor = function getDescriptor(obj, prop) { - var descriptor; - while (obj && !descriptor) { - descriptor = Object.getOwnPropertyDescriptor(obj, prop); - obj = Object.getPrototypeOf(obj); - } - return descriptor || {}; - }; - var setPrototypeOf = function setPrototypeOf(obj, proto) { - for (var prop in proto) { - if (!obj.hasOwnProperty(prop)) { - Object.defineProperty(obj, prop, getDescriptor(proto, prop)); - } - } - return obj; - }; - - Object.defineProperty(setPrototypeOf, '$$shimmed', {value: true}); - Object.setPrototypeOf = setPrototypeOf; - } - // The custom elements polyfill will patch properties and methods on `(HTML)Element` and `Node` // (among others), including `(HTML)Element#innerHTML` and `Node#removeChild()`: // https://github.com/webcomponents/custom-elements/blob/4f7072c0dbda4beb505d16967acfffd33337b325/src/Patch/Element.js#L28-L73 @@ -209,46 +173,39 @@ function loadCustomElementsPolyfills() { // Allow ES5 functions as custom element constructors. 'node_modules/@webcomponents/custom-elements/src/native-shim.js'; - loadedPromise = loadedPromise - .then(function() { - return System.import(polyfillPath); - }) - .then(function() { - // `packages/compiler/test/schema/schema_extractor.ts` relies on - // `HTMLElement.name`, but custom element polyfills will replace - // `HTMLElement` with an anonymous function. - Object.defineProperty(HTMLElement, 'name', {value: 'HTMLElement'}); + return System.import(polyfillPath).then(function() { + // `packages/compiler/test/schema/schema_extractor.ts` relies on + // `HTMLElement.name`, but custom element polyfills will replace + // `HTMLElement` with an anonymous function. + Object.defineProperty(HTMLElement, 'name', {value: 'HTMLElement'}); - // Create helper functions on `window` for patching/restoring - // properties/methods. - Object.keys(patchConfig).forEach(function(prop) { - var patchMethod = '$$patch_' + prop; - var restoreMethod = '$$restore_' + prop; + // Create helper functions on `window` for patching/restoring + // properties/methods. + Object.keys(patchConfig).forEach(function(prop) { + var patchMethod = '$$patch_' + prop; + var restoreMethod = '$$restore_' + prop; - if (!patchTargets[prop]) { - // No patching detected. Create no-op functions. - window[patchMethod] = window[restoreMethod] = function() {}; - } else { - var patchTarget = patchTargets[prop]; - var originalDescriptor = originalDescriptors[prop]; - var patchedDescriptor = - Object.getOwnPropertyDescriptor(patchTarget, prop); + if (!patchTargets[prop]) { + // No patching detected. Create no-op functions. + window[patchMethod] = window[restoreMethod] = function() {}; + } else { + var patchTarget = patchTargets[prop]; + var originalDescriptor = originalDescriptors[prop]; + var patchedDescriptor = Object.getOwnPropertyDescriptor(patchTarget, prop); - window[patchMethod] = function() { - Object.defineProperty(patchTarget, prop, patchedDescriptor); - }; - window[restoreMethod] = function() { - Object.defineProperty(patchTarget, prop, originalDescriptor); - }; + window[patchMethod] = function() { + Object.defineProperty(patchTarget, prop, patchedDescriptor); + }; + window[restoreMethod] = function() { + Object.defineProperty(patchTarget, prop, originalDescriptor); + }; - // Restore `prop`. The patch will be manually applied only during the - // `@angular/elements` tests that need it. - window[restoreMethod](); - } - }); - }); - - return loadedPromise; + // Restore `prop`. The patch will be manually applied only during the + // `@angular/elements` tests that need it. + window[restoreMethod](); + } + }); + }); } function onlySpecFiles(path) { diff --git a/third_party/shims_for_IE.js b/third_party/shims_for_internal_tests.js similarity index 94% rename from third_party/shims_for_IE.js rename to third_party/shims_for_internal_tests.js index 47317a85b8..974e98845c 100644 --- a/third_party/shims_for_IE.js +++ b/third_party/shims_for_internal_tests.js @@ -1,95 +1,6 @@ -// This file is used for internal testing with Karma only, it should not be used in real applications. +// IMPORTANT: this file is used for internal testing with Karma only, it **must not** be used in real applications. -// function.name (all IE) -/*! @source https://stackoverflow.com/questions/6903762/function-name-not-supported-in-ie*/ -if (!Object.hasOwnProperty('name')) { - Object.defineProperty(Function.prototype, 'name', { - get: function() { - var matches = this.toString().match(/^\s*function\s*((?![0-9])[a-zA-Z0-9_$]*)\s*\(/); - var name = matches && matches.length > 1 ? matches[1] : ""; - // For better performance only parse once, and then cache the - // result through a new accessor for repeated access. - Object.defineProperty(this, 'name', {value: name}); - return name; - } - }); -} - -// URL polyfill for SystemJS (all IE) -/*! @source https://github.com/ModuleLoader/es6-module-loader/blob/master/src/url-polyfill.js*/ -// from https://gist.github.com/Yaffle/1088850 -(function(global) { - function URLPolyfill(url, baseURL) { - if (typeof url != 'string') { - throw new TypeError('URL must be a string'); - } - var m = String(url).replace(/^\s+|\s+$/g, "").match(/^([^:\/?#]+:)?(?:\/\/(?:([^:@\/?#]*)(?::([^:@\/?#]*))?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/); - if (!m) { - throw new RangeError(); - } - var protocol = m[1] || ""; - var username = m[2] || ""; - var password = m[3] || ""; - var host = m[4] || ""; - var hostname = m[5] || ""; - var port = m[6] || ""; - var pathname = m[7] || ""; - var search = m[8] || ""; - var hash = m[9] || ""; - if (baseURL !== undefined) { - var base = baseURL instanceof URLPolyfill ? baseURL : new URLPolyfill(baseURL); - var flag = protocol === "" && host === "" && username === ""; - if (flag && pathname === "" && search === "") { - search = base.search; - } - if (flag && pathname.charAt(0) !== "/") { - pathname = (pathname !== "" ? (((base.host !== "" || base.username !== "") && base.pathname === "" ? "/" : "") + base.pathname.slice(0, base.pathname.lastIndexOf("/") + 1) + pathname) : base.pathname); - } - // dot segments removal - var output = []; - pathname.replace(/^(\.\.?(\/|$))+/, "") - .replace(/\/(\.(\/|$))+/g, "/") - .replace(/\/\.\.$/, "/../") - .replace(/\/?[^\/]*/g, function (p) { - if (p === "/..") { - output.pop(); - } else { - output.push(p); - } - }); - pathname = output.join("").replace(/^\//, pathname.charAt(0) === "/" ? "/" : ""); - if (flag) { - port = base.port; - hostname = base.hostname; - host = base.host; - password = base.password; - username = base.username; - } - if (protocol === "") { - protocol = base.protocol; - } - } - - // convert windows file URLs to use / - if (protocol == 'file:') - pathname = pathname.replace(/\\/g, '/'); - - this.origin = protocol + (protocol !== "" || host !== "" ? "//" : "") + host; - this.href = protocol + (protocol !== "" || host !== "" ? "//" : "") + (username !== "" ? username + (password !== "" ? ":" + password : "") + "@" : "") + host + pathname + search + hash; - this.protocol = protocol; - this.username = username; - this.password = password; - this.host = host; - this.hostname = hostname; - this.port = port; - this.pathname = pathname; - this.search = search; - this.hash = hash; - } -global.URLPolyfill = URLPolyfill; -})(typeof self != 'undefined' ? self : global); - -// Intl (IE9, IE10, all Safari, all Android) +// Intl (all Safari, all Android) /*! @source https://github.com/andyearnshaw/Intl.js */ /*! @licence https://github.com/andyearnshaw/Intl.js/blob/master/LICENSE.txt */ !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):e.IntlPolyfill=r()}(this,function(){"use strict";function e(e){if("function"==typeof Math.log10)return Math.floor(Math.log10(e));var r=Math.round(Math.log(e)*Math.LOG10E);return r-(Number("1e"+r)>e)}function r(e){for(var t in e)(e instanceof r||ee.call(e,t))&&re(this,t,{value:e[t],enumerable:!0,writable:!0,configurable:!0})}function t(){re(this,"length",{writable:!0,value:0}),arguments.length&&oe.apply(this,ae.call(arguments))}function n(){if(ue.disableRegExpRestore)return function(){};for(var e={lastMatch:RegExp.lastMatch||"",leftContext:RegExp.leftContext,multiline:RegExp.multiline,input:RegExp.input},r=!1,n=1;n<=9;n++)r=(e["$"+n]=RegExp["$"+n])||r;return function(){var n=/[.?*+^$[\]\\(){}|-]/g,a=e.lastMatch.replace(n,"\\$&"),i=new t;if(r)for(var o=1;o<=9;o++){var s=e["$"+o];s?(s=s.replace(n,"\\$&"),a=a.replace(s,"("+s+")")):a="()"+a,oe.call(i,a.slice(0,a.indexOf("(")+1)),a=a.slice(a.indexOf("(")+1)}var l=se.call(i,"")+a;l=l.replace(/(\\\(|\\\)|[^()])+/g,function(e){return"[\\s\\S]{"+e.replace("\\","").length+"}"});var c=new RegExp(l,e.multiline?"gm":"g");c.lastIndex=e.leftContext.length,c.exec(e.input)}}function a(e){if(null===e)throw new TypeError("Cannot convert null or undefined to object");return Object(e)}function i(e){return ee.call(e,"__getInternalProperties")?e.__getInternalProperties(ge):ne(null)}function o(e){Se=e}function s(e){for(var r=e.length;r--;){var t=e.charAt(r);t>="a"&&t<="z"&&(e=e.slice(0,r)+t.toUpperCase()+e.slice(r+1))}return e}function l(e){return!!ze.test(e)&&(!ke.test(e)&&!Fe.test(e))}function c(e){var r=void 0,t=void 0;e=e.toLowerCase(),t=e.split("-");for(var n=1,a=t.length;n1&&(r.sort(),e=e.replace(RegExp("(?:"+Oe.source+")+","i"),se.call(r,""))),ee.call(Ee.tags,e)&&(e=Ee.tags[e]),t=e.split("-");for(var i=1,o=t.length;i-1)return t;var n=t.lastIndexOf("-");if(n<0)return;n>=2&&"-"===t.charAt(n-2)&&(n-=2),t=t.substring(0,n)}}function v(e,t){for(var n=0,a=t.length,i=void 0,o=void 0,s=void 0;n2){var O=u[F+1],S=k.call(D,O);S!==-1&&(j=O,z="-"+w+"-"+j)}else{var E=k(D,"true");E!==-1&&(j="true")}}if(ee.call(n,"[["+w+"]]")){var L=n["[["+w+"]]"];k.call(D,L)!==-1&&L!==j&&(j=L,z="")}h["[["+w+"]]"]=j,p+=z,y++}if(p.length>2){var P=l.indexOf("-x-");if(P===-1)l+=p;else{var N=l.substring(0,P),T=l.substring(P);l=N+p+T}l=c(l)}return h["[[locale]]"]=l,h}function p(e,r){for(var n=r.length,a=new t,i=0;in)throw new RangeError("Value is not a number or outside accepted range");return Math.floor(i)}return a}function D(){var e=arguments[0],r=arguments[1];return this&&this!==sr?j(a(this),e,r):new sr.NumberFormat(e,r)}function j(e,o,s){var l=i(e),c=n();if(l["[[initializedIntlObject]]"]===!0)throw new TypeError("`this` object has already been initialized as an Intl object");re(e,"__getInternalProperties",{value:function(){if(arguments[0]===ge)return l}}),l["[[initializedIntlObject]]"]=!0;var u=f(o);s=void 0===s?{}:a(s);var m=new r,v=w(s,"localeMatcher","string",new t("lookup","best fit"),"best fit");m["[[localeMatcher]]"]=v;var d=ue.NumberFormat["[[localeData]]"],p=h(ue.NumberFormat["[[availableLocales]]"],u,m,ue.NumberFormat["[[relevantExtensionKeys]]"],d);l["[[locale]]"]=p["[[locale]]"],l["[[numberingSystem]]"]=p["[[nu]]"],l["[[dataLocale]]"]=p["[[dataLocale]]"];var y=p["[[dataLocale]]"],b=w(s,"style","string",new t("decimal","percent","currency"),"decimal");l["[[style]]"]=b;var D=w(s,"currency","string");if(void 0!==D&&!g(D))throw new RangeError("'"+D+"' is not a valid currency code");if("currency"===b&&void 0===D)throw new TypeError("Currency code is required when style is currency");var j=void 0;"currency"===b&&(D=D.toUpperCase(),l["[[currency]]"]=D,j=z(D));var F=w(s,"currencyDisplay","string",new t("code","symbol","name"),"symbol");"currency"===b&&(l["[[currencyDisplay]]"]=F);var O=x(s,"minimumIntegerDigits",1,21,1);l["[[minimumIntegerDigits]]"]=O;var S="currency"===b?j:0,E=x(s,"minimumFractionDigits",0,20,S);l["[[minimumFractionDigits]]"]=E;var L="currency"===b?Math.max(E,j):"percent"===b?Math.max(E,0):Math.max(E,3),P=x(s,"maximumFractionDigits",E,20,L);l["[[maximumFractionDigits]]"]=P;var N=s.minimumSignificantDigits,T=s.maximumSignificantDigits;void 0===N&&void 0===T||(N=x(s,"minimumSignificantDigits",1,21,1),T=x(s,"maximumSignificantDigits",N,21,21),l["[[minimumSignificantDigits]]"]=N,l["[[maximumSignificantDigits]]"]=T);var _=w(s,"useGrouping","boolean",void 0,!0);l["[[useGrouping]]"]=_;var I=d[y],A=I.patterns,M=A[b];return l["[[positivePattern]]"]=M.positivePattern,l["[[negativePattern]]"]=M.negativePattern,l["[[boundFormat]]"]=void 0,l["[[initializedNumberFormat]]"]=!0,Q&&(e.format=k.call(e)),c(),e}function z(e){return void 0!==lr[e]?lr[e]:2}function k(){var e=null!==this&&"object"===ir.typeof(this)&&i(this);if(!e||!e["[[initializedNumberFormat]]"])throw new TypeError("`this` value for format() is not an initialized Intl.NumberFormat object.");if(void 0===e["[[boundFormat]]"]){var r=function(e){return S(this,Number(e))},t=ce.call(r,this);e["[[boundFormat]]"]=t}return e["[[boundFormat]]"]}function F(e,r){for(var t=O(e,r),n=[],a=0,i=0;t.length>i;i++){var o=t[i],s={};s.type=o["[[type]]"],s.value=o["[[value]]"],n[a]=s,a+=1}return n}function O(e,r){var n=i(e),a=n["[[dataLocale]]"],o=n["[[numberingSystem]]"],s=ue.NumberFormat["[[localeData]]"][a],l=s.symbols[o]||s.symbols.latn,c=void 0;!isNaN(r)&&r<0?(r=-r,c=n["[[negativePattern]]"]):c=n["[[positivePattern]]"];for(var u=new t,g=c.indexOf("{",0),f=0,m=0,v=c.length;g>-1&&gm){var d=c.substring(m,g);oe.call(u,{"[[type]]":"literal","[[value]]":d})}var h=c.substring(g+1,f);if("number"===h)if(isNaN(r)){var p=l.nan;oe.call(u,{"[[type]]":"nan","[[value]]":p})}else if(isFinite(r)){"percent"===n["[[style]]"]&&isFinite(r)&&(r*=100);var y=void 0;y=ee.call(n,"[[minimumSignificantDigits]]")&&ee.call(n,"[[maximumSignificantDigits]]")?E(r,n["[[minimumSignificantDigits]]"],n["[[maximumSignificantDigits]]"]):L(r,n["[[minimumIntegerDigits]]"],n["[[minimumFractionDigits]]"],n["[[maximumFractionDigits]]"]),cr[o]?!function(){var e=cr[o];y=String(y).replace(/\d/g,function(r){return e[r]})}():y=String(y);var b=void 0,w=void 0,x=y.indexOf(".",0);if(x>0?(b=y.substring(0,x),w=y.substring(x+1,x.length)):(b=y,w=void 0),n["[[useGrouping]]"]===!0){var D=l.group,j=[],z=s.patterns.primaryGroupSize||3,k=s.patterns.secondaryGroupSize||z;if(b.length>z){var F=b.length-z,O=F%k,S=b.slice(0,O);for(S.length&&oe.call(j,S);Oa;a++){var i=t[a];n+=i["[[value]]"]}return n}function E(r,t,n){var a=n,i=void 0,o=void 0;if(0===r)i=se.call(Array(a+1),"0"),o=0;else{o=e(Math.abs(r));var s=Math.round(Math.exp(Math.abs(o-a+1)*Math.LN10));i=String(Math.round(o-a+1<0?r*s:r/s))}if(o>=a)return i+se.call(Array(o-a+1+1),"0");if(o===a-1)return i;if(o>=0?i=i.slice(0,o+1)+"."+i.slice(o+1):o<0&&(i="0."+se.call(Array(-(o+1)+1),"0")+i),i.indexOf(".")>=0&&n>t){for(var l=n-t;l>0&&"0"===i.charAt(i.length-1);)i=i.slice(0,-1),l--;"."===i.charAt(i.length-1)&&(i=i.slice(0,-1))}return i}function L(e,r,t,n){var a=n,i=Math.pow(10,a)*e,o=0===i?"0":i.toFixed(0),s=void 0,l=(s=o.indexOf("e"))>-1?o.slice(s+1):0;l&&(o=o.slice(0,s).replace(".",""),o+=se.call(Array(l-(o.length-1)+1),"0"));var c=void 0;if(0!==a){var u=o.length;if(u<=a){var g=se.call(Array(a+1-u+1),"0");o=g+o,u=a+1}var f=o.substring(0,u-a),m=o.substring(u-a,o.length);o=f+"."+m,c=f.length}else c=o.length;for(var v=n-t;v>0&&"0"===o.slice(-1);)o=o.slice(0,-1),v--;if("."===o.slice(-1)&&(o=o.slice(0,-1)),cl&&(l=m,c=f),u++}return c}function $(e,r){var t=[];for(var n in pr)ee.call(pr,n)&&void 0!==e["[["+n+"]]"]&&t.push(n);if(1===t.length){var a=R(t[0],e["[["+t[0]+"]]"]);if(a)return a}for(var i=120,o=20,s=8,l=6,c=6,u=3,g=2,f=1,m=-(1/0),v=void 0,d=0,h=r.length;d=2||k>=2&&z<=1?F>0?y-=l:F<0&&(y-=s):F>1?y-=u:F<-1&&(y-=c)}}p._.hour12!==e.hour12&&(y-=f),y>m&&(m=y,v=p),d++}return v}function K(){var e=null!==this&&"object"===ir.typeof(this)&&i(this);if(!e||!e["[[initializedDateTimeFormat]]"])throw new TypeError("`this` value for format() is not an initialized Intl.DateTimeFormat object.");if(void 0===e["[[boundFormat]]"]){var r=function(){var e=Number(0===arguments.length?Date.now():arguments[0]);return H(this,e)},t=ce.call(r,this);e["[[boundFormat]]"]=t}return e["[[boundFormat]]"]}function Y(e,r){if(!isFinite(r))throw new RangeError("Invalid valid date passed to format");var a=e.__getInternalProperties(ge);n();for(var i=a["[[locale]]"],o=new sr.NumberFormat([i],{useGrouping:!1}),s=new sr.NumberFormat([i],{minimumIntegerDigits:2,useGrouping:!1}),l=X(r,a["[[calendar]]"],a["[[timeZone]]"]),c=a["[[pattern]]"],u=new t,g=0,f=c.indexOf("{"),m=0,v=a["[[dataLocale]]"],d=ue.DateTimeFormat["[[localeData]]"][v].calendars,h=a["[[calendar]]"];f!==-1;){var p=void 0;if(m=c.indexOf("}",f),m===-1)throw new Error("Unclosed pattern");f>g&&oe.call(u,{type:"literal",value:c.substring(g,f)});var y=c.substring(f+1,m);if(pr.hasOwnProperty(y)){var b=a["[["+y+"]]"],w=l["[["+y+"]]"];if("year"===y&&w<=0?w=1-w:"month"===y?w++:"hour"===y&&a["[[hour12]]"]===!0&&(w%=12,0===w&&a["[[hourNo0]]"]===!0&&(w=12)),"numeric"===b)p=S(o,w);else if("2-digit"===b)p=S(s,w),p.length>2&&(p=p.slice(-2));else if(b in hr)switch(y){case"month":p=q(d,h,"months",b,l["[["+y+"]]"]);break;case"weekday":try{p=q(d,h,"days",b,l["[["+y+"]]"])}catch(e){throw new Error("Could not find weekday data for locale "+i)}break;case"timeZoneName":p="";break;case"era":try{p=q(d,h,"eras",b,l["[["+y+"]]"])}catch(e){throw new Error("Could not find era data for locale "+i)}break;default:p=l["[["+y+"]]"]}oe.call(u,{type:y,value:p})}else if("ampm"===y){var x=l["[[hour]]"];p=q(d,h,"dayPeriods",x>11?"pm":"am",null),oe.call(u,{type:"dayPeriod",value:p})}else oe.call(u,{type:"literal",value:c.substring(f,m+1)});g=m+1,f=c.indexOf("{",g)}return ma;a++){var i=t[a];n+=i.value}return n}function W(e,r){for(var t=Y(e,r),n=[],a=0;t.length>a;a++){var i=t[a];n.push({type:i.type,value:i.value})}return n}function X(e,t,n){var a=new Date(e),i="get"+(n||"");return new r({"[[weekday]]":a[i+"Day"](),"[[era]]":+(a[i+"FullYear"]()>=0),"[[year]]":a[i+"FullYear"](),"[[month]]":a[i+"Month"](),"[[day]]":a[i+"Date"](),"[[hour]]":a[i+"Hours"](),"[[minute]]":a[i+"Minutes"](),"[[second]]":a[i+"Seconds"](),"[[inDST]]":!1})}function V(e,r){if(!e.number)throw new Error("Object passed doesn't contain locale data for Intl.NumberFormat");var t=void 0,n=[r],a=r.split("-");for(a.length>2&&4===a[1].length&&oe.call(n,a[0]+"-"+a[2]);t=le.call(n);)oe.call(ue.NumberFormat["[[availableLocales]]"],t),ue.NumberFormat["[[localeData]]"][t]=e.number,e.date&&(e.date.nu=e.number.nu,oe.call(ue.DateTimeFormat["[[availableLocales]]"],t),ue.DateTimeFormat["[[localeData]]"][t]=e.date);void 0===Se&&o(r)}var J=function(){var e={};try{return Object.defineProperty(e,"a",{get:function(){return 1}}),1===e.a}catch(e){return!1}}(),Q=!J&&!Object.prototype.__defineGetter__,ee=Object.prototype.hasOwnProperty,re=J?Object.defineProperty:function(e,r,t){"get"in t&&e.__defineGetter__?e.__defineGetter__(r,t.get):(!ee.call(e,r)||"value"in t)&&(e[r]=t.value)},te=Array.prototype.indexOf||function(e){var r=this;if(!r.length)return-1;for(var t=arguments[1]||0,n=r.length;t1){for(var l=Array(o),c=0;c=0||Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t},He=function(e,r){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!r||"object"!=typeof r&&"function"!=typeof r?e:r},We="undefined"==typeof global?self:global,Xe=function e(r,t,n,a){var i=Object.getOwnPropertyDescriptor(r,t);if(void 0===i){var o=Object.getPrototypeOf(r);null!==o&&e(o,t,n,a)}else if("value"in i&&i.writable)i.value=n;else{var s=i.set;void 0!==s&&s.call(a,n)}return n},Ve=function(){function e(e,r){var t=[],n=!0,a=!1,i=void 0;try{for(var o,s=e[Symbol.iterator]();!(n=(o=s.next()).done)&&(t.push(o.value),!r||t.length!==r);n=!0);}catch(e){a=!0,i=e}finally{try{!n&&s.return&&s.return()}finally{if(a)throw i}}return t}return function(r,t){if(Array.isArray(r))return r;if(Symbol.iterator in Object(r))return e(r,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),Je=function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e)){for(var t,n=[],a=e[Symbol.iterator]();!(t=a.next()).done&&(n.push(t.value), diff --git a/tools/contributing-stats/get-data.ts b/tools/contributing-stats/get-data.ts index 0b0373abb8..69d81c275e 100644 --- a/tools/contributing-stats/get-data.ts +++ b/tools/contributing-stats/get-data.ts @@ -112,7 +112,7 @@ async function getAllOrgMembers() { while (hasNextPage) { const {query, params} = queryBuilder(100, cursor); - const results = await graphql(query, params) as typeof MEMBERS_QUERY; + const results = await graphql(query.toString(), params) as typeof MEMBERS_QUERY; results.organization.membersWithRole.nodes.forEach( (node: {login: string}) => members.push(node.login)); @@ -237,7 +237,7 @@ async function run(date: string) { console.info(['Username', ...buildQueryAndParams('', date).labels].join(',')); for (const username of allOrgMembers) { - const results = await graphql(buildQueryAndParams(username, date).query); + const results = await graphql(buildQueryAndParams(username, date).query.toString()); const values = Object.values(results).map(result => `${result.issueCount}`); console.info([username, ...values].join(',')); } diff --git a/tools/defaults.bzl b/tools/defaults.bzl index 9d7a2bed56..96a34a5b27 100644 --- a/tools/defaults.bzl +++ b/tools/defaults.bzl @@ -12,14 +12,14 @@ load("@npm//typescript:index.bzl", "tsc") load("//packages/bazel:index.bzl", _ng_module = "ng_module", _ng_package = "ng_package") load("//dev-infra/benchmark/ng_rollup_bundle:ng_rollup_bundle.bzl", _ng_rollup_bundle = "ng_rollup_bundle") load("//tools:ng_benchmark.bzl", _ng_benchmark = "ng_benchmark") -load("//tools/ts-api-guardian:index.bzl", _ts_api_guardian_test = "ts_api_guardian_test", _ts_api_guardian_test_npm_package = "ts_api_guardian_test_npm_package") +load("//dev-infra/bazel/api-golden:index.bzl", _api_golden_test = "api_golden_test", _api_golden_test_npm_package = "api_golden_test_npm_package") +load("//dev-infra/bazel:extract_js_module_output.bzl", "extract_js_module_output") _DEFAULT_TSCONFIG_TEST = "//packages:tsconfig-test" _INTERNAL_NG_MODULE_API_EXTRACTOR = "//packages/bazel/src/api-extractor:api_extractor" _INTERNAL_NG_MODULE_COMPILER = "//packages/bazel/src/ngc-wrapped" _INTERNAL_NG_MODULE_XI18N = "//packages/bazel/src/ngc-wrapped:xi18n" _INTERNAL_NG_PACKAGE_PACKAGER = "//packages/bazel/src/ng_package:packager" -_INTERNAL_NG_PACKAGE_DEFALUT_TERSER_CONFIG_FILE = "//packages/bazel/src/ng_package:terser_config.default.json" _INTERNAL_NG_PACKAGE_DEFAULT_ROLLUP_CONFIG_TMPL = "//packages/bazel/src/ng_package:rollup.config.js" _INTERNAL_NG_PACKAGE_DEFAULT_ROLLUP = "//packages/bazel/src/ng_package:rollup_for_ng_package" @@ -95,7 +95,7 @@ def ts_devserver(**kwargs): ts_config = _ts_config -def ts_library(name, tsconfig = None, testonly = False, deps = [], module_name = None, **kwargs): +def ts_library(name, tsconfig = None, testonly = False, deps = [], module_name = None, package_name = None, **kwargs): """Default values for ts_library""" deps = deps + ["@npm//tslib"] if testonly: @@ -109,12 +109,22 @@ def ts_library(name, tsconfig = None, testonly = False, deps = [], module_name = if not module_name: module_name = _default_module_name(testonly) + # If no `package_name` is explicitly set, we use the default module name as package + # name, so that the target can be resolved within NodeJS executions, by activating + # the Bazel NodeJS linker. See: https://github.com/bazelbuild/rules_nodejs/pull/2799. + if not package_name: + package_name = _default_module_name(testonly) + _ts_library( name = name, tsconfig = tsconfig, testonly = testonly, deps = deps, + # `module_name` is used for AMD module names within emitted JavaScript files. module_name = module_name, + # `package_name` can be set to allow for the Bazel NodeJS linker to run. This + # allows for resolution of the given target within the `node_modules/`. + package_name = package_name, **kwargs ) @@ -129,7 +139,7 @@ def ts_library(name, tsconfig = None, testonly = False, deps = [], module_name = output_group = "es5_sources", ) -def ng_module(name, tsconfig = None, entry_point = None, testonly = False, deps = [], module_name = None, bundle_dts = True, **kwargs): +def ng_module(name, tsconfig = None, entry_point = None, testonly = False, deps = [], module_name = None, package_name = None, bundle_dts = True, **kwargs): """Default values for ng_module""" deps = deps + ["@npm//tslib"] if testonly: @@ -142,6 +152,13 @@ def ng_module(name, tsconfig = None, entry_point = None, testonly = False, deps if not module_name: module_name = _default_module_name(testonly) + + # If no `package_name` is explicitly set, we use the default module name as package + # name, so that the target can be resolved within NodeJS executions, by activating + # the Bazel NodeJS linker. See: https://github.com/bazelbuild/rules_nodejs/pull/2799. + if not package_name: + package_name = _default_module_name(testonly) + if not entry_point: entry_point = "public_api.ts" _ng_module( @@ -155,7 +172,11 @@ def ng_module(name, tsconfig = None, entry_point = None, testonly = False, deps compiler = _INTERNAL_NG_MODULE_COMPILER, api_extractor = _INTERNAL_NG_MODULE_API_EXTRACTOR, ng_xi18n = _INTERNAL_NG_MODULE_XI18N, + # `module_name` is used for AMD module names within emitted JavaScript files. module_name = module_name, + # `package_name` can be set to allow for the Bazel NodeJS linker to run. This + # allows for resolution of the given target within the `node_modules/`. + package_name = package_name, perf_flag = "//packages/compiler-cli:ng_perf", **kwargs ) @@ -182,6 +203,21 @@ def ng_package(name, readme_md = None, license_banner = None, deps = [], **kwarg _ng_package( name = name, deps = deps, + # We never set a `package_name` for NPM packages, neither do we enable validation. + # This is necessary because the source targets of the NPM packages all have + # package names set and setting a similar `package_name` on the NPM package would + # result in duplicate linker mappings that will conflict. e.g. consider the following + # scenario: We have a `ts_library` for `@angular/core`. We will configure a package + # name for the target so that it can be resolved in NodeJS executions from `node_modules`. + # If we'd also set a `package_name` for the associated `pkg_npm` target, there would be + # two mappings for `@angular/core` and the linker will complain. For a better development + # experience, we want the mapping to resolve to the direct outputs of the `ts_library` + # instead of requiring tests and other targets to assemble the NPM package first. + # TODO(devversion): consider removing this if `rules_nodejs` allows for duplicate + # linker mappings where transitive-determined mappings are skipped on conflicts. + # https://github.com/bazelbuild/rules_nodejs/issues/2810. + package_name = None, + validate = False, readme_md = readme_md, license_banner = license_banner, substitutions = select({ @@ -189,7 +225,6 @@ def ng_package(name, readme_md = None, license_banner = None, deps = [], **kwarg "//conditions:default": substitutions, }), ng_packager = _INTERNAL_NG_PACKAGE_PACKAGER, - terser_config_file = _INTERNAL_NG_PACKAGE_DEFALUT_TERSER_CONFIG_FILE, rollup_config_tmpl = _INTERNAL_NG_PACKAGE_DEFAULT_ROLLUP_CONFIG_TMPL, rollup = _INTERNAL_NG_PACKAGE_DEFAULT_ROLLUP, visibility = visibility, @@ -218,13 +253,44 @@ def pkg_npm(name, **kwargs): "0.0.0-PLACEHOLDER": "{BUILD_SCM_VERSION}", }) + deps = kwargs.pop("deps", []) + + # The `pkg_npm` rule brings in devmode (`JSModuleInfo`) and prodmode (`JSEcmaScriptModuleInfo`) + # output into the the NPM package. We do not plan to ship prodmode ECMAScript `.mjs` files yet, + # so we only extract the `JSModuleInfo` outputs (which correspond to ES5 output) from the deps. + # https://github.com/bazelbuild/rules_nodejs/commit/911529fd364eb3ee1b8ecdc568a9fcf38a8b55ca. + # https://github.com/bazelbuild/rules_nodejs/blob/stable/packages/typescript/internal/build_defs.bzl#L334-L337. + extract_js_module_output( + name = "%s_js_module_output" % name, + provider = "JSModuleInfo", + include_declarations = True, + include_default_files = True, + deps = deps, + ) + _pkg_npm( name = name, + # We never set a `package_name` for NPM packages, neither do we enable validation. + # This is necessary because the source targets of the NPM packages all have + # package names set and setting a similar `package_name` on the NPM package would + # result in duplicate linker mappings that will conflict. e.g. consider the following + # scenario: We have a `ts_library` for `@angular/core`. We will configure a package + # name for the target so that it can be resolved in NodeJS executions from `node_modules`. + # If we'd also set a `package_name` for the associated `pkg_npm` target, there would be + # two mappings for `@angular/core` and the linker will complain. For a better development + # experience, we want the mapping to resolve to the direct outputs of the `ts_library` + # instead of requiring tests and other targets to assemble the NPM package first. + # TODO(devversion): consider removing this if `rules_nodejs` allows for duplicate + # linker mappings where transitive-determined mappings are skipped on conflicts. + # https://github.com/bazelbuild/rules_nodejs/issues/2810. + package_name = None, + validate = False, substitutions = select({ "//:stamp": stamped_substitutions, "//conditions:default": substitutions, }), visibility = visibility, + deps = [":%s_js_module_output" % name], **kwargs ) @@ -269,8 +335,8 @@ def karma_web_test_suite(name, **kwargs): bootstrap = bootstrap, deps = deps, browsers = [ - "//dev-infra/browsers/chromium:chromium", - "//dev-infra/browsers/firefox:firefox", + "//dev-infra/bazel/browsers/chromium:chromium", + "//dev-infra/bazel/browsers/firefox:firefox", ], data = data, tags = tags, @@ -308,7 +374,7 @@ def protractor_web_test_suite(**kwargs): """Default values for protractor_web_test_suite""" _protractor_web_test_suite( - browsers = ["//dev-infra/browsers/chromium:chromium"], + browsers = ["//dev-infra/bazel/browsers/chromium:chromium"], **kwargs ) @@ -497,16 +563,16 @@ def rollup_bundle(name, testonly = False, sourcemap = "true", **kwargs): terser_minified(name = name + ".min.es5umd", testonly = testonly, src = name + ".es5umd", **common_terser_args) native.filegroup(name = name + ".min.es5umd.js", testonly = testonly, srcs = [name + ".min.es5umd"]) -def ts_api_guardian_test(**kwargs): - _ts_api_guardian_test( +def api_golden_test(**kwargs): + _api_golden_test( tags = [ "fixme-ivy-aot", ], **kwargs ) -def ts_api_guardian_test_npm_package(**kwargs): - _ts_api_guardian_test_npm_package( +def api_golden_test_npm_package(**kwargs): + _api_golden_test_npm_package( tags = [ "fixme-ivy-aot", ], diff --git a/tools/gulp-tasks/changelog.js b/tools/gulp-tasks/changelog.js deleted file mode 100644 index 0caaf1c0d5..0000000000 --- a/tools/gulp-tasks/changelog.js +++ /dev/null @@ -1,73 +0,0 @@ -/** - * @license - * 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 - */ - -const {readFileSync} = require('fs'); -const {bold, yellow} = require('chalk'); - -module.exports = (gulp) => () => { - const conventionalChangelog = require('gulp-conventional-changelog'); - const ignoredScopes = [ - 'aio', - 'dev-infra', - 'docs-infra', - 'zone.js', - ]; - - return gulp.src('CHANGELOG.md') - .pipe(conventionalChangelog( - /* core options */ {preset: 'angular'}, - /* context options */ {}, - /* raw-commit options */ { - // Ignore commits that start with `()` for any of the ignored scopes. - extendedRegexp: true, - grep: `^[^(]+\\((${ignoredScopes.join('|')})\\)`, - invertGrep: true, - }, - /* commit parser options */ null, - /* writer options*/ createDedupeWriterOptions())) - .pipe(gulp.dest('./')); -}; - -/** - * Creates changelog writer options which ensure that commits are not showing up multiple times. - * Commits can show up multiple times if a changelog has been generated on a publish branch - * and has been cherry-picked into "master". In that case, the changelog will already contain - * commits from master which might be added to the changelog again. This is because usually - * patch and minor releases are tagged from the publish branches and therefore - * conventional-changelog tries to build the changelog from last minor version to HEAD when a - * new minor version is being published from the "master" branch. We naively match commit - * headers as otherwise we would need to query Git and diff commits between a given patch branch. - * The commit header is reliable enough as it contains a direct reference to the source PR. - */ -function createDedupeWriterOptions() { - const existingChangelogContent = readFileSync('CHANGELOG.md', 'utf8'); - - return { - // Specify a writer option that can be used to modify the content of a new changelog section. - // See: conventional-changelog/tree/master/packages/conventional-changelog-writer - finalizeContext: (context) => { - context.commitGroups = context.commitGroups.filter((group) => { - group.commits = group.commits.filter((commit) => { - // NOTE: We cannot compare the SHAs because the commits will have a different SHA - // if they are being cherry-picked into a different branch. - if (existingChangelogContent.includes(commit.subject)) { - console.info(yellow(` ↺ Skipping duplicate: "${bold(commit.header)}"`)); - return false; - } - return true; - }); - - // Filter out commit groups which don't have any commits. Commit groups will become - // empty if we filter out all duplicated commits. - return group.commits.length !== 0; - }); - - return context; - } - }; -} diff --git a/tools/gulp-tasks/cldr.js b/tools/gulp-tasks/cldr.js deleted file mode 100644 index 5d1ce7802f..0000000000 --- a/tools/gulp-tasks/cldr.js +++ /dev/null @@ -1,43 +0,0 @@ -/** - * @license - * 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 - */ - -const path = require('path'); -const fs = require('fs'); - -module.exports = { - extract: gulp => done => { - if (!fs.existsSync(path.join(__dirname, 'cldr/cldr-data'))) { - throw new Error(`You must run "gulp cldr:download" before you can extract the data`); - } - const extract = require('./cldr/extract'); - return extract(gulp, done); - }, - - download: gulp => done => { - const cldrDownloader = require('cldr-data-downloader'); - const cldrDataFolder = path.join(__dirname, 'cldr/cldr-data'); - if (fs.existsSync(cldrDataFolder)) { - fs.rmdirSync(cldrDataFolder, {recursive: true}); - } else { - fs.mkdirSync(cldrDataFolder); - } - cldrDownloader(path.join(__dirname, 'cldr/cldr-urls.json'), cldrDataFolder, {}, done); - }, - - closure: gulp => done => { - const {RELATIVE_I18N_DATA_FOLDER} = require('./cldr/extract'); - // tslint:disable-next-line:no-console - console.log(RELATIVE_I18N_DATA_FOLDER, fs.existsSync(RELATIVE_I18N_DATA_FOLDER)); - if (!fs.existsSync(RELATIVE_I18N_DATA_FOLDER)) { - throw new Error( - `You must run "gulp cldr:extract" before you can create the closure-locale.ts file`); - } - const localeAll = require('./cldr/closure'); - return localeAll(gulp, done); - }, -}; diff --git a/tools/gulp-tasks/cldr/cldr-data.js b/tools/gulp-tasks/cldr/cldr-data.js deleted file mode 100644 index dc68ab210d..0000000000 --- a/tools/gulp-tasks/cldr/cldr-data.js +++ /dev/null @@ -1,86 +0,0 @@ -// tslint:disable:file-header - -/** - * Npm module for Unicode CLDR JSON data - * - * @license - * Copyright 2013 Rafael Xavier de Souza - * Released under the MIT license - * https://github.com/rxaviers/cldr-data-npm/blob/master/LICENSE-MIT - */ - -'use strict'; - -const JSON_EXTENSION = /^(.*)\.json$/; - -const assert = require('assert'); -const _fs = require('fs'); -const _path = require('path'); - -function argsToArray(arg) { - return [].slice.call(arg, 0); -} - -function jsonFiles(dirName) { - const fileList = _fs.readdirSync(_path.join(__dirname, 'cldr-data', dirName)); - - return fileList.reduce(function(sum, file) { - if (JSON_EXTENSION.test(file)) { - return sum.concat(file.match(JSON_EXTENSION)[1]); - } - }, []); -} - -function cldrData(path /*, ...*/) { - assert( - typeof path === 'string', - 'must include path (e.g., "main/en/numbers" or "supplemental/likelySubtags")'); - - if (arguments.length > 1) { - return argsToArray(arguments).reduce(function(sum, path) { - sum.push(cldrData(path)); - return sum; - }, []); - } - return require('./cldr-data/' + path); -} - -function mainPathsFor(locales) { - return locales.reduce(function(sum, locale) { - const mainFiles = jsonFiles(_path.join('main', locale)); - mainFiles.forEach(function(mainFile) { - sum.push(_path.join('main', locale, mainFile)); - }); - return sum; - }, []); -} - -function supplementalPaths() { - const supplementalFiles = jsonFiles('supplemental'); - - return supplementalFiles.map(function(supplementalFile) { - return _path.join('supplemental', supplementalFile); - }); -} - -Object.defineProperty(cldrData, 'availableLocales', { - get: function() { - return cldrData('availableLocales').availableLocales; - } -}); - -cldrData.all = function() { - const paths = supplementalPaths().concat(mainPathsFor(this.availableLocales)); - return cldrData.apply({}, paths); -}; - -cldrData.entireMainFor = function(locale /*, ...*/) { - assert(typeof locale === 'string', 'must include locale (e.g., "en")'); - return cldrData.apply({}, mainPathsFor(argsToArray(arguments))); -}; - -cldrData.entireSupplemental = function() { - return cldrData.apply({}, supplementalPaths()); -}; - -module.exports = cldrData; diff --git a/tools/gulp-tasks/cldr/cldr-urls.json b/tools/gulp-tasks/cldr/cldr-urls.json deleted file mode 100644 index bec583e83b..0000000000 --- a/tools/gulp-tasks/cldr/cldr-urls.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "core": [ - "https://github.com/unicode-cldr/cldr-core/archive/37.0.0.zip", - "https://github.com/unicode-cldr/cldr-segments-modern/archive/37.0.0.zip", - "https://github.com/unicode-cldr/cldr-dates-full/archive/37.0.0.zip", - "https://github.com/unicode-cldr/cldr-cal-buddhist-full/archive/37.0.0.zip", - "https://github.com/unicode-cldr/cldr-cal-chinese-full/archive/37.0.0.zip", - "https://github.com/unicode-cldr/cldr-cal-coptic-full/archive/37.0.0.zip", - "https://github.com/unicode-cldr/cldr-cal-dangi-full/archive/37.0.0.zip", - "https://github.com/unicode-cldr/cldr-cal-ethiopic-full/archive/37.0.0.zip", - "https://github.com/unicode-cldr/cldr-cal-hebrew-full/archive/37.0.0.zip", - "https://github.com/unicode-cldr/cldr-cal-indian-full/archive/37.0.0.zip", - "https://github.com/unicode-cldr/cldr-cal-islamic-full/archive/37.0.0.zip", - "https://github.com/unicode-cldr/cldr-cal-japanese-full/archive/37.0.0.zip", - "https://github.com/unicode-cldr/cldr-cal-persian-full/archive/37.0.0.zip", - "https://github.com/unicode-cldr/cldr-cal-roc-full/archive/37.0.0.zip", - "https://github.com/unicode-cldr/cldr-localenames-full/archive/37.0.0.zip", - "https://github.com/unicode-cldr/cldr-misc-full/archive/37.0.0.zip", - "https://github.com/unicode-cldr/cldr-numbers-full/archive/37.0.0.zip", - "https://github.com/unicode-cldr/cldr-units-full/archive/37.0.0.zip" - ] -} diff --git a/tools/gulp-tasks/cldr/closure.js b/tools/gulp-tasks/cldr/closure.js deleted file mode 100644 index 631d045a3d..0000000000 --- a/tools/gulp-tasks/cldr/closure.js +++ /dev/null @@ -1,163 +0,0 @@ -/** - * @license - * 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 - */ - -const fs = require('fs'); -const yargs = require('yargs').argv; -const shelljs = require('shelljs'); -const {I18N_DATA_FOLDER, RELATIVE_I18N_DATA_FOLDER, HEADER} = require('./extract'); -const OUTPUT_NAME = `closure-locale.ts`; - -// tslint:disable:no-console -module.exports = (gulp, done) => { - // the locales used by closure that will be used to generate the closure-locale file - // extracted from: - // https://github.com/google/closure-library/blob/master/closure/goog/i18n/datetimepatterns.js#L2136 - let GOOG_LOCALES = [ - 'af', 'am', 'ar', 'ar-DZ', 'az', 'be', 'bg', 'bn', 'br', 'bs', - 'ca', 'chr', 'cs', 'cy', 'da', 'de', 'de-AT', 'de-CH', 'el', 'en-AU', - 'en-CA', 'en-GB', 'en-IE', 'en-IN', 'en-SG', 'en-ZA', 'es', 'es-419', 'es-MX', 'es-US', - 'et', 'eu', 'fa', 'fi', 'fr', 'fr-CA', 'ga', 'gl', 'gsw', 'gu', - 'haw', 'hi', 'hr', 'hu', 'hy', 'in', 'is', 'it', 'iw', 'ja', - 'ka', 'kk', 'km', 'kn', 'ko', 'ky', 'ln', 'lo', 'lt', 'lv', - 'mk', 'ml', 'mn', 'mo', 'mr', 'ms', 'mt', 'my', 'ne', 'nl', - 'no', 'or', 'pa', 'pl', 'pt', 'pt-PT', 'ro', 'ru', 'sh', 'si', - 'sk', 'sl', 'sq', 'sr', 'sv', 'sw', 'ta', 'te', 'th', 'tl', - 'tr', 'uk', 'ur', 'uz', 'vi', 'zh', 'zh-CN', 'zh-HK', 'zh-TW', 'zu' - ]; - - // locale id aliases to support deprecated locale ids used by closure - // it maps deprecated ids --> new ids - // manually extracted from ./cldr-data/supplemental/aliases.json - const ALIASES = { - 'in': 'id', - 'iw': 'he', - 'mo': 'ro-MD', - 'no': 'nb', - 'nb': 'no-NO', - 'sh': 'sr-Latn', - 'tl': 'fil', - 'pt': 'pt-BR', - 'zh-CN': 'zh-Hans-CN', - 'zh-Hans-CN': 'zh-Hans', - 'zh-HK': 'zh-Hant-HK', - 'zh-TW': 'zh-Hant-TW', - 'zh-Hant-TW': 'zh-Hant', - }; - - if (yargs.locales) { - GOOG_LOCALES = yargs.locales.split(','); - } - - console.log(`Writing file ${I18N_DATA_FOLDER}/${OUTPUT_NAME}`); - fs.writeFileSync( - `${RELATIVE_I18N_DATA_FOLDER}/${OUTPUT_NAME}`, generateAllLocalesFile(GOOG_LOCALES, ALIASES)); - - console.log(`Formatting ${I18N_DATA_FOLDER}/${OUTPUT_NAME}..."`); - shelljs.exec(`yarn clang-format -i ${I18N_DATA_FOLDER}/${OUTPUT_NAME}`, {silent: true}); - done(); -}; - -/** - * Generate a file that contains all locale to import for closure. - * Tree shaking will only keep the data for the `goog.LOCALE` locale. - */ -function generateAllLocalesFile(LOCALES, ALIASES) { - const existingLocalesAliases = {}; - const existingLocalesData = {}; - - // for each locale, get the data and the list of equivalent locales - LOCALES.forEach(locale => { - const eqLocales = new Set(); - eqLocales.add(locale); - if (locale.match(/-/)) { - eqLocales.add(locale.replace(/-/g, '_')); - } - - // check for aliases - const alias = ALIASES[locale]; - if (alias) { - eqLocales.add(alias); - - if (alias.match(/-/)) { - eqLocales.add(alias.replace(/-/g, '_')); - } - - // to avoid duplicated "case" we regroup all locales in the same "case" - // the simplest way to do that is to have alias aliases - // e.g. 'no' --> 'nb', 'nb' --> 'no-NO' - // which means that we'll have 'no', 'nb' and 'no-NO' in the same "case" - const aliasKeys = Object.keys(ALIASES); - for (let i = 0; i < aliasKeys.length; i++) { - const aliasValue = ALIASES[alias]; - if (aliasKeys.indexOf(alias) !== -1 && !eqLocales.has(aliasValue)) { - eqLocales.add(aliasValue); - - if (aliasValue.match(/-/)) { - eqLocales.add(aliasValue.replace(/-/g, '_')); - } - } - } - } - - for (let l of eqLocales) { - // find the existing content file - const path = `${RELATIVE_I18N_DATA_FOLDER}/${l}.ts`; - if (fs.existsSync(`${RELATIVE_I18N_DATA_FOLDER}/${l}.ts`)) { - const localeName = formatLocale(locale); - existingLocalesData[locale] = - fs.readFileSync(path, 'utf8') - .replace(`${HEADER}\n`, '') - .replace('export default ', `export const locale_${localeName} = `) - .replace('function plural', `function plural_${localeName}`) - .replace(/,(\n | )plural/, `, plural_${localeName}`) - .replace('const u = undefined;\n\n', ''); - } - } - - existingLocalesAliases[locale] = eqLocales; - }); - - function generateCases(locale) { - let str = ''; - let locales = []; - const eqLocales = existingLocalesAliases[locale]; - for (let l of eqLocales) { - str += `case '${l}':\n`; - locales.push(`'${l}'`); - } - let localesStr = '[' + locales.join(',') + ']'; - - str += ` l = locale_${formatLocale(locale)}; - locales = ${localesStr}; - break;\n`; - return str; - } - - function formatLocale(locale) { - return locale.replace(/-/g, '_'); - } - // clang-format off - return `${HEADER} -import {registerLocaleData} from '../src/i18n/locale_data'; - -const u = undefined; - -${LOCALES.map(locale => `${existingLocalesData[locale]}`).join('\n')} - -let l: any; -let locales: string[] = []; - -switch (goog.LOCALE) { -${LOCALES.map(locale => generateCases(locale)).join('')}} - -if(l) { - locales.forEach(locale => registerLocaleData(l, locale)); -} -`; - // clang-format on -} diff --git a/tools/gulp-tasks/cldr/extract.js b/tools/gulp-tasks/cldr/extract.js deleted file mode 100644 index aef0ac0001..0000000000 --- a/tools/gulp-tasks/cldr/extract.js +++ /dev/null @@ -1,632 +0,0 @@ -/** - * @license - * 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 - */ - -const fs = require('fs'); -const path = require('path'); -const stringify = require('./util').stringify; -// used to extract plural rules -const cldr = require('cldr'); -// used to extract all other cldr data -const cldrJs = require('cldrjs'); -// used to call to clang-format -const shelljs = require('shelljs'); - -const COMMON_PACKAGE = 'packages/common'; -const CORE_PACKAGE = 'packages/core'; -const I18N_FOLDER = `${COMMON_PACKAGE}/src/i18n`; -const I18N_CORE_FOLDER = `${CORE_PACKAGE}/src/i18n`; -const I18N_DATA_FOLDER = `${COMMON_PACKAGE}/locales`; -const I18N_DATA_EXTRA_FOLDER = `${I18N_DATA_FOLDER}/extra`; -const I18N_GLOBAL_FOLDER = `${I18N_DATA_FOLDER}/global`; -const RELATIVE_I18N_FOLDER = path.resolve(__dirname, `../../../${I18N_FOLDER}`); -const RELATIVE_I18N_CORE_FOLDER = path.resolve(__dirname, `../../../${I18N_CORE_FOLDER}`); -const RELATIVE_I18N_DATA_FOLDER = path.resolve(__dirname, `../../../${I18N_DATA_FOLDER}`); -const RELATIVE_I18N_DATA_EXTRA_FOLDER = - path.resolve(__dirname, `../../../${I18N_DATA_EXTRA_FOLDER}`); -const RELATIVE_I18N_GLOBAL_FOLDER = path.resolve(__dirname, `../../../${I18N_GLOBAL_FOLDER}`); -const DEFAULT_RULE = 'function anonymous(n) {\nreturn"other"\n}'; -const EMPTY_RULE = 'function anonymous(n) {\n\n}'; -const WEEK_DAYS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']; -const HEADER = `/** - * @license - * 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 - */ - -// THIS CODE IS GENERATED - DO NOT MODIFY -// See angular/tools/gulp-tasks/cldr/extract.js -`; - -// tslint:disable:no-console -module.exports = (gulp, done) => { - const cldrData = require('./cldr-data'); - const LOCALES = cldrData.availableLocales; - - console.log(`Loading CLDR data...`); - cldrJs.load(cldrData.all().concat(cldrData('scriptMetadata'))); - - console.log(`Writing locale files`); - if (!fs.existsSync(RELATIVE_I18N_FOLDER)) { - fs.mkdirSync(RELATIVE_I18N_FOLDER); - } - if (!fs.existsSync(RELATIVE_I18N_DATA_FOLDER)) { - fs.mkdirSync(RELATIVE_I18N_DATA_FOLDER); - } - if (!fs.existsSync(RELATIVE_I18N_DATA_EXTRA_FOLDER)) { - fs.mkdirSync(RELATIVE_I18N_DATA_EXTRA_FOLDER); - } - if (!fs.existsSync(RELATIVE_I18N_GLOBAL_FOLDER)) { - fs.mkdirSync(RELATIVE_I18N_GLOBAL_FOLDER); - } - - console.log(`Writing file ${I18N_FOLDER}/currencies.ts`); - fs.writeFileSync(`${RELATIVE_I18N_FOLDER}/currencies.ts`, generateCurrenciesFile()); - - const baseCurrencies = generateBaseCurrencies(new cldrJs('en')); - // additional "en" file that will be included in common - console.log(`Writing file ${I18N_CORE_FOLDER}/locale_en.ts`); - const localeEnFile = generateLocale('en', new cldrJs('en'), baseCurrencies); - fs.writeFileSync(`${RELATIVE_I18N_CORE_FOLDER}/locale_en.ts`, localeEnFile); - - LOCALES.forEach((locale, index) => { - const localeData = new cldrJs(locale); - - console.log(`${index + 1}/${LOCALES.length}`); - console.log(`\t${I18N_DATA_FOLDER}/${locale}.ts`); - fs.writeFileSync( - `${RELATIVE_I18N_DATA_FOLDER}/${locale}.ts`, - locale === 'en' ? localeEnFile : generateLocale(locale, localeData, baseCurrencies)); - console.log(`\t${I18N_DATA_EXTRA_FOLDER}/${locale}.ts`); - fs.writeFileSync( - `${RELATIVE_I18N_DATA_EXTRA_FOLDER}/${locale}.ts`, generateLocaleExtra(locale, localeData)); - console.log(`\t${I18N_GLOBAL_FOLDER}/${locale}.js`); - fs.writeFileSync( - `${RELATIVE_I18N_GLOBAL_FOLDER}/${locale}.js`, - generateGlobalLocale( - locale, locale === 'en' ? new cldrJs('en') : localeData, baseCurrencies)); - }); - console.log(`${LOCALES.length} locale files generated.`); - - console.log(`All i18n cldr files have been generated, formatting files..."`); - shelljs.exec( - `yarn clang-format -i ${I18N_DATA_FOLDER}/**/*.ts ${I18N_DATA_FOLDER}/*.ts ${ - I18N_FOLDER}/currencies.ts ${I18N_CORE_FOLDER}/locale_en.ts ${I18N_GLOBAL_FOLDER}/*.js`, - {silent: true}); - done(); -}; - -/** - * Generate contents for the basic locale data file - */ -function generateLocale(locale, localeData, baseCurrencies) { - return `${HEADER} -const u = undefined; - -${getPluralFunction(locale)} - -export default ${generateBasicLocaleString(locale, localeData, baseCurrencies)}; -`; -} - -/** - * Generate the contents for the extra data file - */ -function generateLocaleExtra(locale, localeData) { - return `${HEADER} -const u = undefined; - -export default ${generateDayPeriodsSupplementalString(locale, localeData)}; -`; -} - -/** - * Generated the contents for the global locale file - */ -function generateGlobalLocale(locale, localeData, baseCurrencies) { - const basicLocaleData = generateBasicLocaleString(locale, localeData, baseCurrencies); - const extraLocaleData = generateDayPeriodsSupplementalString(locale, localeData); - const data = basicLocaleData.replace(/\]$/, `, ${extraLocaleData}]`); - return `${HEADER} -(function(global) { - global.ng = global.ng || {}; - global.ng.common = global.ng.common || {}; - global.ng.common.locales = global.ng.common.locales || {}; - const u = undefined; - ${getPluralFunction(locale, false)} - global.ng.common.locales['${normalizeLocale(locale)}'] = ${data}; -})(typeof globalThis !== 'undefined' && globalThis || typeof global !== 'undefined' && global || typeof window !== 'undefined' && window); - `; -} - -/** - * Collect up the basic locale data [ localeId, dateTime, number, currency, pluralCase ]. - */ -function generateBasicLocaleString(locale, localeData, baseCurrencies) { - let data = stringify( - [ - locale, - ...getDateTimeTranslations(localeData), - ...getDateTimeSettings(localeData), - ...getNumberSettings(localeData), - ...getCurrencySettings(locale, localeData), - generateLocaleCurrencies(localeData, baseCurrencies), - getDirectionality(localeData), - ], - true) - // We remove "undefined" added by spreading arrays when there is no value - .replace(/undefined/g, 'u'); - - // adding plural function after, because we don't want it as a string - data = data.replace(/\]$/, ', plural]'); - return data; -} - -/** - * Collect up the day period rules, and extended day period data. - */ -function generateDayPeriodsSupplementalString(locale, localeData) { - const dayPeriods = getDayPeriodsNoAmPm(localeData); - const dayPeriodRules = getDayPeriodRules(localeData); - - let dayPeriodsSupplemental = []; - if (Object.keys(dayPeriods.format.narrow).length) { - const keys = Object.keys(dayPeriods.format.narrow); - - if (keys.length !== Object.keys(dayPeriodRules).length) { - throw new Error(`Error: locale ${locale} has not the correct number of day period rules`); - } - - const dayPeriodsFormat = removeDuplicates([ - objectValues(dayPeriods.format.narrow), objectValues(dayPeriods.format.abbreviated), - objectValues(dayPeriods.format.wide) - ]); - - const dayPeriodsStandalone = removeDuplicates([ - objectValues(dayPeriods['stand-alone'].narrow), - objectValues(dayPeriods['stand-alone'].abbreviated), - objectValues(dayPeriods['stand-alone'].wide) - ]); - - const rules = keys.map(key => dayPeriodRules[key]); - dayPeriodsSupplemental = [...removeDuplicates([dayPeriodsFormat, dayPeriodsStandalone]), rules]; - } - return stringify(dayPeriodsSupplemental).replace(/undefined/g, 'u'); -} - -/** - * Generate a list of currencies to be used as a based for other currencies - * e.g.: {'ARS': [, '$'], 'AUD': ['A$', '$'], ...} - */ -function generateBaseCurrencies(localeData, addDigits) { - const currenciesData = localeData.main('numbers/currencies'); - const fractions = new cldrJs('en').get(`supplemental/currencyData/fractions`); - const currencies = {}; - Object.keys(currenciesData).forEach(key => { - let symbolsArray = []; - const symbol = currenciesData[key].symbol; - const symbolNarrow = currenciesData[key]['symbol-alt-narrow']; - if (symbol && symbol !== key) { - symbolsArray.push(symbol); - } - if (symbolNarrow && symbolNarrow !== symbol) { - if (symbolsArray.length > 0) { - symbolsArray.push(symbolNarrow); - } else { - symbolsArray = [undefined, symbolNarrow]; - } - } - if (addDigits && fractions[key] && fractions[key]['_digits']) { - const digits = parseInt(fractions[key]['_digits'], 10); - if (symbolsArray.length === 2) { - symbolsArray.push(digits); - } else if (symbolsArray.length === 1) { - symbolsArray = [...symbolsArray, undefined, digits]; - } else { - symbolsArray = [undefined, undefined, digits]; - } - } - if (symbolsArray.length > 0) { - currencies[key] = symbolsArray; - } - }); - return currencies; -} - -/** - * To minimize the file even more, we only output the differences compared to the base currency - */ -function generateLocaleCurrencies(localeData, baseCurrencies) { - const currenciesData = localeData.main('numbers/currencies'); - const currencies = {}; - Object.keys(currenciesData).forEach(code => { - let symbolsArray = []; - const symbol = currenciesData[code].symbol; - const symbolNarrow = currenciesData[code]['symbol-alt-narrow']; - if (symbol && symbol !== code) { - symbolsArray.push(symbol); - } - if (symbolNarrow && symbolNarrow !== symbol) { - if (symbolsArray.length > 0) { - symbolsArray.push(symbolNarrow); - } else { - symbolsArray = [undefined, symbolNarrow]; - } - } - - // if locale data are different, set the value - if ((baseCurrencies[code] || []).toString() !== symbolsArray.toString()) { - currencies[code] = symbolsArray; - } - }); - return currencies; -} - -/** - * Generate a file that contains the list of currencies and their symbols - */ -function generateCurrenciesFile() { - const baseCurrencies = generateBaseCurrencies(new cldrJs('en'), true); - - return `${HEADER} -export type CurrenciesSymbols = [string] | [string | undefined, string]; - -/** @internal */ -export const CURRENCIES_EN: {[code: string]: CurrenciesSymbols | [string | undefined, string | undefined, number]} = ${ - stringify(baseCurrencies, true)}; -`; -} - -/** - * Returns data for the chosen day periods - * @returns { - * format: {narrow / abbreviated / wide: [...]}, - * stand-alone: {narrow / abbreviated / wide: [...]} - * } - */ -function getDayPeriods(localeData, dayPeriodsList) { - const dayPeriods = localeData.main(`dates/calendars/gregorian/dayPeriods`); - const result = {}; - // cleaning up unused keys - Object.keys(dayPeriods).forEach(key1 => { // format / stand-alone - result[key1] = {}; - Object.keys(dayPeriods[key1]).forEach(key2 => { // narrow / abbreviated / wide - result[key1][key2] = {}; - Object.keys(dayPeriods[key1][key2]).forEach(key3 => { - if (dayPeriodsList.indexOf(key3) !== -1) { - result[key1][key2][key3] = dayPeriods[key1][key2][key3]; - } - }); - }); - }); - - return result; -} - -/** - * Returns the basic day periods (am/pm) - */ -function getDayPeriodsAmPm(localeData) { - return getDayPeriods(localeData, ['am', 'pm']); -} - -/** - * Returns the extra day periods (without am/pm) - */ -function getDayPeriodsNoAmPm(localeData) { - return getDayPeriods(localeData, [ - 'noon', 'midnight', 'morning1', 'morning2', 'afternoon1', 'afternoon2', 'evening1', 'evening2', - 'night1', 'night2' - ]); -} - -/** - * Returns date-related translations for a locale - * @returns [ dayPeriodsFormat, dayPeriodsStandalone, daysFormat, dayStandalone, monthsFormat, - * monthsStandalone, eras ] - * each value: [ narrow, abbreviated, wide, short? ] - */ -function getDateTimeTranslations(localeData) { - const dayNames = localeData.main(`dates/calendars/gregorian/days`); - const monthNames = localeData.main(`dates/calendars/gregorian/months`); - const erasNames = localeData.main(`dates/calendars/gregorian/eras`); - const dayPeriods = getDayPeriodsAmPm(localeData); - - const dayPeriodsFormat = removeDuplicates([ - objectValues(dayPeriods.format.narrow), objectValues(dayPeriods.format.abbreviated), - objectValues(dayPeriods.format.wide) - ]); - - const dayPeriodsStandalone = removeDuplicates([ - objectValues(dayPeriods['stand-alone'].narrow), - objectValues(dayPeriods['stand-alone'].abbreviated), - objectValues(dayPeriods['stand-alone'].wide) - ]); - - const daysFormat = removeDuplicates([ - objectValues(dayNames.format.narrow), objectValues(dayNames.format.abbreviated), - objectValues(dayNames.format.wide), objectValues(dayNames.format.short) - ]); - - const daysStandalone = removeDuplicates([ - objectValues(dayNames['stand-alone'].narrow), objectValues(dayNames['stand-alone'].abbreviated), - objectValues(dayNames['stand-alone'].wide), objectValues(dayNames['stand-alone'].short) - ]); - - const monthsFormat = removeDuplicates([ - objectValues(monthNames.format.narrow), objectValues(monthNames.format.abbreviated), - objectValues(monthNames.format.wide) - ]); - - const monthsStandalone = removeDuplicates([ - objectValues(monthNames['stand-alone'].narrow), - objectValues(monthNames['stand-alone'].abbreviated), - objectValues(monthNames['stand-alone'].wide) - ]); - - const eras = removeDuplicates([ - [erasNames.eraNarrow['0'], erasNames.eraNarrow['1']], - [erasNames.eraAbbr['0'], erasNames.eraAbbr['1']], - [erasNames.eraNames['0'], erasNames.eraNames['1']] - ]); - - const dateTimeTranslations = [ - ...removeDuplicates([dayPeriodsFormat, dayPeriodsStandalone]), - ...removeDuplicates([daysFormat, daysStandalone]), - ...removeDuplicates([monthsFormat, monthsStandalone]), eras - ]; - - return dateTimeTranslations; -} - -/** - * Returns date, time and dateTime formats for a locale - * @returns [dateFormats, timeFormats, dateTimeFormats] - * each format: [ short, medium, long, full ] - */ -function getDateTimeFormats(localeData) { - function getFormats(data) { - return removeDuplicates([ - data.short._value || data.short, data.medium._value || data.medium, - data.long._value || data.long, data.full._value || data.full - ]); - } - - const dateFormats = localeData.main('dates/calendars/gregorian/dateFormats'); - const timeFormats = localeData.main('dates/calendars/gregorian/timeFormats'); - const dateTimeFormats = localeData.main('dates/calendars/gregorian/dateTimeFormats'); - - return [getFormats(dateFormats), getFormats(timeFormats), getFormats(dateTimeFormats)]; -} - -/** - * Returns day period rules for a locale - * @returns string[] - */ -function getDayPeriodRules(localeData) { - const dayPeriodRules = - localeData.get(`supplemental/dayPeriodRuleSet/${localeData.attributes.language}`); - const rules = {}; - if (dayPeriodRules) { - Object.keys(dayPeriodRules).forEach(key => { - if (dayPeriodRules[key]._at) { - rules[key] = dayPeriodRules[key]._at; - } else { - rules[key] = [dayPeriodRules[key]._from, dayPeriodRules[key]._before]; - } - }); - } - - return rules; -} - -/** - * Returns the first day of the week, based on US week days - * @returns number - */ -function getFirstDayOfWeek(localeData) { - return WEEK_DAYS.indexOf(localeData.supplemental.weekData.firstDay()); -} - -/** - * Returns week-end range for a locale, based on US week days - * @returns [number, number] - */ -function getWeekendRange(localeData) { - const startDay = - localeData.get(`supplemental/weekData/weekendStart/${localeData.attributes.territory}`) || - localeData.get('supplemental/weekData/weekendStart/001'); - const endDay = - localeData.get(`supplemental/weekData/weekendEnd/${localeData.attributes.territory}`) || - localeData.get('supplemental/weekData/weekendEnd/001'); - return [WEEK_DAYS.indexOf(startDay), WEEK_DAYS.indexOf(endDay)]; -} - -/** - * Returns dateTime data for a locale - * @returns [ firstDayOfWeek, weekendRange, formats ] - */ -function getDateTimeSettings(localeData) { - return [ - getFirstDayOfWeek(localeData), getWeekendRange(localeData), ...getDateTimeFormats(localeData) - ]; -} - -/** - * Returns the number symbols and formats for a locale - * @returns [ symbols, formats ] - * symbols: [ decimal, group, list, percentSign, plusSign, minusSign, exponential, - * superscriptingExponent, perMille, infinity, nan, timeSeparator, currencyDecimal?, currencyGroup? - * ] - * formats: [ currency, decimal, percent, scientific ] - */ -function getNumberSettings(localeData) { - const decimalFormat = localeData.main('numbers/decimalFormats-numberSystem-latn/standard'); - const percentFormat = localeData.main('numbers/percentFormats-numberSystem-latn/standard'); - const scientificFormat = localeData.main('numbers/scientificFormats-numberSystem-latn/standard'); - const currencyFormat = localeData.main('numbers/currencyFormats-numberSystem-latn/standard'); - const symbols = localeData.main('numbers/symbols-numberSystem-latn'); - const symbolValues = [ - symbols.decimal, - symbols.group, - symbols.list, - symbols.percentSign, - symbols.plusSign, - symbols.minusSign, - symbols.exponential, - symbols.superscriptingExponent, - symbols.perMille, - symbols.infinity, - symbols.nan, - symbols.timeSeparator, - ]; - - if (symbols.currencyDecimal || symbols.currencyGroup) { - symbolValues.push(symbols.currencyDecimal); - } - - if (symbols.currencyGroup) { - symbolValues.push(symbols.currencyGroup); - } - - return [symbolValues, [decimalFormat, percentFormat, currencyFormat, scientificFormat]]; -} - -/** - * Returns the currency code, symbol and name for a locale - * @returns [ code, symbol, name ] - */ -function getCurrencySettings(locale, localeData) { - const currencyInfo = localeData.main(`numbers/currencies`); - let currentCurrency = ''; - - // find the currency currently used in this country - const currencies = - localeData.get(`supplemental/currencyData/region/${localeData.attributes.territory}`) || - localeData.get( - `supplemental/currencyData/region/${localeData.attributes.language.toUpperCase()}`); - - if (currencies) { - currencies.some(currency => { - const keys = Object.keys(currency); - return keys.some(key => { - if (currency[key]._from && !currency[key]._to) { - return currentCurrency = key; - } - }); - }); - - if (!currentCurrency) { - throw new Error(`Unable to find currency for locale "${locale}"`); - } - } - - let currencySettings = [undefined, undefined, undefined]; - - if (currentCurrency) { - currencySettings = [ - currentCurrency, currencyInfo[currentCurrency].symbol, - currencyInfo[currentCurrency].displayName - ]; - } - - return currencySettings; -} - -/** - * Returns the writing direction for a locale - * @returns 'rtl' | 'ltr' - */ -function getDirectionality(localeData) { - const rtl = localeData.get('scriptMetadata/{script}/rtl'); - return rtl === 'YES' ? 'rtl' : 'ltr'; -} - -/** - * Transforms a string into a regexp - */ -function toRegExp(s) { - return new RegExp(s.replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'), 'g'); -} - -/** - * Returns the plural function for a locale - * todo(ocombe): replace "cldr" extractPluralRuleFunction with our own extraction using "CldrJS" - * because the 2 libs can become out of sync if they use different versions of the cldr database - */ -function getPluralFunction(locale, withTypes = true) { - let fn = cldr.extractPluralRuleFunction(locale).toString(); - - if (fn === EMPTY_RULE) { - fn = DEFAULT_RULE; - } - - const numberType = withTypes ? ': number' : ''; - fn = fn.replace(/function anonymous\(n[^}]+{/g, `function plural(n${numberType})${numberType} {`) - .replace(toRegExp('var'), 'let') - .replace(toRegExp('if(typeof n==="string")n=parseInt(n,10);'), '') - .replace(toRegExp('\n}'), ';\n}'); - - // The replacement values must match the `Plural` enum from common. - // We do not use the enum directly to avoid depending on that package. - return fn.replace(toRegExp('"zero"'), ' 0') - .replace(toRegExp('"one"'), ' 1') - .replace(toRegExp('"two"'), ' 2') - .replace(toRegExp('"few"'), ' 3') - .replace(toRegExp('"many"'), ' 4') - .replace(toRegExp('"other"'), ' 5'); -} - -/** - * Return an array of values from an object - */ -function objectValues(obj) { - return Object.keys(obj).map(key => obj[key]); -} - -/** - * To create smaller locale files, we remove duplicated data. - * To be make this work we need to store similar data in arrays, if some value in an array - * is undefined, we can take the previous defined value instead, because it means that it has - * been deduplicated. - * e.g.: [x, y, undefined, z, undefined, undefined] - * The first undefined is equivalent to y, the second and third are equivalent to z - * Note that the first value in an array is always defined. - * - * Also since we need to know which data is assumed similar, it is important that we store those - * similar data in arrays to mark the delimitation between values that have different meanings - * (e.g. months and days). - * - * For further size improvements, "undefined" values will be replaced by a constant in the arrays - * as the last step of the file generation (in generateLocale and generateLocaleExtra). - * e.g.: [x, y, undefined, z, undefined, undefined] will be [x, y, u, z, u, u] - */ -function removeDuplicates(data) { - const dedup = [data[0]]; - for (let i = 1; i < data.length; i++) { - if (stringify(data[i]) !== stringify(data[i - 1])) { - dedup.push(data[i]); - } else { - dedup.push(undefined); - } - } - return dedup; -} - -/** - * In Angular the locale is referenced by a "normalized" form. - */ -function normalizeLocale(locale) { - return locale.toLowerCase().replace(/_/g, '-'); -} - -module.exports.I18N_FOLDER = I18N_FOLDER; -module.exports.I18N_DATA_FOLDER = I18N_DATA_FOLDER; -module.exports.RELATIVE_I18N_DATA_FOLDER = RELATIVE_I18N_DATA_FOLDER; -module.exports.HEADER = HEADER; diff --git a/tools/gulp-tasks/cldr/util.js b/tools/gulp-tasks/cldr/util.js deleted file mode 100644 index 4b6c005f73..0000000000 --- a/tools/gulp-tasks/cldr/util.js +++ /dev/null @@ -1,182 +0,0 @@ -// tslint:disable:file-header - -/** - * Like JSON.stringify, but without double quotes around keys, and without null instead of undefined - * values - * Based on https://github.com/json5/json5/blob/master/lib/json5.js - * Use option "quoteKeys" to preserve quotes for keys - */ -module.exports.stringify = function(obj, quoteKeys) { - var getReplacedValueOrUndefined = function(holder, key) { - var value = holder[key]; - - // Replace the value with its toJSON value first, if possible - if (value && value.toJSON && typeof value.toJSON === 'function') { - value = value.toJSON(); - } - - return value; - }; - - function isWordChar(c) { - return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || - c === '_' || c === '$'; - } - - function isWordStart(c) { - return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c === '_' || c === '$'; - } - - function isWord(key) { - if (typeof key !== 'string') { - return false; - } - if (!isWordStart(key[0])) { - return false; - } - var i = 1, length = key.length; - while (i < length) { - if (!isWordChar(key[i])) { - return false; - } - i++; - } - return true; - } - - // polyfills - function isArray(obj) { - if (Array.isArray) { - return Array.isArray(obj); - } else { - return Object.prototype.toString.call(obj) === '[object Array]'; - } - } - - function isDate(obj) { - return Object.prototype.toString.call(obj) === '[object Date]'; - } - - var objStack = []; - function checkForCircular(obj) { - for (var i = 0; i < objStack.length; i++) { - if (objStack[i] === obj) { - throw new TypeError('Converting circular structure to JSON'); - } - } - } - - // Copied from Crokford's implementation of JSON - // See - // https://github.com/douglascrockford/JSON-js/blob/e39db4b7e6249f04a195e7dd0840e610cc9e941e/json2.js#L195 - // Begin - var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - meta = { // table of character substitutions - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"' : '\\"', - '\\': '\\\\' - }; - function escapeString(str, keepQuotes) { - // If the string contains no control characters, no quote characters, and no - // backslash characters, then we can safely slap some quotes around it. - // Otherwise we must also replace the offending characters with safe escape - // sequences. - escapable.lastIndex = 0; - return escapable.test(str) && !keepQuotes ? '"' + str.replace(escapable, function(a) { - var c = meta[a]; - return typeof c === 'string' ? c : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' : '"' + str + '"'; - } - // End - - function internalStringify(holder, key) { - var buffer, res; - - // Replace the value, if necessary - var obj_part = getReplacedValueOrUndefined(holder, key); - - if (obj_part && !isDate(obj_part)) { - // unbox objects - // don't unbox dates, since will turn it into number - obj_part = obj_part.valueOf(); - } - switch (typeof obj_part) { - case 'boolean': - return obj_part.toString(); - - case 'number': - if (isNaN(obj_part) || !isFinite(obj_part)) { - return 'null'; - } - return obj_part.toString(); - - case 'string': - return escapeString(obj_part.toString()); - - case 'object': - if (obj_part === null) { - return 'null'; - } else if (isArray(obj_part)) { - checkForCircular(obj_part); - buffer = '['; - objStack.push(obj_part); - - for (var i = 0; i < obj_part.length; i++) { - res = internalStringify(obj_part, i); - if (res === null) { - buffer += 'null'; - } /* else if (typeof res === 'undefined') { // modified to support empty array values - buffer += ''; - }*/ - else { - buffer += res; - } - if (i < obj_part.length - 1) { - buffer += ','; - } - } - objStack.pop(); - buffer += ']'; - } else { - checkForCircular(obj_part); - buffer = '{'; - var nonEmpty = false; - objStack.push(obj_part); - for (var prop in obj_part) { - if (obj_part.hasOwnProperty(prop)) { - var value = internalStringify(obj_part, prop); - if (typeof value !== 'undefined' && value !== null) { - nonEmpty = true; - key = isWord(prop) && !quoteKeys ? prop : escapeString(prop, quoteKeys); - buffer += key + ':' + value + ','; - } - } - } - objStack.pop(); - if (nonEmpty) { - buffer = buffer.substring(0, buffer.length - 1) + '}'; - } else { - buffer = '{}'; - } - } - return buffer; - default: - // functions and undefined should be ignored - return undefined; - } - } - - // special case...when undefined is used inside of - // a compound object/array, return null. - // but when top-level, return undefined - var topLevelHolder = {'': obj}; - if (obj === undefined) { - return getReplacedValueOrUndefined(topLevelHolder, ''); - } - return internalStringify(topLevelHolder, ''); -}; diff --git a/tools/npm_integration_test/npm_integration_test.bzl b/tools/npm_integration_test/npm_integration_test.bzl index 00fe9cda0b..23ad5ead59 100644 --- a/tools/npm_integration_test/npm_integration_test.bzl +++ b/tools/npm_integration_test/npm_integration_test.bzl @@ -175,7 +175,7 @@ def npm_integration_test(name, **kwargs): ) tags = kwargs.pop("tags", []) - npm_deps = ["@npm//tmp"] + npm_deps = ["@npm//tmp", "@npm//@bazel/runfiles"] nodejs_test( name = name, diff --git a/tools/npm_integration_test/test_runner.js b/tools/npm_integration_test/test_runner.js index da99f9505a..d676c0274f 100644 --- a/tools/npm_integration_test/test_runner.js +++ b/tools/npm_integration_test/test_runner.js @@ -10,7 +10,7 @@ const spawnSync = require('child_process').spawnSync; const fs = require('fs'); const path = require('path'); const tmp = require('tmp'); -const runfiles = require(process.env['BAZEL_NODE_RUNFILES_HELPER']); +const {runfiles} = require('@bazel/runfiles'); const VERBOSE_LOGS = !!process.env['VERBOSE_LOGS']; diff --git a/tools/saucelabs/BUILD.bazel b/tools/saucelabs/BUILD.bazel index d4f09c2868..1eef4f7fe5 100644 --- a/tools/saucelabs/BUILD.bazel +++ b/tools/saucelabs/BUILD.bazel @@ -55,6 +55,7 @@ nodejs_binary( name = "karma-saucelabs", data = [ "sauce-service.sh", + "@npm//@bazel/runfiles", "@npm//karma", "@npm//sauce-connect", "@npm//shelljs", diff --git a/tools/saucelabs/karma-saucelabs.js b/tools/saucelabs/karma-saucelabs.js index 73e2cf0fa6..619533b785 100644 --- a/tools/saucelabs/karma-saucelabs.js +++ b/tools/saucelabs/karma-saucelabs.js @@ -10,7 +10,7 @@ const shell = require('shelljs'); const karmaBin = require.resolve('karma/bin/karma'); -const runfiles = require(process.env['BAZEL_NODE_RUNFILES_HELPER']); +const {runfiles} = require('@bazel/runfiles'); const sauceService = runfiles.resolveWorkspaceRelative(process.argv[2]); process.argv = [ process.argv[0], diff --git a/tools/size-tracking/index.ts b/tools/size-tracking/index.ts index cd8c61b21a..de7143ce01 100644 --- a/tools/size-tracking/index.ts +++ b/tools/size-tracking/index.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import chalk from 'chalk'; +import * as chalk from 'chalk'; import {readFileSync, writeFileSync} from 'fs'; import {compareFileSizeData} from './file_size_compare'; diff --git a/tools/symbol-extractor/BUILD.bazel b/tools/symbol-extractor/BUILD.bazel index 057c7cc6c0..e676f8fc78 100644 --- a/tools/symbol-extractor/BUILD.bazel +++ b/tools/symbol-extractor/BUILD.bazel @@ -14,6 +14,7 @@ ts_library( ), deps = [ "//packages:types", + "@npm//@bazel/runfiles", "@npm//typescript", ], ) diff --git a/tools/symbol-extractor/cli.ts b/tools/symbol-extractor/cli.ts index e6ab509c49..55a217dae1 100644 --- a/tools/symbol-extractor/cli.ts +++ b/tools/symbol-extractor/cli.ts @@ -6,10 +6,10 @@ * found in the LICENSE file at https://angular.io/license */ +import {runfiles} from '@bazel/runfiles'; import * as fs from 'fs'; -import {SymbolExtractor} from './symbol_extractor'; -const runfiles = require(process.env['BAZEL_NODE_RUNFILES_HELPER'] as string); +import {SymbolExtractor} from './symbol_extractor'; if (require.main === module) { const args = process.argv.slice(2) as [string, string]; diff --git a/tools/ts-api-guardian/BUILD.bazel b/tools/ts-api-guardian/BUILD.bazel deleted file mode 100644 index 543e6af123..0000000000 --- a/tools/ts-api-guardian/BUILD.bazel +++ /dev/null @@ -1,115 +0,0 @@ -# BEGIN-INTERNAL -load("@build_bazel_rules_nodejs//:index.bzl", "pkg_npm") -load("@npm//@bazel/typescript:index.bzl", "ts_library") -load("//tools:defaults.bzl", "jasmine_node_test") - -ts_library( - name = "lib", - srcs = glob(["lib/*.ts"]), - module_name = "ts-api-guardian", - tsconfig = "//tools:tsconfig.json", - visibility = ["//visibility:public"], - deps = [ - "@npm//@types/diff", - "@npm//@types/minimist", - "@npm//@types/node", - "@npm//chalk", - "@npm//diff", - "@npm//minimist", - "@npm//typescript", - ], -) - -# Copy Angular's license to govern ts-api-guardian as well. -# We use a genrule to put it in this package, so it will be in the right root directory. -genrule( - name = "license", - srcs = ["//:LICENSE"], - outs = ["LICENSE"], - cmd = "cp $< $@", -) - -pkg_npm( - name = "ts-api-guardian", - srcs = [ - "BUILD.bazel", - "README.md", - "bin/ts-api-guardian", - "index.bzl", - "package.json", - ], - substitutions = { - "@angular//tools/ts-api-guardian:bin": "//:node_modules/ts-api-guardian/bin", - "@angular//tools/ts-api-guardian:lib": "@npm//ts-api-guardian", - }, - deps = [ - ":lib", - ":license", - ], -) - -#######################################3 -# Tests for this package - -ts_library( - name = "test_lib", - testonly = True, - srcs = glob( - ["test/*.ts"], - exclude = ["test/bootstrap.ts"], - ), - tsconfig = "//tools:tsconfig-test", - deps = [ - ":lib", - "@npm//@types/chai", - "@npm//@types/jasmine", - "@npm//@types/node", - "@npm//chai", - "@npm//jasmine", - "@npm//typescript", - ], -) - -ts_library( - name = "bootstrap", - testonly = True, - srcs = ["test/bootstrap.ts"], - tsconfig = "//tools:tsconfig-test", - deps = ["@npm//@types/node"], -) - -# Select the es5 .js output of the ts_library :boostrap target -# with `output_group = "es5_sources"` for use in the jasmine_node_test -# below. This exposes an internal detail of ts_library that is not ideal. -# TODO(gregmagolan): clean this up by using tsc() in this case rather than ts_library -filegroup( - name = "bootstrap_es5", - testonly = True, - srcs = [":bootstrap"], - output_group = "es5_sources", -) - -jasmine_node_test( - name = "tests", - srcs = [ - ":test_lib", - ], - bootstrap = [":bootstrap_es5"], - data = glob([ - "test/fixtures/*.ts", - "test/fixtures/*.patch", - ]) + [ - ":ts-api-guardian", - ], -) - -filegroup( - name = "bin", - srcs = glob(["lib/*.js"]) + ["bin/ts-api-guardian"], - visibility = ["//visibility:public"], -) - -# Exported to be referenced as entry_point of the nodejs_binary -exports_files(["bin/ts-api-guardian"]) - -# END-INTERNAL diff --git a/tools/ts-api-guardian/README.md b/tools/ts-api-guardian/README.md deleted file mode 100644 index 296d4e1e6f..0000000000 --- a/tools/ts-api-guardian/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# Typescript API Guardian - -Keeps track of public API surface of a typescript library. - -Examples: - -```sh -# Generate one declaration file -ts-api-guardian --out api_guard.d.ts index.d.ts -# Generate multiple declaration files -# (output location like typescript) -ts-api-guardian --outDir api_guard [--rootDir .] core/index.d.ts core/testing.d.ts -# Print usage -ts-api-guardian --help -# Check against one declaration file -ts-api-guardian --verify api_guard.d.ts index.d.ts -# Check against multiple declaration files -ts-api-guardian --verifyDir api_guard [--rootDir .] core/index.d.ts core/testing.d.ts -``` - -# For developers - -Build and test this library: - -```sh -$ yarn bazel run //:install -$ yarn bazel test //tools/ts-api-guardian:all -``` - -Publish to NPM: - -```sh -$ yarn bazel run @nodejs//:npm whoami # should be logged in as angular -$ grep version tools/ts-api-guardian/package.json # advance as needed -$ yarn bazel run //tools/ts-api-guardian:ts-api-guardian.publish -``` diff --git a/tools/ts-api-guardian/bin/ts-api-guardian b/tools/ts-api-guardian/bin/ts-api-guardian deleted file mode 100755 index b0cfde463b..0000000000 --- a/tools/ts-api-guardian/bin/ts-api-guardian +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node - -require('../lib/cli').startCli(); diff --git a/tools/ts-api-guardian/index.bzl b/tools/ts-api-guardian/index.bzl deleted file mode 100644 index f6ed5b311d..0000000000 --- a/tools/ts-api-guardian/index.bzl +++ /dev/null @@ -1,148 +0,0 @@ -# Copyright 2017 The Bazel Authors. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Runs ts_api_guardian -""" - -load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary", "nodejs_test") - -COMMON_MODULE_IDENTIFIERS = ["angular", "jasmine", "protractor", "Symbol"] - -def ts_api_guardian_test( - name, - golden, - actual, - data = [], - strip_export_pattern = [], - allow_module_identifiers = COMMON_MODULE_IDENTIFIERS, - use_angular_tag_rules = True, - **kwargs): - """Runs ts_api_guardian - """ - data += [ - # Locally we need to add the TS build target - # But it will replaced to @npm//ts-api-guardian when publishing - "@angular//tools/ts-api-guardian:lib", - # BEGIN-INTERNAL - "@angular//tools/ts-api-guardian:bin", - # END-INTERNAL - # The below are required during runtime - "@npm//chalk", - "@npm//diff", - "@npm//minimist", - "@npm//typescript", - ] - - args = [ - # Needed so that node doesn't walk back to the source directory. - # From there, the relative imports would point to .ts files. - "--node_options=--preserve-symlinks", - # TODO(josephperrott): update dependency usages to no longer need bazel patch module resolver - # See: https://github.com/bazelbuild/rules_nodejs/wiki#--bazel_patch_module_resolver-now-defaults-to-false-2324 - "--bazel_patch_module_resolver", - ] - - for i in strip_export_pattern: - # Quote the regexp before passing it via the command line. - quoted_pattern = "\"%s\"" % i - args += ["--stripExportPattern", quoted_pattern] - - for i in allow_module_identifiers: - args += ["--allowModuleIdentifiers", i] - - if use_angular_tag_rules: - args += ["--useAngularTagRules"] - - nodejs_test( - name = name, - data = data, - entry_point = Label("@angular//tools/ts-api-guardian:bin/ts-api-guardian"), - tags = kwargs.pop("tags", []) + ["api_guard"], - templated_args = args + ["--verify", golden, actual], - **kwargs - ) - - nodejs_binary( - name = name + ".accept", - testonly = True, - data = data, - entry_point = Label("@angular//tools/ts-api-guardian:bin/ts-api-guardian"), - tags = kwargs.pop("tags", []) + ["api_guard"], - templated_args = args + ["--out", golden, actual], - **kwargs - ) - -def ts_api_guardian_test_npm_package( - name, - goldenDir, - actualDir, - data = [], - strip_export_pattern = ["^ɵ(?!ɵdefineInjectable|ɵinject|ɵInjectableDef)"], - allow_module_identifiers = COMMON_MODULE_IDENTIFIERS, - use_angular_tag_rules = True, - **kwargs): - """Runs ts_api_guardian - """ - data += [ - # Locally we need to add the TS build target - # But it will replaced to @npm//ts-api-guardian when publishing - "@angular//tools/ts-api-guardian:lib", - "@angular//tools/ts-api-guardian:bin", - # The below are required during runtime - "@npm//chalk", - "@npm//diff", - "@npm//minimist", - "@npm//typescript", - ] - - args = [ - # Needed so that node doesn't walk back to the source directory. - # From there, the relative imports would point to .ts files. - "--node_options=--preserve-symlinks", - # We automatically discover the enpoints for our NPM package. - "--autoDiscoverEntrypoints", - # TODO(josephperrott): update dependency usages to no longer need bazel patch module resolver - # See: https://github.com/bazelbuild/rules_nodejs/wiki#--bazel_patch_module_resolver-now-defaults-to-false-2324 - "--bazel_patch_module_resolver", - ] - - for i in strip_export_pattern: - # Quote the regexp before passing it via the command line. - quoted_pattern = "\"%s\"" % i - args += ["--stripExportPattern", quoted_pattern] - - for i in allow_module_identifiers: - args += ["--allowModuleIdentifiers", i] - - if use_angular_tag_rules: - args += ["--useAngularTagRules"] - - nodejs_test( - name = name, - data = data, - entry_point = "@angular//tools/ts-api-guardian:bin/ts-api-guardian", - tags = kwargs.pop("tags", []) + ["api_guard"], - templated_args = args + ["--autoDiscoverEntrypoints", "--verifyDir", goldenDir, "--rootDir", "$(rlocation %s)" % actualDir], - **kwargs - ) - - nodejs_binary( - name = name + ".accept", - testonly = True, - data = data, - entry_point = "@angular//tools/ts-api-guardian:bin/ts-api-guardian", - tags = kwargs.pop("tags", []) + ["api_guard"], - templated_args = args + ["--autoDiscoverEntrypoints", "--outDir", goldenDir, "--rootDir", "$(rlocation %s)" % actualDir], - **kwargs - ) diff --git a/tools/ts-api-guardian/lib/cli.ts b/tools/ts-api-guardian/lib/cli.ts deleted file mode 100644 index 98581b3f46..0000000000 --- a/tools/ts-api-guardian/lib/cli.ts +++ /dev/null @@ -1,282 +0,0 @@ -/** - * @license - * 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 - */ - -// tslint:disable:no-console - -// TODO(alexeagle): why not import chalk from 'chalk'? -// Something to do with TS default export in UMD emit... -const chalk = require('chalk'); -import * as minimist from 'minimist'; -import * as path from 'path'; - -import {SerializationOptions, generateGoldenFile, verifyAgainstGoldenFile, discoverAllEntrypoints} from './main'; - -/** Name of the CLI */ -const CMD = 'ts-api-guardian'; - -/** Name of the Bazel workspace that runs the CLI. */ -const bazelWorkspaceName = process.env.BAZEL_WORKSPACE; -/** - * Path to the Bazel workspace directory. Only set if the CLI is run with `bazel run`. - * https://docs.bazel.build/versions/master/user-manual.html#run. - */ -const bazelWorkspaceDirectory = process.env.BUILD_WORKSPACE_DIRECTORY; -/** - * Regular expression that matches Bazel manifest paths that start with the - * current Bazel workspace, followed by a path delimiter. - */ -const bazelWorkspaceManifestPathRegex = - bazelWorkspaceName ? new RegExp(`^${bazelWorkspaceName}[/\\\\]`) : null; - -export function startCli() { - const {argv, mode, errors} = parseArguments(process.argv.slice(2)); - - const options: SerializationOptions = { - stripExportPattern: [].concat(argv['stripExportPattern']), - allowModuleIdentifiers: [].concat(argv['allowModuleIdentifiers']), - }; - - // Since the API guardian can be also used by other projects, we should not set up the default - // Angular project tag rules unless specified explicitly through a given option. - if (argv['useAngularTagRules']) { - options.exportTags = { - requireAtLeastOne: ['publicApi', 'codeGenApi'], - banned: ['experimental'], - toCopy: ['deprecated', 'codeGenApi'] - }; - options.memberTags = { - requireAtLeastOne: [], - banned: ['experimental', 'publicApi', 'codeGenApi'], - toCopy: ['deprecated'] - }; - options.paramTags = { - requireAtLeastOne: [], - banned: ['experimental', 'publicApi', 'codeGenApi'], - toCopy: ['deprecated'] - }; - } - - // In autoDiscoverEntrypoints mode we set the inputed files as the discovered entrypoints - // for the rootDir - let entrypoints: string[]; - if (argv['autoDiscoverEntrypoints']) { - entrypoints = discoverAllEntrypoints(argv['rootDir']); - } else { - entrypoints = argv._.slice(); - } - - for (const error of errors) { - console.warn(error); - } - - if (mode === 'help') { - printUsageAndExit(!!errors.length); - } else { - const targets = resolveFileNamePairs(argv, mode, entrypoints); - - if (mode === 'out') { - for (const {entrypoint, goldenFile} of targets) { - generateGoldenFile(entrypoint, goldenFile, options); - } - } else { // mode === 'verify' - let hasDiff = false; - - for (const {entrypoint, goldenFile} of targets) { - const diff = verifyAgainstGoldenFile(entrypoint, goldenFile, options); - if (diff) { - hasDiff = true; - const lines = diff.split('\n'); - if (lines.length) { - lines.pop(); // Remove trailing newline - } - for (const line of lines) { - const chalkMap: - {[key: string]: any} = {'-': chalk.red, '+': chalk.green, '@': chalk.cyan}; - const chalkFunc = chalkMap[line[0]] || chalk.reset; - console.log(chalkFunc(line)); - } - } - } - - if (hasDiff) { - const bazelTarget = process.env['BAZEL_TARGET']; - // Under bazel, give instructions how to use bazel run to accept the golden file. - if (bazelTarget) { - console.error('\n\nIf you modify a public API, you must accept the new golden file.'); - console.error('\n\nTo do so, execute the following Bazel target:'); - console.error(` yarn bazel run ${bazelTarget.replace(/_bin$/, '')}.accept`); - if (process.env['TEST_WORKSPACE'] === 'angular') { - console.error('\n\nFor more information, see'); - console.error( - '\n https://github.com/angular/angular/blob/master/docs/PUBLIC_API.md#golden-files'); - } - } - - process.exit(1); - } - } - } -} - -export function parseArguments(input: string[]): - {argv: minimist.ParsedArgs, mode: string, errors: string[]} { - let help = false; - const errors: string[] = []; - - const argv = minimist(input, { - string: [ - 'out', 'outDir', 'verify', 'verifyDir', 'rootDir', 'stripExportPattern', - 'allowModuleIdentifiers' - ], - boolean: [ - 'help', 'useAngularTagRules', 'autoDiscoverEntrypoints', - // Options used by chalk automagically - 'color', 'no-color' - ], - alias: {'outFile': 'out', 'verifyFile': 'verify'}, - unknown: (option: string) => { - if (option[0] === '-') { - errors.push(`Unknown option: ${option}`); - help = true; - return false; // do not add to argv._ - } else { - return true; // add to argv._ - } - } - }); - - help = help || argv['help']; - - if (help) { - return {argv, mode: 'help', errors}; - } - - let modes: string[] = []; - - if (argv['out']) { - modes.push('out'); - } - if (argv['outDir']) { - modes.push('out'); - } - if (argv['verify']) { - modes.push('verify'); - } - if (argv['verifyDir']) { - modes.push('verify'); - } - - if (argv['autoDiscoverEntrypoints']) { - if (!argv['rootDir']) { - errors.push(`--rootDir must be provided with --autoDiscoverEntrypoints.`); - modes = ['help']; - } - if (!argv['outDir'] && !argv['verifyDir']) { - errors.push(`--outDir or --verifyDir must be used with --autoDiscoverEntrypoints.`); - modes = ['help']; - } - } else { - if (!argv._.length) { - errors.push('No input file specified.'); - modes = ['help']; - } else if (modes.length !== 1) { - errors.push('Specify either --out[Dir] or --verify[Dir]'); - modes = ['help']; - } else if (argv._.length > 1 && !argv['outDir'] && !argv['verifyDir']) { - errors.push(`More than one input specified. Use --${modes[0]}Dir instead.`); - modes = ['help']; - } - } - - return {argv, mode: modes[0], errors}; -} - -function printUsageAndExit(error = false) { - const print = error ? console.warn.bind(console) : console.log.bind(console); - print(`Usage: ${CMD} [options] - ${CMD} --out - ${CMD} --outDir [--rootDir .] - - ${CMD} --verify - ${CMD} --verifyDir [--rootDir .] - -Options: - --help Show this usage message - - --out Write golden output to file - --outDir Write golden file structure to directory - - --verify Read golden input from file - --verifyDir Read golden file structure from directory - - --rootDir Specify the root directory of input files - - --useAngularTagRules Whether the Angular specific tag rules should be used. - --stripExportPattern Do not output exports matching the pattern - --allowModuleIdentifiers - Allow identifier for "* as foo" imports - --autoDiscoverEntrypoints Automatically find all entrypoints .d.ts files in the rootDir`); - process.exit(error ? 1 : 0); -} - -/** - * Resolves a given path in the file system. If `ts-api-guardian` runs with Bazel, file paths - * are resolved through runfiles. Additionally in Bazel, this method handles the case where - * manifest file paths are not existing, but need to resolve to the Bazel workspace directory. - * This happens commonly when goldens are approved, but the golden file does not exist yet. - */ -function resolveFilePath(fileName: string): string { - // If an absolute path is specified, the path is already resolved. - if (path.isAbsolute(fileName)) { - return fileName; - } - // Outside of Bazel, file paths are resolved based on the current working directory. - if (!bazelWorkspaceName) { - return path.resolve(fileName); - } - // In Bazel, we first try to resolve the file through the runfiles. We do this by calling - // the `require.resolve` function that is patched by the Bazel NodeJS rules. Note that we - // need to catch errors because files inside tree artifacts cannot be resolved through - // runfile manifests. Hence, we need to have alternative resolution logic when resolving - // file paths. Additionally, it could happen that manifest paths which aren't part of the - // runfiles are specified (i.e. golden is approved but does not exist in the workspace yet). - try { - return require.resolve(fileName); - } catch { - } - // This handles cases where file paths cannot be resolved through runfiles. This happens - // commonly when goldens are approved while the golden does not exist in the workspace yet. - // In those cases, we want to build up a relative path based on the manifest path, and join - // it with the absolute bazel workspace directory (which is only set in `bazel run`). - // e.g. `angular/goldens/<..>/common` should become `{workspace_dir}/goldens/<...>/common`. - if (bazelWorkspaceManifestPathRegex !== null && bazelWorkspaceDirectory && - bazelWorkspaceManifestPathRegex.test(fileName)) { - return path.join(bazelWorkspaceDirectory, fileName.substr(bazelWorkspaceName.length + 1)); - } - throw Error(`Could not resolve file path in runfiles: ${fileName}`); -} - -function resolveFileNamePairs(argv: minimist.ParsedArgs, mode: string, entrypoints: string[]): - {entrypoint: string, goldenFile: string}[] { - if (argv[mode]) { - return [{ - entrypoint: resolveFilePath(entrypoints[0]), - goldenFile: resolveFilePath(argv[mode]), - }]; - } else { // argv[mode + 'Dir'] - let rootDir = argv['rootDir'] || '.'; - const goldenDir = argv[mode + 'Dir']; - - return entrypoints.map((fileName: string) => { - return { - entrypoint: resolveFilePath(fileName), - goldenFile: resolveFilePath(path.join(goldenDir, path.relative(rootDir, fileName))), - }; - }); - } -} diff --git a/tools/ts-api-guardian/lib/main.ts b/tools/ts-api-guardian/lib/main.ts deleted file mode 100644 index 777bce97c1..0000000000 --- a/tools/ts-api-guardian/lib/main.ts +++ /dev/null @@ -1,98 +0,0 @@ -/** - * @license - * 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 - */ - -import {createPatch} from 'diff'; -import * as fs from 'fs'; -import * as path from 'path'; - -import {publicApi, SerializationOptions} from './serializer'; - -export {publicApi, SerializationOptions} from './serializer'; - -export function generateGoldenFile( - entrypoint: string, outFile: string, options: SerializationOptions = {}): void { - const output = publicApi(entrypoint, options); - - ensureDirectory(path.dirname(outFile)); - fs.writeFileSync(outFile, output); -} - -export function verifyAgainstGoldenFile( - entrypoint: string, goldenFile: string, options: SerializationOptions = {}): string { - const actual = publicApi(entrypoint, options); - const expected = fs.existsSync(goldenFile) ? fs.readFileSync(goldenFile).toString() : ''; - - if (actual === expected) { - return ''; - } else { - // The patch should not show absolute paths, as these are pretty long and obfuscated - // the printed golden diff. Additionally, path separators in the patch should be forward - // slashes for consistency and to enable easier integration testing. - const displayFileName = path.relative(process.cwd(), goldenFile).replace(/\\/g, '/'); - const patch = createPatch(displayFileName, expected, actual, 'Golden file', 'Generated API'); - - // Remove the header of the patch - const start = patch.indexOf('\n', patch.indexOf('\n') + 1) + 1; - - return patch.substring(start); - } -} - -function ensureDirectory(dir: string) { - if (!fs.existsSync(dir)) { - ensureDirectory(path.dirname(dir)); - fs.mkdirSync(dir); - } -} - -/** - * Determine if the provided path is a directory. - */ -function isDirectory(dirPath: string) { - try { - return fs.lstatSync(dirPath).isDirectory(); - } catch { - return false; - } -} - -/** - * Gets an array of paths to the typings files for each of the recursively discovered - * package.json - * files from the directory provided. - */ -export function discoverAllEntrypoints(dirPath: string) { - // Determine all of the package.json files - const packageJsons: string[] = []; - const entryPoints: string[] = []; - const findPackageJsonsInDir = (nextPath: string) => { - for (const file of fs.readdirSync(nextPath)) { - const fullPath = path.join(nextPath, file); - if (isDirectory(fullPath)) { - findPackageJsonsInDir(fullPath); - } else { - if (file === 'package.json') { - packageJsons.push(fullPath); - } - } - } - }; - findPackageJsonsInDir(dirPath); - - // Get all typings file locations from package.json files - for (const packageJson of packageJsons) { - const packageJsonObj = - JSON.parse(fs.readFileSync(packageJson, {encoding: 'utf8'})) as {typings: string}; - const typings = packageJsonObj.typings; - if (typings) { - entryPoints.push(path.join(path.dirname(packageJson), typings)); - } - } - - return entryPoints; -} diff --git a/tools/ts-api-guardian/lib/serializer.ts b/tools/ts-api-guardian/lib/serializer.ts deleted file mode 100644 index 45971194a0..0000000000 --- a/tools/ts-api-guardian/lib/serializer.ts +++ /dev/null @@ -1,448 +0,0 @@ -/** - * @license - * 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 - */ - -import * as path from 'path'; -import * as ts from 'typescript'; - -const baseTsOptions: ts.CompilerOptions = { - // We don't want symbols from external modules to be resolved, so we use the - // classic algorithm. - moduleResolution: ts.ModuleResolutionKind.Classic -}; - -export interface JsDocTagOptions { - /** - * An array of names of jsdoc tags, one of which must exist. If no tags are provided, there are no - * required tags. - */ - requireAtLeastOne?: string[]; - - /** - * An array of names of jsdoc tags that must not exist. - */ - banned?: string[]; - - /** - * An array of names of jsdoc tags that will be copied to the serialized code. - */ - toCopy?: string[]; -} - -export interface SerializationOptions { - /** - * Removes all exports matching the regular expression. - */ - stripExportPattern?: RegExp|RegExp[]; - /** - * Allows these identifiers as modules in the output. For example, - * ``` - * import * as angular from './angularjs'; - * - * export class Foo extends angular.Bar {} - * ``` - * will produce `export class Foo extends angular.Bar {}` and requires explicitly allowing - * `angular` as a module identifier. - */ - allowModuleIdentifiers?: string[]; - - /** The jsdoc tag options for top level exports */ - exportTags?: JsDocTagOptions; - - /** The jsdoc tag options for properties/methods/etc of exports */ - memberTags?: JsDocTagOptions; - - /** The jsdoc tag options for parameters of members/functions */ - paramTags?: JsDocTagOptions; -} - -export type DiagnosticSeverity = 'warn'|'error'|'none'; - -export function publicApi(fileName: string, options: SerializationOptions = {}): string { - return publicApiInternal(ts.createCompilerHost(baseTsOptions), fileName, baseTsOptions, options); -} - -export function publicApiInternal( - host: ts.CompilerHost, fileName: string, tsOptions: ts.CompilerOptions, - options: SerializationOptions = {}): string { - // Since the entry point will be compared with the source files from the TypeScript program, - // the path needs to be normalized with forward slashes in order to work within Windows. - const entrypoint = path.normalize(fileName).replace(/\\/g, '/'); - - // Setup default tag options - options = { - ...options, - exportTags: applyDefaultTagOptions(options.exportTags), - memberTags: applyDefaultTagOptions(options.memberTags), - paramTags: applyDefaultTagOptions(options.paramTags) - }; - - if (!entrypoint.match(/\.d\.ts$/)) { - throw new Error(`Source file "${fileName}" is not a declaration file`); - } - - const program = ts.createProgram([entrypoint], tsOptions, host); - return new ResolvedDeclarationEmitter(program, entrypoint, options).emit(); -} - -interface Diagnostic { - type?: DiagnosticSeverity; - message: string; -} - -class ResolvedDeclarationEmitter { - private program: ts.Program; - private fileName: string; - private typeChecker: ts.TypeChecker; - private options: SerializationOptions; - private diagnostics: Diagnostic[]; - - constructor(program: ts.Program, fileName: string, options: SerializationOptions) { - this.program = program; - this.fileName = fileName; - this.options = options; - this.diagnostics = []; - - this.typeChecker = this.program.getTypeChecker(); - } - - emit(): string { - const sourceFile = this.program.getSourceFiles().find(sf => sf.fileName === this.fileName); - if (!sourceFile) { - throw new Error(`Source file "${this.fileName}" not found`); - } - - let output: string[] = []; - - const resolvedSymbols = this.getResolvedSymbols(sourceFile); - // Sort all symbols so that the output is more deterministic - resolvedSymbols.sort(symbolCompareFunction); - - for (const symbol of resolvedSymbols) { - if (this.isExportPatternStripped(symbol.name)) { - continue; - } - - const typeDecl = symbol.declarations && symbol.declarations[0]; - const valDecl = symbol.valueDeclaration; - if (!typeDecl && !valDecl) { - this.diagnostics.push({ - type: 'warn', - message: `${sourceFile.fileName}: error: No declaration found for symbol "${symbol.name}"` - }); - continue; - } - typeDecl && this.emitDeclaration(symbol, typeDecl, output); - if (valDecl && typeDecl.kind === ts.SyntaxKind.InterfaceDeclaration) { - // Only generate value declarations in case of interfaces. - valDecl && this.emitDeclaration(symbol, valDecl, output); - } - } - - if (this.diagnostics.length) { - const message = this.diagnostics.map(d => d.message).join('\n'); - console.warn(message); - if (this.diagnostics.some(d => d.type === 'error')) { - throw new Error(message); - } - } - - return output.join(''); - } - - emitDeclaration(symbol: ts.Symbol, decl: ts.Node, output: string[]) { - // The declaration node may not be a complete statement, e.g. for var/const - // symbols. We need to find the complete export statement by traversing - // upwards. - while (!hasModifier(decl, ts.SyntaxKind.ExportKeyword) && decl.parent) { - decl = decl.parent; - } - - if (hasModifier(decl, ts.SyntaxKind.ExportKeyword)) { - // Make an empty line between two exports - if (output.length) { - output.push('\n'); - } - - const jsdocComment = this.processJsDocTags(decl, this.options.exportTags); - if (jsdocComment) { - output.push(jsdocComment + '\n'); - } - - output.push(stripEmptyLines(this.emitNode(decl)) + '\n'); - } else { - // This may happen for symbols re-exported from external modules. - this.diagnostics.push({ - type: 'warn', - message: createErrorMessage(decl, `No export declaration found for symbol "${symbol.name}"`) - }); - } - } - - private isExportPatternStripped(symbolName: string): boolean { - return [].concat(this.options.stripExportPattern).some(p => !!(p && symbolName.match(p))); - } - - private getResolvedSymbols(sourceFile: ts.SourceFile): ts.Symbol[] { - const ms = (sourceFile).symbol; - const rawSymbols = ms ? (this.typeChecker.getExportsOfModule(ms) || []) : []; - return rawSymbols.map(s => { - if (s.flags & ts.SymbolFlags.Alias) { - const resolvedSymbol = this.typeChecker.getAliasedSymbol(s); - - // This will happen, e.g. for symbols re-exported from external modules. - if (!resolvedSymbol.valueDeclaration && !resolvedSymbol.declarations) { - return s; - } - if (resolvedSymbol.name !== s.name) { - if (this.isExportPatternStripped(s.name)) { - return s; - } - throw new Error( - `Symbol "${resolvedSymbol.name}" was aliased as "${s.name}". ` + - `Aliases are not supported."`); - } - - return resolvedSymbol; - } else { - return s; - } - }); - } - - emitNode(node: ts.Node) { - if (hasModifier(node, ts.SyntaxKind.PrivateKeyword)) { - return ''; - } - - const firstQualifier: ts.Identifier|null = getFirstQualifier(node); - - if (firstQualifier) { - let isAllowed = false; - - // Try to resolve the qualifier. - const resolvedSymbol = this.typeChecker.getSymbolAtLocation(firstQualifier); - if (resolvedSymbol && resolvedSymbol.declarations && resolvedSymbol.declarations.length > 0) { - // If the qualifier can be resolved, and it's not a namespaced import, then it should be - // allowed. - isAllowed = - resolvedSymbol.declarations.every(decl => decl.kind !== ts.SyntaxKind.NamespaceImport); - } - - // If it is not allowed otherwise, it's allowed if it's on the list of allowed identifiers. - isAllowed = isAllowed || - !(!this.options.allowModuleIdentifiers || - this.options.allowModuleIdentifiers.indexOf(firstQualifier.text) < 0); - if (!isAllowed) { - this.diagnostics.push({ - type: 'error', - message: createErrorMessage( - firstQualifier, - `Module identifier "${firstQualifier.text}" is not allowed. Remove it ` + - `from source or allow it via --allowModuleIdentifiers.`) - }); - } - } - - let children: ts.Node[] = []; - if (ts.isFunctionDeclaration(node)) { - // Used ts.isFunctionDeclaration instead of node.kind because this is a type guard - const symbol = this.typeChecker.getSymbolAtLocation(node.name); - symbol.declarations.forEach(x => children = children.concat(x.getChildren())); - } else { - children = node.getChildren(); - } - - const sourceText = node.getSourceFile().text; - if (children.length) { - // Sort declarations under a class or an interface - if (node.kind === ts.SyntaxKind.SyntaxList) { - switch (node.parent && node.parent.kind) { - case ts.SyntaxKind.ClassDeclaration: - case ts.SyntaxKind.InterfaceDeclaration: { - // There can be multiple SyntaxLists under a class or an interface, - // since SyntaxList is just an arbitrary data structure generated - // by Node#getChildren(). We need to check that we are sorting the - // right list. - if (children.every(node => node.kind in memberDeclarationOrder)) { - children = children.slice(); - children.sort((a: ts.NamedDeclaration, b: ts.NamedDeclaration) => { - // Static after normal - return compareFunction( - hasModifier(a, ts.SyntaxKind.StaticKeyword), - hasModifier(b, ts.SyntaxKind.StaticKeyword)) || - // Our predefined order - compareFunction( - memberDeclarationOrder[a.kind], memberDeclarationOrder[b.kind]) || - // Alphebetical order - // We need safe dereferencing due to edge cases, e.g. having two call signatures - compareFunction((a.name || a).getText(), (b.name || b).getText()); - }); - } - break; - } - } - } - - let output: string = children.filter(x => x.kind !== ts.SyntaxKind.JSDocComment) - .map(n => this.emitNode(n)) - .join(''); - - // Print stability annotation for fields and parmeters - if (ts.isParameter(node) || node.kind in memberDeclarationOrder) { - const tagOptions = ts.isParameter(node) ? this.options.paramTags : this.options.memberTags; - const jsdocComment = this.processJsDocTags(node, tagOptions); - if (jsdocComment) { - // Add the annotation after the leading whitespace - output = output.replace(/^(\r?\n\s*)/, `$1${jsdocComment} `); - } - } - - return output; - } else { - const ranges = ts.getLeadingCommentRanges(sourceText, node.pos); - let tail = node.pos; - for (const range of ranges || []) { - if (range.end > tail) { - tail = range.end; - } - } - return sourceText.substring(tail, node.end); - } - } - - private processJsDocTags(node: ts.Node, tagOptions: JsDocTagOptions) { - const jsDocTags = getJsDocTags(node); - const requireAtLeastOne = tagOptions.requireAtLeastOne; - const isMissingAnyRequiredTag = requireAtLeastOne != null && requireAtLeastOne.length > 0 && - jsDocTags.every(tag => requireAtLeastOne.indexOf(tag) === -1); - if (isMissingAnyRequiredTag) { - this.diagnostics.push({ - type: 'error', - message: createErrorMessage( - node, - 'Required jsdoc tags - One of the tags: ' + - requireAtLeastOne.map(tag => `"@${tag}"`).join(', ') + - ` - must exist on ${getName(node)}.`) - }); - } - const bannedTagsFound = - tagOptions.banned.filter(bannedTag => jsDocTags.some(tag => tag === bannedTag)); - if (bannedTagsFound.length) { - this.diagnostics.push({ - type: 'error', - message: createErrorMessage( - node, - 'Banned jsdoc tags - ' + bannedTagsFound.map(tag => `"@${tag}"`).join(', ') + - ` - were found on ${getName(node)}.`) - }); - } - const tagsToCopy = - jsDocTags.filter(tag => tagOptions.toCopy.some(tagToCopy => tag === tagToCopy)); - - if (tagsToCopy.length === 1) { - return `/** @${tagsToCopy[0]} */`; - } else if (tagsToCopy.length > 1) { - return '/**\n' + tagsToCopy.map(tag => ` * @${tag}`).join('\n') + ' */\n'; - } else { - return ''; - } - } -} - -const tagRegex = /@(\w+)/g; - -function getJsDocTags(node: ts.Node): string[] { - const sourceText = node.getSourceFile().text; - const trivia = sourceText.substr(node.pos, node.getLeadingTriviaWidth()); - // We use a hash so that we don't collect duplicate jsdoc tags - // (e.g. if a property has a getter and setter with the same tag). - const jsdocTags: {[key: string]: boolean} = {}; - let match: RegExpExecArray; - while (match = tagRegex.exec(trivia)) { - jsdocTags[match[1]] = true; - } - return Object.keys(jsdocTags); -} - -function symbolCompareFunction(a: ts.Symbol, b: ts.Symbol) { - return a.name.localeCompare(b.name); -} - -function compareFunction(a: T, b: T) { - return a === b ? 0 : a > b ? 1 : -1; -} - -const memberDeclarationOrder: {[key: number]: number} = { - [ts.SyntaxKind.PropertySignature]: 0, - [ts.SyntaxKind.PropertyDeclaration]: 0, - [ts.SyntaxKind.GetAccessor]: 0, - [ts.SyntaxKind.SetAccessor]: 0, - [ts.SyntaxKind.CallSignature]: 1, - [ts.SyntaxKind.Constructor]: 2, - [ts.SyntaxKind.ConstructSignature]: 2, - [ts.SyntaxKind.IndexSignature]: 3, - [ts.SyntaxKind.MethodSignature]: 4, - [ts.SyntaxKind.MethodDeclaration]: 4 -}; - -function stripEmptyLines(text: string): string { - return text.split(/\r?\n/).filter(x => !!x.length).join('\n'); -} - -/** - * Returns the first qualifier if the input node is a dotted expression. - */ -function getFirstQualifier(node: ts.Node): ts.Identifier|null { - switch (node.kind) { - case ts.SyntaxKind.PropertyAccessExpression: { - // For expression position - let lhs = node; - do { - lhs = (lhs).expression; - } while (lhs && lhs.kind !== ts.SyntaxKind.Identifier); - - return lhs; - } - case ts.SyntaxKind.TypeReference: { - // For type position - let lhs: ts.Node = (node).typeName; - do { - lhs = (lhs).left; - } while (lhs && lhs.kind !== ts.SyntaxKind.Identifier); - - return lhs; - } - default: - return null; - } -} - -function createErrorMessage(node: ts.Node, message: string): string { - const sourceFile = node.getSourceFile(); - let position; - if (sourceFile) { - const {line, character} = sourceFile.getLineAndCharacterOfPosition(node.getStart()); - position = `${sourceFile.fileName}(${line + 1},${character + 1})`; - } else { - position = ''; - } - - return `${position}: error: ${message}`; -} - -function hasModifier(node: ts.Node, modifierKind: ts.SyntaxKind): boolean { - return !!node.modifiers && node.modifiers.some(x => x.kind === modifierKind); -} - -function applyDefaultTagOptions(tagOptions: JsDocTagOptions|undefined): JsDocTagOptions { - return {requireAtLeastOne: [], banned: [], toCopy: [], ...tagOptions}; -} - -function getName(node: any) { - return '`' + (node.name && node.name.text ? node.name.text : node.getText()) + '`'; -} diff --git a/tools/ts-api-guardian/package.json b/tools/ts-api-guardian/package.json deleted file mode 100644 index 06250eba2a..0000000000 --- a/tools/ts-api-guardian/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "ts-api-guardian", - "version": "0.6.0", - "description": "Guards the API of TypeScript libraries!", - "main": "lib/main.js", - "typings": "lib/main.d.ts", - "bin": { - "ts-api-guardian": "./bin/ts-api-guardian" - }, - "directories": { - "test": "test" - }, - "peerDependencies": { - "typescript": "~3.9.2" - }, - "dependencies": { - "chalk": "^2.3.1", - "diff": "^3.5.0", - "minimist": "^1.2.0" - }, - "devDependencies": { - "@types/chai": "^4.1.2", - "@types/diff": "^3.5.1", - "@types/jasmine": "^2.8.8", - "@types/minimist": "^1.2.0", - "@types/node": "^10.9.4", - "chai": "^4.1.2", - "jasmine": "^3.1.0", - "source-map-support": "^0.5.9", - "typescript": "4.2.3" - }, - "keywords": [ - "typescript" - ], - "contributors": [ - "Alan Agius (https://github.com/alan-agius4/)", - "Alex Eagle (https://angular.io/)", - "Martin Probst (https://angular.io/)", - "Victor Savkin (https://victorsavkin.com)", - "Igor Minar (https://angular.io/)" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/angular/angular/issues" - }, - "homepage": "https://github.com/angular/angular/tools/ts-api-guardian", - "repository": { - "type": "git", - "url": "https://github.com/angular/angular.git", - "directory": "tools/ts-api-guardian" - }, - "publishConfig": { - "registry": "https://wombat-dressing-room.appspot.com" - } -} diff --git a/tools/ts-api-guardian/test/bootstrap.ts b/tools/ts-api-guardian/test/bootstrap.ts deleted file mode 100644 index 18c21dd8d9..0000000000 --- a/tools/ts-api-guardian/test/bootstrap.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @license - * 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 - */ - -const path = require('path'); -const runfiles = require(process.env['BAZEL_NODE_RUNFILES_HELPER']); - -// Change directories to the path of the ts-api-guardian source tree. We need to resolve an actual -// path of a tree because we want to determine the path to the directory that includes all -// test fixture runfiles. On Windows this is usually the original non-sandboxed disk location, -// otherwise this just refers to the runfile directory with all the proper symlinked files. -// NB: we resolve `test/fixtures/empty.ts` and then step up 3 folders so to ensure we resolve to the -// root of the source tree and not the output tree on Windows where there are no runfiles. -// TODO: remove the whole bootstrap file once the tests are Bazel and Windows compatible. -process.chdir(path.resolve( - runfiles.resolve('angular/tools/ts-api-guardian/test/fixtures/empty.ts'), '../../..')); diff --git a/tools/ts-api-guardian/test/cli_e2e_test.ts b/tools/ts-api-guardian/test/cli_e2e_test.ts deleted file mode 100644 index 374332cba4..0000000000 --- a/tools/ts-api-guardian/test/cli_e2e_test.ts +++ /dev/null @@ -1,147 +0,0 @@ -/** - * @license - * 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 - */ - -import chai = require('chai'); -import * as child_process from 'child_process'; -import * as fs from 'fs'; -import * as path from 'path'; -import {assertFileEqual, unlinkRecursively} from './helpers'; - -const BINARY_PATH = require.resolve('../ts-api-guardian/bin/ts-api-guardian'); - -describe('cli: e2e test', () => { - const outDir = path.join(process.env['TEST_TMPDIR'], 'tmp'); - - beforeEach(() => { - if (!fs.existsSync(outDir)) { - fs.mkdirSync(outDir); - } - }); - - afterEach(() => { - unlinkRecursively(outDir); - }); - - it('should print usage without any argument', () => { - const {stderr} = execute([]); - chai.assert.match(stderr, /Usage/); - }); - - it('should show help message with --help', () => { - const {stdout} = execute(['--help']); - chai.assert.match(stdout, /Usage/); - }); - - it('should generate golden file with --out', () => { - const simpleFile = path.join(outDir, 'simple.d.ts'); - const {status, stderr} = execute(['--out', simpleFile, 'test/fixtures/simple.d.ts']); - chai.assert.equal(status, 0, stderr); - assertFileEqual(simpleFile, 'test/fixtures/simple_expected.d.ts'); - }); - - it('should verify golden file with --verify and exit cleanly on no difference', () => { - const {stdout, status} = - execute(['--verify', 'test/fixtures/simple_expected.d.ts', 'test/fixtures/simple.d.ts']); - chai.assert.equal(stdout, ''); - chai.assert.equal(status, 0); - }); - - it('should verify golden file with --verify and exit with error on difference', () => { - const {stdout, status} = execute( - ['--verify', 'test/fixtures/verify_expected.d.ts', 'test/fixtures/verify_entrypoint.d.ts']); - chai.assert.equal(stdout, fs.readFileSync('test/fixtures/verify.patch').toString()); - chai.assert.equal(status, 1); - }); - - it('should generate multiple golden files with --outDir and --rootDir', () => { - const {status} = execute([ - '--outDir', outDir, '--rootDir', 'test/fixtures', 'test/fixtures/simple.d.ts', - 'test/fixtures/sorting.d.ts' - ]); - chai.assert.equal(status, 0); - assertFileEqual(path.join(outDir, 'simple.d.ts'), 'test/fixtures/simple_expected.d.ts'); - assertFileEqual(path.join(outDir, 'sorting.d.ts'), 'test/fixtures/sorting_expected.d.ts'); - }); - - it('should verify multiple golden files with --verifyDir and --rootDir', () => { - copyFile('test/fixtures/simple_expected.d.ts', path.join(outDir, 'simple.d.ts')); - copyFile('test/fixtures/sorting_expected.d.ts', path.join(outDir, 'sorting.d.ts')); - const {stdout, status} = execute([ - '--verifyDir', outDir, '--rootDir', 'test/fixtures', 'test/fixtures/simple.d.ts', - 'test/fixtures/sorting.d.ts' - ]); - chai.assert.equal(stdout, ''); - chai.assert.equal(status, 0); - }); - - it('should generate respecting --stripExportPattern', () => { - const {status} = execute([ - '--out', path.join(outDir, 'underscored.d.ts'), '--stripExportPattern', '^__.*', - 'test/fixtures/underscored.d.ts' - ]); - chai.assert.equal(status, 0); - assertFileEqual( - path.join(outDir, 'underscored.d.ts'), 'test/fixtures/underscored_expected.d.ts'); - }); - - it('should not throw for aliased stripped exports', () => { - const {status} = execute([ - '--out', path.join(outDir, 'stripped_alias.d.ts'), '--stripExportPattern', '^__.*', - 'test/fixtures/stripped_alias.d.ts' - ]); - chai.assert.equal(status, 0); - assertFileEqual( - path.join(outDir, 'stripped_alias.d.ts'), 'test/fixtures/stripped_alias_expected.d.ts'); - }); - - it('should verify respecting --stripExportPattern', () => { - const {stdout, status} = execute([ - '--verify', 'test/fixtures/underscored_expected.d.ts', 'test/fixtures/underscored.d.ts', - '--stripExportPattern', '^__.*' - ]); - chai.assert.equal(stdout, ''); - chai.assert.equal(status, 0); - }); - - it('should respect --allowModuleIdentifiers', () => { - const {stdout, status} = execute([ - '--verify', 'test/fixtures/module_identifier_expected.d.ts', '--allowModuleIdentifiers', - 'foo', 'test/fixtures/module_identifier.d.ts' - ]); - chai.assert.equal(stdout, ''); - chai.assert.equal(status, 0); - }); -}); - -function copyFile(sourceFile: string, targetFile: string) { - fs.writeFileSync(targetFile, fs.readFileSync(sourceFile)); -} - -function execute(args: string[]): {stdout: string, stderr: string, status: number} { - // We need to determine the directory that includes the `ts-api-guardian` npm_package that - // will be used to spawn the CLI binary. This is a workaround because technically we shouldn't - // spawn a child process that doesn't have the custom NodeJS module resolution for Bazel. - const nodePath = [ - path.join(require.resolve('npm/node_modules/chalk/package.json'), '../../'), - path.join(require.resolve('../lib/cli.js'), '../../'), - ].join(process.platform === 'win32' ? ';' : ':'); - - const output = child_process.spawnSync(process.execPath, [BINARY_PATH, ...args], { - env: { - 'NODE_PATH': nodePath, - } - }); - chai.assert(!output.error, 'Child process failed or timed out: ' + output.error); - chai.assert(!output.signal, `Child process killed by signal ${output.signal}`); - - return { - stdout: output.stdout.toString(), - stderr: output.stderr.toString(), - status: output.status - }; -} diff --git a/tools/ts-api-guardian/test/cli_unit_test.ts b/tools/ts-api-guardian/test/cli_unit_test.ts deleted file mode 100644 index 5d0fe03a81..0000000000 --- a/tools/ts-api-guardian/test/cli_unit_test.ts +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @license - * 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 - */ - -import chai = require('chai'); -import {parseArguments} from '../lib/cli'; - -describe('cli: parseArguments', () => { - it('should show usage with error when supplied with no arguments', () => { - const {mode, errors} = parseArguments([]); - chai.assert.equal(mode, 'help'); - chai.assert.deepEqual(errors, ['No input file specified.']); - }); - - it('should show usage without error when supplied with --help', () => { - const {mode, errors} = parseArguments(['--help']); - chai.assert.equal(mode, 'help'); - chai.assert.deepEqual(errors, []); - }); - - it('should show usage with error when supplied with none of --out/verify[Dir]', () => { - const {mode, errors} = parseArguments(['input.d.ts']); - chai.assert.equal(mode, 'help'); - chai.assert.deepEqual(errors, ['Specify either --out[Dir] or --verify[Dir]']); - }); - - it('should show usage with error when supplied with both of --out/verify[Dir]', () => { - const {mode, errors} = - parseArguments(['--out', 'out.d.ts', '--verifyDir', 'golden.d.ts', 'input.d.ts']); - chai.assert.equal(mode, 'help'); - chai.assert.deepEqual(errors, ['Specify either --out[Dir] or --verify[Dir]']); - }); - - it('should show usage with error when supplied without input file', () => { - const {mode, errors} = parseArguments(['--out', 'output.d.ts']); - chai.assert.equal(mode, 'help'); - chai.assert.deepEqual(errors, ['No input file specified.']); - }); - - it('should show usage with error when supplied without input file', () => { - const {mode, errors} = parseArguments(['--out', 'output.d.ts', 'first.d.ts', 'second.d.ts']); - chai.assert.equal(mode, 'help'); - chai.assert.deepEqual(errors, ['More than one input specified. Use --outDir instead.']); - }); - - it('should use out mode when supplied with --out', () => { - const {argv, mode, errors} = parseArguments(['--out', 'out.d.ts', 'input.d.ts']); - chai.assert.equal(argv['out'], 'out.d.ts'); - chai.assert.deepEqual(argv._, ['input.d.ts']); - chai.assert.equal(mode, 'out'); - chai.assert.deepEqual(errors, []); - }); - - it('should use verify mode when supplied with --verify', () => { - const {argv, mode, errors} = parseArguments(['--verify', 'out.d.ts', 'input.d.ts']); - chai.assert.equal(argv['verify'], 'out.d.ts'); - chai.assert.deepEqual(argv._, ['input.d.ts']); - chai.assert.equal(mode, 'verify'); - chai.assert.deepEqual(errors, []); - }); - - it('should show usage with error when supplied with --autoDiscoverEntrypoints without --baseDir', - () => { - const {mode, errors} = - parseArguments(['--autoDiscoverEntrypoints', '--outDir', 'something']); - chai.assert.equal(mode, 'help'); - chai.assert.deepEqual( - errors, ['--rootDir must be provided with --autoDiscoverEntrypoints.']); - }); - - it('should show usage with error when supplied with --autoDiscoverEntrypoints without --outDir/verifyDir', - () => { - const {mode, errors} = - parseArguments(['--autoDiscoverEntrypoints', '--rootDir', 'something']); - chai.assert.equal(mode, 'help'); - chai.assert.deepEqual( - errors, ['--outDir or --verifyDir must be used with --autoDiscoverEntrypoints.']); - }); -}); diff --git a/tools/ts-api-guardian/test/fixtures/classes_and_interfaces.d.ts b/tools/ts-api-guardian/test/fixtures/classes_and_interfaces.d.ts deleted file mode 100644 index 485e4ef31a..0000000000 --- a/tools/ts-api-guardian/test/fixtures/classes_and_interfaces.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -export declare class A { - field: string; - method(a: string): number; -} -export interface B { - field: A; -} -export declare class C { - private privateProp; - propWithDefault: number; - protected protectedProp: number; - someProp: string; - constructor(someProp: string, propWithDefault: number, privateProp: any, protectedProp: number); -} diff --git a/tools/ts-api-guardian/test/fixtures/classes_and_interfaces_expected.d.ts b/tools/ts-api-guardian/test/fixtures/classes_and_interfaces_expected.d.ts deleted file mode 100644 index 6c37af1a01..0000000000 --- a/tools/ts-api-guardian/test/fixtures/classes_and_interfaces_expected.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -export declare class A { - field: string; - method(a: string): number; -} - -export interface B { - field: A; -} - -export declare class C { - propWithDefault: number; - protected protectedProp: number; - someProp: string; - constructor(someProp: string, propWithDefault: number, privateProp: any, protectedProp: number); -} diff --git a/tools/ts-api-guardian/test/fixtures/empty.d.ts b/tools/ts-api-guardian/test/fixtures/empty.d.ts deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tools/ts-api-guardian/test/fixtures/empty_expected.d.ts b/tools/ts-api-guardian/test/fixtures/empty_expected.d.ts deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tools/ts-api-guardian/test/fixtures/enum_as_type.d.ts b/tools/ts-api-guardian/test/fixtures/enum_as_type.d.ts deleted file mode 100644 index db4a3c65e7..0000000000 --- a/tools/ts-api-guardian/test/fixtures/enum_as_type.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -export declare enum Foo { - Alpha = 0, - Beta = 1, -} - -export interface Bar { - field: Foo.Alpha, -} \ No newline at end of file diff --git a/tools/ts-api-guardian/test/fixtures/enum_as_type_expected.d.ts b/tools/ts-api-guardian/test/fixtures/enum_as_type_expected.d.ts deleted file mode 100644 index 63e8c6ba32..0000000000 --- a/tools/ts-api-guardian/test/fixtures/enum_as_type_expected.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface Bar { - field: Foo.Alpha, -} - -export declare enum Foo { - Alpha = 0, - Beta = 1, -} diff --git a/tools/ts-api-guardian/test/fixtures/exports_type_and_value.d.ts b/tools/ts-api-guardian/test/fixtures/exports_type_and_value.d.ts deleted file mode 100644 index 4e161fe44c..0000000000 --- a/tools/ts-api-guardian/test/fixtures/exports_type_and_value.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface TypeOnly { field: string; } -export interface TypeAndValue { field: string; } - -export const TypeAndValue: Function; \ No newline at end of file diff --git a/tools/ts-api-guardian/test/fixtures/exports_type_and_value_expected.d.ts b/tools/ts-api-guardian/test/fixtures/exports_type_and_value_expected.d.ts deleted file mode 100644 index 63ff608813..0000000000 --- a/tools/ts-api-guardian/test/fixtures/exports_type_and_value_expected.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface TypeAndValue { field: string; } - -export const TypeAndValue: Function; - -export interface TypeOnly { field: string; } diff --git a/tools/ts-api-guardian/test/fixtures/keyof.d.ts b/tools/ts-api-guardian/test/fixtures/keyof.d.ts deleted file mode 100644 index c2b6c1749c..0000000000 --- a/tools/ts-api-guardian/test/fixtures/keyof.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare type SimpleChanges = { - [P in keyof T]?: any; -}; \ No newline at end of file diff --git a/tools/ts-api-guardian/test/fixtures/keyof_expected.d.ts b/tools/ts-api-guardian/test/fixtures/keyof_expected.d.ts deleted file mode 100644 index b044702368..0000000000 --- a/tools/ts-api-guardian/test/fixtures/keyof_expected.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare type SimpleChanges = { - [P in keyof T]?: any; -}; diff --git a/tools/ts-api-guardian/test/fixtures/module_identifier.d.ts b/tools/ts-api-guardian/test/fixtures/module_identifier.d.ts deleted file mode 100644 index f8af6eedf4..0000000000 --- a/tools/ts-api-guardian/test/fixtures/module_identifier.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import * as foo from './somewhere'; - -/** @publicApi */ -export declare class A extends foo.Bar { -} diff --git a/tools/ts-api-guardian/test/fixtures/module_identifier_expected.d.ts b/tools/ts-api-guardian/test/fixtures/module_identifier_expected.d.ts deleted file mode 100644 index 174b833508..0000000000 --- a/tools/ts-api-guardian/test/fixtures/module_identifier_expected.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare class A extends foo.Bar { -} diff --git a/tools/ts-api-guardian/test/fixtures/reexported.d.ts b/tools/ts-api-guardian/test/fixtures/reexported.d.ts deleted file mode 100644 index b583f44e4f..0000000000 --- a/tools/ts-api-guardian/test/fixtures/reexported.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { A, B } from './simple'; diff --git a/tools/ts-api-guardian/test/fixtures/reexported_aliased.d.ts b/tools/ts-api-guardian/test/fixtures/reexported_aliased.d.ts deleted file mode 100644 index 058677bf1b..0000000000 --- a/tools/ts-api-guardian/test/fixtures/reexported_aliased.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { A as Apple } from './classes_and_interfaces'; diff --git a/tools/ts-api-guardian/test/fixtures/reexported_classes.d.ts b/tools/ts-api-guardian/test/fixtures/reexported_classes.d.ts deleted file mode 100644 index 01a7a03a10..0000000000 --- a/tools/ts-api-guardian/test/fixtures/reexported_classes.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { A } from './classes_and_interfaces'; diff --git a/tools/ts-api-guardian/test/fixtures/reexported_classes_expected.d.ts b/tools/ts-api-guardian/test/fixtures/reexported_classes_expected.d.ts deleted file mode 100644 index b8c5750924..0000000000 --- a/tools/ts-api-guardian/test/fixtures/reexported_classes_expected.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export declare class A { - field: string; - method(a: string): number; -} diff --git a/tools/ts-api-guardian/test/fixtures/reexported_expected.d.ts b/tools/ts-api-guardian/test/fixtures/reexported_expected.d.ts deleted file mode 100644 index 7020ff3c3f..0000000000 --- a/tools/ts-api-guardian/test/fixtures/reexported_expected.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const A: string; - -export declare var B: string; diff --git a/tools/ts-api-guardian/test/fixtures/reexported_extern.d.ts b/tools/ts-api-guardian/test/fixtures/reexported_extern.d.ts deleted file mode 100644 index 0c0d859899..0000000000 --- a/tools/ts-api-guardian/test/fixtures/reexported_extern.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/** - * We want to ensure that external modules are not resolved. Typescript happens - * to be conveniently available in our environment. - */ -export { CompilerHost } from 'typescript'; diff --git a/tools/ts-api-guardian/test/fixtures/reexported_extern_expected.d.ts b/tools/ts-api-guardian/test/fixtures/reexported_extern_expected.d.ts deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tools/ts-api-guardian/test/fixtures/reexported_star.d.ts b/tools/ts-api-guardian/test/fixtures/reexported_star.d.ts deleted file mode 100644 index 882a36dbe8..0000000000 --- a/tools/ts-api-guardian/test/fixtures/reexported_star.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './simple'; diff --git a/tools/ts-api-guardian/test/fixtures/reexported_star_expected.d.ts b/tools/ts-api-guardian/test/fixtures/reexported_star_expected.d.ts deleted file mode 100644 index 7020ff3c3f..0000000000 --- a/tools/ts-api-guardian/test/fixtures/reexported_star_expected.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const A: string; - -export declare var B: string; diff --git a/tools/ts-api-guardian/test/fixtures/simple.d.ts b/tools/ts-api-guardian/test/fixtures/simple.d.ts deleted file mode 100644 index b3c07b7e77..0000000000 --- a/tools/ts-api-guardian/test/fixtures/simple.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** @publicApi */ -export declare const A: string; -/** @publicApi */ -export declare var B: string; diff --git a/tools/ts-api-guardian/test/fixtures/simple_expected.d.ts b/tools/ts-api-guardian/test/fixtures/simple_expected.d.ts deleted file mode 100644 index 7020ff3c3f..0000000000 --- a/tools/ts-api-guardian/test/fixtures/simple_expected.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare const A: string; - -export declare var B: string; diff --git a/tools/ts-api-guardian/test/fixtures/sorting.d.ts b/tools/ts-api-guardian/test/fixtures/sorting.d.ts deleted file mode 100644 index 59daef5b7b..0000000000 --- a/tools/ts-api-guardian/test/fixtures/sorting.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** @publicApi */ -export declare type E = string; -/** @publicApi */ -export interface D { - e: number; -} -/** @publicApi */ -export declare var e: C; -/** @publicApi */ -export declare class C { - e: number; - d: string; -} -/** @publicApi */ -export declare function b(): boolean; -/** @publicApi */ -export declare const a: string; diff --git a/tools/ts-api-guardian/test/fixtures/sorting_expected.d.ts b/tools/ts-api-guardian/test/fixtures/sorting_expected.d.ts deleted file mode 100644 index d3921f8d91..0000000000 --- a/tools/ts-api-guardian/test/fixtures/sorting_expected.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -export declare const a: string; - -export declare function b(): boolean; - -export declare class C { - d: string; - e: number; -} - -export interface D { - e: number; -} - -export declare var e: C; - -export declare type E = string; diff --git a/tools/ts-api-guardian/test/fixtures/stripped_alias.d.ts b/tools/ts-api-guardian/test/fixtures/stripped_alias.d.ts deleted file mode 100644 index b3ba8b7a40..0000000000 --- a/tools/ts-api-guardian/test/fixtures/stripped_alias.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export {original_symbol as __private_symbol} from './stripped_alias_original'; -/** @publicApi */ -export class B { -} \ No newline at end of file diff --git a/tools/ts-api-guardian/test/fixtures/stripped_alias_expected.d.ts b/tools/ts-api-guardian/test/fixtures/stripped_alias_expected.d.ts deleted file mode 100644 index 94fa3c9c47..0000000000 --- a/tools/ts-api-guardian/test/fixtures/stripped_alias_expected.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export class B { -} diff --git a/tools/ts-api-guardian/test/fixtures/stripped_alias_original.d.ts b/tools/ts-api-guardian/test/fixtures/stripped_alias_original.d.ts deleted file mode 100644 index 76536ae835..0000000000 --- a/tools/ts-api-guardian/test/fixtures/stripped_alias_original.d.ts +++ /dev/null @@ -1 +0,0 @@ -export let original_symbol: number; \ No newline at end of file diff --git a/tools/ts-api-guardian/test/fixtures/type_literals.d.ts b/tools/ts-api-guardian/test/fixtures/type_literals.d.ts deleted file mode 100644 index 1a2e41b591..0000000000 --- a/tools/ts-api-guardian/test/fixtures/type_literals.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export class UsesTypeLiterals { - a: number | undefined; - b: number | null; - c: number | true; - d: number | null | undefined; - e: Array; -} \ No newline at end of file diff --git a/tools/ts-api-guardian/test/fixtures/type_literals_expected.d.ts b/tools/ts-api-guardian/test/fixtures/type_literals_expected.d.ts deleted file mode 100644 index ce70fa6fa3..0000000000 --- a/tools/ts-api-guardian/test/fixtures/type_literals_expected.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export class UsesTypeLiterals { - a: number | undefined; - b: number | null; - c: number | true; - d: number | null | undefined; - e: Array; -} diff --git a/tools/ts-api-guardian/test/fixtures/underscored.d.ts b/tools/ts-api-guardian/test/fixtures/underscored.d.ts deleted file mode 100644 index 8ff7249036..0000000000 --- a/tools/ts-api-guardian/test/fixtures/underscored.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const __a__: string; -/** @publicApi */ -export class B { -} diff --git a/tools/ts-api-guardian/test/fixtures/underscored_expected.d.ts b/tools/ts-api-guardian/test/fixtures/underscored_expected.d.ts deleted file mode 100644 index 94fa3c9c47..0000000000 --- a/tools/ts-api-guardian/test/fixtures/underscored_expected.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export class B { -} diff --git a/tools/ts-api-guardian/test/fixtures/verify.patch b/tools/ts-api-guardian/test/fixtures/verify.patch deleted file mode 100644 index bb23ff2ee2..0000000000 --- a/tools/ts-api-guardian/test/fixtures/verify.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- test/fixtures/verify_expected.d.ts Golden file -+++ test/fixtures/verify_expected.d.ts Generated API -@@ -1,5 +1,6 @@ - export interface A { - c: number; -- a(arg: any[]): any; -- b: string; -+ a(arg: any[]): {[name: string]: number}; - } -+ -+export declare const b: boolean; diff --git a/tools/ts-api-guardian/test/fixtures/verify_entrypoint.d.ts b/tools/ts-api-guardian/test/fixtures/verify_entrypoint.d.ts deleted file mode 100644 index 6c5d1c5cff..0000000000 --- a/tools/ts-api-guardian/test/fixtures/verify_entrypoint.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** @publicApi */ -export interface A { - c: number; - a(arg: any[]): {[name: string]: number}; -} -export { b } from './verify_submodule'; diff --git a/tools/ts-api-guardian/test/fixtures/verify_expected.d.ts b/tools/ts-api-guardian/test/fixtures/verify_expected.d.ts deleted file mode 100644 index c7d5188ec4..0000000000 --- a/tools/ts-api-guardian/test/fixtures/verify_expected.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface A { - c: number; - a(arg: any[]): any; - b: string; -} diff --git a/tools/ts-api-guardian/test/fixtures/verify_submodule.d.ts b/tools/ts-api-guardian/test/fixtures/verify_submodule.d.ts deleted file mode 100644 index ae7a488d4b..0000000000 --- a/tools/ts-api-guardian/test/fixtures/verify_submodule.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -/** @publicApi */ -export declare const b: boolean; diff --git a/tools/ts-api-guardian/test/helpers.ts b/tools/ts-api-guardian/test/helpers.ts deleted file mode 100644 index 2f371702a6..0000000000 --- a/tools/ts-api-guardian/test/helpers.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @license - * 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 - */ - -import * as chai from 'chai'; -import * as fs from 'fs'; -import * as path from 'path'; - -export function unlinkRecursively(file: string) { - if (fs.statSync(file).isDirectory()) { - for (const f of fs.readdirSync(file)) { - unlinkRecursively(path.join(file, f)); - } - fs.rmdirSync(file); - } else { - fs.unlinkSync(file); - } -} - -export function assertFileEqual(actualFile: string, expectedFile: string) { - chai.assert.equal( - fs.readFileSync(actualFile).toString(), fs.readFileSync(expectedFile).toString()); -} diff --git a/tools/ts-api-guardian/test/integration_test.ts b/tools/ts-api-guardian/test/integration_test.ts deleted file mode 100644 index f01a6ec891..0000000000 --- a/tools/ts-api-guardian/test/integration_test.ts +++ /dev/null @@ -1,151 +0,0 @@ -/** - * @license - * 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 - */ - -import * as chai from 'chai'; -import * as fs from 'fs'; -import * as path from 'path'; -import * as main from '../lib/main'; -import {assertFileEqual, unlinkRecursively} from './helpers'; - -describe('integration test: public api', () => { - let _warn: any = null; - let warnings: string[] = []; - beforeEach(() => { - _warn = console.warn; - console.warn = (...args: string[]) => warnings.push(args.join(' ')); - }); - - afterEach(() => { - console.warn = _warn; - warnings = []; - _warn = null; - }); - - it('should handle empty files', () => { - check('test/fixtures/empty.d.ts', 'test/fixtures/empty_expected.d.ts'); - }); - - it('should include symbols', () => { - check('test/fixtures/simple.d.ts', 'test/fixtures/simple_expected.d.ts'); - }); - - it('should include symbols reexported explicitly', () => { - check('test/fixtures/reexported.d.ts', 'test/fixtures/reexported_expected.d.ts'); - }); - - it('should include symbols reexported with *', () => { - check('test/fixtures/reexported_star.d.ts', 'test/fixtures/reexported_star_expected.d.ts'); - }); - - it('should include members of classes and interfaces', () => { - check( - 'test/fixtures/classes_and_interfaces.d.ts', - 'test/fixtures/classes_and_interfaces_expected.d.ts'); - }); - - it('should include value and type', () => { - check( - 'test/fixtures/exports_type_and_value.d.ts', - 'test/fixtures/exports_type_and_value_expected.d.ts'); - }); - - it('should include members reexported classes', () => { - check( - 'test/fixtures/reexported_classes.d.ts', 'test/fixtures/reexported_classes_expected.d.ts'); - }); - - it('should remove reexported external symbols', () => { - check('test/fixtures/reexported_extern.d.ts', 'test/fixtures/reexported_extern_expected.d.ts'); - chai.assert.deepEqual(warnings, [ - 'test/fixtures/reexported_extern.d.ts(5,1): error: No export declaration found for symbol "CompilerHost"' - ]); - }); - - it('should support type literals', () => { - check('test/fixtures/type_literals.d.ts', 'test/fixtures/type_literals_expected.d.ts'); - }); - - it('should allow enums as types', () => { - check('test/fixtures/enum_as_type.d.ts', 'test/fixtures/enum_as_type_expected.d.ts'); - }); - - it('should throw on passing a .ts file as an input', () => { - chai.assert.throws(() => { - main.publicApi('test/fixtures/empty.ts'); - }, 'Source file "test/fixtures/empty.ts" is not a declaration file'); - }); - - it('should respect serialization options', () => { - check( - 'test/fixtures/underscored.d.ts', 'test/fixtures/underscored_expected.d.ts', - {stripExportPattern: /^__.*/}); - }); -}); - -describe('integration test: generateGoldenFile', () => { - const outDir = path.join(process.env['TEST_TMPDIR'], 'tmp'); - const outFile = path.join(outDir, 'out.d.ts'); - const deepOutFile = path.join(outDir, 'a/b/c/out.d.ts'); - - beforeEach(() => { - if (!fs.existsSync(outDir)) { - fs.mkdirSync(outDir); - } - }); - - afterEach(() => { - unlinkRecursively(outDir); - }); - - - it('should generate a golden file', () => { - main.generateGoldenFile('test/fixtures/reexported_classes.d.ts', outFile); - assertFileEqual(outFile, 'test/fixtures/reexported_classes_expected.d.ts'); - }); - - it('should generate a golden file with any ancestor directory created', () => { - main.generateGoldenFile('test/fixtures/reexported_classes.d.ts', deepOutFile); - assertFileEqual(deepOutFile, 'test/fixtures/reexported_classes_expected.d.ts'); - }); - - it('should respect serialization options', () => { - main.generateGoldenFile( - 'test/fixtures/underscored.d.ts', outFile, {stripExportPattern: /^__.*/}); - assertFileEqual(outFile, 'test/fixtures/underscored_expected.d.ts'); - }); - - it('should generate a golden file with keyof', () => { - main.generateGoldenFile('test/fixtures/keyof.d.ts', outFile); - assertFileEqual(outFile, 'test/fixtures/keyof_expected.d.ts'); - }); -}); - -describe('integration test: verifyAgainstGoldenFile', () => { - it('should check an entrypoint against a golden file on equal', () => { - const diff = main.verifyAgainstGoldenFile( - 'test/fixtures/reexported_classes.d.ts', 'test/fixtures/reexported_classes_expected.d.ts'); - chai.assert.equal(diff, ''); - }); - - it('should check an entrypoint against a golden file with proper diff message', () => { - const diff = main.verifyAgainstGoldenFile( - 'test/fixtures/verify_entrypoint.d.ts', 'test/fixtures/verify_expected.d.ts'); - chai.assert.equal(diff, fs.readFileSync('test/fixtures/verify.patch').toString()); - }); - - it('should respect serialization options', () => { - const diff = main.verifyAgainstGoldenFile( - 'test/fixtures/underscored.d.ts', 'test/fixtures/underscored_expected.d.ts', - {stripExportPattern: /^__.*/}); - chai.assert.equal(diff, ''); - }); -}); - -function check(sourceFile: string, expectedFile: string, options: main.SerializationOptions = {}) { - chai.assert.equal(main.publicApi(sourceFile, options), fs.readFileSync(expectedFile).toString()); -} diff --git a/tools/ts-api-guardian/test/unit_test.ts b/tools/ts-api-guardian/test/unit_test.ts deleted file mode 100644 index 0050f6a8a7..0000000000 --- a/tools/ts-api-guardian/test/unit_test.ts +++ /dev/null @@ -1,658 +0,0 @@ -/** - * @license - * 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 - */ - -import * as chai from 'chai'; -import * as ts from 'typescript'; - -import {publicApiInternal, SerializationOptions} from '../lib/serializer'; - -const classesAndInterfaces = ` - export declare class A { - field: string; - method(a: string): number; - } - export interface B { - field: A; - } - export declare class C { - someProp: string; - propWithDefault: number; - private privateProp; - protected protectedProp: number; - constructor(someProp: string, propWithDefault: number, privateProp: any, protectedProp: number); - } -`; - -describe('unit test', () => { - let _warn: any = null; - let warnings: string[] = []; - beforeEach(() => { - _warn = console.warn; - console.warn = (...args: string[]) => warnings.push(args.join(' ')); - }); - - afterEach(() => { - console.warn = _warn; - warnings = []; - _warn = null; - }); - - it('should ignore private methods', () => { - const input = ` - export declare class A { - fa(): void; - protected fb(): void; - private fc(); - } - `; - const expected = ` - export declare class A { - fa(): void; - protected fb(): void; - } - `; - check({'file.d.ts': input}, expected); - }); - - it('should support overloads functions', () => { - const input = ` - export declare function group(steps: AnimationMetadata[], options?: AnimationOptions | null): AnimationGroupMetadata; - - export declare function registerLocaleData(data: any, extraData?: any): void; - export declare function registerLocaleData(data: any, localeId?: string, extraData?: any): void; - `; - - const expected = ` - export declare function group(steps: AnimationMetadata[], options?: AnimationOptions | null): AnimationGroupMetadata; - - export declare function registerLocaleData(data: any, extraData?: any): void; - export declare function registerLocaleData(data: any, localeId?: string, extraData?: any): void; - `; - - check({'file.d.ts': input}, expected); - }); - - it('should ignore private props', () => { - const input = ` - export declare class A { - fa: any; - protected fb: any; - private fc; - } - `; - const expected = ` - export declare class A { - fa: any; - protected fb: any; - } - `; - check({'file.d.ts': input}, expected); - }); - - it('should support imports without capturing imports', () => { - const input = ` - import {A} from './classes_and_interfaces'; - export declare class C { - field: A; - } - `; - const expected = ` - export declare class C { - field: A; - } - `; - check({'classes_and_interfaces.d.ts': classesAndInterfaces, 'file.d.ts': input}, expected); - }); - - it('should throw on aliased reexports', () => { - const input = ` - export { A as Apple } from './classes_and_interfaces'; - `; - checkThrows( - {'classes_and_interfaces.d.ts': classesAndInterfaces, 'file.d.ts': input}, - 'Symbol "A" was aliased as "Apple". Aliases are not supported.'); - }); - - it('should remove reexported external symbols', () => { - const input = ` - export { Foo } from 'some-external-module-that-cannot-be-resolved'; - `; - const expected = ` - `; - check({'classes_and_interfaces.d.ts': classesAndInterfaces, 'file.d.ts': input}, expected); - chai.assert.deepEqual( - warnings, ['file.d.ts(1,1): error: No export declaration found for symbol "Foo"']); - }); - - it('should sort exports', () => { - const input = ` - export declare type E = string; - export interface D { - e: number; - } - export declare var e: C; - export declare class C { - e: number; - d: string; - } - export declare function b(): boolean; - export declare const a: string; - `; - const expected = ` - export declare const a: string; - - export declare function b(): boolean; - - export declare class C { - d: string; - e: number; - } - - export interface D { - e: number; - } - - export declare var e: C; - - export declare type E = string; - `; - check({'file.d.ts': input}, expected); - }); - - it('should sort class members', () => { - const input = ` - export class A { - f: number; - static foo(): void; - c: string; - static a: boolean; - constructor(); - static bar(): void; - } - `; - const expected = ` - export class A { - c: string; - f: number; - constructor(); - static a: boolean; - static bar(): void; - static foo(): void; - } - `; - check({'file.d.ts': input}, expected); - }); - - it('should sort interface members', () => { - const input = ` - export interface A { - (): void; - [key: string]: any; - c(): void; - a: number; - new (): Object; - } - `; - const expected = ` - export interface A { - a: number; - (): void; - new (): Object; - [key: string]: any; - c(): void; - } - `; - check({'file.d.ts': input}, expected); - }); - - it('should sort class members including readonly', () => { - const input = ` - export declare class DebugNode { - private _debugContext; - nativeNode: any; - listeners: any[]; - parent: any | null; - constructor(nativeNode: any, parent: DebugNode | null, _debugContext: any); - readonly injector: any; - readonly componentInstance: any; - readonly context: any; - readonly references: { - [key: string]: any; - }; - readonly providerTokens: any[]; - } - `; - const expected = ` - export declare class DebugNode { - readonly componentInstance: any; - readonly context: any; - readonly injector: any; - listeners: any[]; - nativeNode: any; - parent: any | null; - readonly providerTokens: any[]; - readonly references: { - [key: string]: any; - }; - constructor(nativeNode: any, parent: DebugNode | null, _debugContext: any); - } - `; - check({'file.d.ts': input}, expected); - }); - - it('should sort two call signatures', () => { - const input = ` - export interface A { - (b: number): void; - (a: number): void; - } - `; - const expected = ` - export interface A { - (a: number): void; - (b: number): void; - } - `; - check({'file.d.ts': input}, expected); - }); - - it('should sort exports including re-exports', () => { - const submodule = ` - export declare var e: C; - export declare class C { - e: number; - d: string; - } - `; - const input = ` - export * from './submodule'; - export declare type E = string; - export interface D { - e: number; - } - export declare function b(): boolean; - export declare const a: string; - `; - const expected = ` - export declare const a: string; - - export declare function b(): boolean; - - export declare class C { - d: string; - e: number; - } - - export interface D { - e: number; - } - - export declare var e: C; - - export declare type E = string; - `; - check({'submodule.d.ts': submodule, 'file.d.ts': input}, expected); - }); - - it('should remove module comments', () => { - const input = ` - /** - * An amazing module. - * @module - */ - /** - * Foo function. - */ - export declare function foo(): boolean; - export declare const bar: number; - `; - const expected = ` - export declare const bar: number; - - export declare function foo(): boolean; - `; - check({'file.d.ts': input}, expected); - }); - - it('should remove class and field comments', () => { - const input = ` - /** - * Does something really cool. - */ - export declare class A { - /** - * A very interesting getter. - */ - b: string; - /** - * A very useful field. - */ - name: string; - } - `; - const expected = ` - export declare class A { - b: string; - name: string; - } - `; - check({'file.d.ts': input}, expected); - }); - - it('should skip symbols matching specified pattern', () => { - const input = ` - export const __a__: string; - export class B { - } - `; - const expected = ` - export class B { - } - `; - check({'file.d.ts': input}, expected, {stripExportPattern: /^__.*/}); - }); - - it('should throw on using module imports in expression position that were not explicitly allowed', - () => { - const input = ` - import * as foo from './foo'; - export declare class A extends foo.A { - } - `; - checkThrows( - {'file.d.ts': input}, - 'file.d.ts(2,32): error: Module identifier "foo" is not allowed. ' + - 'Remove it from source or allow it via --allowModuleIdentifiers.'); - }); - - it('should throw on using module imports in type position that were not explicitly allowed', - () => { - const input = ` - import * as foo from './foo'; - export type A = foo.A; - `; - checkThrows( - {'file.d.ts': input}, - 'file.d.ts(2,17): error: Module identifier "foo" is not allowed. ' + - 'Remove it from source or allow it via --allowModuleIdentifiers.'); - }); - - it('should not throw on using explicitly allowed module imports', () => { - const input = ` - import * as foo from './foo'; - export declare class A extends foo.A { - } - `; - const expected = ` - export declare class A extends foo.A { - } - `; - check({'file.d.ts': input}, expected, {allowModuleIdentifiers: ['foo']}); - }); - - it('should not throw if module imports, that were not explicitly allowed, are not used', () => { - const input = ` - import * as foo from './foo'; - export declare class A { - } - `; - const expected = ` - export declare class A { - } - `; - check({'file.d.ts': input}, expected); - }); - - it('should copy specified jsdoc tags of exports in docstrings', () => { - const input = ` - /** - * @deprecated This is useless now - */ - export declare class A { - } - /** - * @experimental - */ - export declare const b: string; - /** - * @stable - */ - export declare var c: number; - `; - const expected = ` - /** @deprecated */ - export declare class A { - } - - /** @experimental */ - export declare const b: string; - - export declare var c: number; - `; - check({'file.d.ts': input}, expected, {exportTags: {toCopy: ['deprecated', 'experimental']}}); - }); - - it('should copy specified jsdoc tags of fields in docstrings', () => { - const input = ` - /** @otherTag */ - export declare class A { - /** - * @stable - */ - value: number; - /** - * @experimental - * @otherTag - */ - constructor(); - /** - * @deprecated - */ - foo(): void; - } - `; - const expected = ` - export declare class A { - value: number; - /** @experimental */ constructor(); - /** @deprecated */ foo(): void; - } - `; - check({'file.d.ts': input}, expected, {memberTags: {toCopy: ['deprecated', 'experimental']}}); - }); - - it('should copy specified jsdoc tags of parameters in docstrings', () => { - const input = ` - export declare class A { - foo(str: string, /** @deprecated */ value: number): void; - } - `; - const expected = ` - export declare class A { - foo(str: string, /** @deprecated */ value: number): void; - } - `; - check({'file.d.ts': input}, expected, {paramTags: {toCopy: ['deprecated', 'experimental']}}); - }); - - it('should throw on using banned jsdoc tags on exports', () => { - const input = ` - /** - * @stable - */ - export declare class A { - value: number; - } - `; - checkThrows( - {'file.d.ts': input}, - 'file.d.ts(4,1): error: Banned jsdoc tags - "@stable" - were found on `A`.', - {exportTags: {banned: ['stable']}}); - }); - - it('should throw on using banned jsdoc tags on fields', () => { - const input = ` - export declare class A { - /** - * @stable - */ - value: number; - } - `; - checkThrows( - {'file.d.ts': input}, - 'file.d.ts(5,3): error: Banned jsdoc tags - "@stable" - were found on `value`.', - {memberTags: {banned: ['stable']}}); - }); - - it('should throw on using banned jsdoc tags on parameters', () => { - const input = ` - export declare class A { - foo(/** @stable */ param: number): void; - } - `; - checkThrows( - {'file.d.ts': input}, - 'file.d.ts(2,22): error: Banned jsdoc tags - "@stable" - were found on `param`.', - {paramTags: {banned: ['stable']}}); - }); - - it('should throw on missing required jsdoc tags on exports', () => { - const input = ` - /** @experimental */ - export declare class A { - value: number; - } - `; - checkThrows( - {'file.d.ts': input}, - 'file.d.ts(2,1): error: Required jsdoc tags - One of the tags: "@stable" - must exist on `A`.', - {exportTags: {requireAtLeastOne: ['stable']}}); - }); - - it('should throw on missing required jsdoc tags on fields', () => { - const input = ` - /** @experimental */ - export declare class A { - value: number; - } - `; - checkThrows( - {'file.d.ts': input}, - 'file.d.ts(3,3): error: Required jsdoc tags - One of the tags: "@stable" - must exist on `value`.', - {memberTags: {requireAtLeastOne: ['stable']}}); - }); - - it('should throw on missing required jsdoc tags on parameters', () => { - const input = ` - /** @experimental */ - export declare class A { - foo(param: number): void; - } - `; - checkThrows( - {'file.d.ts': input}, - 'file.d.ts(3,7): error: Required jsdoc tags - One of the tags: "@stable" - must exist on `param`.', - {paramTags: {requireAtLeastOne: ['stable']}}); - }); - - it('should require at least one of the requireAtLeastOne tags', () => { - const input = ` - /** @experimental */ - export declare class A { - foo(param: number): void; - } - `; - checkThrows( - {'file.d.ts': input}, - 'file.d.ts(3,7): error: Required jsdoc tags - One of the tags: "@stable", "@foo", "@bar" - must exist on `param`.', - {paramTags: {requireAtLeastOne: ['stable', 'foo', 'bar']}}); - }); - - it('should allow with one of the requireAtLeastOne tags found', () => { - const input = ` - /** - * @foo - * @bar - * @stable - */ - export declare class A { - } - /** - * @foo - */ - export declare const b: string; - /** - * @bar - */ - export declare var c: number; - /** - * @stable - */ - export declare function d(): void; - `; - const expected = ` - export declare class A { - } - - export declare const b: string; - - export declare var c: number; - - export declare function d(): void; - `; - check( - {'file.d.ts': input}, expected, - {exportTags: {requireAtLeastOne: ['stable', 'foo', 'bar']}}); - }); -}); - -function getMockHost(files: {[name: string]: string}): ts.CompilerHost { - return { - getSourceFile: (sourceName, languageVersion) => { - if (!files[sourceName]) return undefined; - return ts.createSourceFile( - sourceName, stripExtraIndentation(files[sourceName]), languageVersion, true); - }, - writeFile: (name, text, writeByteOrderMark) => {}, - fileExists: (filename) => !!files[filename], - readFile: (filename) => stripExtraIndentation(files[filename]), - getDefaultLibFileName: () => 'lib.ts', - useCaseSensitiveFileNames: () => true, - getCanonicalFileName: (filename) => filename, - getCurrentDirectory: () => './', - getNewLine: () => '\n', - getDirectories: () => [] - }; -} - -function check( - files: {[name: string]: string}, expected: string, options: SerializationOptions = {}) { - const actual = publicApiInternal(getMockHost(files), 'file.d.ts', {}, options); - chai.assert.equal(actual.trim(), stripExtraIndentation(expected).trim()); -} - -function checkThrows( - files: {[name: string]: string}, error: string, options: SerializationOptions = {}) { - chai.assert.throws(() => { - publicApiInternal(getMockHost(files), 'file.d.ts', {}, options); - }, error); -} - -function stripExtraIndentation(text: string) { - let lines = text.split('\n'); - // Ignore first and last new line - lines = lines.slice(1, lines.length - 1); - const commonIndent = lines.reduce((min, line) => { - const indent = /^( *)/.exec(line)![1].length; - // Ignore empty line - return line.length ? Math.min(min, indent) : min; - }, text.length); - - return lines.map(line => line.substr(commonIndent)).join('\n') + '\n'; -} diff --git a/tools/tsconfig.json b/tools/tsconfig.json index 086b316599..3a0358f660 100644 --- a/tools/tsconfig.json +++ b/tools/tsconfig.json @@ -26,7 +26,6 @@ "exclude": [ "testing", "node_modules", - "ts-api-guardian", "typings-test", "public_api_guard", "docs" diff --git a/tools/tslint/requireInternalWithUnderscoreRule.ts b/tools/tslint/requireInternalWithUnderscoreRule.ts index 9f73e5f434..3ce981bf8c 100644 --- a/tools/tslint/requireInternalWithUnderscoreRule.ts +++ b/tools/tslint/requireInternalWithUnderscoreRule.ts @@ -12,7 +12,7 @@ import {AbstractRule} from 'tslint/lib/rules'; import * as ts from 'typescript'; export class Rule extends AbstractRule { - public apply(sourceFile: ts.SourceFile): RuleFailure[] { + override apply(sourceFile: ts.SourceFile): RuleFailure[] { const typedefWalker = new TypedefWalker(sourceFile, this.getOptions()); return this.applyWithWalker(typedefWalker); } @@ -47,6 +47,6 @@ class TypedefWalker extends RuleWalker { } this.addFailure(this.createFailure( node.getStart(), node.getWidth(), - `module-private member ${node.name.getText()} must be annotated @internal`)); + `module-private member ${node.name?.getText()} must be annotated @internal`)); } } diff --git a/tools/tslint/tsNodeLoaderRule.js b/tools/tslint/tsNodeLoaderRule.js new file mode 100644 index 0000000000..091cc3dda8 --- /dev/null +++ b/tools/tslint/tsNodeLoaderRule.js @@ -0,0 +1,19 @@ +/** + * @license + * 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 + */ + +const path = require('path'); +const Lint = require('tslint'); + +// Custom rule that registers all of the custom rules, written in TypeScript, with ts-node. +// This is necessary, because `tslint` and IDEs won't execute any rules that aren't in a .js file. +require('ts-node').register(); + +// Add a noop rule so tslint doesn't complain. +exports.Rule = class Rule extends Lint.Rules.AbstractRule { + apply() {} +}; diff --git a/tools/yarn/check-yarn.js b/tools/yarn/check-yarn.js deleted file mode 100644 index 8fc3010639..0000000000 --- a/tools/yarn/check-yarn.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @license - * 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 - */ - -'use strict'; - -if (process.env.npm_execpath.indexOf('yarn') === -1) { - throw new Error( - 'Please use Yarn instead of NPM to install dependencies. See: https://yarnpkg.com/lang/en/docs/install/'); -} diff --git a/tsconfig-tslint.json b/tsconfig-tslint.json new file mode 100644 index 0000000000..e5a235c7c9 --- /dev/null +++ b/tsconfig-tslint.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "allowJs": true + }, + "include": [ + "dev-infra/**/*", + "packages/**/*", + "modules/**/*", + "tools/**/*", + "scripts/**/*" + ] +} diff --git a/tslint.json b/tslint.json index f86c736ddd..2f812a798a 100644 --- a/tslint.json +++ b/tslint.json @@ -1,97 +1,128 @@ { + "rulesDirectory": [ + "tools/tslint", + "dev-infra/tslint-rules", + "node_modules/vrsource-tslint-rules/rules", + "node_modules/tslint-eslint-rules/dist/rules", + "node_modules/tslint-no-toplevel-property-access/rules" + ], "rules": { - "class-name": true, - "comment-format": [ - true, - "check-space" - ], - "curly": true, + // The first rule needs to be `ts-node-loader` which sets up `ts-node` within TSLint so + // that rules written in TypeScript can be loaded without needing to be transpiled. + "ts-node-loader": true, + // Custom rules written in TypeScript. + "require-internal-with-underscore": true, + "no-implicit-override-abstract": true, + "eofline": true, - "forin": true, - "indent": [ - true, - "spaces" - ], - "label-position": true, - "label-undefined": true, - "max-line-length": [ - true, - 140 - ], - "member-access": false, - "no-arg": true, - "no-bitwise": true, - "no-console": [ - true, - "debug", - "info", - "time", - "timeEnd", - "trace" - ], - "no-construct": true, - "no-debugger": true, - "no-duplicate-key": true, - "no-duplicate-variable": true, - "no-empty": false, - "no-eval": true, - "no-inferrable-types": true, - "no-string-literal": false, - "no-switch-case-fall-through": true, - "no-trailing-whitespace": true, - "no-unused-expression": true, - "no-unused-variable": true, - "no-unreachable": true, - "no-use-before-declare": true, - "no-var-keyword": true, - "object-literal-sort-keys": false, - "one-line": [ - true, - "check-open-brace", - "check-catch", - "check-else", - "check-whitespace" - ], - "quotemark": [ - true, - "single" - ], - "radix": true, - "semicolon": [ - "always" - ], - "triple-equals": [ - true, - "allow-null-check" - ], - "typedef-whitespace": [ + "file-header": [ true, { - "call-signature": "nospace", - "index-signature": "nospace", - "parameter": "nospace", - "property-declaration": "nospace", - "variable-declaration": "nospace" + "match": "Copyright Google LLC", + "allow-single-line-comments": false } ], - "variable-name": false, - "whitespace": [ + "no-console": [ true, - "check-branch", - "check-decl", - "check-operator", - "check-separator", - "check-type" + "log" ], + "no-construct": true, + "no-duplicate-imports": true, + "no-duplicate-variable": true, + "no-var-keyword": true, + "prefer-literal": [ + true, + "object" + ], + "no-toplevel-property-access": [ + true, + "packages/animations/src/", + "packages/animations/browser/", + "packages/common/src/", + "packages/core/src/", + "packages/elements/src/", + "packages/forms/src/", + "packages/platform-browser/src/", + "packages/router/src/" + ], + "semicolon": [ + true + ], + "variable-name": [ + true, + "ban-keywords" + ], + "no-inner-declarations": [ + true, + "function" + ], + "no-debugger": true, + "ban": [ + true, + {"name": "fdescribe", "message": "Don't keep jasmine focus methods."}, + {"name": "fit", "message": "Don't keep jasmine focus methods."} + ] + }, + "jsRules": { + // The first rule needs to be `ts-node-loader` which sets up `ts-node` within TSLint so + // that rules written in TypeScript can be loaded without needing to be transpiled. + "ts-node-loader": true, + // Custom rules written in TypeScript. + "require-internal-with-underscore": true, - "component-selector-name": [true, "kebab-case"], - "component-selector-type": [true, "element"], - "use-input-property-decorator": true, - "use-output-property-decorator": true, - "use-life-cycle-interface": true, - "use-pipe-transform-interface": true, - "component-class-suffix": true, - "directive-class-suffix": true, - "import-destructuring-spacing": true + "eofline": true, + "file-header": [ + true, + { + "match": "Copyright Google LLC", + "allow-single-line-comments": false + } + ], + "no-console": [ + true, + "log" + ], + "no-duplicate-imports": true, + "no-duplicate-variable": true, + "semicolon": [ + true + ], + "variable-name": [ + true, + "ban-keywords" + ], + "no-inner-declarations": [ + true, + "function" + ], + "ban": [ + true, + {"name": "fdescribe", "message": "Don't keep jasmine focus methods."}, + {"name": "fit", "message": "Don't keep jasmine focus methods."} + ] + }, + "linterOptions": { + "exclude": [ + "**/node_modules/**/*", + // Ignore AIO and integration tests. + "./aio/**/*", + "./integration/**/*", + // Ignore output directories + "./built/**/*", + "./dist/**/*", + "./bazel-out/**/*", + // Ignore special files + "**/*.externs.js", + // Ignore test files + "./packages/compiler-cli/test/compliance/test_cases/**/*", + "./packages/localize/**/test_files/**/*", + "./tools/public_api_guard/**/*.d.ts", + "./modules/benchmarks_external/**/*", + // Ignore zone.js directory + // TODO(JiaLiPassion): add zone.js back later + "./packages/zone.js/**/*", + "./dev-infra/ng-dev.js", + "./dev-infra/build-worker.js" + ] } } diff --git a/yarn.lock b/yarn.lock index 4f4e91ca62..a0818e7b3b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,99 +2,95 @@ # yarn lockfile v1 -"@angular-devkit/architect@0.1100.0-rc.1": - version "0.1100.0-rc.1" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1100.0-rc.1.tgz#8cc88af98a0158a75ed53b0d12b302457f282f77" - integrity sha512-8WeuUSbwfbC8A5xpXUYuMjp11pJ9YIJXBFqQX9jHyxrqkYSpck9eQkJuEEdVV9+YzRORAjnCh8vtQlOvo0pzYg== +"@angular-devkit/architect@0.1200.4": + version "0.1200.4" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1200.4.tgz#03b41bf94e39928de0eb35654aa4d2e59ac34418" + integrity sha512-/BKaVlpbZYb65elZ+xHoKB2J2DuTstMU++dqE9T/7E0CevuMoOdkLQFQm71Kjl3eFI4i6T5d8mlLVPNE/ZWm7w== dependencies: - "@angular-devkit/core" "11.0.0-rc.1" - rxjs "6.6.3" + "@angular-devkit/core" "12.0.4" + rxjs "6.6.7" -"@angular-devkit/build-angular@0.1100.0-rc.1": - version "0.1100.0-rc.1" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.1100.0-rc.1.tgz#4ed94e1cda73f89272ba0633ad92ca1e34da6d85" - integrity sha512-82X3gClVcNipXW/qaJq374ltNKWuLmOffWfzBss9qpHS7lMATJSfRjCUZdAOawntO5ZXI6EOOtmjXR4nAAZIyg== +"@angular-devkit/build-angular@12.0.4": + version "12.0.4" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-12.0.4.tgz#3076259d38d7b31657315e387ea1cfb954aa5c34" + integrity sha512-2GqEWJZleb86zEa9JMeM5BsbgV0Zor4mCaBj2KSjS28+WVJ/Q77LgDEdfidPuPcXzK7n+Mzrt6qLlrX8ORkaEg== dependencies: - "@angular-devkit/architect" "0.1100.0-rc.1" - "@angular-devkit/build-optimizer" "0.1100.0-rc.1" - "@angular-devkit/build-webpack" "0.1100.0-rc.1" - "@angular-devkit/core" "11.0.0-rc.1" - "@babel/core" "7.12.3" - "@babel/generator" "7.12.1" - "@babel/plugin-transform-runtime" "7.12.1" - "@babel/preset-env" "7.12.1" - "@babel/runtime" "7.12.1" - "@babel/template" "7.10.4" + "@angular-devkit/architect" "0.1200.4" + "@angular-devkit/build-optimizer" "0.1200.4" + "@angular-devkit/build-webpack" "0.1200.4" + "@angular-devkit/core" "12.0.4" + "@babel/core" "7.14.3" + "@babel/generator" "7.14.3" + "@babel/plugin-transform-async-to-generator" "7.13.0" + "@babel/plugin-transform-runtime" "7.14.3" + "@babel/preset-env" "7.14.2" + "@babel/runtime" "7.14.0" + "@babel/template" "7.12.13" + "@discoveryjs/json-ext" "0.5.2" "@jsdevtools/coverage-istanbul-loader" "3.0.5" - "@ngtools/webpack" "11.0.0-rc.1" + "@ngtools/webpack" "12.0.4" ansi-colors "4.1.1" - autoprefixer "9.8.6" - babel-loader "8.1.0" + babel-loader "8.2.2" browserslist "^4.9.1" - cacache "15.0.5" + cacache "15.0.6" caniuse-lite "^1.0.30001032" - circular-dependency-plugin "5.2.0" - copy-webpack-plugin "6.2.1" - core-js "3.6.5" - css-loader "5.0.0" - cssnano "4.1.10" - file-loader "6.1.1" + circular-dependency-plugin "5.2.2" + copy-webpack-plugin "8.1.1" + core-js "3.12.0" + critters "0.0.10" + css-loader "5.2.4" + css-minimizer-webpack-plugin "3.0.0" find-cache-dir "3.3.1" - glob "7.1.6" - inquirer "7.3.3" - jest-worker "26.5.0" + glob "7.1.7" + https-proxy-agent "5.0.0" + inquirer "8.0.0" + jest-worker "26.6.2" karma-source-map-support "1.4.0" - less "3.12.2" - less-loader "7.0.2" - license-webpack-plugin "2.3.1" + less "4.1.1" + less-loader "8.1.1" + license-webpack-plugin "2.3.19" loader-utils "2.0.0" - mini-css-extract-plugin "1.2.1" + mini-css-extract-plugin "1.5.1" minimatch "3.0.4" - open "7.3.0" - ora "5.1.0" + open "8.0.2" + ora "5.4.0" parse5-html-rewriting-stream "6.0.1" - pnp-webpack-plugin "1.6.4" - postcss "7.0.32" - postcss-import "12.0.1" - postcss-loader "4.0.4" + postcss "8.3.0" + postcss-import "14.0.1" + postcss-loader "5.2.0" + postcss-preset-env "6.7.0" raw-loader "4.0.2" regenerator-runtime "0.13.7" - resolve-url-loader "3.1.2" + resolve-url-loader "4.0.0" rimraf "3.0.2" - rollup "2.32.1" - rxjs "6.6.3" - sass "1.27.0" - sass-loader "10.0.4" - semver "7.3.2" + rxjs "6.6.7" + sass "1.32.12" + sass-loader "11.0.1" + semver "7.3.5" source-map "0.7.3" - source-map-loader "1.1.2" + source-map-loader "2.0.1" source-map-support "0.5.19" - speed-measure-webpack-plugin "1.3.3" style-loader "2.0.0" stylus "0.54.8" - stylus-loader "4.1.1" - terser "5.3.7" - terser-webpack-plugin "4.2.3" + stylus-loader "5.0.0" + terser "5.7.0" + terser-webpack-plugin "5.1.2" text-table "0.2.0" tree-kill "1.2.2" - webpack "4.44.2" - webpack-dev-middleware "3.7.2" - webpack-dev-server "3.11.0" - webpack-merge "5.2.0" - webpack-sources "2.0.1" - webpack-subresource-integrity "1.5.1" - worker-plugin "5.0.0" + webpack "5.38.1" + webpack-dev-middleware "4.1.0" + webpack-dev-server "3.11.2" + webpack-merge "5.7.3" + webpack-subresource-integrity "1.5.2" -"@angular-devkit/build-optimizer@0.1100.0-rc.1": - version "0.1100.0-rc.1" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.1100.0-rc.1.tgz#7f211949497f2d24d9b7caa50b8e151deef4dd30" - integrity sha512-ST+N1gMiPUPtuvhKRh6HaVPP0fBVW4vFRo9GY1MFLP1n3RXR8XjEWTIIRuqo8XueG31VfI0EUfFVc6V4VEuRuQ== +"@angular-devkit/build-optimizer@0.1200.4": + version "0.1200.4" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.1200.4.tgz#b316a367a6073752457d11f89147283fc8e87462" + integrity sha512-7lD3oXfQX00nA1FElH2cI0C8Q1rNnqMpFCTB1Bfd/7/SM+ihkL7EjIoFalN5HZuFGR536zrguSKnmv3C6wijrw== dependencies: - loader-utils "2.0.0" source-map "0.7.3" - tslib "2.0.3" - typescript "4.0.5" - webpack-sources "2.0.1" + tslib "2.2.0" + typescript "4.2.4" "@angular-devkit/build-optimizer@0.14.0-beta.5": version "0.14.0-beta.5" @@ -106,153 +102,111 @@ typescript "3.2.4" webpack-sources "1.3.0" -"@angular-devkit/build-webpack@0.1100.0-rc.1": - version "0.1100.0-rc.1" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1100.0-rc.1.tgz#0fd12216ff1a74ef53bfe27c603bddaa55ce4844" - integrity sha512-H9+HCT66fwYI+ZWyIVTfM8LLXQOqU3rtY9Bd5EvbgM3ZgFs76qzwqy0eAsgxWgpATULD2fpv1StY0gb07pgihA== +"@angular-devkit/build-webpack@0.1200.4": + version "0.1200.4" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1200.4.tgz#a957d706c7f1c449682a16c16998ccf06e406526" + integrity sha512-Q7UYBvSsbK4ubsqJIVrnh4Q+EwVqNdRFlhekaM5XN3WH6xRsuZjTMuYDrQh5JSzFYjrKqezau1KzyKs7V1xIJQ== dependencies: - "@angular-devkit/architect" "0.1100.0-rc.1" - "@angular-devkit/core" "11.0.0-rc.1" - rxjs "6.6.3" + "@angular-devkit/architect" "0.1200.4" + rxjs "6.6.7" -"@angular-devkit/core@11.0.0-rc.1": - version "11.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-11.0.0-rc.1.tgz#3e60d3016c6dfad4dfc5b5073ae0e274e1cb78b2" - integrity sha512-RZGWAuehQ83n76i+iDPC4nmgGqwG1ek1a0Wk6je8hw1oCKeSvGqfW0olFjFc2BO8pdkEGNLZdvhuoBLhElGoiw== +"@angular-devkit/core@12.0.4": + version "12.0.4" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-12.0.4.tgz#23b92b6e9c430107d1ca4e11336d509365e48ee1" + integrity sha512-gtQkLXuQK7NPkurw49//MFZWoRa9aVCIbxE2uxbDAzzQengx9nLUoezS2xVdM7m/SqVK72YL+ZFfSTXzfiSdnA== dependencies: - ajv "6.12.6" + ajv "8.2.0" + ajv-formats "2.0.2" fast-json-stable-stringify "2.1.0" magic-string "0.25.7" - rxjs "6.6.3" + rxjs "6.6.7" source-map "0.7.3" -"@angular-devkit/schematics@11.0.0-rc.1": - version "11.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-11.0.0-rc.1.tgz#6dafcd4f015ce2b71d2bebca36c7fa4cd7d16095" - integrity sha512-v/HgErCoGS84k6iEjRhmiIafHOrUEB7Ib+Bn4ruDEwY2amnxOOqyS7JiimAlOlcbqRZGmf6vBQ1Jmi2fjZYfRw== +"@angular-devkit/schematics@12.0.4": + version "12.0.4" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-12.0.4.tgz#fdbf2145985261253a86732d86352cf26eadc98d" + integrity sha512-MEAAcOh1Y4R6O7HWo7mMXgRK9BSbCZ3rlx+aHmtWpNXohw0TRhNY5WmRnQTRvMA3qjR9nh0Uo7BkRpgwRfqmBw== dependencies: - "@angular-devkit/core" "11.0.0-rc.1" - ora "5.1.0" - rxjs "6.6.3" + "@angular-devkit/core" "12.0.4" + ora "5.4.0" + rxjs "6.6.7" -"@angular/cli@11.0.0-rc.1": - version "11.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-11.0.0-rc.1.tgz#e99e92b25db61e39b3ff4c88f9b2d88bc3d694cc" - integrity sha512-rF1/CxJ0PeZ4+FCu2UFY2+QPUREdT5tdqtfg5XgTzJviMWkIgrhx53gmICtg7xDykYNA+DsLDJFnFWyVOqOpVw== +"@angular/cli@12.0.4": + version "12.0.4" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-12.0.4.tgz#766d471e7486a9e51297278b3a8afdbc96265ab4" + integrity sha512-kZaJ55udB/AjQ+q8CrQfk6JGWdnJpH3c2VtbvSuR/ihiG6zMSxwpXqt1rImQN0RfffG3bsHD2SpM+T7/LKPemw== dependencies: - "@angular-devkit/architect" "0.1100.0-rc.1" - "@angular-devkit/core" "11.0.0-rc.1" - "@angular-devkit/schematics" "11.0.0-rc.1" - "@schematics/angular" "11.0.0-rc.1" - "@schematics/update" "0.1100.0-rc.1" + "@angular-devkit/architect" "0.1200.4" + "@angular-devkit/core" "12.0.4" + "@angular-devkit/schematics" "12.0.4" + "@schematics/angular" "12.0.4" "@yarnpkg/lockfile" "1.1.0" ansi-colors "4.1.1" - debug "4.2.0" - ini "1.3.5" - inquirer "7.3.3" - npm-package-arg "8.1.0" - npm-pick-manifest "6.1.0" - open "7.3.0" - pacote "9.5.12" - resolve "1.18.1" + debug "4.3.1" + ini "2.0.0" + inquirer "8.0.0" + jsonc-parser "3.0.0" + npm-package-arg "8.1.2" + npm-pick-manifest "6.1.1" + open "8.0.2" + ora "5.4.0" + pacote "11.3.2" + resolve "1.20.0" rimraf "3.0.2" - semver "7.3.2" - symbol-observable "2.0.3" - universal-analytics "0.4.23" - uuid "8.3.1" + semver "7.3.5" + symbol-observable "4.0.0" + uuid "8.3.2" -"@babel/cli@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.8.4.tgz#505fb053721a98777b2b175323ea4f090b7d3c1c" - integrity sha512-XXLgAm6LBbaNxaGhMAznXXaxtCWfuv6PIDJ9Alsy9JYTOh+j2jJz+L/162kkfU1j/pTSxK1xGmlwI4pdIMkoag== +"@apidevtools/json-schema-ref-parser@^9.0.3": + version "9.0.9" + resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz#d720f9256e3609621280584f2b47ae165359268b" + integrity sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w== + dependencies: + "@jsdevtools/ono" "^7.1.3" + "@types/json-schema" "^7.0.6" + call-me-maybe "^1.0.1" + js-yaml "^4.1.0" + +"@babel/cli@7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.14.5.tgz#9551b194f02360729de6060785bbdcce52c69f0a" + integrity sha512-poegjhRvXHWO0EAsnYajwYZuqcz7gyfxwfaecUESxDujrqOivf3zrjFbub8IJkrqEaz3fvJWh001EzxBub54fg== dependencies: commander "^4.0.1" convert-source-map "^1.1.0" fs-readdir-recursive "^1.1.0" glob "^7.0.0" - lodash "^4.17.13" make-dir "^2.1.0" slash "^2.0.0" source-map "^0.5.0" optionalDependencies: - chokidar "^2.1.8" + "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.2" + chokidar "^3.4.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" - integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" + integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== dependencies: - "@babel/highlight" "^7.8.3" + "@babel/highlight" "^7.14.5" -"@babel/code-frame@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.1.tgz#d5481c5095daa1c57e16e54c6f9198443afb49ff" - integrity sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw== - dependencies: - "@babel/highlight" "^7.10.1" +"@babel/compat-data@^7.10.1", "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.14.5", "@babel/compat-data@^7.14.7": + version "7.14.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.7.tgz#7b047d7a3a89a67d2258dc61f604f098f1bc7e08" + integrity sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw== -"@babel/code-frame@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" - integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== - dependencies: - "@babel/highlight" "^7.12.13" - -"@babel/compat-data@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.1.tgz#b1085ffe72cd17bf2c0ee790fc09f9626011b2db" - integrity sha512-CHvCj7So7iCkGKPRFUfryXIkU2gSBw7VSZFYLsqVhrS47269VK2Hfi9S/YcublPMW8k1u2bQBlbDruoQEm4fgw== - dependencies: - browserslist "^4.12.0" - invariant "^2.2.4" - semver "^5.5.0" - -"@babel/compat-data@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.1.tgz#d7386a689aa0ddf06255005b4b991988021101a0" - integrity sha512-725AQupWJZ8ba0jbKceeFblZTY90McUBWMwHhkFQ9q1zKPJ95GUktljFcgcsIVwRnTnRKlcYzfiNImg5G9m6ZQ== - -"@babel/core@7.12.3": - version "7.12.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" - integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.1" - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helpers" "^7.12.1" - "@babel/parser" "^7.12.3" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.19" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/core@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.3.tgz#30b0ebb4dd1585de6923a0b4d179e0b9f5d82941" - integrity sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA== +"@babel/core@7.14.3", "@babel/core@7.8.6", "@babel/core@^7.7.5": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.6.tgz#27d7df9258a45c2e686b6f18b6c659e563aa4636" + integrity sha512-Sheg7yEJD51YHAvLEV/7Uvw95AeWqYPL3Vk3zGujJKIhJ+8oLw2ALaf3hbucILhKsgSoADOvtKRJuNVdcJkOrg== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.8.3" - "@babel/helpers" "^7.8.3" - "@babel/parser" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/generator" "^7.8.6" + "@babel/helpers" "^7.8.4" + "@babel/parser" "^7.8.6" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.6" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -262,872 +216,322 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.7.5", "@babel/core@^7.8.6": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" - integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== +"@babel/generator@7.14.3", "@babel/generator@7.8.6", "@babel/generator@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.6.tgz#57adf96d370c9a63c241cd719f9111468578537a" + integrity sha512-4bpOR5ZBz+wWcMeVtcf7FbjcFzCp+817z2/gHNncIRcM9MmKzUhtWCYAq27RAfUrAFwb+OCG1s9WEaVxfi6cjg== dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.0" - "@babel/parser" "^7.9.0" - "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@7.12.1", "@babel/generator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.1.tgz#0d70be32bdaa03d7c51c8597dda76e0df1f15468" - integrity sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg== - dependencies: - "@babel/types" "^7.12.1" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.10.1": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.2.tgz#0fa5b5b2389db8bfdfcc3492b551ee20f5dd69a9" - integrity sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA== - dependencies: - "@babel/types" "^7.10.2" + "@babel/types" "^7.8.6" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" -"@babel/generator@^7.13.9", "@babel/generator@^7.8.3": - version "7.13.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39" - integrity sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw== +"@babel/helper-annotate-as-pure@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz#7bf478ec3b71726d56a8ca5775b046fc29879e61" + integrity sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA== dependencies: - "@babel/types" "^7.13.0" - jsesc "^2.5.1" - source-map "^0.5.0" + "@babel/types" "^7.14.5" -"@babel/generator@^7.8.6", "@babel/generator@^7.9.0": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.4.tgz#12441e90c3b3c4159cdecf312075bf1a8ce2dbce" - integrity sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz#b939b43f8c37765443a19ae74ad8b15978e0a191" + integrity sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w== dependencies: - "@babel/types" "^7.9.0" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" + "@babel/helper-explode-assignable-expression" "^7.14.5" + "@babel/types" "^7.14.5" -"@babel/helper-annotate-as-pure@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz#f6d08acc6f70bbd59b436262553fb2e259a1a268" - integrity sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw== +"@babel/helper-compilation-targets@^7.10.2", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz#7a99c5d0967911e972fe2c3411f7d5b498498ecf" + integrity sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw== dependencies: - "@babel/types" "^7.10.1" + "@babel/compat-data" "^7.14.5" + "@babel/helper-validator-option" "^7.14.5" + browserslist "^4.16.6" + semver "^6.3.0" -"@babel/helper-annotate-as-pure@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" - integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== +"@babel/helper-create-class-features-plugin@^7.14.5": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.8.tgz#a6f8c3de208b1e5629424a9a63567f56501955fc" + integrity sha512-bpYvH8zJBWzeqi1o+co8qOrw+EXzQ/0c74gVmY205AWXy9nifHrOg77y+1zwxX5lXE7Icq4sPlSQ4O2kWBrteQ== dependencies: - "@babel/types" "^7.10.4" + "@babel/helper-annotate-as-pure" "^7.14.5" + "@babel/helper-function-name" "^7.14.5" + "@babel/helper-member-expression-to-functions" "^7.14.7" + "@babel/helper-optimise-call-expression" "^7.14.5" + "@babel/helper-replace-supers" "^7.14.5" + "@babel/helper-split-export-declaration" "^7.14.5" -"@babel/helper-annotate-as-pure@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" - integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== +"@babel/helper-create-regexp-features-plugin@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz#c7d5ac5e9cf621c26057722fb7a8a4c5889358c4" + integrity sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A== dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.1.tgz#0ec7d9be8174934532661f87783eb18d72290059" - integrity sha512-cQpVq48EkYxUU0xozpGCLla3wlkdRRqLWu1ksFMXA9CM5KQmyyRpSEsYXbao7JUkOw/tAaYKCaYyZq6HOFYtyw== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" - integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-compilation-targets@^7.10.2": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz#a17d9723b6e2c750299d2a14d4637c76936d8285" - integrity sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA== - dependencies: - "@babel/compat-data" "^7.10.1" - browserslist "^4.12.0" - invariant "^2.2.4" - levenary "^1.1.1" - semver "^5.5.0" - -"@babel/helper-compilation-targets@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.1.tgz#310e352888fbdbdd8577be8dfdd2afb9e7adcf50" - integrity sha512-jtBEif7jsPwP27GPHs06v4WBV0KrE8a/P7n0N0sSvHn2hwUCYnolP/CLmz51IzAW4NlN+HuoBtb9QcwnRo9F/g== - dependencies: - "@babel/compat-data" "^7.12.1" - "@babel/helper-validator-option" "^7.12.1" - browserslist "^4.12.0" - semver "^5.5.0" - -"@babel/helper-create-class-features-plugin@^7.10.1": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.2.tgz#7474295770f217dbcf288bf7572eb213db46ee67" - integrity sha512-5C/QhkGFh1vqcziq1vAL6SI9ymzUp8BCYjFpvYVhWP4DlATIb3u5q3iUd35mvlyGs8fO7hckkW7i0tmH+5+bvQ== - dependencies: - "@babel/helper-function-name" "^7.10.1" - "@babel/helper-member-expression-to-functions" "^7.10.1" - "@babel/helper-optimise-call-expression" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-replace-supers" "^7.10.1" - "@babel/helper-split-export-declaration" "^7.10.1" - -"@babel/helper-create-class-features-plugin@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" - integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-member-expression-to-functions" "^7.12.1" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-replace-supers" "^7.12.1" - "@babel/helper-split-export-declaration" "^7.10.4" - -"@babel/helper-create-regexp-features-plugin@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz#1b8feeab1594cbcfbf3ab5a3bbcabac0468efdbd" - integrity sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/helper-regex" "^7.10.1" - regexpu-core "^4.7.0" - -"@babel/helper-create-regexp-features-plugin@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz#18b1302d4677f9dc4740fe8c9ed96680e29d37e8" - integrity sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-regex" "^7.10.4" + "@babel/helper-annotate-as-pure" "^7.14.5" regexpu-core "^4.7.1" -"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" - integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== +"@babel/helper-define-polyfill-provider@^0.2.2": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6" + integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew== dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-regex" "^7.8.3" - regexpu-core "^4.7.0" - -"@babel/helper-define-map@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.1.tgz#5e69ee8308648470dd7900d159c044c10285221d" - integrity sha512-+5odWpX+OnvkD0Zmq7panrMuAGQBu6aPUgvMzuMGo4R+jUOvealEj2hiqI6WhxgKrTpFoFj0+VdsuA8KDxHBDg== - dependencies: - "@babel/helper-function-name" "^7.10.1" - "@babel/types" "^7.10.1" - lodash "^4.17.13" - -"@babel/helper-define-map@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30" - integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/types" "^7.10.5" - lodash "^4.17.19" - -"@babel/helper-explode-assignable-expression@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.1.tgz#e9d76305ee1162ca467357ae25df94f179af2b7e" - integrity sha512-vcUJ3cDjLjvkKzt6rHrl767FeE7pMEYfPanq5L16GRtrXIoznc0HykNW2aEYkcnP76P0isoqJ34dDMFZwzEpJg== - dependencies: - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/helper-explode-assignable-expression@^7.10.4": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz#8006a466695c4ad86a2a5f2fb15b5f2c31ad5633" - integrity sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA== - dependencies: - "@babel/types" "^7.12.1" - -"@babel/helper-function-name@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz#92bd63829bfc9215aca9d9defa85f56b539454f4" - integrity sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ== - dependencies: - "@babel/helper-get-function-arity" "^7.10.1" - "@babel/template" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/helper-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" - integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== - dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-function-name@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" - integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== - dependencies: - "@babel/helper-get-function-arity" "^7.12.13" - "@babel/template" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/helper-function-name@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" - integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== - dependencies: - "@babel/helper-get-function-arity" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-get-function-arity@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz#7303390a81ba7cb59613895a192b93850e373f7d" - integrity sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw== - dependencies: - "@babel/types" "^7.10.1" - -"@babel/helper-get-function-arity@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" - integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-get-function-arity@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" - integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-get-function-arity@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" - integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-hoist-variables@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.1.tgz#7e77c82e5dcae1ebf123174c385aaadbf787d077" - integrity sha512-vLm5srkU8rI6X3+aQ1rQJyfjvCBLXP8cAGeuw04zeAM2ItKb1e7pmVmLyHb4sDaAYnLL13RHOZPLEtcGZ5xvjg== - dependencies: - "@babel/types" "^7.10.1" - -"@babel/helper-hoist-variables@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" - integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-member-expression-to-functions@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.1.tgz#432967fd7e12a4afef66c4687d4ca22bc0456f15" - integrity sha512-u7XLXeM2n50gb6PWJ9hoO5oO7JFPaZtrh35t8RqKLT1jFKj9IWeD1zrcrYp1q1qiZTdEarfDWfTIP8nGsu0h5g== - dependencies: - "@babel/types" "^7.10.1" - -"@babel/helper-member-expression-to-functions@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz#fba0f2fcff3fba00e6ecb664bb5e6e26e2d6165c" - integrity sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ== - dependencies: - "@babel/types" "^7.12.1" - -"@babel/helper-member-expression-to-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" - integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-module-imports@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz#dd331bd45bccc566ce77004e9d05fe17add13876" - integrity sha512-SFxgwYmZ3HZPyZwJRiVNLRHWuW2OgE5k2nrVs6D9Iv4PPnXVffuEHy83Sfx/l4SqF+5kyJXjAyUmrG7tNm+qVg== - dependencies: - "@babel/types" "^7.10.1" - -"@babel/helper-module-imports@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz#1644c01591a15a2f084dd6d092d9430eb1d1216c" - integrity sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA== - dependencies: - "@babel/types" "^7.12.1" - -"@babel/helper-module-imports@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" - integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-module-transforms@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz#24e2f08ee6832c60b157bb0936c86bef7210c622" - integrity sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg== - dependencies: - "@babel/helper-module-imports" "^7.10.1" - "@babel/helper-replace-supers" "^7.10.1" - "@babel/helper-simple-access" "^7.10.1" - "@babel/helper-split-export-declaration" "^7.10.1" - "@babel/template" "^7.10.1" - "@babel/types" "^7.10.1" - lodash "^4.17.13" - -"@babel/helper-module-transforms@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" - integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== - dependencies: - "@babel/helper-module-imports" "^7.12.1" - "@babel/helper-replace-supers" "^7.12.1" - "@babel/helper-simple-access" "^7.12.1" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/helper-validator-identifier" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" - lodash "^4.17.19" - -"@babel/helper-module-transforms@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" - integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-simple-access" "^7.8.3" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/template" "^7.8.6" - "@babel/types" "^7.9.0" - lodash "^4.17.13" - -"@babel/helper-optimise-call-expression@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.1.tgz#b4a1f2561870ce1247ceddb02a3860fa96d72543" - integrity sha512-a0DjNS1prnBsoKx83dP2falChcs7p3i8VMzdrSbfLhuQra/2ENC4sbri34dz/rWmDADsmF1q5GbfaXydh0Jbjg== - dependencies: - "@babel/types" "^7.10.1" - -"@babel/helper-optimise-call-expression@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" - integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-optimise-call-expression@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" - integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" - integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== - -"@babel/helper-plugin-utils@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz#ec5a5cf0eec925b66c60580328b122c01230a127" - integrity sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA== - -"@babel/helper-plugin-utils@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" - integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== - -"@babel/helper-regex@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.1.tgz#021cf1a7ba99822f993222a001cc3fec83255b96" - integrity sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g== - dependencies: - lodash "^4.17.13" - -"@babel/helper-regex@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0" - integrity sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg== - dependencies: - lodash "^4.17.19" - -"@babel/helper-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" - integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== - dependencies: - lodash "^4.17.13" - -"@babel/helper-remap-async-to-generator@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.1.tgz#bad6aaa4ff39ce8d4b82ccaae0bfe0f7dbb5f432" - integrity sha512-RfX1P8HqsfgmJ6CwaXGKMAqbYdlleqglvVtht0HGPMSsy2V6MqLlOJVF/0Qyb/m2ZCi2z3q3+s6Pv7R/dQuZ6A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/helper-wrap-function" "^7.10.1" - "@babel/template" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/helper-remap-async-to-generator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd" - integrity sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-wrap-function" "^7.10.4" - "@babel/types" "^7.12.1" - -"@babel/helper-replace-supers@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz#ec6859d20c5d8087f6a2dc4e014db7228975f13d" - integrity sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.10.1" - "@babel/helper-optimise-call-expression" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/helper-replace-supers@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz#f15c9cc897439281891e11d5ce12562ac0cf3fa9" - integrity sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.12.1" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" - -"@babel/helper-replace-supers@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" - integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/traverse" "^7.8.6" - "@babel/types" "^7.8.6" - -"@babel/helper-simple-access@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz#08fb7e22ace9eb8326f7e3920a1c2052f13d851e" - integrity sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw== - dependencies: - "@babel/template" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/helper-simple-access@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" - integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== - dependencies: - "@babel/types" "^7.12.1" - -"@babel/helper-simple-access@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" - integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== - dependencies: - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" - integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== - dependencies: - "@babel/types" "^7.12.1" - -"@babel/helper-split-export-declaration@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz#c6f4be1cbc15e3a868e4c64a17d5d31d754da35f" - integrity sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g== - dependencies: - "@babel/types" "^7.10.1" - -"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" - integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== - dependencies: - "@babel/types" "^7.11.0" - -"@babel/helper-split-export-declaration@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" - integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-split-export-declaration@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" - integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-validator-identifier@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz#5770b0c1a826c4f53f5ede5e153163e0318e94b5" - integrity sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw== - -"@babel/helper-validator-identifier@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" - integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== - -"@babel/helper-validator-identifier@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" - integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== - -"@babel/helper-validator-identifier@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz#ad53562a7fc29b3b9a91bbf7d10397fd146346ed" - integrity sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw== - -"@babel/helper-validator-identifier@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" - integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== - -"@babel/helper-validator-option@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9" - integrity sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A== - -"@babel/helper-wrap-function@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz#956d1310d6696257a7afd47e4c42dfda5dfcedc9" - integrity sha512-C0MzRGteVDn+H32/ZgbAv5r56f2o1fZSA/rj/TYo8JEJNHg+9BdSmKBUND0shxWRztWhjlT2cvHYuynpPsVJwQ== - dependencies: - "@babel/helper-function-name" "^7.10.1" - "@babel/template" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/helper-wrap-function@^7.10.4": - version "7.12.3" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9" - integrity sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helpers@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.1.tgz#8a8261c1d438ec18cb890434df4ec768734c1e79" - integrity sha512-9JoDSBGoWtmbay98efmT2+mySkwjzeFeAL9BuWNoVQpkPFQF8SIIFUfY5os9u8wVzglzoiPRSW7cuJmBDUt43g== - dependencies: - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" - -"@babel/helpers@^7.8.3": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.10.tgz#fd8e2ba7488533cdeac45cc158e9ebca5e3c7df8" - integrity sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ== - dependencies: - "@babel/template" "^7.12.13" + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" -"@babel/helpers@^7.9.0": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f" - integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA== +"@babel/helper-explode-assignable-expression@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz#8aa72e708205c7bb643e45c73b4386cdf2a1f645" + integrity sha512-Htb24gnGJdIGT4vnRKMdoXiOIlqOLmdiUYpAQ0mYfgVT/GDm8GOYhgi4GL+hMKrkiPRohO4ts34ELFsGAPQLDQ== dependencies: - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" + "@babel/types" "^7.14.5" -"@babel/highlight@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.1.tgz#841d098ba613ba1a427a2b383d79e35552c38ae0" - integrity sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg== +"@babel/helper-function-name@^7.14.5", "@babel/helper-function-name@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" + integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== dependencies: - "@babel/helper-validator-identifier" "^7.10.1" + "@babel/helper-get-function-arity" "^7.14.5" + "@babel/template" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/helper-get-function-arity@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" + integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-hoist-variables@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" + integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-member-expression-to-functions@^7.14.5", "@babel/helper-member-expression-to-functions@^7.14.7": + version "7.14.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz#97e56244beb94211fe277bd818e3a329c66f7970" + integrity sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-module-imports@^7.10.1", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12", "@babel/helper-module-imports@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" + integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-module-transforms@^7.14.5": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.8.tgz#d4279f7e3fd5f4d5d342d833af36d4dd87d7dc49" + integrity sha512-RyE+NFOjXn5A9YU1dkpeBaduagTlZ0+fccnIcAGbv1KGUlReBj7utF7oEth8IdIBQPcux0DDgW5MFBH2xu9KcA== + dependencies: + "@babel/helper-module-imports" "^7.14.5" + "@babel/helper-replace-supers" "^7.14.5" + "@babel/helper-simple-access" "^7.14.8" + "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/helper-validator-identifier" "^7.14.8" + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.8" + "@babel/types" "^7.14.8" + +"@babel/helper-optimise-call-expression@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" + integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.1", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" + integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== + +"@babel/helper-remap-async-to-generator@^7.13.0", "@babel/helper-remap-async-to-generator@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.14.5.tgz#51439c913612958f54a987a4ffc9ee587a2045d6" + integrity sha512-rLQKdQU+HYlxBwQIj8dk4/0ENOUEhA/Z0l4hN8BexpvmSMN9oA9EagjnhnDpNsRdWCfjwa4mn/HyBXO9yhQP6A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.14.5" + "@babel/helper-wrap-function" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/helper-replace-supers@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz#0ecc0b03c41cd567b4024ea016134c28414abb94" + integrity sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.14.5" + "@babel/helper-optimise-call-expression" "^7.14.5" + "@babel/traverse" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/helper-simple-access@^7.14.5", "@babel/helper-simple-access@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz#82e1fec0644a7e775c74d305f212c39f8fe73924" + integrity sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg== + dependencies: + "@babel/types" "^7.14.8" + +"@babel/helper-skip-transparent-expression-wrappers@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz#96f486ac050ca9f44b009fbe5b7d394cab3a0ee4" + integrity sha512-dmqZB7mrb94PZSAOYtr+ZN5qt5owZIAgqtoTuqiFbHFtxgEcmQlRJVI+bO++fciBunXtB6MK7HrzrfcAzIz2NQ== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-split-export-declaration@^7.14.5", "@babel/helper-split-export-declaration@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" + integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.8.tgz#32be33a756f29e278a0d644fa08a2c9e0f88a34c" + integrity sha512-ZGy6/XQjllhYQrNw/3zfWRwZCTVSiBLZ9DHVZxn9n2gip/7ab8mv2TWlKPIBk26RwedCBoWdjLmn+t9na2Gcow== + +"@babel/helper-validator-option@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" + integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== + +"@babel/helper-wrap-function@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.14.5.tgz#5919d115bf0fe328b8a5d63bcb610f51601f2bff" + integrity sha512-YEdjTCq+LNuNS1WfxsDCNpgXkJaIyqco6DAelTUjT4f2KIWC1nBcaCaSdHTBqQVLnTBexBcVcFhLSU1KnYuePQ== + dependencies: + "@babel/helper-function-name" "^7.14.5" + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/helpers@^7.8.4": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.8.tgz#839f88f463025886cff7f85a35297007e2da1b77" + integrity sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw== + dependencies: + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.8" + "@babel/types" "^7.14.8" + +"@babel/highlight@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" + integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== + dependencies: + "@babel/helper-validator-identifier" "^7.14.5" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/highlight@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" - integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/highlight@^7.12.13": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1" - integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/highlight@^7.8.3": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" - integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== - dependencies: - "@babel/helper-validator-identifier" "^7.9.0" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": +"@babel/parser@7.9.4", "@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.8.6": version "7.9.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== -"@babel/parser@^7.10.1": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.2.tgz#871807f10442b92ff97e4783b9b54f6a0ca812d0" - integrity sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ== - -"@babel/parser@^7.10.4", "@babel/parser@^7.12.1", "@babel/parser@^7.12.3": - version "7.12.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.3.tgz#a305415ebe7a6c7023b40b5122a0662d928334cd" - integrity sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw== - -"@babel/parser@^7.12.13", "@babel/parser@^7.13.13", "@babel/parser@^7.8.3": - version "7.13.13" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.13.tgz#42f03862f4aed50461e543270916b47dd501f0df" - integrity sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw== - "@babel/plugin-proposal-async-generator-functions@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.1.tgz#6911af5ba2e615c4ff3c497fe2f47b35bf6d7e55" - integrity sha512-vzZE12ZTdB336POZjmpblWfNNRpMSua45EYnRigE2XsZxcXcIyly2ixnTJasJE4Zq3U7t2d8rRF7XRUuzHxbOw== + version "7.14.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz#784a48c3d8ed073f65adcf30b57bcbf6c8119ace" + integrity sha512-RK8Wj7lXLY3bqei69/cc25gwS5puEc3dknoFPFbqfy3XxYQBQFvu4ioWpafMBAB+L9NyptQK4nMOa5Xz16og8Q== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-remap-async-to-generator" "^7.10.1" - "@babel/plugin-syntax-async-generators" "^7.8.0" - -"@babel/plugin-proposal-async-generator-functions@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz#dc6c1170e27d8aca99ff65f4925bd06b1c90550e" - integrity sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.12.1" - "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-remap-async-to-generator" "^7.14.5" + "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-proposal-class-properties@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz#046bc7f6550bb08d9bd1d4f060f5f5a4f1087e01" - integrity sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e" + integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-proposal-class-properties@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" - integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-create-class-features-plugin" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-proposal-dynamic-import@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz#e36979dc1dc3b73f6d6816fc4951da2363488ef0" - integrity sha512-Cpc2yUVHTEGPlmiQzXj026kqwjEQAD9I4ZC16uzdbgWgitg/UHKHLffKNCQZ5+y8jpIZPJcKcwsr2HwPh+w3XA== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz#0c6617df461c0c1f8fff3b47cd59772360101d2c" + integrity sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - -"@babel/plugin-proposal-dynamic-import@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc" - integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - -"@babel/plugin-proposal-export-namespace-from@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4" - integrity sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-proposal-json-strings@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz#b1e691ee24c651b5a5e32213222b2379734aff09" - integrity sha512-m8r5BmV+ZLpWPtMY2mOKN7wre6HIO4gfIiV+eOmsnZABNenrt/kzYBwrh+KOfgumSWpnlGs5F70J8afYMSJMBg== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz#38de60db362e83a3d8c944ac858ddf9f0c2239eb" + integrity sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-syntax-json-strings" "^7.8.0" - -"@babel/plugin-proposal-json-strings@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c" - integrity sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.0" - -"@babel/plugin-proposal-logical-assignment-operators@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751" - integrity sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-proposal-nullish-coalescing-operator@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz#02dca21673842ff2fe763ac253777f235e9bbf78" - integrity sha512-56cI/uHYgL2C8HVuHOuvVowihhX0sxb3nnfVRzUeVHTWmRHTZrKuAh/OBIMggGU/S1g/1D2CRCXqP+3u7vX7iA== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6" + integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" - integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" "@babel/plugin-proposal-numeric-separator@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz#a9a38bc34f78bdfd981e791c27c6fdcec478c123" - integrity sha512-jjfym4N9HtCiNfyyLAVD8WqPYeHUrw4ihxuAynWj6zzp2gf9Ey2f7ImhFm6ikB3CLf5Z/zmcJDri6B4+9j9RsA== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz#83631bf33d9a51df184c2102a069ac0c58c05f18" + integrity sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-syntax-numeric-separator" "^7.10.1" - -"@babel/plugin-proposal-numeric-separator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz#0e2c6774c4ce48be412119b4d693ac777f7685a6" - integrity sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-proposal-object-rest-spread@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.1.tgz#cba44908ac9f142650b4a65b8aa06bf3478d5fb6" - integrity sha512-Z+Qri55KiQkHh7Fc4BW6o+QBuTagbOp9txE+4U1i79u9oWlf2npkiDx+Rf3iK3lbcHBuNy9UOkwuR5wOMH3LIQ== + version "7.14.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.7.tgz#5920a2b3df7f7901df0205974c0641b13fd9d363" + integrity sha512-082hsZz+sVabfmDWo1Oct1u1AgbKbUAyVgmX4otIc7bdsRgHBXwTwb3DpDmD4Eyyx6DNiuz5UAATT655k+kL5g== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.10.1" - -"@babel/plugin-proposal-object-rest-spread@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" - integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/compat-data" "^7.14.7" + "@babel/helper-compilation-targets" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.14.5" "@babel/plugin-proposal-optional-catch-binding@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz#c9f86d99305f9fa531b568ff5ab8c964b8b223d2" - integrity sha512-VqExgeE62YBqI3ogkGoOJp1R6u12DFZjqwJhqtKc2o5m1YTUuUWnos7bZQFBhwkxIFpWYJ7uB75U7VAPPiKETA== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz#939dd6eddeff3a67fdf7b3f044b5347262598c3c" + integrity sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - -"@babel/plugin-proposal-optional-catch-binding@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942" - integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-proposal-optional-chaining@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.1.tgz#15f5d6d22708629451a91be28f8facc55b0e818c" - integrity sha512-dqQj475q8+/avvok72CF3AOSV/SGEcH29zT5hhohqqvvZ2+boQoOr7iGldBG5YXTO2qgCgc2B3WvVLUdbeMlGA== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603" + integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - -"@babel/plugin-proposal-optional-chaining@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz#cce122203fc8a32794296fc377c6dedaf4363797" - integrity sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-proposal-private-methods@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz#ed85e8058ab0fe309c3f448e5e1b73ca89cdb598" - integrity sha512-RZecFFJjDiQ2z6maFprLgrdnm0OzoC23Mx89xf1CcEsxmHuzuXOdniEuI+S3v7vjQG4F5sa6YtUp+19sZuSxHg== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz#37446495996b2945f30f5be5b60d5e2aa4f5792d" + integrity sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g== dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-create-class-features-plugin" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-proposal-private-methods@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389" - integrity sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w== +"@babel/plugin-proposal-unicode-property-regex@^7.10.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz#0f95ee0e757a5d647f378daa0eca7e93faa8bbe8" + integrity sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q== dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz#dc04feb25e2dd70c12b05d680190e138fa2c0c6f" - integrity sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-proposal-unicode-property-regex@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072" - integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" - integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.8" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-async-generators@^7.8.0": +"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== @@ -1135,83 +539,55 @@ "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-class-properties@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz#d5bc0645913df5b17ad7eda0fa2308330bde34c5" - integrity sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ== + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-class-properties@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" - integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-dynamic-import@^7.8.0": +"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-json-strings@^7.8.0": +"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz#25761ee7410bc8cf97327ba741ee94e4a61b7d99" - integrity sha512-uTd0OsHrpe3tH5gRPTxG8Voh99/WCU78vIm5NMRYPAqC8lR4vajt6KkCAknCHrx24vkPdd/05yfdGSB4EIY2mg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-syntax-numeric-separator@^7.10.4": +"@babel/plugin-syntax-numeric-separator@^7.10.1", "@babel/plugin-syntax-numeric-separator@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.8.0": +"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-catch-binding@^7.8.0": +"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-chaining@^7.8.0": +"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== @@ -1219,611 +595,282 @@ "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-top-level-await@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz#8b8733f8c57397b3eaa47ddba8841586dcaef362" - integrity sha512-hgA5RYkmZm8FTFT3yu2N9Bx7yVVOKYT6yEdXXo6j2JTm0wNxgqaGeQVaSHRjhfnQbX91DtjFB6McRFSlcJH3xQ== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-syntax-top-level-await@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" - integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-arrow-functions@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz#cb5ee3a36f0863c06ead0b409b4cc43a889b295b" - integrity sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz#f7187d9588a768dd080bf4c9ffe117ea62f7862a" + integrity sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" - integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A== +"@babel/plugin-transform-async-to-generator@7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz#8e112bf6771b82bf1e974e5e26806c5c99aa516f" + integrity sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-remap-async-to-generator" "^7.13.0" "@babel/plugin-transform-async-to-generator@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz#e5153eb1a3e028f79194ed8a7a4bf55f862b2062" - integrity sha512-XCgYjJ8TY2slj6SReBUyamJn3k2JLUIiiR5b6t1mNCMSvv7yx+jJpaewakikp0uWFQSF7ChPPoe3dHmXLpISkg== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz#72c789084d8f2094acb945633943ef8443d39e67" + integrity sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA== dependencies: - "@babel/helper-module-imports" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-remap-async-to-generator" "^7.10.1" - -"@babel/plugin-transform-async-to-generator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1" - integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A== - dependencies: - "@babel/helper-module-imports" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.12.1" + "@babel/helper-module-imports" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-remap-async-to-generator" "^7.14.5" "@babel/plugin-transform-block-scoped-functions@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz#146856e756d54b20fff14b819456b3e01820b85d" - integrity sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4" + integrity sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-block-scoped-functions@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9" - integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-block-scoping@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz#47092d89ca345811451cd0dc5d91605982705d5e" - integrity sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.5.tgz#8cc63e61e50f42e078e6f09be775a75f23ef9939" + integrity sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - lodash "^4.17.13" - -"@babel/plugin-transform-block-scoping@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz#f0ee727874b42a208a48a586b84c3d222c2bbef1" - integrity sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-classes@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.1.tgz#6e11dd6c4dfae70f540480a4702477ed766d733f" - integrity sha512-P9V0YIh+ln/B3RStPoXpEQ/CoAxQIhRSUn7aXqQ+FZJ2u8+oCtjIXR3+X0vsSD8zv+mb56K7wZW1XiDTDGiDRQ== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.5.tgz#0e98e82097b38550b03b483f9b51a78de0acb2cf" + integrity sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA== dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/helper-define-map" "^7.10.1" - "@babel/helper-function-name" "^7.10.1" - "@babel/helper-optimise-call-expression" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-replace-supers" "^7.10.1" - "@babel/helper-split-export-declaration" "^7.10.1" - globals "^11.1.0" - -"@babel/plugin-transform-classes@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" - integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-define-map" "^7.10.4" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.12.1" - "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/helper-annotate-as-pure" "^7.14.5" + "@babel/helper-function-name" "^7.14.5" + "@babel/helper-optimise-call-expression" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-replace-supers" "^7.14.5" + "@babel/helper-split-export-declaration" "^7.14.5" globals "^11.1.0" "@babel/plugin-transform-computed-properties@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.1.tgz#59aa399064429d64dce5cf76ef9b90b7245ebd07" - integrity sha512-mqSrGjp3IefMsXIenBfGcPXxJxweQe2hEIwMQvjtiDQ9b1IBvDUjkAtV/HMXX47/vXf14qDNedXsIiNd1FmkaQ== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f" + integrity sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-computed-properties@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852" - integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-destructuring@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz#abd58e51337815ca3a22a336b85f62b998e71907" - integrity sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA== + version "7.14.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576" + integrity sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-destructuring@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847" - integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw== +"@babel/plugin-transform-dotall-regex@^7.10.1", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz#2f6bf76e46bdf8043b4e7e16cf24532629ba0c7a" + integrity sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-dotall-regex@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz#920b9fec2d78bb57ebb64a644d5c2ba67cc104ee" - integrity sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-dotall-regex@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975" - integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" - integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-duplicate-keys@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz#c900a793beb096bc9d4d0a9d0cde19518ffc83b9" - integrity sha512-wIEpkX4QvX8Mo9W6XF3EdGttrIPZWozHfEaDTU0WJD/TDnXMvdDh30mzUl/9qWhnf7naicYartcEfUghTCSNpA== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz#365a4844881bdf1501e3a9f0270e7f0f91177954" + integrity sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-duplicate-keys@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228" - integrity sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-exponentiation-operator@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz#279c3116756a60dd6e6f5e488ba7957db9c59eb3" - integrity sha512-lr/przdAbpEA2BUzRvjXdEDLrArGRRPwbaF9rvayuHRvdQ7lUTTkZnhZrJ4LE2jvgMRFF4f0YuPQ20vhiPYxtA== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz#5154b8dd6a3dfe6d90923d61724bd3deeb90b493" + integrity sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-exponentiation-operator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0" - integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-for-of@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz#ff01119784eb0ee32258e8646157ba2501fcfda5" - integrity sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.14.5.tgz#dae384613de8f77c196a8869cbf602a44f7fc0eb" + integrity sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-for-of@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa" - integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-function-name@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz#4ed46fd6e1d8fde2a2ec7b03c66d853d2c92427d" - integrity sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2" + integrity sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ== dependencies: - "@babel/helper-function-name" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-function-name@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667" - integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-function-name" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-literals@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz#5794f8da82846b22e4e6631ea1658bce708eb46a" - integrity sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78" + integrity sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-literals@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57" - integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-member-expression-literals@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz#90347cba31bca6f394b3f7bd95d2bbfd9fce2f39" - integrity sha512-UmaWhDokOFT2GcgU6MkHC11i0NQcL63iqeufXWfRy6pUOGYeCGEKhvfFO6Vz70UfYJYHwveg62GS83Rvpxn+NA== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7" + integrity sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-member-expression-literals@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad" - integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-modules-amd@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz#65950e8e05797ebd2fe532b96e19fc5482a1d52a" - integrity sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz#4fd9ce7e3411cb8b83848480b7041d83004858f7" + integrity sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g== dependencies: - "@babel/helper-module-transforms" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-amd@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9" - integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ== - dependencies: - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-module-transforms" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-commonjs@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz#d5ff4b4413ed97ffded99961056e1fb980fb9301" - integrity sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz#7aaee0ea98283de94da98b28f8c35701429dad97" + integrity sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A== dependencies: - "@babel/helper-module-transforms" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-simple-access" "^7.10.1" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" - integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag== - dependencies: - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-simple-access" "^7.12.1" + "@babel/helper-module-transforms" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-simple-access" "^7.14.5" babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-systemjs@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.1.tgz#9962e4b0ac6aaf2e20431ada3d8ec72082cbffb6" - integrity sha512-ewNKcj1TQZDL3YnO85qh9zo1YF1CHgmSTlRQgHqe63oTrMI85cthKtZjAiZSsSNjPQ5NCaYo5QkbYqEw1ZBgZA== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.14.5.tgz#c75342ef8b30dcde4295d3401aae24e65638ed29" + integrity sha512-mNMQdvBEE5DcMQaL5LbzXFMANrQjd2W7FPzg34Y4yEz7dBgdaC+9B84dSO+/1Wba98zoDbInctCDo4JGxz1VYA== dependencies: - "@babel/helper-hoist-variables" "^7.10.1" - "@babel/helper-module-transforms" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086" - integrity sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q== - dependencies: - "@babel/helper-hoist-variables" "^7.10.4" - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-validator-identifier" "^7.10.4" + "@babel/helper-hoist-variables" "^7.14.5" + "@babel/helper-module-transforms" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-validator-identifier" "^7.14.5" babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-umd@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz#ea080911ffc6eb21840a5197a39ede4ee67b1595" - integrity sha512-EIuiRNMd6GB6ulcYlETnYYfgv4AxqrswghmBRQbWLHZxN4s7mupxzglnHqk9ZiUpDI4eRWewedJJNj67PWOXKA== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz#fb662dfee697cce274a7cda525190a79096aa6e0" + integrity sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA== dependencies: - "@babel/helper-module-transforms" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-modules-umd@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902" - integrity sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q== - dependencies: - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753" - integrity sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-module-transforms" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" - integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== + version "7.14.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.7.tgz#60c06892acf9df231e256c24464bfecb0908fd4e" + integrity sha512-DTNOTaS7TkW97xsDMrp7nycUVh6sn/eq22VaxWfEdzuEbRsiaOU0pqU7DlyUGHVsbQbSghvjKRpEl+nUCKGQSg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-create-regexp-features-plugin" "^7.14.5" "@babel/plugin-transform-new-target@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz#6ee41a5e648da7632e22b6fb54012e87f612f324" - integrity sha512-MBlzPc1nJvbmO9rPr1fQwXOM2iGut+JC92ku6PbiJMMK7SnQc1rytgpopveE3Evn47gzvGYeCdgfCDbZo0ecUw== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz#31bdae8b925dc84076ebfcd2a9940143aed7dbf8" + integrity sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-new-target@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0" - integrity sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-object-super@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz#2e3016b0adbf262983bf0d5121d676a5ed9c4fde" - integrity sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45" + integrity sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-replace-supers" "^7.10.1" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-replace-supers" "^7.14.5" -"@babel/plugin-transform-object-super@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e" - integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw== +"@babel/plugin-transform-parameters@^7.10.1", "@babel/plugin-transform-parameters@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz#49662e86a1f3ddccac6363a7dfb1ff0a158afeb3" + integrity sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.12.1" - -"@babel/plugin-transform-parameters@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz#b25938a3c5fae0354144a720b07b32766f683ddd" - integrity sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg== - dependencies: - "@babel/helper-get-function-arity" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-parameters@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" - integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-property-literals@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz#cffc7315219230ed81dc53e4625bf86815b6050d" - integrity sha512-Kr6+mgag8auNrgEpbfIWzdXYOvqDHZOF0+Bx2xh4H2EDNwcbRb9lY6nkZg8oSjsX+DH9Ebxm9hOqtKW+gRDeNA== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34" + integrity sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-property-literals@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd" - integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-regenerator@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.1.tgz#10e175cbe7bdb63cc9b39f9b3f823c5c7c5c5490" - integrity sha512-B3+Y2prScgJ2Bh/2l9LJxKbb8C8kRfsG4AdPT+n7ixBHIxJaIG8bi8tgjxUMege1+WqSJ+7gu1YeoMVO3gPWzw== - dependencies: - regenerator-transform "^0.14.2" - -"@babel/plugin-transform-regenerator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753" - integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz#9676fd5707ed28f522727c5b3c0aa8544440b04f" + integrity sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg== dependencies: regenerator-transform "^0.14.2" "@babel/plugin-transform-reserved-words@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz#0fc1027312b4d1c3276a57890c8ae3bcc0b64a86" - integrity sha512-qN1OMoE2nuqSPmpTqEM7OvJ1FkMEV+BjVeZZm9V9mq/x1JLKQ4pcv8riZJMNN3u2AUGl0ouOMjRr2siecvHqUQ== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz#c44589b661cfdbef8d4300dcc7469dffa92f8304" + integrity sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-reserved-words@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8" - integrity sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A== +"@babel/plugin-transform-runtime@7.14.3": + version "7.14.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.3.tgz#1fd885a2d0de1d3c223795a4e9be72c2db4515cf" + integrity sha512-t960xbi8wpTFE623ef7sd+UpEC5T6EEguQlTBJDEO05+XwnIWVfuqLw/vdLWY6IdFmtZE+65CZAfByT39zRpkg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-runtime@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz#04b792057eb460389ff6a4198e377614ea1e7ba5" - integrity sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg== - dependencies: - "@babel/helper-module-imports" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - resolve "^1.8.1" - semver "^5.5.1" + "@babel/helper-module-imports" "^7.13.12" + "@babel/helper-plugin-utils" "^7.13.0" + babel-plugin-polyfill-corejs2 "^0.2.0" + babel-plugin-polyfill-corejs3 "^0.2.0" + babel-plugin-polyfill-regenerator "^0.2.0" + semver "^6.3.0" "@babel/plugin-transform-shorthand-properties@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz#e8b54f238a1ccbae482c4dce946180ae7b3143f3" - integrity sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58" + integrity sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-shorthand-properties@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3" - integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-spread@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz#0c6d618a0c4461a274418460a28c9ccf5239a7c8" - integrity sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw== + version "7.14.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz#6bd40e57fe7de94aa904851963b5616652f73144" + integrity sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-spread@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e" - integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" "@babel/plugin-transform-sticky-regex@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz#90fc89b7526228bed9842cff3588270a7a393b00" - integrity sha512-j17ojftKjrL7ufX8ajKvwRilwqTok4q+BjkknmQw9VNHnItTyMP5anPFzxFJdCQs7clLcWpCV3ma+6qZWLnGMA== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz#5b617542675e8b7761294381f3c28c633f40aeb9" + integrity sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-regex" "^7.10.1" - -"@babel/plugin-transform-sticky-regex@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz#5c24cf50de396d30e99afc8d1c700e8bce0f5caf" - integrity sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-regex" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-template-literals@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.1.tgz#914c7b7f4752c570ea00553b4284dad8070e8628" - integrity sha512-t7B/3MQf5M1T9hPCRG28DNGZUuxAuDqLYS03rJrIk2prj/UV7Z6FOneijhQhnv/Xa039vidXeVbvjK2SK5f7Gg== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93" + integrity sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-template-literals@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843" - integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-typeof-symbol@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz#60c0239b69965d166b80a84de7315c1bc7e0bb0e" - integrity sha512-qX8KZcmbvA23zDi+lk9s6hC1FM7jgLHYIjuLgULgc8QtYnmB3tAVIYkNoKRQ75qWBeyzcoMoK8ZQmogGtC/w0g== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz#39af2739e989a2bd291bf6b53f16981423d457d4" + integrity sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-typeof-symbol@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz#9ca6be343d42512fbc2e68236a82ae64bc7af78a" - integrity sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-unicode-escapes@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz#add0f8483dab60570d9e03cecef6c023aa8c9940" - integrity sha512-zZ0Poh/yy1d4jeDWpx/mNwbKJVwUYJX73q+gyh4bwtG0/iUlzdEu0sLMda8yuDFS6LBQlT/ST1SJAR6zYwXWgw== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz#9d4bd2a681e3c5d7acf4f57fa9e51175d91d0c6b" + integrity sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - -"@babel/plugin-transform-unicode-escapes@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709" - integrity sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-transform-unicode-regex@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz#6b58f2aea7b68df37ac5025d9c88752443a6b43f" - integrity sha512-Y/2a2W299k0VIUdbqYm9X2qS6fE0CUBhhiPpimK6byy7OJ/kORLlIX+J6UrjgNu5awvs62k+6RSslxhcvVw2Tw== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz#4cd09b6c8425dd81255c7ceb3fb1836e7414382e" + integrity sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-unicode-regex@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb" - integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/preset-env@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.1.tgz#9c7e5ca82a19efc865384bb4989148d2ee5d7ac2" - integrity sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg== - dependencies: - "@babel/compat-data" "^7.12.1" - "@babel/helper-compilation-targets" "^7.12.1" - "@babel/helper-module-imports" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-validator-option" "^7.12.1" - "@babel/plugin-proposal-async-generator-functions" "^7.12.1" - "@babel/plugin-proposal-class-properties" "^7.12.1" - "@babel/plugin-proposal-dynamic-import" "^7.12.1" - "@babel/plugin-proposal-export-namespace-from" "^7.12.1" - "@babel/plugin-proposal-json-strings" "^7.12.1" - "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" - "@babel/plugin-proposal-numeric-separator" "^7.12.1" - "@babel/plugin-proposal-object-rest-spread" "^7.12.1" - "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" - "@babel/plugin-proposal-optional-chaining" "^7.12.1" - "@babel/plugin-proposal-private-methods" "^7.12.1" - "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-class-properties" "^7.12.1" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.12.1" - "@babel/plugin-transform-arrow-functions" "^7.12.1" - "@babel/plugin-transform-async-to-generator" "^7.12.1" - "@babel/plugin-transform-block-scoped-functions" "^7.12.1" - "@babel/plugin-transform-block-scoping" "^7.12.1" - "@babel/plugin-transform-classes" "^7.12.1" - "@babel/plugin-transform-computed-properties" "^7.12.1" - "@babel/plugin-transform-destructuring" "^7.12.1" - "@babel/plugin-transform-dotall-regex" "^7.12.1" - "@babel/plugin-transform-duplicate-keys" "^7.12.1" - "@babel/plugin-transform-exponentiation-operator" "^7.12.1" - "@babel/plugin-transform-for-of" "^7.12.1" - "@babel/plugin-transform-function-name" "^7.12.1" - "@babel/plugin-transform-literals" "^7.12.1" - "@babel/plugin-transform-member-expression-literals" "^7.12.1" - "@babel/plugin-transform-modules-amd" "^7.12.1" - "@babel/plugin-transform-modules-commonjs" "^7.12.1" - "@babel/plugin-transform-modules-systemjs" "^7.12.1" - "@babel/plugin-transform-modules-umd" "^7.12.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" - "@babel/plugin-transform-new-target" "^7.12.1" - "@babel/plugin-transform-object-super" "^7.12.1" - "@babel/plugin-transform-parameters" "^7.12.1" - "@babel/plugin-transform-property-literals" "^7.12.1" - "@babel/plugin-transform-regenerator" "^7.12.1" - "@babel/plugin-transform-reserved-words" "^7.12.1" - "@babel/plugin-transform-shorthand-properties" "^7.12.1" - "@babel/plugin-transform-spread" "^7.12.1" - "@babel/plugin-transform-sticky-regex" "^7.12.1" - "@babel/plugin-transform-template-literals" "^7.12.1" - "@babel/plugin-transform-typeof-symbol" "^7.12.1" - "@babel/plugin-transform-unicode-escapes" "^7.12.1" - "@babel/plugin-transform-unicode-regex" "^7.12.1" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.12.1" - core-js-compat "^3.6.2" - semver "^5.5.0" - -"@babel/preset-env@^7.10.2": +"@babel/preset-env@7.10.2", "@babel/preset-env@7.14.2": version "7.10.2" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.2.tgz#715930f2cf8573b0928005ee562bed52fb65fdfb" integrity sha512-MjqhX0RZaEgK/KueRzh+3yPSk30oqDKJ5HP5tqTSB1e2gzGS3PLy7K0BIpnp78+0anFuSwOeuCf1zZO7RzRvEA== @@ -1894,9 +941,9 @@ semver "^5.5.0" "@babel/preset-modules@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" - integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + version "0.1.4" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" + integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" @@ -1904,48 +951,21 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/runtime@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.1.tgz#b4116a6b6711d010b2dad3b7b6e43bf1b9954740" - integrity sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA== +"@babel/runtime@7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6" + integrity sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA== dependencies: regenerator-runtime "^0.13.4" "@babel/runtime@^7.8.4": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" - integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.8.tgz#7119a56f421018852694290b9f9148097391b446" + integrity sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@7.10.4", "@babel/template@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" - integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/template@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.1.tgz#e167154a94cb5f14b28dc58f5356d2162f539811" - integrity sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig== - dependencies: - "@babel/code-frame" "^7.10.1" - "@babel/parser" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/template@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" - integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/template@^7.8.3", "@babel/template@^7.8.6": +"@babel/template@7.12.13", "@babel/template@7.8.6", "@babel/template@^7.14.5", "@babel/template@^7.8.6": version "7.8.6" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== @@ -1954,180 +974,86 @@ "@babel/parser" "^7.8.6" "@babel/types" "^7.8.6" -"@babel/traverse@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.1.tgz#bbcef3031e4152a6c0b50147f4958df54ca0dd27" - integrity sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ== - dependencies: - "@babel/code-frame" "^7.10.1" - "@babel/generator" "^7.10.1" - "@babel/helper-function-name" "^7.10.1" - "@babel/helper-split-export-declaration" "^7.10.1" - "@babel/parser" "^7.10.1" - "@babel/types" "^7.10.1" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.13" - -"@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.1.tgz#941395e0c5cc86d5d3e75caa095d3924526f0c1e" - integrity sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.1" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.12.1" - "@babel/types" "^7.12.1" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/traverse@^7.13.0", "@babel/traverse@^7.8.3": - version "7.13.13" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.13.tgz#39aa9c21aab69f74d948a486dd28a2dbdbf5114d" - integrity sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.9" - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.13.13" - "@babel/types" "^7.13.13" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.0.tgz#d3882c2830e513f4fe4cec9fe76ea1cc78747892" - integrity sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w== +"@babel/traverse@7.8.6", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.5", "@babel/traverse@^7.14.8", "@babel/traverse@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.6.tgz#acfe0c64e1cd991b3e32eae813a6eb564954b5ff" + integrity sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" + "@babel/generator" "^7.8.6" "@babel/helper-function-name" "^7.8.3" "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.9.0" - "@babel/types" "^7.9.0" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5" - integrity sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng== +"@babel/types@7.8.6", "@babel/types@^7.0.0", "@babel/types@^7.10.2", "@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.3.0", "@babel/types@^7.4.4", "@babel/types@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.6.tgz#629ecc33c2557fcde7126e58053127afdb3e6d01" + integrity sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA== dependencies: - "@babel/helper-validator-identifier" "^7.9.0" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - -"@babel/types@^7.10.1", "@babel/types@^7.10.2": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.2.tgz#30283be31cad0dbf6fb00bd40641ca0ea675172d" - integrity sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng== - dependencies: - "@babel/helper-validator-identifier" "^7.10.1" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - -"@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.1.tgz#e109d9ab99a8de735be287ee3d6a9947a190c4ae" - integrity sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.13": - version "7.13.14" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.14.tgz#c35a4abb15c7cd45a2746d78ab328e362cbace0d" - integrity sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@babel/types@^7.4.4": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.6.tgz#2c5502b427251e9de1bd2dff95add646d95cc9f7" - integrity sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA== - dependencies: - "@babel/helper-validator-identifier" "^7.9.5" + esutils "^2.0.2" lodash "^4.17.13" to-fast-properties "^2.0.0" "@bazel/bazelisk@^1.7.5": - version "1.7.5" - resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.7.5.tgz#dd1a52e3d23464f72de55aa3dc4777847fa85373" - integrity sha512-JHwP9JhfZUSoj4sku471Bjw4uE773U2Agujnx0CdPkeRk25khy1l3VyjaPaHB+z1fmMnM6ED3M7tetQUsovUQg== + version "1.10.1" + resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.10.1.tgz#46236a43ad58e310c55247f866da0dc6083c3d8b" + integrity sha512-IHszNzBO2UrUy6YtsSAsZtnU6I6qpzXGkWdEvGoMxLgJnDsEnsIYniDCUjvjU1KAP+A03eepmCHlyFcRHMSxRA== -"@bazel/buildifier-darwin_x64@0.29.0": - version "0.29.0" - resolved "https://registry.yarnpkg.com/@bazel/buildifier-darwin_x64/-/buildifier-darwin_x64-0.29.0.tgz#13dfaf3ea4d89f9d4da00085e894e90b7d302342" - integrity sha512-jiQIZo5z1c8oFokD2jObrkB04Bs+7RaUJ6WlHV9BBeJiRMGfRVUBUrOF5eJPk6VB8qknIOfHvJD/Ym5XUc1Zlw== +"@bazel/buildifier@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@bazel/buildifier/-/buildifier-4.0.1.tgz#52cfbad5cbb86e9183a29dde2370cd465730ea0d" + integrity sha512-BTmtvJbeeEVrqRApI1gr5hvPgYcHLpdGJ5EXNXEWO692ztMPSj5fB/dH0xUlaW45jn6LimYx8ymqTMhj3538og== -"@bazel/buildifier-linux_x64@0.29.0": - version "0.29.0" - resolved "https://registry.yarnpkg.com/@bazel/buildifier-linux_x64/-/buildifier-linux_x64-0.29.0.tgz#0191fc46735a1c281878642673844f2b717cd8dc" - integrity sha512-sXXY0gP4oC1nC1G8Baqd7kyBL/y9/qOqftKSkDe2Y7gBoc9GslwyexwDxTSxK0Gun/4Vcvc2eRu7b83hMOxuag== - -"@bazel/buildifier-win32_x64@0.29.0": - version "0.29.0" - resolved "https://registry.yarnpkg.com/@bazel/buildifier-win32_x64/-/buildifier-win32_x64-0.29.0.tgz#a63438c7a7d2dc593e626ed6e163e9d8ea93917a" - integrity sha512-hnOQfPhQNAIqbrhsHT3MWAyAZSUhKwxzEuZJZoOsGrW8fPonhKysdvfZJqfqJ6vDVYaMJKvLnSO1c9QZRhU7kQ== - -"@bazel/buildifier@^0.29.0": - version "0.29.0" - resolved "https://registry.yarnpkg.com/@bazel/buildifier/-/buildifier-0.29.0.tgz#7984739270c8d1dd23650f87a810e1e6367188d9" - integrity sha512-skJ7vVff7x3tB8crBCtJji2wU09uH0uD2N30xfOpVUgsMJSXktAQMj8+RPdMBqJQ9XS5+O5lmRthR35Ua7xQXA== - optionalDependencies: - "@bazel/buildifier-darwin_x64" "0.29.0" - "@bazel/buildifier-linux_x64" "0.29.0" - "@bazel/buildifier-win32_x64" "0.29.0" - -"@bazel/concatjs@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@bazel/concatjs/-/concatjs-3.0.0.tgz#8a8b0c90ffcea4ed74a7c8db8fd37af861df394e" - integrity sha512-JQTKFxWY6KQwfwqQRJCJtg8sQBN0ydTvV/5umTIC9wUz+1RdVRzGVtypYuY+V8wbTWB7Pt3cr+6eq9tPjPSFWQ== +"@bazel/concatjs@4.0.0-beta.1": + version "4.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@bazel/concatjs/-/concatjs-4.0.0-beta.1.tgz#252e524983536e4bcbd6877c58d2ae38e7331e27" + integrity sha512-BD1+b/54apUJYuq/90Dh9hOs4WeNYKGDeiOuwvuEBm96TITwCo3yKgxpC8De6vGR9bfAi9l8RjpwHr3/sCClRw== dependencies: protobufjs "6.8.8" source-map-support "0.5.9" tsutils "2.27.2" -"@bazel/ibazel@^0.12.3": - version "0.12.4" - resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.12.4.tgz#ddda7c8ead6e29dc8d637af446086a750f395218" - integrity sha512-FzOy+esB/fXVDbAmL6Ce2yCEy+PESZih8GypKhi0B8XzoZHAAn3QNnQcMNwo9PrIfp3G1989nM/JQ1b8jwEinQ== +"@bazel/ibazel@^0.15.8": + version "0.15.10" + resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.15.10.tgz#cf0cff1aec6d8e7bb23e1fc618d09fbd39b7a13f" + integrity sha512-0v+OwCQ6fsGFa50r6MXWbUkSGuWOoZ22K4pMSdtWiL5LKFIE4kfmMmtQS+M7/ICNwk2EIYob+NRreyi/DGUz5A== -"@bazel/jasmine@3.2.1": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-3.2.1.tgz#3a29b4a04222de2add06a57d771b9c2ecc97af80" - integrity sha512-VPz4AuK0DTk8kyiUzWrh36zGyaX1Yvq1vTNvc0TM8cXsQPRNsQbFTmQsy/y4quLvdJfk8P1qP9N95gqqkz9M9Q== +"@bazel/jasmine@4.0.0-beta.1": + version "4.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-4.0.0-beta.1.tgz#a4a7eea7f83c83cbdbc6ecd1d0878d02e0f1fede" + integrity sha512-U/71ZtnDKEHmUFesPgDdFEP44/yuLe65gAuK5Zf9B6uMBNdGfDb2s5wtJZFH1iUx8E/CvFl6/p+a6Re5gfBpVQ== dependencies: c8 "~7.5.0" - jasmine-reporters "~2.3.2" + jasmine-reporters "~2.4.0" -"@bazel/protractor@3.2.1": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-3.2.1.tgz#872340d6287043496242998640dca3f568a9f31b" - integrity sha512-4jac5lCz2DeOWQ5P8KUZHUf7YEmJwBk7qllSDfHN3k0cUqWthZCvnclU8oRkLJ+LL9zdNkX1MpB4iLRDYUTl0Q== +"@bazel/protractor@4.0.0-beta.1": + version "4.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-4.0.0-beta.1.tgz#684bd9ee26265aabf6417b2c6301d12bb837742b" + integrity sha512-V6+DVYSSYrOwYvURTuFrSqTTtNH8TFVrHGBr5ntSOraOHVkPrzsgZ29sEPFTePYAYmo4TXFbxgMM7pHQtW3JOw== -"@bazel/rollup@3.2.1": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-3.2.1.tgz#c632d54298cf980fc0994a95349d938f8d0ee27c" - integrity sha512-+vPpi/pjCmQP3TlsDfmZZMDCBDCq2aHFXRxVx78t+1Vjz8ZT1JFx6J65V9YEPrCUowjBhkgrO5dk3IXeOvwXJA== +"@bazel/rollup@4.0.0-beta.1": + version "4.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-4.0.0-beta.1.tgz#df33f7ddb643f27e8ef6ac04a6c93f0d872884ce" + integrity sha512-a9+kVGCbFqLlxVoECFdlmnR82iY9mZ/4Jnjw3rX3h95uwsNn7apPbq/GrWxptMmvTrMr49O+rmn6qUQQEHUhKQ== -"@bazel/terser@3.2.1": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-3.2.1.tgz#0480cc6b00a7bf1d8c8763aa1eff267352768bf1" - integrity sha512-aV20kqoYnpEEfx2l4ipFOSb5JgRmPVAvicOQBQ6eMqD7SGRrDDNVtjhemo11/RCJiZuUYNxoCo+itLBw4kNaPg== +"@bazel/runfiles@4.0.0-beta.1": + version "4.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@bazel/runfiles/-/runfiles-4.0.0-beta.1.tgz#4893c58166e5bb6ebd7cb80dfb99e99923337903" + integrity sha512-zY1i3xpes/1vF6W3UGGVSe1n80mWH/QEXxszzIyrloxLHrDxs8/h8FtUD5aDcLkumwdPkUiM7TL1Ib4vMV+LGg== -"@bazel/typescript@3.2.1": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-3.2.1.tgz#564849e2f05387612d13ef64304b7a7582bd107a" - integrity sha512-2KgMqKcbqL89WWWVC2iwTCS0tMWmQ4LpQgFhaF3Lp56Edl0nv/fy0TOu+waw2Qs2rTBbTVKhk5/9DRiqJmOd2g== +"@bazel/terser@4.0.0-beta.1": + version "4.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-4.0.0-beta.1.tgz#3b9d5dc69b87f781b94bf76dfa59b61a8c5a41e4" + integrity sha512-Kgcxqt+oxuNli0IvGF9/edkOTiM0hY+h6Z07UoYmnPsbrGcdVaUXjO8hplmT2G/acMZIeH6P1SJg7eusVnKcUg== + +"@bazel/typescript@4.0.0-beta.1": + version "4.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-4.0.0-beta.1.tgz#2524d3d0e4cba56ccc5b8a6ab0a1ee8af5a86b70" + integrity sha512-pWQ8o3n8a7oVmOJ8nsj2/zeT99VwqI0S5oNmVxmoDydm9B9HE93QhkUelZrGooQC84AUBv0D4J0vZ5oONlAbjA== dependencies: protobufjs "6.8.8" semver "5.6.0" @@ -2139,76 +1065,96 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@google-cloud/paginator@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-2.0.3.tgz#c7987ad05d1c3ebcef554381be80e9e8da4e4882" - integrity sha512-kp/pkb2p/p0d8/SKUu4mOq8+HGwF8NPzHWkj+VKrIPQPyMRw8deZtrO/OcSiy9C/7bpfU5Txah5ltUNfPkgEXg== +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + +"@dabh/diagnostics@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.2.tgz#290d08f7b381b8f94607dc8f471a12c675f9db31" + integrity sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q== + dependencies: + colorspace "1.1.x" + enabled "2.0.x" + kuler "^2.0.0" + +"@discoveryjs/json-ext@0.5.2": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752" + integrity sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg== + +"@google-cloud/paginator@^3.0.0": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-3.0.5.tgz#9d6b96c421a89bd560c1bc2c197c7611ef21db6c" + integrity sha512-N4Uk4BT1YuskfRhKXBs0n9Lg2YTROZc6IMpkO/8DIHODtm5s3xY8K5vVBo23v/2XulY3azwITQlYWgT4GdLsUw== dependencies: arrify "^2.0.0" extend "^3.0.2" -"@google-cloud/precise-date@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@google-cloud/precise-date/-/precise-date-1.0.3.tgz#39c600ed52213f4158692a72c90d13b2162a93d2" - integrity sha512-wWnDGh9y3cJHLuVEY8t6un78vizzMWsS7oIWKeFtPj+Ndy+dXvHW0HTx29ZUhen+tswSlQYlwFubvuRP5kKdzQ== +"@google-cloud/precise-date@^2.0.0": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@google-cloud/precise-date/-/precise-date-2.0.3.tgz#14f6f28ce35dabf3882e7aeab1c9d51bd473faed" + integrity sha512-+SDJ3ZvGkF7hzo6BGa8ZqeK3F6Z4+S+KviC9oOK+XCs3tfMyJCh/4j93XIWINgMMDIh9BgEvlw4306VxlXIlYA== -"@google-cloud/projectify@^1.0.0": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-1.0.4.tgz#28daabebba6579ed998edcadf1a8f3be17f3b5f0" - integrity sha512-ZdzQUN02eRsmTKfBj9FDL0KNDIFNjBn/d6tHQmA/+FImH5DO6ZV8E7FzxMgAUiVAUq41RFAkb25p1oHOZ8psfg== +"@google-cloud/projectify@^2.0.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-2.1.0.tgz#3df145c932e244cdeb87a30d93adce615bc69e6d" + integrity sha512-qbpidP/fOvQNz3nyabaVnZqcED1NNzf7qfeOlgtAZd9knTwY+KtsGRkYpiQzcATABy4gnGP2lousM3S0nuWVzA== -"@google-cloud/promisify@^1.0.0": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-1.0.4.tgz#ce86ffa94f9cfafa2e68f7b3e4a7fad194189723" - integrity sha512-VccZDcOql77obTnFh0TbNED/6ZbbmHDf8UMNnzO1d5g9V0Htfm4k5cllY8P1tJsRKC3zWYGRLaViiupcgVjBoQ== +"@google-cloud/promisify@^2.0.0": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-2.0.3.tgz#f934b5cdc939e3c7039ff62b9caaf59a9d89e3a8" + integrity sha512-d4VSA86eL/AFTe5xtyZX+ePUjE8dIFu2T8zmdeNBSa5/kNgXPCx/o/wbFNHAGLJdGnk1vddRuMESD9HbOC8irw== -"@google-cloud/pubsub@^1.1.5": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@google-cloud/pubsub/-/pubsub-1.7.0.tgz#7506a9aeb0fd2f1f530e9750fd548fcca35b906b" - integrity sha512-CJgyfZ+ZFIwD90LRGh42AU65rZO/8tBg6HVapD9DSFSJxP8O6k0eQMEpLD6S5RAkoo8hWiBRyD0K66PqwP5UpA== +"@google-cloud/pubsub@^2.7.0": + version "2.16.1" + resolved "https://registry.yarnpkg.com/@google-cloud/pubsub/-/pubsub-2.16.1.tgz#e003d3a041c5f746f6565f7de2dbc9e26545c360" + integrity sha512-+uO7r9uRfD/x0BzBI67clbIu0VIdqYLZ5NINuGEsMiAXIGWQWmceuLMixMEb/JOxeaqKygH1mL2rshkDisUmGg== dependencies: - "@google-cloud/paginator" "^2.0.0" - "@google-cloud/precise-date" "^1.0.0" - "@google-cloud/projectify" "^1.0.0" - "@google-cloud/promisify" "^1.0.0" + "@google-cloud/paginator" "^3.0.0" + "@google-cloud/precise-date" "^2.0.0" + "@google-cloud/projectify" "^2.0.0" + "@google-cloud/promisify" "^2.0.0" + "@opentelemetry/api" "^1.0.0" + "@opentelemetry/semantic-conventions" "^0.22.0" "@types/duplexify" "^3.6.0" "@types/long" "^4.0.0" arrify "^2.0.0" - async-each "^1.0.1" extend "^3.0.2" - google-auth-library "^5.5.0" - google-gax "^1.14.2" + google-auth-library "^7.0.0" + google-gax "^2.17.1" is-stream-ended "^0.1.4" lodash.snakecase "^4.1.1" p-defer "^3.0.0" - protobufjs "^6.8.1" -"@grpc/grpc-js@^0.6.12": - version "0.6.18" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-0.6.18.tgz#ba3b3dfef869533161d192a385412a4abd0db127" - integrity sha512-uAzv/tM8qpbf1vpx1xPMfcUMzbfdqJtdCYAqY/LsLeQQlnTb4vApylojr+wlCyr7bZeg3AFfHvtihnNOQQt/nA== +"@grpc/grpc-js@~1.3.0": + version "1.3.6" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.3.6.tgz#6e2d17610c2c8df0f6ceab0e1968f563df74b173" + integrity sha512-v7+LQFbqZKmd/Tvf5/j1Xlbq6jXL/4d+gUtm2TNX4QiEC3ELWADmGr2dGlUyLl6aKTuYfsN72vAsO5zmavYkEg== dependencies: - semver "^6.2.0" + "@types/node" ">=12.12.47" -"@grpc/grpc-js@^0.7.4": - version "0.7.5" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-0.7.5.tgz#17bc4565fa753e737b3e172aa93b93b865c69c96" - integrity sha512-hhWT+vHPtG4tn0zZJw4ndfv730pBPb+lhJfvQhc7ANBvqixtlNOaXm9VNI98wYF/em0PnrskXnOr8rHh96zjlg== - dependencies: - semver "^6.2.0" - -"@grpc/proto-loader@^0.5.1": - version "0.5.4" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.5.4.tgz#038a3820540f621eeb1b05d81fbedfb045e14de0" - integrity sha512-HTM4QpI9B2XFkPz7pjwMyMgZchJ93TVkL3kWPW8GDMDKYxsMnmf4w2TNMJK7+KNiYHS5cJrCEAFlF+AwtXWVPA== +"@grpc/proto-loader@^0.6.1": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.4.tgz#5438c0d771e92274e77e631babdc14456441cbdc" + integrity sha512-7xvDvW/vJEcmLUltCUGOgWRPM8Oofv0eCFSVMuKqaqWJaXSzmB+m9hiyqe34QofAl4WAzIKUZZlinIF9FOHyTQ== dependencies: + "@types/long" "^4.0.1" lodash.camelcase "^4.3.0" - protobufjs "^6.8.6" + long "^4.0.0" + protobufjs "^6.10.0" + yargs "^16.1.1" + +"@hutson/parse-repository-url@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" + integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== "@istanbuljs/schema@^0.1.2": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" - integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== "@jsdevtools/coverage-istanbul-loader@3.0.5": version "3.0.5" @@ -2221,183 +1167,261 @@ merge-source-map "^1.1.0" schema-utils "^2.7.0" -"@microsoft/api-extractor-model@7.7.10": - version "7.7.10" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.7.10.tgz#52c661825f05a311b9d2dfdecd8d523c0c751b92" - integrity sha512-gMFDXwUgoQYz9TgatyNPALDdZN4xBC3Un3fGwlzME+vM13PoJ26pGuqI7kv/OlK9+q2sgrEdxWns8D3UnLf2TA== - dependencies: - "@microsoft/tsdoc" "0.12.19" - "@rushstack/node-core-library" "3.19.6" +"@jsdevtools/ono@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" + integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== -"@microsoft/api-extractor@7.7.11": - version "7.7.11" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.7.11.tgz#444f1bb23fda5ac7a7ecb46bfb4a8d8d643cbaa4" - integrity sha512-kd2kakdDoRgI54J5H11a76hyYZBMhtp4piwWAy4bYTwlQT0v/tp+G/UMMgjUL4vKf0kTNhitEUX/0LfQb1AHzQ== +"@microsoft/api-extractor-model@7.13.4": + version "7.13.4" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.13.4.tgz#bff4a52a35da5d9896650041d4f7a769c970da60" + integrity sha512-NYaR3hJinh089/Gkee8fvmEFf9zKkoUvNxgkqUlKBCDXH2+Ou4tNDuL8G6zjhKBPicHkp2VcL8l7q9H6txUkjQ== dependencies: - "@microsoft/api-extractor-model" "7.7.10" - "@microsoft/tsdoc" "0.12.19" - "@rushstack/node-core-library" "3.19.6" - "@rushstack/ts-command-line" "4.3.13" + "@microsoft/tsdoc" "0.13.2" + "@microsoft/tsdoc-config" "~0.15.2" + "@rushstack/node-core-library" "3.39.1" + +"@microsoft/api-extractor@7.18.4": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.18.4.tgz#2d7641b36d323b4ac710d838a972be7e4f14d32b" + integrity sha512-Wx45VuIAu09Pk9Qwzt0I57OX31BaWO2r6+mfSXqYFsJjYTqwUkdFh92G1GKYgvuR9oF/ai7w10wrFpx5WZYbGg== + dependencies: + "@microsoft/api-extractor-model" "7.13.4" + "@microsoft/tsdoc" "0.13.2" + "@microsoft/tsdoc-config" "~0.15.2" + "@rushstack/node-core-library" "3.39.1" + "@rushstack/rig-package" "0.2.13" + "@rushstack/ts-command-line" "4.8.1" colors "~1.2.1" lodash "~4.17.15" - resolve "1.8.1" + resolve "~1.17.0" + semver "~7.3.0" source-map "~0.6.1" - typescript "~3.7.2" + typescript "~4.3.5" -"@microsoft/tsdoc@0.12.19": - version "0.12.19" - resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.12.19.tgz#2173ccb92469aaf62031fa9499d21b16d07f9b57" - integrity sha512-IpgPxHrNxZiMNUSXqR1l/gePKPkfAmIKoDRP9hp7OwjU29ZR8WCJsOJ8iBKgw0Qk+pFwR+8Y1cy8ImLY6e9m4A== - -"@ngtools/webpack@11.0.0-rc.1": - version "11.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-11.0.0-rc.1.tgz#61015463ca0d1cb93c8a50f3835fa243a753168b" - integrity sha512-asWV2fwYPmCWq1V5VnCIGD3t2f/UHFwAcauN3b5/iZxmQodXZJxhjKJAaUeCNRawKhxIiEIvfTclShJ6ii7X1w== +"@microsoft/tsdoc-config@~0.15.2": + version "0.15.2" + resolved "https://registry.yarnpkg.com/@microsoft/tsdoc-config/-/tsdoc-config-0.15.2.tgz#eb353c93f3b62ab74bdc9ab6f4a82bcf80140f14" + integrity sha512-mK19b2wJHSdNf8znXSMYVShAHktVr/ib0Ck2FA3lsVBSEhSI/TfXT7DJQkAYgcztTuwazGcg58ZjYdk0hTCVrA== dependencies: - "@angular-devkit/core" "11.0.0-rc.1" - enhanced-resolve "5.3.1" - webpack-sources "2.0.1" + "@microsoft/tsdoc" "0.13.2" + ajv "~6.12.6" + jju "~1.4.0" + resolve "~1.19.0" -"@nodelib/fs.scandir@2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" - integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== +"@microsoft/tsdoc@0.13.2": + version "0.13.2" + resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.13.2.tgz#3b0efb6d3903bd49edb073696f60e90df08efb26" + integrity sha512-WrHvO8PDL8wd8T2+zBGKrMwVL5IyzR3ryWUsl0PXgEV0QHup4mTLi0QcATefGI6Gx9Anu7vthPyyyLpY0EpiQg== + +"@ngtools/webpack@12.0.4": + version "12.0.4" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-12.0.4.tgz#4c2cc2f19040e902582cadf092ce0743393f83a8" + integrity sha512-djmXTB7qo35Mw6olJEfVTOFRms/E4rCpcLV0GfQJqhWfUB9K/n+QbxW5cp09J48DpqlMP00C942+POBcUqbg3g== dependencies: - "@nodelib/fs.stat" "2.0.3" + enhanced-resolve "5.7.0" + +"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.2": + version "2.1.8-no-fsevents.2" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.2.tgz#e324c0a247a5567192dd7180647709d7e2faf94b" + integrity sha512-Fb8WxUFOBQVl+CX4MWet5o7eCc6Pj04rXIwVKZ6h1NnqTo45eOQW6aWyhG25NIODvWFwTDMwBsYxrQ3imxpetg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^5.1.2" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" - integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" - integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: - "@nodelib/fs.scandir" "2.1.3" + "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@npmcli/git@^2.0.1": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6" + integrity sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw== + dependencies: + "@npmcli/promise-spawn" "^1.3.2" + lru-cache "^6.0.0" + mkdirp "^1.0.4" + npm-pick-manifest "^6.1.1" + promise-inflight "^1.0.1" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^2.0.2" + +"@npmcli/installed-package-contents@^1.0.6": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" + integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== + dependencies: + npm-bundled "^1.1.1" + npm-normalize-package-bin "^1.0.1" + "@npmcli/move-file@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" - integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw== + version "1.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== dependencies: mkdirp "^1.0.4" + rimraf "^3.0.2" -"@octokit/endpoint@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.0.tgz#4c7acd79ab72df78732a7d63b09be53ec5a2230b" - integrity sha512-3nx+MEYoZeD0uJ+7F/gvELLvQJzLXhep2Az0bBSXagbApDvDW0LWwpnAIY/hb0Jwe17A0fJdz0O12dPh05cj7A== +"@npmcli/node-gyp@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.2.tgz#3cdc1f30e9736dbc417373ed803b42b1a0a29ede" + integrity sha512-yrJUe6reVMpktcvagumoqD9r08fH1iRo01gn1u0zoCApa9lnZGEigVKUd2hzsCId4gdtkZZIVscLhNxMECKgRg== + +"@npmcli/promise-spawn@^1.2.0", "@npmcli/promise-spawn@^1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz#42d4e56a8e9274fba180dabc0aea6e38f29274f5" + integrity sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg== dependencies: - "@octokit/types" "^2.0.0" - is-plain-object "^3.0.0" - universal-user-agent "^5.0.0" + infer-owner "^1.0.4" + +"@npmcli/run-script@^1.8.2": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.8.5.tgz#f250a0c5e1a08a792d775a315d0ff42fc3a51e1d" + integrity sha512-NQspusBCpTjNwNRFMtz2C5MxoxyzlbuJ4YEhxAKrIonTiirKDtatsZictx9RgamQIx6+QuHMNmPl0wQdoESs9A== + dependencies: + "@npmcli/node-gyp" "^1.0.2" + "@npmcli/promise-spawn" "^1.3.2" + infer-owner "^1.0.4" + node-gyp "^7.1.0" + read-package-json-fast "^2.0.1" + +"@octokit/auth-token@^2.4.4": + version "2.4.5" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.5.tgz#568ccfb8cb46f36441fac094ce34f7a875b197f3" + integrity sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA== + dependencies: + "@octokit/types" "^6.0.3" + +"@octokit/core@^3.5.0", "@octokit/core@^3.5.1": + version "3.5.1" + resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.5.1.tgz#8601ceeb1ec0e1b1b8217b960a413ed8e947809b" + integrity sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw== + dependencies: + "@octokit/auth-token" "^2.4.4" + "@octokit/graphql" "^4.5.8" + "@octokit/request" "^5.6.0" + "@octokit/request-error" "^2.0.5" + "@octokit/types" "^6.0.3" + before-after-hook "^2.2.0" + universal-user-agent "^6.0.0" "@octokit/endpoint@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.1.tgz#16d5c0e7a83e3a644d1ddbe8cded6c3d038d31d7" - integrity sha512-pOPHaSz57SFT/m3R5P8MUu4wLPszokn5pXcB/pzavLTQf2jbU+6iayTvzaY6/BiotuRS0qyEUkx3QglT4U958A== + version "6.0.12" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" + integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== dependencies: - "@octokit/types" "^2.11.1" - is-plain-object "^3.0.0" - universal-user-agent "^5.0.0" + "@octokit/types" "^6.0.3" + is-plain-object "^5.0.0" + universal-user-agent "^6.0.0" -"@octokit/graphql@^4.3.1": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.3.1.tgz#9ee840e04ed2906c7d6763807632de84cdecf418" - integrity sha512-hCdTjfvrK+ilU2keAdqNBWOk+gm1kai1ZcdjRfB30oA3/T6n53UVJb7w0L5cR3/rhU91xT3HSqCd+qbvH06yxA== +"@octokit/graphql@^4.5.8", "@octokit/graphql@^4.6.1": + version "4.6.4" + resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.6.4.tgz#0c3f5bed440822182e972317122acb65d311a5ed" + integrity sha512-SWTdXsVheRmlotWNjKzPOb6Js6tjSqA2a8z9+glDJng0Aqjzti8MEWOtuT8ZSu6wHnci7LZNuarE87+WJBG4vg== dependencies: - "@octokit/request" "^5.3.0" - "@octokit/types" "^2.0.0" - universal-user-agent "^4.0.0" + "@octokit/request" "^5.6.0" + "@octokit/types" "^6.0.3" + universal-user-agent "^6.0.0" -"@octokit/request-error@^1.0.2": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.2.1.tgz#ede0714c773f32347576c25649dc013ae6b31801" - integrity sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA== +"@octokit/openapi-types@^9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-9.2.0.tgz#46bbfe6a85bfd2987e69216955fcd04df7d025bb" + integrity sha512-c4A1Xm0At+ypvBfEETREu519wLncJYQXvY+dBGg/V5YA51eg5EwdDsPPfcOMG0cuXscqRvsIgIySTmTJUdcTNA== + +"@octokit/plugin-paginate-rest@^2.13.5", "@octokit/plugin-paginate-rest@^2.6.2": + version "2.14.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.14.0.tgz#f469cb4a908792fb44679c5973d8bba820c88b0f" + integrity sha512-S2uEu2uHeI7Vf+Lvj8tv3O5/5TCAa8GHS0dUQN7gdM7vKA6ZHAbR6HkAVm5yMb1mbedLEbxOuQ+Fa0SQ7tCDLA== dependencies: - "@octokit/types" "^2.0.0" + "@octokit/types" "^6.18.0" + +"@octokit/plugin-request-log@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" + integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== + +"@octokit/plugin-rest-endpoint-methods@5.5.2", "@octokit/plugin-rest-endpoint-methods@^5.3.3": + version "5.5.2" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.5.2.tgz#c8bdb3065a9725e30802295f10a31b3ff434830c" + integrity sha512-1ArooY7AYQdUd2zyqWLFHQ6gver9PvZSiuM+EPAsDplv1Y6u8zHl6yZ7yGIgaf7xvWupwUkJS2WttGYyb1P0DQ== + dependencies: + "@octokit/types" "^6.22.0" + deprecation "^2.3.1" + +"@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" + integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== + dependencies: + "@octokit/types" "^6.0.3" deprecation "^2.0.0" once "^1.4.0" -"@octokit/request-error@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.0.tgz#94ca7293373654400fbb2995f377f9473e00834b" - integrity sha512-rtYicB4Absc60rUv74Rjpzek84UbVHGHJRu4fNVlZ1mCcyUPPuzFfG9Rn6sjHrd95DEsmjSt1Axlc699ZlbDkw== - dependencies: - "@octokit/types" "^2.0.0" - deprecation "^2.0.0" - once "^1.4.0" - -"@octokit/request@^5.0.0": - version "5.4.2" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.2.tgz#74f8e5bbd39dc738a1b127629791f8ad1b3193ee" - integrity sha512-zKdnGuQ2TQ2vFk9VU8awFT4+EYf92Z/v3OlzRaSh4RIP0H6cvW1BFPXq4XYvNez+TPQjqN+0uSkCYnMFFhcFrw== +"@octokit/request@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.0.tgz#6084861b6e4fa21dc40c8e2a739ec5eff597e672" + integrity sha512-4cPp/N+NqmaGQwbh3vUsYqokQIzt7VjsgTYVXiwpUP2pxd5YiZB2XuTedbb0SPtv9XS7nzAKjAuQxmY8/aZkiA== dependencies: "@octokit/endpoint" "^6.0.1" - "@octokit/request-error" "^2.0.0" - "@octokit/types" "^2.11.1" - deprecation "^2.0.0" - is-plain-object "^3.0.0" - node-fetch "^2.3.0" - once "^1.4.0" - universal-user-agent "^5.0.0" + "@octokit/request-error" "^2.1.0" + "@octokit/types" "^6.16.1" + is-plain-object "^5.0.0" + node-fetch "^2.6.1" + universal-user-agent "^6.0.0" -"@octokit/request@^5.3.0": - version "5.3.4" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.3.4.tgz#fbc950bf785d59da3b0399fc6d042c8cf52e2905" - integrity sha512-qyj8G8BxQyXjt9Xu6NvfvOr1E0l35lsXtwm3SopsYg/JWXjlsnwqLc8rsD2OLguEL/JjLfBvrXr4az7z8Lch2A== +"@octokit/rest@^18.6.2": + version "18.7.2" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.7.2.tgz#8239b5acd40fccb3f5d074e7a4386980f3770821" + integrity sha512-TAedgLqNRS+rdGqS9v00sqBeS6IgyLSoqqCDu6pmoadAB7xSjFHShxzaXUAbxxJjyHtb7mencRGzgH4W/V6Myg== dependencies: - "@octokit/endpoint" "^6.0.0" - "@octokit/request-error" "^2.0.0" - "@octokit/types" "^2.0.0" - deprecation "^2.0.0" - is-plain-object "^3.0.0" - node-fetch "^2.3.0" - once "^1.4.0" - universal-user-agent "^5.0.0" + "@octokit/core" "^3.5.0" + "@octokit/plugin-paginate-rest" "^2.6.2" + "@octokit/plugin-request-log" "^1.0.2" + "@octokit/plugin-rest-endpoint-methods" "5.5.2" -"@octokit/rest@16.28.7": - version "16.28.7" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.28.7.tgz#a2c2db5b318da84144beba82d19c1a9dbdb1a1fa" - integrity sha512-cznFSLEhh22XD3XeqJw51OLSfyL2fcFKUO+v2Ep9MTAFfFLS1cK1Zwd1yEgQJmJoDnj4/vv3+fGGZweG+xsbIA== +"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.16.6", "@octokit/types@^6.18.0", "@octokit/types@^6.22.0": + version "6.22.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.22.0.tgz#389bade20955c919241b6ffb9dd33f6e0cf1cc6c" + integrity sha512-Y8GR0BJHQDpO09qw/ZQpN+DXrFzCWaE0pvK4frDm3zJ+h99AktsFfBoDazbCtHxiL8d0jD8xRH4BeynlKLeChg== dependencies: - "@octokit/request" "^5.0.0" - "@octokit/request-error" "^1.0.2" - atob-lite "^2.0.0" - before-after-hook "^2.0.0" - btoa-lite "^1.0.0" - deprecation "^2.0.0" - lodash.get "^4.4.2" - lodash.set "^4.3.2" - lodash.uniq "^4.5.0" - octokit-pagination-methods "^1.1.0" - once "^1.4.0" - universal-user-agent "^3.0.0" - url-template "^2.0.8" + "@octokit/openapi-types" "^9.2.0" -"@octokit/types@^2.0.0": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.5.1.tgz#22563b3bb50034bea3176eac1860340c5e812e2a" - integrity sha512-q4Wr7RexkPRrkQpXzUYF5Fj/14Mr65RyOHj6B9d/sQACpqGcStkHZj4qMEtlMY5SnD/69jlL9ItGPbDM0dR/dA== - dependencies: - "@types/node" ">= 8" +"@opentelemetry/api@^1.0.0": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.0.2.tgz#921e1f2b2484b762d77225a8a25074482d93fccf" + integrity sha512-DCF9oC89ao8/EJUqrp/beBlDR8Bp2R43jqtzayqCoomIvkwTuPfLcHdVhIGRR69GFlkykFjcDW+V92t0AS7Tww== -"@octokit/types@^2.11.1": - version "2.15.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.15.0.tgz#b2070520207727bc6ab3a9caa1e4f60b0434bfa8" - integrity sha512-0mnpenB8rLhBVu8VUklp38gWi+EatjvcEcLWcdProMKauSaQWWepOAybZ714sOGsEyhXPlIcHICggn8HUsCXVw== - dependencies: - "@types/node" ">= 8" - -"@octokit/types@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-5.0.1.tgz#5459e9a5e9df8565dcc62c17a34491904d71971e" - integrity sha512-GorvORVwp244fGKEt3cgt/P+M0MGy4xEDbckw+K5ojEezxyMDgCaYPKVct+/eWQfZXOT7uq0xRpmrl/+hliabA== - dependencies: - "@types/node" ">= 8" +"@opentelemetry/semantic-conventions@^0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-0.22.0.tgz#e91751bd2eb4f49344172bac62ba87c9390f93e9" + integrity sha512-t4fKikazahwNKmwD+CE/icHyuZldWvNMupJhjxdk9T/KxHFx3zCGjHT3MKavwYP6abzgAAm5WwzD1oHlmj7dyg== "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" @@ -2452,65 +1476,120 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= -"@rushstack/node-core-library@3.19.6": - version "3.19.6" - resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.19.6.tgz#da67dc9e93fb36b807007892ca6b699fc0c81e6d" - integrity sha512-1+FoymIdr9W9k0D8fdZBBPwi5YcMwh/RyESuL5bY29rLICFxSLOPK+ImVZ1OcWj9GEMsvDx5pNpJ311mHQk+MA== +"@rollup/pluginutils@^3.0.9": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@rushstack/node-core-library@3.39.1": + version "3.39.1" + resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.39.1.tgz#dd1dc270e3035ac4de270f0ca80c25724ce19cc7" + integrity sha512-HHgMEHZTXQ3NjpQzWd5+fSt2Eod9yFwj6qBPbaeaNtDNkOL8wbLoxVimQNtcH0Qhn4wxF5u2NTDNFsxf2yd1jw== dependencies: "@types/node" "10.17.13" colors "~1.2.1" fs-extra "~7.0.1" + import-lazy "~4.0.0" jju "~1.4.0" - semver "~5.3.0" + resolve "~1.17.0" + semver "~7.3.0" timsort "~0.3.0" z-schema "~3.18.3" -"@rushstack/ts-command-line@4.3.13": - version "4.3.13" - resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.3.13.tgz#f84cdfad2e50663419bcf4064acf6b9dbfc6e674" - integrity sha512-BUBbjYu67NJGQkpHu8aYm7kDoMFizL1qx78+72XE3mX/vDdXYJzw/FWS7TPcMJmY4kNlYs979v2B0Q0qa2wRiw== +"@rushstack/rig-package@0.2.13": + version "0.2.13" + resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.2.13.tgz#418f0aeb4c9b33bd8bd2547759fc0ae91fd970c7" + integrity sha512-qQMAFKvfb2ooaWU9DrGIK9d8QfyHy/HiuITJbWenlKgzcDXQvQgEduk57YF4Y7LLasDJ5ZzLaaXwlfX8qCRe5Q== dependencies: - "@types/argparse" "1.0.33" + resolve "~1.17.0" + strip-json-comments "~3.1.1" + +"@rushstack/ts-command-line@4.8.1": + version "4.8.1" + resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.8.1.tgz#c233a0226112338e58e7e4fd219247b4e7cec883" + integrity sha512-rmxvYdCNRbyRs+DYAPye3g6lkCkWHleqO40K8UPvUAzFqEuj6+YCVssBiOmrUDCoM5gaegSNT0wFDYhz24DWtw== + dependencies: + "@types/argparse" "1.0.38" argparse "~1.0.9" colors "~1.2.1" + string-argv "~0.3.1" -"@schematics/angular@11.0.0-rc.1": - version "11.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-11.0.0-rc.1.tgz#53f58643a80f0f13f3f12237600818fea3faf552" - integrity sha512-gZgUhw7+9aCM7O8+hhavf2Dl5dDXbljVRuSFeek1AWb1joo55w4WtFqI7y6Qrre82ri803V40kP6tI2z2lD+Nw== +"@schematics/angular@12.0.4": + version "12.0.4" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-12.0.4.tgz#a4d140a500e62cd24f46e5273376e4e830f4b866" + integrity sha512-rC4/+c6p3S/ezDeJzAstrwzdpYgcYzHumtzVSDDM+3Kx0QBUTq/Nj6sk1e2C/fgtV5Jb2INEkTvrih+HP7I0wA== dependencies: - "@angular-devkit/core" "11.0.0-rc.1" - "@angular-devkit/schematics" "11.0.0-rc.1" - jsonc-parser "2.3.1" + "@angular-devkit/core" "12.0.4" + "@angular-devkit/schematics" "12.0.4" + jsonc-parser "3.0.0" -"@schematics/update@0.1100.0-rc.1": - version "0.1100.0-rc.1" - resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.1100.0-rc.1.tgz#51b9cf48891f7165992074477466d15f2f41a4a9" - integrity sha512-ZJseWJxTelTwQ6/2CMaNW9gQffmdo2mJiDyBFrvjwyqcMNVIH2tpIlDLyvhQ3duBWheYDHYAWLZOh5wiJPks9A== +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== dependencies: - "@angular-devkit/core" "11.0.0-rc.1" - "@angular-devkit/schematics" "11.0.0-rc.1" - "@yarnpkg/lockfile" "1.1.0" - ini "1.3.5" - npm-package-arg "^8.0.0" - pacote "9.5.12" - semver "7.3.2" - semver-intersect "1.4.0" + defer-to-connect "^1.0.1" + +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + +"@trysound/sax@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.1.1.tgz#3348564048e7a2d7398c935d466c0414ebb6a669" + integrity sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow== + +"@tsconfig/node10@^1.0.7": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" + integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== + +"@tsconfig/node12@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" + integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== + +"@tsconfig/node14@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" + integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== + +"@tsconfig/node16@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" + integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== "@types/angular@^1.6.47": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@types/angular/-/angular-1.7.0.tgz#3dd8d3b2d3b7ce2cca51b9fc3691b48b638eb468" - integrity sha512-zneUmi5I6oSkGBqkRP9rxbWX1mi6Yj7gNV+WNffmJLf8x4cnV0MGqXFNSP90NZ1kRRLCOdKBf9RIVD1TMg4aog== + version "1.8.2" + resolved "https://registry.yarnpkg.com/@types/angular/-/angular-1.8.2.tgz#35d357097a853147a1b65ad34670322ca4e56b69" + integrity sha512-V0Hgx2Q3wFNcrrmx8zVepdasDuwnK4lqQFe0Zr9Ll3DoTJIuhKOpyfHC6KuVDBXJGgTkMKtELbvDe9crIkSGzg== -"@types/argparse@1.0.33": - version "1.0.33" - resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.33.tgz#2728669427cdd74a99e53c9f457ca2866a37c52d" - integrity sha512-VQgHxyPMTj3hIlq9SY1mctqx+Jj8kpQfoLvDlVSDNOyuYs8JYfkuY3OW/4+dO657yPmNhHpePRx0/Tje5ImNVQ== +"@types/archiver@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/archiver/-/archiver-5.1.1.tgz#d6d7610de4386b293abd5c1cb1875e0a4f4e1c30" + integrity sha512-heuaCk0YH5m274NOLSi66H1zX6GtZoMsdE6TYFcpFFjBjg0FoU4i4/M/a/kNlgNg26Xk3g364mNOYe1JaiEPOQ== + dependencies: + "@types/glob" "*" -"@types/babel__core@^7.1.6": - version "7.1.7" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" - integrity sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw== +"@types/argparse@1.0.38": + version "1.0.38" + resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9" + integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA== + +"@types/babel__core@7.1.6": + version "7.1.6" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.6.tgz#16ff42a5ae203c9af1c6e190ed1f30f83207b610" + integrity sha512-tTnhWszAqvXnhW7m5jQU9PomXSiKXk2sFxpahXvI20SZKu9ylPi8WtIxueZ6ehDWikPT0jeFujMj3X4ZHuf3Tg== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -2518,14 +1597,29 @@ "@types/babel__template" "*" "@types/babel__traverse" "*" -"@types/babel__generator@*", "@types/babel__generator@^7.6.1": +"@types/babel__generator@*": + version "7.6.3" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.3.tgz#f456b4b2ce79137f768aa130d2423d2f0ccfaba5" + integrity sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__generator@7.6.1": version "7.6.1" resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== dependencies: "@babel/types" "^7.0.0" -"@types/babel__template@*", "@types/babel__template@^7.0.2": +"@types/babel__template@*": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__template@7.0.2": version "7.0.2" resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== @@ -2533,56 +1627,58 @@ "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.9": +"@types/babel__traverse@*": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" + integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== + dependencies: + "@babel/types" "^7.3.0" + +"@types/babel__traverse@7.0.9": version "7.0.9" resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.9.tgz#be82fab304b141c3eee81a4ce3b034d0eba1590a" integrity sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw== dependencies: "@babel/types" "^7.3.0" -"@types/base64-js@1.2.5": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@types/base64-js/-/base64-js-1.2.5.tgz#582b2476169a6cba460a214d476c744441d873d5" - integrity sha1-WCskdhaabLpGCiFNR2x0REHYc9U= +"@types/base64-js@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@types/base64-js/-/base64-js-1.3.0.tgz#c939fdba49846861caf5a246b165dbf5698a317c" + integrity sha512-ZmI0sZGAUNXUfMWboWwi4LcfpoVUYldyN6Oe0oJ5cCsHDU/LlRq8nQKPXhYLOx36QYSW9bNIb1vvRrD6K7Llgw== "@types/bluebird@^3.5.27": - version "3.5.33" - resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.33.tgz#d79c020f283bd50bd76101d7d300313c107325fc" - integrity sha512-ndEo1xvnYeHxm7I/5sF6tBvnsA4Tdi3zj1keRKRs12SP+2ye2A27NDJ1B6PqkfMbGAcT+mqQVqbZRIrhfOp5PQ== + version "3.5.36" + resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.36.tgz#00d9301d4dc35c2f6465a8aec634bb533674c652" + integrity sha512-HBNx4lhkxN7bx6P0++W8E289foSu8kO8GCk2unhuVggO+cE7rh9DhZUyPhUxNRG9m+5B5BTKxZQ5ZP92x/mx9Q== -"@types/chai@^4.1.2": - version "4.2.11" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.11.tgz#d3614d6c5f500142358e6ed24e1bf16657536c50" - integrity sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw== +"@types/cldrjs@^0.4.22": + version "0.4.22" + resolved "https://registry.yarnpkg.com/@types/cldrjs/-/cldrjs-0.4.22.tgz#24e31cdf15a4ea806ca0a774b024150d1066fea1" + integrity sha512-YyzxXZ5s9xwPWznXnI3++X14JGnomDdDAlin7kWZvxX/MzirC9BNFcDSQ0yR8YG2M/xNMn0nXsCGkgbFVyXjGw== "@types/cli-progress@^3.4.2": - version "3.4.2" - resolved "https://registry.yarnpkg.com/@types/cli-progress/-/cli-progress-3.4.2.tgz#03dfa3d507e9dda85ba4a14006c37e8b7094c605" - integrity sha512-9Rlk664JggbgDLDMCM/8HziTh6ZU2IBLVS2/Kkh3T/TNVlpWlwgLrFl7kDyQBOlX1pofPM05ZKG/GyuULJ0FfA== + version "3.9.2" + resolved "https://registry.yarnpkg.com/@types/cli-progress/-/cli-progress-3.9.2.tgz#6ca355f96268af39bee9f9307f0ac96145639c26" + integrity sha512-VO5/X5Ij+oVgEVjg5u0IXVe3JQSKJX+Ev8C5x+0hPy0AuWyW+bF8tbajR7cPFnDGhs7pidztcac+ccrDtk5teA== dependencies: "@types/node" "*" -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== - "@types/conventional-commits-parser@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/conventional-commits-parser/-/conventional-commits-parser-3.0.1.tgz#1a4796a0ae2bf33b41ea49f55e27ccbdb29cce5e" - integrity sha512-xkKomW6PqJS0rzFPPQSzKwbKIRqAGjYa1aWWkoT14YYodXyEpG4ok4H1US3olqGBxejz7EeBfT3fTJ3hUOiUkQ== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/conventional-commits-parser/-/conventional-commits-parser-3.0.2.tgz#144b208c7344838bb045860fe1ddd10d4ae68f7c" + integrity sha512-1kVPUHFaart1iGRFxKn8WNXYEDVAgMb+DLatgql2dGg9jTGf3bNxWtN//C/tDG3ckOLg4u7SSx+qcn8VjzI5zg== dependencies: "@types/node" "*" "@types/convert-source-map@^1.5.1": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@types/convert-source-map/-/convert-source-map-1.5.1.tgz#d4d180dd6adc5cb68ad99bd56e03d637881f4616" - integrity sha512-laiDIXqqthjJlyAMYAXOtN3N8+UlbM+KvZi4BaY5ZOekmVkBs/UxfK5O0HWeJVG2eW8F+Mu2ww13fTX+kY1FlQ== + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/convert-source-map/-/convert-source-map-1.5.2.tgz#318dc22d476632a4855594c16970c6dc3ed086e7" + integrity sha512-tHs++ZeXer40kCF2JpE51Hg7t4HPa18B1b1Dzy96S0eCw8QKECNMYMfwa1edK/x8yCN0r4e6ewvLcc5CsVGkdg== -"@types/diff@^3.5.1": - version "3.5.3" - resolved "https://registry.yarnpkg.com/@types/diff/-/diff-3.5.3.tgz#7c6c3721ba454d838790100faf7957116ee7deab" - integrity sha512-YrLagYnL+tfrgM7bQ5yW34pi5cg9pmh5Gbq2Lmuuh+zh0ZjmK2fU3896PtlpJT3IDG2rdkoG30biHJepgIsMnw== +"@types/diff@^5.0.0": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@types/diff/-/diff-5.0.1.tgz#9c9b9a331d4e41ccccff553f5d7ef964c6cf4042" + integrity sha512-XIpxU6Qdvp1ZE6Kr3yrkv1qgUab0fyf4mHYvW8N3Bx3PCsbN6or1q9/q72cv5jIFWolaGH08U9XyYoLLIykyKQ== "@types/duplexify@^3.6.0": version "3.6.0" @@ -2591,55 +1687,71 @@ dependencies: "@types/node" "*" +"@types/ejs@^3.0.6": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@types/ejs/-/ejs-3.0.7.tgz#4f2af032f65c54e2bc0b32abce0125af7923b143" + integrity sha512-AUxAGNIPr7wQmzdFMNhHy/RkR5kk8gSzAZIuCYY//6ZYJKHvnjezmoEYP34coPleUPnqrUWt03cCq7NzNaA/qg== + +"@types/eslint-scope@^3.7.0": + version "3.7.1" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.1.tgz#8dc390a7b4f9dd9f1284629efce982e41612116e" + integrity sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.28.0.tgz#7e41f2481d301c68e14f483fe10b017753ce8d5a" + integrity sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*": + version "0.0.50" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" + integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== + "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== -"@types/events@*", "@types/events@3.0.0": +"@types/estree@^0.0.47": + version "0.0.47" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.47.tgz#d7a51db20f0650efec24cd04994f523d93172ed4" + integrity sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg== + +"@types/events@3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== -"@types/fs-extra@4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-4.0.2.tgz#7b9b1bbf85962cbe029b5a83c9b530d7c75af3ba" - integrity sha512-Id1hnmfd+7G9K+jWz2syfMcpymx2mj6B1y4C72vAoYQzxOA79UhY/kNvOCyb9yYR1SoSaHyhwcYtWKKqUiLTZA== - dependencies: - "@types/node" "*" - -"@types/fs-extra@^8.0.1": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.1.0.tgz#1114834b53c3914806cd03b3304b37b3bd221a4d" - integrity sha512-UoOfVEzAUpeSPmjm7h1uk5MH6KZma2z2O7a75onTGjnNvAvMVrPzPL/vBbT65iIGHWj6rokwfmYcmxmlSf2uwg== - dependencies: - "@types/node" "*" - "@types/git-raw-commits@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/git-raw-commits/-/git-raw-commits-2.0.0.tgz#157e9e4709db0748fb1aa623f8927ddd4864bac6" - integrity sha512-sHXOKjKqu1kQxbxkZiz2s0yx2kc7g20g6tE98LYGq5jQyT9r+GRyTn19NBfPotOlXhGO6oPvYT3tdnPl8MYYyA== + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/git-raw-commits/-/git-raw-commits-2.0.1.tgz#94bd91f6cfbc7174a47545424559de229998adc1" + integrity sha512-vE2lbXxqJ0AqMDoP4N6d+WVfbcBla9+z8IL6e+37JNQIwYZCYY0z3J7hdpY8D/VGwFZ0yIYQLcqk8eCnfXsaEg== dependencies: "@types/node" "*" "@types/glob@*", "@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + version "7.1.4" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.4.tgz#ea59e21d2ee5c517914cb4bc8e4153b99e566672" + integrity sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA== dependencies: - "@types/events" "*" "@types/minimatch" "*" "@types/node" "*" -"@types/hammerjs@2.0.35": - version "2.0.35" - resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.35.tgz#7b7c950c7d54593e23bffc8d2b4feba9866a7277" - integrity sha512-4mUIMSZ2U4UOWq1b+iV7XUTE4w+Kr3x+Zb/Qz5ROO6BTZLw2c8/ftjq0aRgluguLs4KRuBnrOy/s389HVn1/zA== +"@types/hammerjs@2.0.40": + version "2.0.40" + resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.40.tgz#ded0240b6ea1ad7afc1e60374c49087aaea5dbd8" + integrity sha512-VbjwR1fhsn2h2KXAY4oy1fm7dCxaKy0D+deTb8Ilc3Eo3rc5+5eA4rfYmZaHgNJKxVyI0f6WIXzO2zLkVmQPHA== "@types/inquirer@^7.3.0": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@types/inquirer/-/inquirer-7.3.0.tgz#a1233632ea6249f14eb481dae91138e747b85664" - integrity sha512-wcPs5jTrZYQBzzPlvUEzBcptzO4We2sijSvkBq8oAKRMJoH8PvrmP6QQnxLB5RScNUmRfujxA+ngxD4gk4xe7Q== + version "7.3.3" + resolved "https://registry.yarnpkg.com/@types/inquirer/-/inquirer-7.3.3.tgz#92e6676efb67fa6925c69a2ee638f67a822952ac" + integrity sha512-HhxyLejTHMfohAuhRun4csWigAMjXTmRyiJTU1Y/I1xmggikFMkOUoMQRlFm+zQcPEGHSs3io/0FAmNZf8EymQ== dependencies: "@types/through" "*" rxjs "^6.4.0" @@ -2655,46 +1767,46 @@ integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== "@types/jasmine-ajax@^3.3.1": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@types/jasmine-ajax/-/jasmine-ajax-3.3.1.tgz#69bc09babecc600cd80ba7e23f61937b0eea735c" - integrity sha512-pU+naJ9ULvwdWB1rAzAwoKFfjSvrpI1ScKjN5WkEJgJSoUNv1KqpO6rEuX/r4s3u+E9KgntfpoQsIdFq1tLfiw== + version "3.3.3" + resolved "https://registry.yarnpkg.com/@types/jasmine-ajax/-/jasmine-ajax-3.3.3.tgz#ec89515434d4aee9772e25a730bd626ecf44260d" + integrity sha512-e2iJYrdwfxr6WmLHxNjISUgbrbGaRsFHsc9xnrq8SGFzbSYPDZ4lmAkIulAAjqrkZ1z21OJCZsZwWMnxoeX7+A== -"@types/jasmine@*", "@types/jasmine@3.5.10": - version "3.5.10" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.5.10.tgz#a1a41012012b5da9d4b205ba9eba58f6cce2ab7b" - integrity sha512-3F8qpwBAiVc5+HPJeXJpbrl+XjawGmciN5LgiO7Gv1pl1RHtjoMNqZpqEksaPJW05ViKe8snYInRs6xB25Xdew== +"@types/jasmine@*": + version "3.8.2" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.8.2.tgz#27ab0aaac29581bcbde5774e1843f90df977078e" + integrity sha512-u5h7dqzy2XpXTzhOzSNQUQpKGFvROF8ElNX9P/TJvsHnTg/JvsAseVsGWQAQQldqanYaM+5kwxW909BBFAUYsg== -"@types/jasmine@^2.8.8": - version "2.8.17" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.17.tgz#65fa3be377126253f6c7988b365dfc78d62d536e" - integrity sha512-lXmY2lBjE38ASvP7ah38yZwXCdc7DTCKhHqx4J3WGNiVzp134U0BD9VKdL5x9q9AAfhnpJeQr4owL6ZOXhOpfA== +"@types/jasmine@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.8.1.tgz#8feebf4035d1e4c6a6ed4d27f3bbd285d8d0da91" + integrity sha512-ioRNoJvv0eXL1c9BZKpnywZWb5YflhaSiF3IOp9deyoh30MOwkB3bNuzi4UW76EFEhcmqpoEpdWhcUAAilomTw== "@types/jasminewd2@^2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@types/jasminewd2/-/jasminewd2-2.0.8.tgz#67afe5098d5ef2386073a7b7384b69a840dfe93b" - integrity sha512-d9p31r7Nxk0ZH0U39PTH0hiDlJ+qNVGjlt1ucOoTUptxb2v+Y5VMnsxfwN+i3hK4yQnqBi3FMmoMFcd1JHDxdg== + version "2.0.10" + resolved "https://registry.yarnpkg.com/@types/jasminewd2/-/jasminewd2-2.0.10.tgz#ae31c237aa6421bde30f1058b1d20f4577e54443" + integrity sha512-J7mDz7ovjwjc+Y9rR9rY53hFWKATcIkrr9DwQWmOas4/pnIPJTXawnzjwpHm3RSxz/e3ZVUvQ7cRbd5UQLo10g== dependencies: "@types/jasmine" "*" -"@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" - integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== +"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.8": + version "7.0.8" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.8.tgz#edf1bf1dbf4e04413ca8e5b17b3b7d7d54b59818" + integrity sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg== -"@types/long@^4.0.0": +"@types/long@^4.0.0", "@types/long@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9" integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== "@types/minimatch@*", "@types/minimatch@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== "@types/minimist@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6" - integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= + version "1.2.2" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" + integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== "@types/multimatch@^4.0.0": version "4.0.0" @@ -2704,52 +1816,42 @@ multimatch "*" "@types/node-fetch@^2.5.7": - version "2.5.8" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.8.tgz#e199c835d234c7eb0846f6618012e558544ee2fb" - integrity sha512-fbjI6ja0N5ZA8TV53RUqzsKNkl9fv8Oj3T7zxW7FGv1GSH7gwJaNF8dzCjrqKaxKeUpTz4yT1DaJFq/omNpGfw== + version "2.5.12" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" + integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== dependencies: "@types/node" "*" form-data "^3.0.0" -"@types/node@*": - version "14.14.25" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.25.tgz#15967a7b577ff81383f9b888aa6705d43fbbae93" - integrity sha512-EPpXLOVqDvisVxtlbvzfyqSsFeQxltFbluZNRndIb8tr9KiBnYNLzrc1N3pyKUCww2RNrfHDViqDWWE1LCJQtQ== +"@types/node@*", "@types/node@>=12.12.47", "@types/node@>=13.7.0": + version "16.4.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.7.tgz#f7afa78769d4b477f5092d7c3468e2e8653d779c" + integrity sha512-aDDY54sst8sx47CWT6QQqIZp45yURq4dic0+HCYfYNcY5Ejlb/CLmFnRLfy3wQuYafOeh3lB/DAKaqRKBtcZmA== "@types/node@10.17.13": version "10.17.13" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.13.tgz#ccebcdb990bd6139cd16e84c39dc2fb1023ca90c" integrity sha512-pMCcqU2zT4TjqYFrWtYHKal7Sl30Ims6ulZ4UFXxI4xbtQqK/qqKwkDoBFCfooRqqmRu9vY3xaJRwxSh673aYg== -"@types/node@>= 8": - version "13.11.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.11.0.tgz#390ea202539c61c8fa6ba4428b57e05bc36dc47b" - integrity sha512-uM4mnmsIIPK/yeO+42F2RQhGUIs39K2RFmugcJANppXe6J1nvH87PvzPZYpza7Xhhs8Yn9yIAVdLZ84z61+0xQ== - "@types/node@^10.1.0": - version "10.17.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.18.tgz#ae364d97382aacdebf583fa4e7132af2dfe56a0c" - integrity sha512-DQ2hl/Jl3g33KuAUOcMrcAOtsbzb+y/ufakzAdeK9z/H/xsvkpbETZZbPNMIiQuk24f5ZRMCcZIViAwyFIiKmg== - -"@types/node@^10.9.4": - version "10.17.56" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.56.tgz#010c9e047c3ff09ddcd11cbb6cf5912725cdc2b3" - integrity sha512-LuAa6t1t0Bfw4CuSR0UITsm1hP17YL+u82kfHGrHUWdhlBtH7sa7jGY5z7glGaIj/WDYDkRtgGd+KCjCzxBW1w== + version "10.17.60" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== "@types/node@^11.13.9": - version "11.15.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-11.15.9.tgz#656b2f61ebe6af278769dfc24e6ab00528a373eb" - integrity sha512-NcOiyA/gxMAounNa4IPm/e13kYqU48onEarMnbLzz3ynEdlxFKYFoBbMBSefAHJR77r9MCtD88J0Z2TVtNsBbw== + version "11.15.54" + resolved "https://registry.yarnpkg.com/@types/node/-/node-11.15.54.tgz#59ed60e7b0d56905a654292e8d73275034eb6283" + integrity sha512-1RWYiq+5UfozGsU6MwJyFX6BtktcT10XRjvcAQmskCtMcW3tPske88lM/nHv7BQG1w9KBXI1zPGuu5PnNCX14g== "@types/node@^12.11.1": - version "12.12.34" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.34.tgz#0a5d6ae5d22612f0cf5f10320e1fc5d2a745dcb8" - integrity sha512-BneGN0J9ke24lBRn44hVHNeDlrXRYF+VRp0HbSUNnEZahXGAysHZIqnf/hER6aabdBgzM4YOV4jrR8gj4Zfi0g== + version "12.20.17" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.17.tgz#ffd44c2801fc527a6fe6e86bc9b900261df1c87e" + integrity sha512-so8EHl4S6MmatPS0f9sE1ND94/ocbcEshW5OpyYthRqeRpiYyW2uXYTo/84kmfdfeNrDycARkvuiXl6nO40NGg== "@types/normalize-package-data@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + version "2.4.1" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" + integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== "@types/parse-json@^4.0.0": version "4.0.0" @@ -2761,11 +1863,6 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" integrity sha1-vShOV8hPEyXacCur/IKlMoGQwMU= -"@types/q@^1.5.1": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" - integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== - "@types/resolve@0.0.8": version "0.0.8" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" @@ -2779,19 +1876,19 @@ integrity sha512-tHdDdGUBKTbiLLwf5mF78EP35F31UZekG+GRNowl8G5rMQoupAT4qWn/7AaGOvmaqvROdqC3Io/hP1ZyO58QkA== "@types/selenium-webdriver@^3.0.0": - version "3.0.17" - resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz#50bea0c3c2acc31c959c5b1e747798b3b3d06d4b" - integrity sha512-tGomyEuzSC1H28y2zlW6XPCaDaXFaD6soTdb4GNdmte2qfHtrKqhy0ZFs4r/1hpazCfEZqeTSRLvSasmEx89uw== + version "3.0.19" + resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-3.0.19.tgz#28ecede76f15b13553b4e86074d4cf9a0bbe49c4" + integrity sha512-OFUilxQg+rWL2FMxtmIgCkUDlJB6pskkpvmew7yeXfzzsOBb5rc+y2+DjHm+r3r1ZPPcJefK3DveNSYWGiy68g== -"@types/semver@^6.0.2": - version "6.2.2" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-6.2.2.tgz#5c27df09ca39e3c9beb4fae6b95f4d71426df0a9" - integrity sha512-RxAwYt4rGwK5GyoRwuP0jT6ZHAVTdz2EqgsHmX0PYNjGsko+OeT4WFXXTs/lM3teJUJodM+SNtAL5/pXIJ61IQ== +"@types/semver@^7.3.4": + version "7.3.8" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.8.tgz#508a27995498d7586dcecd77c25e289bfaf90c59" + integrity sha512-D/2EJvAlCEtYFEYmmlGwbGXuK886HzyCc3nZX/tkFTQdEU8jZDAgiv08P162yB17y4ZXZoq7yFAnW4GDBb9Now== "@types/shelljs@^0.8.6": - version "0.8.7" - resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.8.7.tgz#a2a606b185165abadf8b7995fea5e326e637088e" - integrity sha512-Mg2qGjLIJIieeJ1/NjswAOY9qXDShLeh6JwpD1NZsvUvI0hxdUCNDpnBXv9YQeugKi2EHU+BqkbUE4jpY4GKmQ== + version "0.8.9" + resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.8.9.tgz#45dd8501aa9882976ca3610517dac3831c2fbbf4" + integrity sha512-flVe1dvlrCyQJN/SGrnBxqHG+RzXrVKsmjD8WS/qYHpq5UPjfq7UWFBENP0ZuOl0g6OpAlL6iBoLSvKYUUmyQw== dependencies: "@types/glob" "*" "@types/node" "*" @@ -2814,9 +1911,9 @@ "@types/node" "*" "@types/webpack-sources@^0.1.5": - version "0.1.7" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.7.tgz#0a330a9456113410c74a5d64180af0cbca007141" - integrity sha512-XyaHrJILjK1VHVC4aVlKsdNN5KBTwufMb43cQs+flGxtPAf/1Qwl8+Q0tp5BwEGaI8D6XT1L+9bSWXckgkjTLw== + version "0.1.9" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.9.tgz#da69b06eb34f6432e6658acb5a6893c55d983920" + integrity sha512-bvzMnzqoK16PQIC8AYHNdW45eREJQMd6WG/msQWX5V2+vZmODCOPb4TJcbgRljTZZTwTM4wUMcsI8FftNA7new== dependencies: "@types/node" "*" "@types/source-list-map" "*" @@ -2830,180 +1927,169 @@ yaml "*" "@types/yargs-parser@*": - version "20.2.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" - integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== + version "20.2.1" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" + integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== -"@types/yargs@^15.0.5": - version "15.0.13" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.13.tgz#34f7fec8b389d7f3c1fd08026a5763e072d3c6dc" - integrity sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ== +"@types/yargs@^16.0.1": + version "16.0.4" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" + integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== dependencies: "@types/yargs-parser" "*" "@types/yauzl@^2.9.1": - version "2.9.1" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.1.tgz#d10f69f9f522eef3cf98e30afb684a1e1ec923af" - integrity sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA== + version "2.9.2" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.2.tgz#c48e5d56aff1444409e39fa164b0b4d4552a7b7a" + integrity sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA== dependencies: "@types/node" "*" -"@typescript-eslint/typescript-estree@^2.4.0": - version "2.26.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.26.0.tgz#d8132cf1ee8a72234f996519a47d8a9118b57d56" - integrity sha512-3x4SyZCLB4zsKsjuhxDLeVJN6W29VwBnYpCsZ7vIdPel9ZqLfIZJgJXO47MNUkurGpQuIBALdPQKtsSnWpE1Yg== +"@typescript-eslint/types@4.28.5": + version "4.28.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.28.5.tgz#d33edf8e429f0c0930a7c3d44e9b010354c422e9" + integrity sha512-MruOu4ZaDOLOhw4f/6iudyks/obuvvZUAHBDSW80Trnc5+ovmViLT2ZMDXhUV66ozcl6z0LJfKs1Usldgi/WCA== + +"@typescript-eslint/typescript-estree@^4.8.2": + version "4.28.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.5.tgz#4906d343de693cf3d8dcc301383ed638e0441cd1" + integrity sha512-FzJUKsBX8poCCdve7iV7ShirP8V+ys2t1fvamVeD1rWpiAnIm550a+BX/fmTHrjEpQJ7ZAn+Z7ZZwJjytk9rZw== dependencies: - debug "^4.1.1" - eslint-visitor-keys "^1.1.0" - glob "^7.1.6" + "@typescript-eslint/types" "4.28.5" + "@typescript-eslint/visitor-keys" "4.28.5" + debug "^4.3.1" + globby "^11.0.3" is-glob "^4.0.1" - lodash "^4.17.15" - semver "^6.3.0" - tsutils "^3.17.1" + semver "^7.3.5" + tsutils "^3.21.0" -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== +"@typescript-eslint/visitor-keys@4.28.5": + version "4.28.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.5.tgz#ffee2c602762ed6893405ee7c1144d9cc0a29675" + integrity sha512-dva/7Rr+EkxNWdJWau26xU/0slnFlkh88v3TsyTgRS/IIYFi5iIfpCFM4ikw0vQTFUR9FYSSyqgK4w64gsgxhg== dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" + "@typescript-eslint/types" "4.28.5" + eslint-visitor-keys "^2.0.0" -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== - -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== - -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== - -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== +"@webassemblyjs/ast@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.0.tgz#a5aa679efdc9e51707a4207139da57920555961f" + integrity sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg== dependencies: - "@webassemblyjs/wast-printer" "1.9.0" + "@webassemblyjs/helper-numbers" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== +"@webassemblyjs/floating-point-hex-parser@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz#34d62052f453cd43101d72eab4966a022587947c" + integrity sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA== -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== +"@webassemblyjs/helper-api-error@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz#aaea8fb3b923f4aaa9b512ff541b013ffb68d2d4" + integrity sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w== + +"@webassemblyjs/helper-buffer@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz#d026c25d175e388a7dbda9694e91e743cbe9b642" + integrity sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA== + +"@webassemblyjs/helper-numbers@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz#7ab04172d54e312cc6ea4286d7d9fa27c88cd4f9" + integrity sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ== dependencies: - "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.11.0" + "@webassemblyjs/helper-api-error" "1.11.0" + "@xtuc/long" "4.2.2" -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== +"@webassemblyjs/helper-wasm-bytecode@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz#85fdcda4129902fe86f81abf7e7236953ec5a4e1" + integrity sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA== -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== +"@webassemblyjs/helper-wasm-section@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz#9ce2cc89300262509c801b4af113d1ca25c1a75b" + integrity sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-buffer" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/wasm-gen" "1.11.0" -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== +"@webassemblyjs/ieee754@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz#46975d583f9828f5d094ac210e219441c4e6f5cf" + integrity sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== +"@webassemblyjs/leb128@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.0.tgz#f7353de1df38aa201cba9fb88b43f41f75ff403b" + integrity sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== +"@webassemblyjs/utf8@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.0.tgz#86e48f959cf49e0e5091f069a709b862f5a2cadf" + integrity sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw== -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== +"@webassemblyjs/wasm-edit@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz#ee4a5c9f677046a210542ae63897094c2027cb78" + integrity sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-buffer" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/helper-wasm-section" "1.11.0" + "@webassemblyjs/wasm-gen" "1.11.0" + "@webassemblyjs/wasm-opt" "1.11.0" + "@webassemblyjs/wasm-parser" "1.11.0" + "@webassemblyjs/wast-printer" "1.11.0" -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== +"@webassemblyjs/wasm-gen@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz#3cdb35e70082d42a35166988dda64f24ceb97abe" + integrity sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/ieee754" "1.11.0" + "@webassemblyjs/leb128" "1.11.0" + "@webassemblyjs/utf8" "1.11.0" -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== +"@webassemblyjs/wasm-opt@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz#1638ae188137f4bb031f568a413cd24d32f92978" + integrity sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-buffer" "1.11.0" + "@webassemblyjs/wasm-gen" "1.11.0" + "@webassemblyjs/wasm-parser" "1.11.0" -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== +"@webassemblyjs/wasm-parser@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz#3e680b8830d5b13d1ec86cc42f38f3d4a7700754" + integrity sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-api-error" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/ieee754" "1.11.0" + "@webassemblyjs/leb128" "1.11.0" + "@webassemblyjs/utf8" "1.11.0" -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== +"@webassemblyjs/wast-printer@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz#680d1f6a5365d6d401974a8e949e05474e1fab7e" + integrity sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" + "@webassemblyjs/ast" "1.11.0" "@xtuc/long" "4.2.2" "@webcomponents/custom-elements@^1.1.0": @@ -3026,7 +2112,7 @@ resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== -JSONStream@^1.0.4, JSONStream@^1.2.1, JSONStream@^1.3.4: +JSONStream@^1.0.4, JSONStream@^1.2.1: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== @@ -3059,81 +2145,71 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn@^6.1.1, acorn@^6.4.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== +acorn@^6.1.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + +acorn@^8.2.1: + version "8.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" + integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== add-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" integrity sha1-anmQQ3ynNtXhKI25K9MmbV9csqo= -adjust-sourcemap-loader@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz#5ae12fb5b7b1c585e80bbb5a63ec163a1a45e61e" - integrity sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw== +adjust-sourcemap-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99" + integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== dependencies: loader-utils "^2.0.0" regex-parser "^2.2.11" -adm-zip@0.4.11: - version "0.4.11" - resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.11.tgz#2aa54c84c4b01a9d0fb89bb11982a51f13e3d62a" - integrity sha512-L8vcjDTCOIJk7wFvmlEUN7AsSb8T+2JrdP7KINBjzr24TJ5Mwj590sLu3BC7zNZowvJWa/JtPmD8eJCzdtDWjA== - -adm-zip@^0.4.9: +adm-zip@^0.4.9, adm-zip@~0.4.3: version "0.4.16" resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365" integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== -adm-zip@~0.4.3, adm-zip@~0.4.x: - version "0.4.14" - resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.14.tgz#2cf312bcc9f8875df835b0f6040bd89be0a727a9" - integrity sha512-/9aQCnQHF+0IiCl0qhXoK7qs//SwYE7zX8lsr/DNk1BRAHYxeLZPL4pguwK29gUEqasYQjqPtEpDRSWEkdHn9g== - after@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= -agent-base@4, agent-base@^4.3.0: +agent-base@5: + version "5.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" + integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== + +agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +agent-base@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== dependencies: es6-promisify "^5.0.0" -agent-base@5: - version "5.1.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" - integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== - -agent-base@6: - version "6.0.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.0.tgz#5d0101f19bbfaed39980b22ae866de153b93f09a" - integrity sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw== - dependencies: - debug "4" - -agent-base@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" - integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== - dependencies: - es6-promisify "^5.0.0" - -agentkeepalive@^3.4.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" - integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== +agentkeepalive@^4.1.3: + version "4.1.4" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.1.4.tgz#d928028a4862cb11718e55227872e842a44c945b" + integrity sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ== dependencies: + debug "^4.1.0" + depd "^1.1.2" humanize-ms "^1.2.1" aggregate-error@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" - integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: clean-stack "^2.0.0" indent-string "^4.0.0" @@ -3143,17 +2219,29 @@ ajv-errors@^1.0.0: resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" - integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== +ajv-formats@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.0.2.tgz#69875cb99d76c74be46e9c7a4444bc232354eba0" + integrity sha512-Brah4Uo5/U8v76c6euTwtjVFFaVishwnJrQBYpev1JRh4vjA1F4HY3UzQez41YUCszUCXKagG8v6eVRBHV1gkw== + dependencies: + ajv "^8.0.0" -ajv-keywords@^3.5.2: +ajv-keywords@^3.1.0, ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@6.12.6, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: +ajv@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.2.0.tgz#c89d3380a784ce81b2085f48811c4c101df4c602" + integrity sha512-WSNGFuyWd//XO8n/m/EaOlNLtO0yL8EXT/74LqT4khdhpZjP7lkj/kT5uwRmGitKEVp/Oj7ZUHeGfPtgHhQ5CA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ajv@^6.1.0, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.12.6, ajv@~6.12.6: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3163,27 +2251,17 @@ ajv@6.12.6, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^5.1.0: - version "5.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" - integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= - dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" - -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.0: - version "6.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" - integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== +ajv@^8.0.0: + version "8.6.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.2.tgz#2fb45e0e5fcbc0813326c1c3da535d1881bb0571" + integrity sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w== dependencies: fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" uri-js "^4.2.2" -alphanum-sort@^1.0.0: +alphanum-sort@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= @@ -3203,6 +2281,11 @@ alphanum-sort@^1.0.0: resolved "https://registry.yarnpkg.com/angular/-/angular-1.7.9.tgz#e52616e8701c17724c3c238cfe4f9446fd570bc4" integrity sha512-5se7ZpcOtu0MBFlzGv5dsM1quQDoDeUTwZrWjGtTNA7O88cD8TEk5IEKCTDa3uECV9XnvKREVUr7du1ACiWGFQ== +"angular-1.8@npm:angular@1.8": + version "1.8.2" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.8.2.tgz#5983bbb5a9fa63e213cb7749199e0d352de3a2f1" + integrity sha512-IauMOej2xEe7/7Ennahkbb5qd/HFADiNuLSESz9Q27inmi32zB0lnAsFeLEWcox3Gd1F6YhNd1CP7/9IukJ0Gw== + "angular-mocks-1.5@npm:angular-mocks@1.5": version "1.5.11" resolved "https://registry.yarnpkg.com/angular-mocks/-/angular-mocks-1.5.11.tgz#a0e1dd0ea55fd77ee7a757d75536c5e964c86f81" @@ -3218,22 +2301,17 @@ alphanum-sort@^1.0.0: resolved "https://registry.yarnpkg.com/angular-mocks/-/angular-mocks-1.7.9.tgz#0a3b7e28b9a493b4e3010ed2b0f69a68e9b4f79b" integrity sha512-LQRqqiV3sZ7NTHBnNmLT0bXtE5e81t97+hkJ56oU0k3dqKv1s6F+nBWRlOVzqHWPGFOiPS8ZJVdrS8DFzHyNIA== -"angular-mocks@npm:angular-mocks@1.8": +"angular-mocks-1.8@npm:angular-mocks@1.8": version "1.8.2" resolved "https://registry.yarnpkg.com/angular-mocks/-/angular-mocks-1.8.2.tgz#dc022420b86978cf317a8447c116c0be73a853bf" integrity sha512-I5L3P0l21HPdVsP4A4qWmENt4ePjjbkDFdAzOaM7QiibFySbt14DptPbt2IjeG4vFBr4vSLbhIz8Fk03DISl8Q== -"angular@npm:angular@1.8": - version "1.8.2" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.8.2.tgz#5983bbb5a9fa63e213cb7749199e0d352de3a2f1" - integrity sha512-IauMOej2xEe7/7Ennahkbb5qd/HFADiNuLSESz9Q27inmi32zB0lnAsFeLEWcox3Gd1F6YhNd1CP7/9IukJ0Gw== - -ansi-align@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" - integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= +ansi-align@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" + integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== dependencies: - string-width "^2.0.0" + string-width "^3.0.0" ansi-colors@4.1.1: version "4.1.1" @@ -3258,11 +2336,11 @@ ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-escapes@^4.2.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: - type-fest "^0.11.0" + type-fest "^0.21.3" ansi-gray@^0.1.1: version "0.1.1" @@ -3308,21 +2386,13 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.0.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" -ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== - dependencies: - "@types/color-name" "^1.1.1" - color-convert "^2.0.1" - ansi-wrap@0.1.0, ansi-wrap@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" @@ -3341,10 +2411,10 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" @@ -3361,23 +2431,11 @@ append-buffer@^1.0.2: dependencies: buffer-equal "^1.0.0" -aproba@^1.1.1: +aproba@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -archiver-utils@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-1.3.0.tgz#e50b4c09c70bf3d680e32ff1b7994e9f9d895174" - integrity sha1-5QtMCccL89aA4y/xt5lOn52JUXQ= - dependencies: - glob "^7.0.0" - graceful-fs "^4.1.0" - lazystream "^1.0.0" - lodash "^4.8.0" - normalize-path "^2.0.0" - readable-stream "^2.0.0" - archiver-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" @@ -3394,39 +2452,32 @@ archiver-utils@^2.1.0: normalize-path "^3.0.0" readable-stream "^2.0.0" -archiver@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-3.1.1.tgz#9db7819d4daf60aec10fe86b16cb9258ced66ea0" - integrity sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg== +archiver@^5.0.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-5.3.0.tgz#dd3e097624481741df626267564f7dd8640a45ba" + integrity sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg== dependencies: archiver-utils "^2.1.0" - async "^2.6.3" + async "^3.2.0" buffer-crc32 "^0.2.1" - glob "^7.1.4" - readable-stream "^3.4.0" - tar-stream "^2.1.0" - zip-stream "^2.1.2" - -archiver@~1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-1.3.0.tgz#4f2194d6d8f99df3f531e6881f14f15d55faaf22" - integrity sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI= - dependencies: - archiver-utils "^1.3.0" - async "^2.0.0" - buffer-crc32 "^0.2.1" - glob "^7.0.0" - lodash "^4.8.0" - readable-stream "^2.0.0" - tar-stream "^1.5.0" - walkdir "^0.0.11" - zip-stream "^1.1.0" + readable-stream "^3.6.0" + readdir-glob "^1.0.0" + tar-stream "^2.2.0" + zip-stream "^4.1.0" archy@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + arg@^4.1.0: version "4.1.3" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -3439,10 +2490,10 @@ argparse@^1.0.7, argparse@~1.0.9: dependencies: sprintf-js "~1.0.2" -arity-n@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" - integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== arr-diff@^4.0.0: version "4.0.0" @@ -3483,11 +2534,6 @@ array-each@^1.0.0, array-each@^1.0.1: resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= - array-flatten@1.1.1, array-flatten@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -3588,15 +2634,6 @@ as-array@^2.0.0: resolved "https://registry.yarnpkg.com/as-array/-/as-array-2.0.0.tgz#4f04805d87f8fce8e511bc2108f8e5e3a287d547" integrity sha1-TwSAXYf4/OjlEbwhCPjl46KH1Uc= -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" @@ -3609,28 +2646,22 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assertion-error@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" - integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== - assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= -ast-module-types@^2.3.1, ast-module-types@^2.3.2, ast-module-types@^2.4.0, ast-module-types@^2.5.0, ast-module-types@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/ast-module-types/-/ast-module-types-2.6.0.tgz#f9f367fd273bbe01e52f2c51b5f46b65801d5d7f" - integrity sha512-zXSoVaMrf2R+r+ISid5/9a8SXm1LLdkhHzh6pSRhj9jklzruOOl1hva1YmFT33wAstg/f9ZndJAlq1BSrFLSGA== +ast-module-types@^2.3.2, ast-module-types@^2.4.0, ast-module-types@^2.7.0, ast-module-types@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/ast-module-types/-/ast-module-types-2.7.1.tgz#3f7989ef8dfa1fdb82dfe0ab02bdfc7c77a57dd3" + integrity sha512-Rnnx/4Dus6fn7fTqdeLEAn5vUll5w7/vts0RN608yFa6si/rDOUonlIIiwugHBFWjylHjxm9owoSZn71KwG4gw== + +ast-types@^0.13.2: + version "0.13.4" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" + integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== + dependencies: + tslib "^2.0.1" async-done@^1.2.0, async-done@^1.2.2: version "1.3.2" @@ -3659,51 +2690,39 @@ async-settle@^1.0.0: dependencies: async-done "^1.2.2" -async@1.2.x: - version "1.2.1" - resolved "https://registry.yarnpkg.com/async/-/async-1.2.1.tgz#a4816a17cd5ff516dfa2c7698a453369b9790de0" - integrity sha1-pIFqF81f9RbfosdpikUzabl5DeA= +async@0.9.x: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= async@^1.3.0, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= -async@^2.0.0, async@^2.1.2, async@^2.3.0, async@^2.6.2, async@^2.6.3: +async@^2.1.2, async@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== dependencies: lodash "^4.17.14" -async@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async/-/async-1.0.0.tgz#f8fc04ca3a13784ade9e1641af98578cfbd647a9" - integrity sha1-+PwEyjoTeErenhZBr5hXjPvWR6k= - -async@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/async/-/async-2.4.1.tgz#62a56b279c98a11d0987096a01cc3eeb8eb7bbd7" - integrity sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c= - dependencies: - lodash "^4.14.0" +async@^3.1.0, async@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" + integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -atob-lite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" - integrity sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY= - atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@9.8.6: +autoprefixer@^9.6.1: version "9.8.6" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== @@ -3721,37 +2740,19 @@ aws-sign2@~0.7.0: resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= -aws4@^1.6.0, aws4@^1.8.0: +aws4@^1.8.0: version "1.11.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -axios@^0.18.0: - version "0.18.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" - integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g== +babel-loader@8.2.2: + version "8.2.2" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" + integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== dependencies: - follow-redirects "1.5.10" - is-buffer "^2.0.2" - -babel-code-frame@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-loader@8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" - integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== - dependencies: - find-cache-dir "^2.1.0" + find-cache-dir "^3.3.1" loader-utils "^1.4.0" - mkdirp "^0.5.3" - pify "^4.0.1" + make-dir "^3.1.0" schema-utils "^2.6.5" babel-plugin-dynamic-import-node@^2.3.3: @@ -3761,6 +2762,30 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" +babel-plugin-polyfill-corejs2@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" + integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ== + dependencies: + "@babel/compat-data" "^7.13.11" + "@babel/helper-define-polyfill-provider" "^0.2.2" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.2.0: + version "0.2.4" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.4.tgz#68cb81316b0e8d9d721a92e0009ec6ecd4cd2ca9" + integrity sha512-z3HnJE5TY/j4EFEa/qpQMSbcUJZ5JQi+3UFjXzn6pQCmIKc5Ug5j98SuYyH+m4xQnvKlMDIW4plLfgyVnd0IcQ== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.2.2" + core-js-compat "^3.14.0" + +babel-plugin-polyfill-regenerator@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077" + integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.2.2" + bach@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" @@ -3782,24 +2807,19 @@ backo2@1.0.2: integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== base64-arraybuffer@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= -base64-js@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" - integrity sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw== - -base64-js@^1.0.2, base64-js@^1.1.2, base64-js@^1.2.3, base64-js@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== +base64-js@1.5.1, base64-js@^1.1.2, base64-js@^1.3.0, base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== base64id@1.0.0: version "1.0.0" @@ -3848,10 +2868,10 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -before-after-hook@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" - integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== +before-after-hook@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" + integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== better-assert@~1.0.0: version "1.0.2" @@ -3870,10 +2890,10 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -bignumber.js@^7.0.0: - version "7.2.1" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.1.tgz#80c048759d826800807c4bfd521e50edbba57a5f" - integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ== +bignumber.js@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5" + integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA== binary-extensions@^1.0.0: version "1.13.1" @@ -3881,9 +2901,9 @@ binary-extensions@^1.0.0: integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== binary-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" - integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== binary@~0.3.0: version "0.3.0" @@ -3900,23 +2920,20 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -bl@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" - integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== - dependencies: - readable-stream "^2.3.5" - safe-buffer "^5.1.1" - -bl@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.2.tgz#52b71e9088515d0606d9dd9cc7aa48dc1f98e73a" - integrity sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ== +bl@^4.0.3, bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: buffer "^5.5.0" inherits "^2.0.4" readable-stream "^3.4.0" +blakejs@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.1.tgz#bf313053978b2cd4c444a48795710be05c785702" + integrity sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg== + blob@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" @@ -3929,7 +2946,7 @@ blocking-proxy@^1.0.0: dependencies: minimist "^1.2.0" -bluebird@^3.3.0, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5, bluebird@^3.7.2: +bluebird@^3.3.0, bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -3939,12 +2956,7 @@ bluebird@~3.4.1: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" integrity sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM= -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== - -body-parser@1.19.0, body-parser@^1.16.1, body-parser@^1.19.0: +body-parser@1.19.0, body-parser@^1.16.1, body-parser@^1.18.3, body-parser@^1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== @@ -3972,23 +2984,38 @@ bonjour@^3.5.0: multicast-dns "^6.0.1" multicast-dns-service-types "^1.1.0" -boolbase@^1.0.0, boolbase@~1.0.0: +boolbase@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= -boxen@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" - integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== +boxen@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" + integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== dependencies: - ansi-align "^2.0.0" - camelcase "^4.0.0" - chalk "^2.0.1" - cli-boxes "^1.0.0" - string-width "^2.0.0" - term-size "^1.2.0" - widest-line "^2.0.0" + ansi-align "^3.0.0" + camelcase "^5.3.1" + chalk "^3.0.0" + cli-boxes "^2.2.0" + string-width "^4.1.0" + term-size "^2.1.0" + type-fest "^0.8.1" + widest-line "^3.1.0" + +boxen@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.0.1.tgz#657528bdd3f59a772b8279b831f27ec2c744664b" + integrity sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA== + dependencies: + ansi-align "^3.0.0" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.0" + type-fest "^0.20.2" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" brace-expansion@^1.1.7: version "1.1.11" @@ -4021,11 +3048,6 @@ braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - brotli@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/brotli/-/brotli-1.3.2.tgz#525a9cad4fcba96475d7d388f6aecb13eed52f46" @@ -4033,89 +3055,21 @@ brotli@^1.3.2: dependencies: base64-js "^1.1.2" -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4.16.6, browserslist@^4.6.4, browserslist@^4.9.1: + version "4.16.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" + integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= - dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@^4.0.0: - version "4.11.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.11.1.tgz#92f855ee88d6e050e7e7311d987992014f1a1f1b" - integrity sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g== - dependencies: - caniuse-lite "^1.0.30001038" - electron-to-chromium "^1.3.390" - node-releases "^1.1.53" - pkg-up "^2.0.0" - -browserslist@^4.12.0, browserslist@^4.8.5, browserslist@^4.9.1: - version "4.12.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d" - integrity sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg== - dependencies: - caniuse-lite "^1.0.30001043" - electron-to-chromium "^1.3.413" - node-releases "^1.1.53" - pkg-up "^2.0.0" + caniuse-lite "^1.0.30001219" + colorette "^1.2.2" + electron-to-chromium "^1.3.723" + escalade "^3.1.1" + node-releases "^1.1.71" browserstack-local@^1.3.7: - version "1.4.5" - resolved "https://registry.yarnpkg.com/browserstack-local/-/browserstack-local-1.4.5.tgz#115153ce1d08d58b7575ecf4381d54d10b42d2cf" - integrity sha512-0/VdSv2YVXmcnwBb64XThMvjM1HnZJnPdv7CUgQbC5y/N9Wsr0Fu+j1oknE9fC/VPx9CpoSC6CJ0kza42skMSA== + version "1.4.8" + resolved "https://registry.yarnpkg.com/browserstack-local/-/browserstack-local-1.4.8.tgz#07f74a19b324cf2de69ffe65f9c2baa3a2dd9a0e" + integrity sha512-s+mc3gTOJwELdLWi4qFVKtGwMbb5JWsR+JxKlMaJkRJxoZ0gg3WREgPxAN0bm6iU5+S4Bi0sz0oxBRZT8BiNsQ== dependencies: https-proxy-agent "^4.0.0" is-running "^2.1.0" @@ -4144,11 +3098,6 @@ browserstacktunnel-wrapper@^2.0.4: https-proxy-agent "^2.2.1" unzipper "^0.9.3" -btoa-lite@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" - integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc= - buffer-alloc-unsafe@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" @@ -4183,49 +3132,27 @@ buffer-fill@^1.0.0: integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer-indexof-polyfill@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.1.tgz#a9fb806ce8145d5428510ce72f278bb363a638bf" - integrity sha1-qfuAbOgUXVQoUQznLyeLs2OmOL8= + version "1.0.2" + resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz#d2732135c5999c64b277fcf9b1abe3498254729c" + integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== buffer-indexof@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== +buffer@^5.2.1, buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -buffer@^5.1.0, buffer@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.5.0.tgz#9c3caa3d623c33dd1c7ef584b89b88bf9c9bc1ce" - integrity sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - -buffer@^5.2.1: - version "5.6.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" - integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" + base64-js "^1.3.1" + ieee754 "^1.1.13" buffers@~0.1.1: version "0.1.1" @@ -4238,14 +3165,9 @@ builtin-modules@^1.1.1: integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= builtin-modules@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" - integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + version "3.2.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" + integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== builtins@^1.0.3: version "1.0.3" @@ -4281,10 +3203,10 @@ c8@~7.5.0: yargs "^16.0.0" yargs-parser "^20.0.0" -cacache@15.0.5, cacache@^15.0.5: - version "15.0.5" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" - integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== +cacache@15.0.6: + version "15.0.6" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.6.tgz#65a8c580fda15b59150fb76bf3f3a8e45d583099" + integrity sha512-g1WYDMct/jzW+JdWEyjaX2zoBkZ6ZT9VpOyp2I/VMtDsNLffNat3kqPFfi1eDRSK9/SuKGyORDHcQMcPF8sQ/w== dependencies: "@npmcli/move-file" "^1.0.1" chownr "^2.0.0" @@ -4300,30 +3222,32 @@ cacache@15.0.5, cacache@^15.0.5: p-map "^4.0.0" promise-inflight "^1.0.1" rimraf "^3.0.2" - ssri "^8.0.0" + ssri "^8.0.1" tar "^6.0.2" unique-filename "^1.1.1" -cacache@^12.0.0, cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== +cacache@^15.0.5: + version "15.2.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.2.0.tgz#73af75f77c58e72d8c630a7a2858cb18ef523389" + integrity sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw== dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.0.2" unique-filename "^1.1.1" - y18n "^4.0.0" cache-base@^1.0.1: version "1.0.1" @@ -4340,7 +3264,20 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -call-bind@^1.0.0: +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + +call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== @@ -4348,52 +3285,21 @@ call-bind@^1.0.0: function-bind "^1.1.1" get-intrinsic "^1.0.2" -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= callsite@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase-keys@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" - integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= - dependencies: - camelcase "^4.1.0" - map-obj "^2.0.0" - quick-lru "^1.0.0" - camelcase-keys@^6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" @@ -4403,30 +3309,20 @@ camelcase-keys@^6.2.2: map-obj "^4.0.0" quick-lru "^4.0.1" -camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= -camelcase@^4.0.0, camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.1.0.tgz#27dc176173725fb0adf8a48b647f4d7871944d78" - integrity sha512-WCMml9ivU60+8rEJgELlFp1gxFcEGxwYleE3bziHEDeqsqAWGHdimB7beBFGjLzVNgPGyDsfgXLQEYMpmIFnVQ== +camelcase@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== caniuse-api@^3.0.0: version "3.0.0" @@ -4438,31 +3334,16 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001038: - version "1.0.30001038" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001038.tgz#44da3cbca2ab6cb6aa83d1be5d324e17f141caff" - integrity sha512-zii9quPo96XfOiRD4TrfYGs+QsGZpb2cGiMAzPjtf/hpFgB6zCPZgJb7I1+EATeMw/o+lG8FyRAnI+CWStHcaQ== - -caniuse-lite@^1.0.30001032, caniuse-lite@^1.0.30001043: - version "1.0.30001048" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001048.tgz#4bb4f1bc2eb304e5e1154da80b93dee3f1cf447e" - integrity sha512-g1iSHKVxornw0K8LG9LLdf+Fxnv7T1Z+mMsf0/YYLclQX4Cd522Ap0Lrw6NFqHgezit78dtyWxzlV2Xfc7vgRg== - -caniuse-lite@^1.0.30001109: - version "1.0.30001151" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001151.tgz#1ddfde5e6fff02aad7940b4edb7d3ac76b0cb00b" - integrity sha512-Zh3sHqskX6mHNrqUerh+fkf0N72cMxrmflzje/JyVImfpknscMnkeJrlFGJcqTmaa0iszdYptGpWMJCRQDkBVw== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001032, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219: + version "1.0.30001248" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001248.tgz#26ab45e340f155ea5da2920dadb76a533cb8ebce" + integrity sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw== canonical-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/canonical-path/-/canonical-path-1.0.0.tgz#fcb470c23958def85081856be7a86e904f180d1d" integrity sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg== -capture-stack-trace@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" - integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== - cardinal@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-2.1.1.tgz#7cc1055d822d212954d07b085dea251cc7bc5505" @@ -4476,30 +3357,6 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chai@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" - integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== - dependencies: - assertion-error "^1.1.0" - check-error "^1.0.2" - deep-eql "^3.0.1" - get-func-name "^2.0.0" - pathval "^1.1.0" - type-detect "^4.0.5" - -chai@^4.1.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.4.tgz#b55e655b31e1eac7099be4c08c21964fce2e6c49" - integrity sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA== - dependencies: - assertion-error "^1.1.0" - check-error "^1.0.2" - deep-eql "^3.0.1" - get-func-name "^2.0.0" - pathval "^1.1.1" - type-detect "^4.0.5" - "chainsaw@>=0.0.7 <0.1": version "0.0.9" resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.0.9.tgz#11a05102d1c4c785b6d0415d336d5a3a1612913e" @@ -4514,7 +3371,7 @@ chainsaw@~0.1.0: dependencies: traverse ">=0.3.0 <0.4" -chalk@2.x, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: +chalk@2.x, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -4542,29 +3399,19 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== +chalk@^4.1.0, chalk@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" -char-spinner@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/char-spinner/-/char-spinner-1.0.1.tgz#e6ea67bd247e107112983b7ab0479ed362800081" - integrity sha1-5upnvSR+EHESmDt6sEee02KAAIE= - chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -check-error@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" - integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= - check-side-effects@0.0.23: version "0.0.23" resolved "https://registry.yarnpkg.com/check-side-effects/-/check-side-effects-0.0.23.tgz#0daa99d6c26be01467483f3ae0bdb3c4b22d59b2" @@ -4577,20 +3424,20 @@ check-side-effects@0.0.23: rollup-plugin-node-resolve "~4.2.3" rollup-plugin-terser "^7.0.1" -"chokidar@>=2.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.0.2: - version "3.3.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" - integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.0.2, chokidar@^3.4.0, chokidar@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== dependencies: - anymatch "~3.1.1" + anymatch "~3.1.2" braces "~3.0.2" - glob-parent "~5.1.0" + glob-parent "~5.1.2" is-binary-path "~2.1.0" is-glob "~4.0.1" normalize-path "~3.0.0" - readdirp "~3.3.0" + readdirp "~3.6.0" optionalDependencies: - fsevents "~2.1.2" + fsevents "~2.3.2" chokidar@^2.0.0, chokidar@^2.1.8: version "2.1.8" @@ -4611,37 +3458,7 @@ chokidar@^2.0.0, chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chokidar@^3.4.1: - version "3.4.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" - integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.5.0" - optionalDependencies: - fsevents "~2.1.2" - -chokidar@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" - integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.5.0" - optionalDependencies: - fsevents "~2.3.1" - -chownr@^1.1.1, chownr@^1.1.2: +chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== @@ -4652,29 +3469,19 @@ chownr@^2.0.0: integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== chrome-trace-event@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== - dependencies: - tslib "^1.9.0" + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== -ci-info@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" - integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -circular-dependency-plugin@5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz#e09dbc2dd3e2928442403e2d45b41cea06bc0a93" - integrity sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw== +circular-dependency-plugin@5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz#39e836079db1d3cf2f988dc48c5188a44058b600" + integrity sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ== cjson@^0.3.1: version "0.3.3" @@ -4684,9 +3491,9 @@ cjson@^0.3.1: json-parse-helpfulerror "^1.0.3" clang-format@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/clang-format/-/clang-format-1.4.0.tgz#1ee2f10637eb5bb0bd7d0b82c949af68e848367e" - integrity sha512-NrdyUnHJOGvMa60vbWk7GJTvOdhibj3uK5C0FlwdNG4301OUvqEJTFce9I9x8qw2odBbIVrJ+9xbsFS3a4FbDA== + version "1.5.0" + resolved "https://registry.yarnpkg.com/clang-format/-/clang-format-1.5.0.tgz#1bd4c47b66a1a02556b192b93f5505e7ccec84fb" + integrity sha512-C1LucFX7E+ABVYcPEbBHM4PYQ2+WInXsqsLpFlQ9cmRfSbk7A7b1I06h/nE4bQ3MsyEkb31jY2gC0Dtc76b4IA== dependencies: async "^1.5.2" glob "^7.0.0" @@ -4702,48 +3509,35 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -cldr-data-downloader@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/cldr-data-downloader/-/cldr-data-downloader-0.3.5.tgz#f5445cb9d222bf7fa8426c62e0ae9d7d4897b243" - integrity sha512-uyIMa1K98DAp/PE7dYpq2COIrkWn681Atjng1GgEzeJzYb1jANtugtp9wre6+voE+qzVC8jtWv6E/xZ1GTJdlw== +cldr@5.7.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/cldr/-/cldr-5.7.0.tgz#8c466bdc2500fd293462029631011adcd55bc5ae" + integrity sha512-Pyoh0kwXJIUvbAvQoQqKIr0pKWwWfkcYCIDKWmVIxJ9HftSsg57AqyfW1EzWRcP4nJj40WX4vB/lXQ+Uw4NbNA== dependencies: - adm-zip "0.4.11" - mkdirp "0.5.0" - nopt "3.0.x" - progress "1.1.8" - q "1.0.1" - request "~2.87.0" - request-progress "0.3.1" - -cldr@4.10.0: - version "4.10.0" - resolved "https://registry.yarnpkg.com/cldr/-/cldr-4.10.0.tgz#5a72a693728eca491bc8ee027d60fa4dc750a24f" - integrity sha512-c5IVGFyPNs0qiTKTBJxYBVh9WK+Vz5RHATJEtjKCkrBUZkj6wAl79dYxqdiFEOD4JlUVDHCpZRnYbz2y6A0JnA== - dependencies: - lodash "^4.17.10" + escodegen "^1.12.0" + esprima "^4.0.1" memoizeasync "^1.1.0" passerror "^1.1.1" pegjs "^0.10.0" seq "^0.3.5" - uglify-js "^1.3.3" unicoderegexp "^0.4.1" - xmldom "^0.1.27" + xmldom "^0.3.0" xpath "^0.0.27" -cldrjs@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cldrjs/-/cldrjs-0.5.0.tgz#37be92d8d1a8e66c8ee12f1303ed316d85d8eb37" - integrity sha1-N76S2NGo5myO4S8TA+0xbYXY6zc= +cldrjs@0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/cldrjs/-/cldrjs-0.5.5.tgz#5c92ca2de89a8a16dea76cb2dfc4e00104428e52" + integrity sha512-KDwzwbmLIPfCgd8JERVDpQKrUUM1U4KpFJJg2IROv89rF172lLufoJnqJ/Wea6fXL5bO6WjuLMzY8V52UWPvkA== clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= +cli-boxes@^2.2.0, cli-boxes@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== cli-color@^1.2.0: version "1.4.0" @@ -4772,34 +3566,29 @@ cli-cursor@^3.1.0: restore-cursor "^3.1.0" cli-progress@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.7.0.tgz#8983a67ab692aad8598511b9d9e3b35e2dead43e" - integrity sha512-xo2HeQ3vNyAO2oYF5xfrk5YM6jzaDNEbeJRLAQir6QlH54g4f6AXW+fLyJ/f12gcTaCbJznsOdQcr/yusp/Kjg== + version "3.9.0" + resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.9.0.tgz#25db83447deb812e62d05bac1af9aec5387ef3d4" + integrity sha512-g7rLWfhAo/7pF+a/STFH/xPyosaL1zgADhI0OM83hl3c7S43iGvJWEAV2QuDOnQ8i6EMBj/u4+NTd0d5L+4JfA== dependencies: colors "^1.1.2" string-width "^4.2.0" -cli-spinners@^2.0.0, cli-spinners@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.2.0.tgz#e8b988d9206c692302d8ee834e7a85c0144d8f77" - integrity sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ== - -cli-spinners@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.4.0.tgz#c6256db216b878cfba4720e719cec7cf72685d7f" - integrity sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA== +cli-spinners@^2.0.0, cli-spinners@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.0.tgz#36c7dc98fb6a9a76bd6238ec3f77e2425627e939" + integrity sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q== cli-table@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" - integrity sha1-9TsFJmqLGguTSz0IIebi3FkUriM= + version "0.3.6" + resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.6.tgz#e9d6aa859c7fe636981fd3787378c2a20bce92fc" + integrity sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ== dependencies: colors "1.0.3" cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== cli-width@^3.0.0: version "3.0.0" @@ -4815,15 +3604,6 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -4833,6 +3613,15 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -4856,6 +3645,13 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + clone-stats@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" @@ -4880,20 +3676,6 @@ cloneable-readable@^1.0.0: process-nextick-args "^2.0.0" readable-stream "^2.3.5" -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -4935,15 +3717,15 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@^1.0.0, color-name@~1.1.4: +color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== color-string@^1.5.2: - version "1.5.3" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" - integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== + version "1.6.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.6.0.tgz#c3915f61fe267672cb7e1e064c9d692219f6c312" + integrity sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA== dependencies: color-name "^1.0.0" simple-swizzle "^0.2.2" @@ -4953,25 +3735,30 @@ color-support@^1.1.3: resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -color@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" - integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== +color@3.0.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/color/-/color-3.0.0.tgz#d920b4328d534a3ac8295d68f7bd4ba6c427be9a" + integrity sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w== dependencies: color-convert "^1.9.1" color-string "^1.5.2" -colorette@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" - integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== +colord@^2.0.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.4.0.tgz#21a7b969ded0f7131bbf38fc64fc038c3b592de5" + integrity sha512-2306/NeTDOykDwvFQK0ctnP+9I5KQdqVm+IJAM6MsAr4vvy1llAdJyax4YmZoqTxdJ/lvRBwR8MqyJi/tupBAw== -colors@1.0.3, colors@1.0.x: +colorette@^1.2.1, colorette@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" + integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== + +colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= -colors@^1.1.0, colors@^1.1.2, colors@^1.4.0: +colors@^1.1.0, colors@^1.1.2, colors@^1.2.1, colors@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== @@ -4981,14 +3768,22 @@ colors@~1.2.1: resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.5.tgz#89c7ad9a374bc030df8013241f68136ed8835afc" integrity sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg== -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.5, combined-stream@~1.0.6: +colorspace@1.1.x: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.2.tgz#e0128950d082b86a2168580796a0aa5d6c68d8c5" + integrity sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ== + dependencies: + color "3.0.x" + text-hex "1.0.x" + +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" -commander@^2.12.1, commander@^2.13.0, commander@^2.16.0, commander@^2.19.0, commander@^2.20.0, commander@^2.7.1, commander@^2.8.1, commander@~2.20.3: +commander@^2.12.1, commander@^2.16.0, commander@^2.20.0, commander@^2.20.3, commander@^2.7.1, commander@^2.8.1: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -4998,19 +3793,16 @@ commander@^4.0.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +commander@^7.1.0, commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= -compare-func@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648" - integrity sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg= - dependencies: - array-ify "^1.0.0" - dot-prop "^3.0.0" - compare-func@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" @@ -5046,32 +3838,15 @@ component-inherit@0.0.3: resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= -compose-function@3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" - integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= - dependencies: - arity-n "^1.0.4" - -compress-commons@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-1.2.2.tgz#524a9f10903f3a813389b0225d27c48bb751890f" - integrity sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8= - dependencies: - buffer-crc32 "^0.2.1" - crc32-stream "^2.0.0" - normalize-path "^2.0.0" - readable-stream "^2.0.0" - -compress-commons@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-2.1.1.tgz#9410d9a534cf8435e3fbbb7c6ce48de2dc2f0610" - integrity sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q== +compress-commons@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-4.1.1.tgz#df2a09a7ed17447642bad10a85cc9a19e5c42a7d" + integrity sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ== dependencies: buffer-crc32 "^0.2.13" - crc32-stream "^3.0.1" + crc32-stream "^4.0.2" normalize-path "^3.0.0" - readable-stream "^2.3.6" + readable-stream "^3.6.0" compressible@~2.0.16: version "2.0.18" @@ -5098,7 +3873,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0, concat-stream@^1.6.0: +concat-stream@^1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -5118,18 +3893,6 @@ concat-stream@^2.0.0: readable-stream "^3.0.2" typedarray "^0.0.6" -configstore@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" - integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw== - dependencies: - dot-prop "^4.1.0" - graceful-fs "^4.1.2" - make-dir "^1.0.0" - unique-string "^1.0.0" - write-file-atomic "^2.0.0" - xdg-basedir "^3.0.0" - configstore@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" @@ -5147,13 +3910,6 @@ connect-history-api-fallback@^1.6.0: resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== -connect-query@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/connect-query/-/connect-query-1.0.0.tgz#de44f577209da2404d1fc04692d1a4118e582119" - integrity sha1-3kT1dyCdokBNH8BGktGkEY5YIRk= - dependencies: - qs "~6.4.0" - connect@^3.6.0, connect@^3.6.2: version "3.7.0" resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" @@ -5164,15 +3920,10 @@ connect@^3.6.0, connect@^3.6.2: parseurl "~1.3.3" utils-merge "1.0.1" -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= content-disposition@0.5.3: version "0.5.3" @@ -5181,19 +3932,11 @@ content-disposition@0.5.3: dependencies: safe-buffer "5.1.2" -content-type@~1.0.4: +content-type@^1.0.4, content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -conventional-changelog-angular@^1.6.6: - version "1.6.6" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz#b27f2b315c16d0a1f23eb181309d0e6a4698ea0f" - integrity sha512-suQnFSqCxRwyBxY68pYTsFkG0taIdinHLNEAX5ivtw8bCRnIgnpvcHmlR/yjUyZIrNPYAoXlY1WiEKWgSE4BNg== - dependencies: - compare-func "^1.3.1" - q "^1.5.1" - conventional-changelog-angular@^5.0.12: version "5.0.12" resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9" @@ -5202,13 +3945,6 @@ conventional-changelog-angular@^5.0.12: compare-func "^2.0.0" q "^1.5.1" -conventional-changelog-atom@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-2.0.3.tgz#3bd14280aa09fe3ec49a0e8fe97b5002db02aad4" - integrity sha512-szZe2ut97qNO6vCCMkm1I/tWu6ol4Rr8a9Lx0y/VlpDnpY0PNp+oGpFgU55lplhx+I3Lro9Iv4/gRj0knfgjzg== - dependencies: - q "^1.5.1" - conventional-changelog-atom@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz#a759ec61c22d1c1196925fca88fe3ae89fd7d8de" @@ -5216,13 +3952,6 @@ conventional-changelog-atom@^2.0.8: dependencies: q "^1.5.1" -conventional-changelog-codemirror@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.3.tgz#ebc088154684f8f5171446b8d546ba6b460d46f2" - integrity sha512-t2afackdgFV2yBdHhWPqrKbpaQeVnz2hSJKdWqjasPo5EpIB6TBL0er3cOP1mnGQmuzk9JSvimNSuqjWGDtU5Q== - dependencies: - q "^1.5.1" - conventional-changelog-codemirror@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz#398e9530f08ce34ec4640af98eeaf3022eb1f7dc" @@ -5231,43 +3960,24 @@ conventional-changelog-codemirror@^2.0.8: q "^1.5.1" conventional-changelog-conventionalcommits@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.5.0.tgz#a02e0b06d11d342fdc0f00c91d78265ed0bc0a62" - integrity sha512-buge9xDvjjOxJlyxUnar/+6i/aVEVGA7EEh4OafBCXPlLUQPGbRUBhBUveWRxzvR8TEjhKEP4BdepnpG2FSZXw== + version "4.6.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.0.tgz#7fc17211dbca160acf24687bd2fdd5fd767750eb" + integrity sha512-sj9tj3z5cnHaSJCYObA9nISf7eq/YjscLPoq6nmew4SiOjxqL2KRpK20fjnjVbpNDjJ2HR3MoVcWKXwbVvzS0A== dependencies: compare-func "^2.0.0" lodash "^4.17.15" q "^1.5.1" -conventional-changelog-core@^3.1.0: - version "3.2.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-3.2.3.tgz#b31410856f431c847086a7dcb4d2ca184a7d88fb" - integrity sha512-LMMX1JlxPIq/Ez5aYAYS5CpuwbOk6QFp8O4HLAcZxe3vxoCtABkhfjetk8IYdRB9CDQGwJFLR3Dr55Za6XKgUQ== - dependencies: - conventional-changelog-writer "^4.0.6" - conventional-commits-parser "^3.0.3" - dateformat "^3.0.0" - get-pkg-repo "^1.0.0" - git-raw-commits "2.0.0" - git-remote-origin-url "^2.0.0" - git-semver-tags "^2.0.3" - lodash "^4.2.1" - normalize-package-data "^2.3.5" - q "^1.5.1" - read-pkg "^3.0.0" - read-pkg-up "^3.0.0" - through2 "^3.0.0" - conventional-changelog-core@^4.2.1: - version "4.2.2" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-4.2.2.tgz#f0897df6d53b5d63dec36b9442bd45354f8b3ce5" - integrity sha512-7pDpRUiobQDNkwHyJG7k9f6maPo9tfPzkSWbRq97GGiZqisElhnvUZSvyQH20ogfOjntB5aadvv6NNcKL1sReg== + version "4.2.3" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-4.2.3.tgz#ce44d4bbba4032e3dc14c00fcd5b53fc00b66433" + integrity sha512-MwnZjIoMRL3jtPH5GywVNqetGILC7g6RQFvdb8LRU/fA/338JbeWAku3PZ8yQ+mtVRViiISqJlb0sOz0htBZig== dependencies: add-stream "^1.0.0" - conventional-changelog-writer "^4.0.18" + conventional-changelog-writer "^5.0.0" conventional-commits-parser "^3.2.0" dateformat "^3.0.0" - get-pkg-repo "^1.0.0" + get-pkg-repo "^4.0.0" git-raw-commits "^2.0.8" git-remote-origin-url "^2.0.0" git-semver-tags "^4.1.1" @@ -5276,16 +3986,8 @@ conventional-changelog-core@^4.2.1: q "^1.5.1" read-pkg "^3.0.0" read-pkg-up "^3.0.0" - shelljs "^0.8.3" through2 "^4.0.0" -conventional-changelog-ember@^2.0.1: - version "2.0.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-2.0.4.tgz#c29b78e4af7825cbecb6c3fd6086ca5c09471ac1" - integrity sha512-q1u73sO9uCnxN4TSw8xu6MRU8Y1h9kpwtcdJuNRwu/LSKI1IE/iuNSH5eQ6aLlQ3HTyrIpTfUuVybW4W0F17rA== - dependencies: - q "^1.5.1" - conventional-changelog-ember@^2.0.9: version "2.0.9" resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz#619b37ec708be9e74a220f4dcf79212ae1c92962" @@ -5293,13 +3995,6 @@ conventional-changelog-ember@^2.0.9: dependencies: q "^1.5.1" -conventional-changelog-eslint@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.4.tgz#8f4736a23e0cd97e890e76fccc287db2f205f2ff" - integrity sha512-CPwTUENzhLGl3auunrJxiIEWncAGaby7gOFCdj2gslIuOFJ0KPJVOUhRz4Da/I53sdo/7UncUJkiLg94jEsjxg== - dependencies: - q "^1.5.1" - conventional-changelog-eslint@^3.0.9: version "3.0.9" resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz#689bd0a470e02f7baafe21a495880deea18b7cdb" @@ -5307,13 +4002,6 @@ conventional-changelog-eslint@^3.0.9: dependencies: q "^1.5.1" -conventional-changelog-express@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-2.0.1.tgz#fea2231d99a5381b4e6badb0c1c40a41fcacb755" - integrity sha512-G6uCuCaQhLxdb4eEfAIHpcfcJ2+ao3hJkbLrw/jSK/eROeNfnxCJasaWdDAfFkxsbpzvQT4W01iSynU3OoPLIw== - dependencies: - q "^1.5.1" - conventional-changelog-express@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz#420c9d92a347b72a91544750bffa9387665a6ee8" @@ -5321,13 +4009,6 @@ conventional-changelog-express@^2.0.6: dependencies: q "^1.5.1" -conventional-changelog-jquery@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz#0208397162e3846986e71273b6c79c5b5f80f510" - integrity sha1-Agg5cWLjhGmG5xJztsecW1+A9RA= - dependencies: - q "^1.4.1" - conventional-changelog-jquery@^3.0.11: version "3.0.11" resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz#d142207400f51c9e5bb588596598e24bba8994bf" @@ -5335,21 +4016,6 @@ conventional-changelog-jquery@^3.0.11: dependencies: q "^1.5.1" -conventional-changelog-jscs@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz#0479eb443cc7d72c58bf0bcf0ef1d444a92f0e5c" - integrity sha1-BHnrRDzH1yxYvwvPDvHURKkvDlw= - dependencies: - q "^1.4.1" - -conventional-changelog-jshint@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.3.tgz#ef6e2caf2ee6ffdfda78fcdf7ce87cf6c512d728" - integrity sha512-Pc2PnMPcez634ckzr4EOWviwRSpZcURaK7bjyD9oK6N5fsC/a+3G7LW5m/JpcHPhA9ZxsfIbm7uqZ3ZDGsQ/sw== - dependencies: - compare-func "^1.3.1" - q "^1.5.1" - conventional-changelog-jshint@^2.0.9: version "2.0.9" resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz#f2d7f23e6acd4927a238555d92c09b50fe3852ff" @@ -5358,22 +4024,16 @@ conventional-changelog-jshint@^2.0.9: compare-func "^2.0.0" q "^1.5.1" -conventional-changelog-preset-loader@^2.0.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.0.tgz#580fa8ab02cef22c24294d25e52d7ccd247a9a6a" - integrity sha512-/rHb32J2EJnEXeK4NpDgMaAVTFZS3o1ExmjKMtYVgIC4MQn0vkNSbYpdGRotkfGGRWiqk3Ri3FBkiZGbAfIfOQ== - conventional-changelog-preset-loader@^2.3.4: version "2.3.4" resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== -conventional-changelog-writer@^4.0.18: - version "4.1.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.1.0.tgz#1ca7880b75aa28695ad33312a1f2366f4b12659f" - integrity sha512-WwKcUp7WyXYGQmkLsX4QmU42AZ1lqlvRW9mqoyiQzdD+rJWbTepdWoKJuwXTS+yq79XKnQNa93/roViPQrAQgw== +conventional-changelog-writer@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-5.0.0.tgz#c4042f3f1542f2f41d7d2e0d6cad23aba8df8eec" + integrity sha512-HnDh9QHLNWfL6E1uHz6krZEQOgm8hN7z/m7tT16xwd802fwgMN0Wqd7AQYVkhpsjDUx/99oo+nGgvKF657XP5g== dependencies: - compare-func "^2.0.0" conventional-commits-filter "^2.0.7" dateformat "^3.0.0" handlebars "^4.7.6" @@ -5384,39 +4044,6 @@ conventional-changelog-writer@^4.0.18: split "^1.0.0" through2 "^4.0.0" -conventional-changelog-writer@^4.0.6: - version "4.0.11" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.11.tgz#9f56d2122d20c96eb48baae0bf1deffaed1edba4" - integrity sha512-g81GQOR392I+57Cw3IyP1f+f42ME6aEkbR+L7v1FBBWolB0xkjKTeCWVguzRrp6UiT1O6gBpJbEy2eq7AnV1rw== - dependencies: - compare-func "^1.3.1" - conventional-commits-filter "^2.0.2" - dateformat "^3.0.0" - handlebars "^4.4.0" - json-stringify-safe "^5.0.1" - lodash "^4.17.15" - meow "^5.0.0" - semver "^6.0.0" - split "^1.0.0" - through2 "^3.0.0" - -conventional-changelog@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-2.0.3.tgz#779cff582c0091d2b24574003eaa82ef5ddf653d" - integrity sha512-4bcII9cJHSKb2qi9e8qGF6aJHLf/AB0dokhyR+X6QILTMl77s4l163vK+reXhajvfOYbbHQvsrWybr5+PKZwNA== - dependencies: - conventional-changelog-angular "^1.6.6" - conventional-changelog-atom "^2.0.0" - conventional-changelog-codemirror "^2.0.0" - conventional-changelog-core "^3.1.0" - conventional-changelog-ember "^2.0.1" - conventional-changelog-eslint "^3.0.0" - conventional-changelog-express "^2.0.0" - conventional-changelog-jquery "^0.1.0" - conventional-changelog-jscs "^0.1.0" - conventional-changelog-jshint "^2.0.0" - conventional-changelog-preset-loader "^2.0.1" - conventional-changelog@^3.1.24: version "3.1.24" resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-3.1.24.tgz#ebd180b0fd1b2e1f0095c4b04fd088698348a464" @@ -5434,14 +4061,6 @@ conventional-changelog@^3.1.24: conventional-changelog-jshint "^2.0.9" conventional-changelog-preset-loader "^2.3.4" -conventional-commits-filter@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.2.tgz#f122f89fbcd5bb81e2af2fcac0254d062d1039c1" - integrity sha512-WpGKsMeXfs21m1zIw4s9H5sys2+9JccTzpN6toXtxhpw2VNF2JUXwIakthKBy+LN4DvJm+TzWhxOMWOs1OFCFQ== - dependencies: - lodash.ismatch "^4.4.0" - modify-values "^1.0.0" - conventional-commits-filter@^2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" @@ -5450,33 +4069,7 @@ conventional-commits-filter@^2.0.7: lodash.ismatch "^4.4.0" modify-values "^1.0.0" -conventional-commits-parser@^3.0.3: - version "3.0.8" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.0.8.tgz#23310a9bda6c93c874224375e72b09fb275fe710" - integrity sha512-YcBSGkZbYp7d+Cr3NWUeXbPDFUN6g3SaSIzOybi8bjHL5IJ5225OSCxJJ4LgziyEJ7AaJtE9L2/EU6H7Nt/DDQ== - dependencies: - JSONStream "^1.0.4" - is-text-path "^1.0.1" - lodash "^4.17.15" - meow "^5.0.0" - split2 "^2.0.0" - through2 "^3.0.0" - trim-off-newlines "^1.0.0" - -conventional-commits-parser@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.0.tgz#9e261b139ca4b7b29bcebbc54460da36894004ca" - integrity sha512-XmJiXPxsF0JhAKyfA2Nn+rZwYKJ60nanlbSWwwkGwLQFbugsc0gv1rzc7VbbUWAzJfR1qR87/pNgv9NgmxtBMQ== - dependencies: - JSONStream "^1.0.4" - is-text-path "^1.0.1" - lodash "^4.17.15" - meow "^8.0.0" - split2 "^2.0.0" - through2 "^4.0.0" - trim-off-newlines "^1.0.0" - -conventional-commits-parser@^3.2.1: +conventional-commits-parser@^3.2.0, conventional-commits-parser@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz#ba44f0b3b6588da2ee9fd8da508ebff50d116ce2" integrity sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA== @@ -5489,18 +4082,13 @@ conventional-commits-parser@^3.2.1: through2 "^4.0.0" trim-off-newlines "^1.0.0" -convert-source-map@1.7.0, convert-source-map@^1.1.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== +convert-source-map@^1.1.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== dependencies: safe-buffer "~5.1.1" -convert-source-map@^0.3.3: - version "0.3.5" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" - integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= - cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -5516,17 +4104,12 @@ cookie@0.4.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== +copy-anything@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.3.tgz#842407ba02466b0df844819bbe3baebbe5d45d87" + integrity sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ== dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" + is-what "^3.12.0" copy-descriptor@^0.1.0: version "0.1.1" @@ -5534,68 +4117,62 @@ copy-descriptor@^0.1.0: integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= copy-props@^2.0.1: - version "2.0.4" - resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.4.tgz#93bb1cadfafd31da5bb8a9d4b41f471ec3a72dfe" - integrity sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A== + version "2.0.5" + resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.5.tgz#03cf9ae328d4ebb36f8f1d804448a6af9ee3f2d2" + integrity sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw== dependencies: - each-props "^1.3.0" - is-plain-object "^2.0.1" + each-props "^1.3.2" + is-plain-object "^5.0.0" -copy-webpack-plugin@6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.2.1.tgz#8015e4d5c5e637ab7b39c76daa9e03c7a4bf1ae5" - integrity sha512-VH2ZTMIBsx4p++Lmpg77adZ0KUyM5gFR/9cuTrbneNnJlcQXUFvsNariPqq2dq2kV3F2skHiDGPQCyKWy1+U0Q== +copy-webpack-plugin@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-8.1.1.tgz#3f697e162764925c2f0d235f380676125508fd26" + integrity sha512-rYM2uzRxrLRpcyPqGceRBDpxxUV8vcDqIKxAUKfcnFpcrPxT5+XvhTxv7XLjo5AvEJFPdAE3zCogG2JVahqgSQ== dependencies: - cacache "^15.0.5" - fast-glob "^3.2.4" - find-cache-dir "^3.3.1" + fast-glob "^3.2.5" glob-parent "^5.1.1" - globby "^11.0.1" - loader-utils "^2.0.0" + globby "^11.0.3" normalize-path "^3.0.0" - p-limit "^3.0.2" + p-limit "^3.1.0" schema-utils "^3.0.0" serialize-javascript "^5.0.1" - webpack-sources "^1.4.3" -core-js-compat@^3.6.2: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" - integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== +core-js-bundle@^3.10.2: + version "3.16.0" + resolved "https://registry.yarnpkg.com/core-js-bundle/-/core-js-bundle-3.16.0.tgz#d017dd1411e06cb534e5bcf048999bbd681364e9" + integrity sha512-AC5Rw9NehcBgC+B8Rg5Hf6b2YwX6mCU9KQyXJMLxR1CEhQ/vZpiAfSUxOkNSS1GxTO/1XxnGsOEwyDBvnhNFYg== + +core-js-compat@^3.14.0, core-js-compat@^3.6.2: + version "3.16.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.16.0.tgz#fced4a0a534e7e02f7e084bff66c701f8281805f" + integrity sha512-5D9sPHCdewoUK7pSUPfTF7ZhLh8k9/CoJXWUEo+F1dZT5Z1DVgcuRqUKhjeKW+YLb8f21rTFgWwQJiNw1hoZ5Q== dependencies: - browserslist "^4.8.5" + browserslist "^4.16.6" semver "7.0.0" -core-js@3.6.5: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" - integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== - -core-js@^2.4.1: - version "2.6.11" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" - integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== +core-js@3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.12.0.tgz#62bac86f7d7f087d40dba3e90a211c2c3c8559ea" + integrity sha512-SaMnchL//WwU2Ot1hhkPflE8gzo7uq1FGvUJ8GKmi3TOU7rGTHIU+eir1WGf6qOtTyxdfdcp10yPdGZ59sQ3hw== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +cors@^2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + corser@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" integrity sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c= -cosmiconfig@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - cosmiconfig@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" @@ -5607,66 +4184,37 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -crc32-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-2.0.0.tgz#e3cdd3b4df3168dd74e3de3fbbcb7b297fe908f4" - integrity sha1-483TtN8xaN10494/u8t7KX/pCPQ= +crc-32@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208" + integrity sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA== dependencies: - crc "^3.4.4" - readable-stream "^2.0.0" + exit-on-epipe "~1.0.1" + printj "~1.1.0" -crc32-stream@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-3.0.1.tgz#cae6eeed003b0e44d739d279de5ae63b171b4e85" - integrity sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w== +crc32-stream@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-4.0.2.tgz#c922ad22b38395abe9d3870f02fa8134ed709007" + integrity sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w== dependencies: - crc "^3.4.4" + crc-32 "^1.2.0" readable-stream "^3.4.0" -crc@^3.4.4: - version "3.8.0" - resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" - integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== - dependencies: - buffer "^5.1.0" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== +critters@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/critters/-/critters-0.0.10.tgz#edd0e962fc5af6c4adb6dbf1a71bae2d3f917000" + integrity sha512-p5VKhP1803+f+0Jq5P03w1SbiHtpAKm+1EpJHkiPxQPq0Vu9QLZHviJ02GRrWi0dlcJqrmzMWInbwp4d22RsGw== dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - -create-error-class@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= - dependencies: - capture-stack-trace "^1.0.0" - -create-hash@^1.1.0, create-hash@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" + chalk "^4.1.0" + css "^3.0.0" + parse5 "^6.0.1" + parse5-htmlparser2-tree-adapter "^6.0.1" + pretty-bytes "^5.3.0" cross-env@^5.1.3: version "5.2.1" @@ -5675,23 +4223,6 @@ cross-env@^5.1.3: dependencies: cross-spawn "^6.0.5" -cross-spawn@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" - integrity sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE= - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -5703,7 +4234,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0: +cross-spawn@^7.0.0, cross-spawn@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -5712,63 +4243,72 @@ cross-spawn@^7.0.0: shebang-command "^2.0.0" which "^2.0.1" -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= - crypto-random-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -css-color-names@0.0.4, css-color-names@^0.0.4: +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== + dependencies: + postcss "^7.0.5" + +css-color-names@^0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== +css-color-names@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-1.0.1.tgz#6ff7ee81a823ad46e020fa2fd6ab40a887e2ba67" + integrity sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA== + +css-declaration-sorter@^6.0.3: + version "6.1.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.1.1.tgz#77b32b644ba374bc562c0fc6f4fdaba4dfb0b749" + integrity sha512-BZ1aOuif2Sb7tQYY1GeCjG7F++8ggnwUkH5Ictw0mrdpqpEd+zWmcPdstnH2TItlb74FqR0DrVEieon221T/1Q== dependencies: - postcss "^7.0.1" timsort "^0.3.0" -css-loader@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.0.0.tgz#f0a48dfacc3ab9936a05ee16a09e7f313872e117" - integrity sha512-9g35eXRBgjvswyJWoqq/seWp+BOxvUl8IinVNTsUBFFxtwfEYvlmEn6ciyn0liXGbGh5HyJjPGCuobDSfqMIVg== +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== dependencies: - camelcase "^6.1.0" - cssesc "^3.0.0" - icss-utils "^5.0.0" + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" + +css-loader@5.2.4: + version "5.2.4" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.4.tgz#e985dcbce339812cb6104ef3670f08f9893a1536" + integrity sha512-OFYGyINCKkdQsTrSYxzGSFnGS4gNjcXkKkQgWxK138jgnPt+lepxdjSZNc8sHAl5vP3DhsJUxufWIjOwI8PMMw== + dependencies: + camelcase "^6.2.0" + icss-utils "^5.1.0" loader-utils "^2.0.0" - postcss "^8.1.1" + postcss "^8.2.10" postcss-modules-extract-imports "^3.0.0" postcss-modules-local-by-default "^4.0.0" postcss-modules-scope "^3.0.0" postcss-modules-values "^4.0.0" postcss-value-parser "^4.1.0" schema-utils "^3.0.0" - semver "^7.3.2" + semver "^7.3.5" + +css-minimizer-webpack-plugin@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.0.0.tgz#5b1edbffe1a3e6450d8cb53fb4f4c5013b7af313" + integrity sha512-yIrqG0pPphR1RoNx2wDxYmxRf2ubRChLDXxv7ccipEm5bRKsZRYp8n+2peeXehtTF5s3yNxlqsdz3WQOsAgUkw== + dependencies: + cssnano "^5.0.0" + jest-worker "^26.3.0" + p-limit "^3.0.2" + postcss "^8.2.9" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + source-map "^0.6.1" css-parse@~2.0.0: version "2.0.0" @@ -5777,41 +4317,36 @@ css-parse@~2.0.0: dependencies: css "^2.0.0" -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== +css-select@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" + integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== dependencies: boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" + css-what "^5.0.0" + domhandler "^4.2.0" + domutils "^2.6.0" + nth-check "^2.0.0" -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== +css-tree@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== dependencies: - mdn-data "2.0.4" + mdn-data "2.0.14" source-map "^0.6.1" -css-tree@1.0.0-alpha.39: - version "1.0.0-alpha.39" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb" - integrity sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA== - dependencies: - mdn-data "2.0.6" - source-map "^0.6.1" - -css-what@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" - integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== +css-what@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad" + integrity sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg== css@^2.0.0: version "2.2.4" @@ -5823,85 +4358,86 @@ css@^2.0.0: source-map-resolve "^0.5.2" urix "^0.1.0" +css@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" + integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== + dependencies: + inherits "^2.0.4" + source-map "^0.6.1" + source-map-resolve "^0.6.0" + +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-default@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" - integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== +cssnano-preset-default@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.1.3.tgz#caa54183a8c8df03124a9e23f374ab89df5a9a99" + integrity sha512-qo9tX+t4yAAZ/yagVV3b+QBKeLklQbmgR3wI7mccrDcR+bEk9iHgZN1E7doX68y9ThznLya3RDmR+nc7l6/2WQ== dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.2" - postcss-unique-selectors "^4.0.1" + css-declaration-sorter "^6.0.3" + cssnano-utils "^2.0.1" + postcss-calc "^8.0.0" + postcss-colormin "^5.2.0" + postcss-convert-values "^5.0.1" + postcss-discard-comments "^5.0.1" + postcss-discard-duplicates "^5.0.1" + postcss-discard-empty "^5.0.1" + postcss-discard-overridden "^5.0.1" + postcss-merge-longhand "^5.0.2" + postcss-merge-rules "^5.0.2" + postcss-minify-font-values "^5.0.1" + postcss-minify-gradients "^5.0.1" + postcss-minify-params "^5.0.1" + postcss-minify-selectors "^5.1.0" + postcss-normalize-charset "^5.0.1" + postcss-normalize-display-values "^5.0.1" + postcss-normalize-positions "^5.0.1" + postcss-normalize-repeat-style "^5.0.1" + postcss-normalize-string "^5.0.1" + postcss-normalize-timing-functions "^5.0.1" + postcss-normalize-unicode "^5.0.1" + postcss-normalize-url "^5.0.2" + postcss-normalize-whitespace "^5.0.1" + postcss-ordered-values "^5.0.2" + postcss-reduce-initial "^5.0.1" + postcss-reduce-transforms "^5.0.1" + postcss-svgo "^5.0.2" + postcss-unique-selectors "^5.0.1" -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= +cssnano-utils@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-2.0.1.tgz#8660aa2b37ed869d2e2f22918196a9a8b6498ce2" + integrity sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ== -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= - -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== +cssnano@^5.0.0: + version "5.0.7" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.0.7.tgz#e81894bdf31aa01a0ca3d1d0eee47be18f7f3012" + integrity sha512-7C0tbb298hef3rq+TtBbMuezBQ9VrFtrQEsPNuBKNVgWny/67vdRsnq8EoNu7TRjAHURgYvWlRIpCUmcMZkRzw== dependencies: - postcss "^7.0.0" + cssnano-preset-default "^5.1.3" + is-resolvable "^1.1.0" + lilconfig "^2.0.3" + yaml "^1.10.2" -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== - -cssnano@4.1.10: - version "4.1.10" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" - integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== +csso@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.7" - is-resolvable "^1.0.0" - postcss "^7.0.0" - -csso@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903" - integrity sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ== - dependencies: - css-tree "1.0.0-alpha.39" + css-tree "^1.1.2" csv-streamify@^3.0.4: version "3.0.4" @@ -5910,28 +4446,11 @@ csv-streamify@^3.0.4: dependencies: through2 "2.0.1" -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= - dependencies: - array-find-index "^1.0.1" - custom-event@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU= -cycle@1.0.x: - version "1.0.3" - resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2" - integrity sha1-IegLK+hYD5i0aPN5QwZisEbDStI= - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" @@ -5940,13 +4459,6 @@ d@1, d@^1.0.1: es5-ext "^0.10.50" type "^1.0.1" -dargs@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" - integrity sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc= - dependencies: - number-is-nan "^1.0.0" - dargs@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" @@ -5959,6 +4471,11 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +data-uri-to-buffer@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" + integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== + date-format@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/date-format/-/date-format-2.1.0.tgz#31d5b5ea211cf5fd764cd38baf9d033df7e125cf" @@ -5976,49 +4493,35 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@3.1.0, debug@=3.1.0, debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - -debug@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" - integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg== - dependencies: - ms "^2.1.1" - -debug@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" - integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== +debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== dependencies: ms "2.1.2" -debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== +debug@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== dependencies: - ms "^2.1.1" + ms "2.1.2" -debug@^3.1.0: +debug@^3.1.0, debug@^3.1.1, debug@^3.2.6: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" -decamelize-keys@^1.0.0, decamelize-keys@^1.1.0: +debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +decamelize-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= @@ -6026,7 +4529,7 @@ decamelize-keys@^1.0.0, decamelize-keys@^1.1.0: decamelize "^1.1.0" map-obj "^1.0.0" -decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: +decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -6036,19 +4539,19 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= -decomment@^0.9.2: - version "0.9.2" - resolved "https://registry.yarnpkg.com/decomment/-/decomment-0.9.2.tgz#4dffdfbe96a32b0fdf301f758b7f92f7fbe82ab4" - integrity sha512-sblyUmOJZxiL7oJ2ogJS6jtl/67+CTOW87SrYE/96u3PhDYikYoLCdLzcnceToiQejOLlqNnLCkaxx/+nE/ehg== +decomment@^0.9.3: + version "0.9.4" + resolved "https://registry.yarnpkg.com/decomment/-/decomment-0.9.4.tgz#fa40335bd90e3826d5c1984276e390525ff856d5" + integrity sha512-8eNlhyI5cSU4UbBlrtagWpR03dqXcE5IR9zpe7PnO6UzReXDskucsD8usgrzUmQ6qJ3N82aws/p/mu/jqbURWw== dependencies: esprima "4.0.1" -deep-eql@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" - integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= dependencies: - type-detect "^4.0.0" + mimic-response "^1.0.0" deep-equal@^1.0.1: version "1.1.1" @@ -6067,6 +4570,11 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== +deep-freeze@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/deep-freeze/-/deep-freeze-0.0.1.tgz#3a0b0005de18672819dfd38cd31f91179c893e84" + integrity sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ= + deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -6099,7 +4607,17 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -define-properties@^1.1.2, define-properties@^1.1.3: +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== @@ -6128,6 +4646,15 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" +degenerator@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-2.2.0.tgz#49e98c11fa0293c5b26edfbb52f15729afcdb254" + integrity sha512-aiQcQowF01RxFI4ZLFMpzyotbQonhNpBao6dkI8JPk5a+hmSjR5ErHp2CQySmQe8os3VBqLCIh87nDBgZXvsmg== + dependencies: + ast-types "^0.13.2" + escodegen "^1.8.1" + esprima "^4.0.0" + del@^2.2.0: version "2.2.2" resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" @@ -6159,7 +4686,12 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -depd@~1.1.2: +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +depd@^1.1.2, depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= @@ -6169,35 +4701,27 @@ depd@~2.0.0: resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -dependency-graph@^0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.7.2.tgz#91db9de6eb72699209d88aea4c1fd5221cac1c49" - integrity sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ== +dependency-graph@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.11.0.tgz#ac0ce7ed68a54da22165a85e97a01d53f5eb2e27" + integrity sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg== -dependency-tree@^7.0.2: - version "7.2.1" - resolved "https://registry.yarnpkg.com/dependency-tree/-/dependency-tree-7.2.1.tgz#41c8f6feb54a2ae32475c0158e8d2c2696bb7f54" - integrity sha512-nBxnjkqDW4LqAzBazy60V4lE0mAtIQ+oers/GIIvVvGYVdCD9+RNNd4G9jjstyz7ZFVg/j/OiYCvK5MjoVqA2w== +dependency-tree@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/dependency-tree/-/dependency-tree-8.1.1.tgz#1a309f5a860b3285f7b1638c98ce48c8906ae6e6" + integrity sha512-bl5U16VQpaYxD0xvcnCH/dTctCiWnsVWymh9dNjbm4T00Hm21flu1VLnNueKCj7+3uusbcJhKKKtiWrpU0I+Nw== dependencies: - commander "^2.19.0" - debug "^4.1.1" - filing-cabinet "^2.5.1" - precinct "^6.2.0" - typescript "^3.7.5" + commander "^2.20.3" + debug "^4.3.1" + filing-cabinet "^3.0.0" + precinct "^8.0.0" + typescript "^3.9.7" -deprecation@^2.0.0: +deprecation@^2.0.0, deprecation@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - destroy@^1.0.4, destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" @@ -6209,17 +4733,17 @@ detect-file@^1.0.0: integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== -detective-amd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/detective-amd/-/detective-amd-3.0.0.tgz#40c8e21e229df8bca1ee2d4b952a7b67b01e2a5a" - integrity sha512-kOpKHyabdSKF9kj7PqYHLeHPw+TJT8q2u48tZYMkIcas28el1CYeLEJ42Nm+563/Fq060T5WknfwDhdX9+kkBQ== +detective-amd@^3.0.1, detective-amd@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detective-amd/-/detective-amd-3.1.0.tgz#92daee3214a0ca4522646cf333cac90a3fca6373" + integrity sha512-G7wGWT6f0VErjUkE2utCm7IUshT7nBh7aBBH2VBOiY9Dqy2DMens5iiOvYCuhstoIxRKLrnOvVAz4/EyPIAjnw== dependencies: - ast-module-types "^2.3.1" - escodegen "^1.8.0" + ast-module-types "^2.7.0" + escodegen "^2.0.0" get-amd-module-type "^3.0.0" node-source-walk "^4.0.0" @@ -6231,10 +4755,10 @@ detective-cjs@^3.1.1: ast-module-types "^2.4.0" node-source-walk "^4.0.0" -detective-es6@^2.0.0, detective-es6@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detective-es6/-/detective-es6-2.1.0.tgz#7848feaec92279d82f7b3a98d8e1f5d93483a0f7" - integrity sha512-QSHqKGOp/YBIfmIqKXaXeq2rlL+bp3bcIQMfZ+0PvKzRlELSOSZxKRvpxVcxlLuocQv4QnOfuWGniGrmPbz8MQ== +detective-es6@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/detective-es6/-/detective-es6-2.2.0.tgz#8f2baba3f8cd90a5cfd748f5ac436f0158ed2585" + integrity sha512-fSpNY0SLER7/sVgQZ1NxJPwmc9uCTzNgdkQDhAaj8NPYwr7Qji9QBcmbNvtMCnuuOGMuKn3O7jv0An+/WRWJZQ== dependencies: node-source-walk "^4.0.0" @@ -6247,17 +4771,27 @@ detective-less@^1.0.2: gonzales-pe "^4.2.3" node-source-walk "^4.0.0" -detective-postcss@^3.0.0, detective-postcss@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/detective-postcss/-/detective-postcss-3.0.1.tgz#511921951f66135e17d0ece2e7604c6e4966c9c6" - integrity sha512-tfTS2GdpUal5NY0aCqI4dpEy8Xfr88AehYKB0iBIZvo8y2g3UsrcDnrp9PR2FbzoW7xD5Rip3NJW7eCSvtqdUw== +detective-postcss@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detective-postcss/-/detective-postcss-4.0.0.tgz#24e69b465e5fefe7a6afd05f7e894e34595dbf51" + integrity sha512-Fwc/g9VcrowODIAeKRWZfVA/EufxYL7XfuqJQFroBKGikKX83d2G7NFw6kDlSYGG3LNQIyVa+eWv1mqre+v4+A== dependencies: debug "^4.1.1" is-url "^1.2.4" - postcss "^7.0.2" - postcss-values-parser "^1.5.0" + postcss "^8.1.7" + postcss-values-parser "^2.0.1" -detective-sass@^3.0.0, detective-sass@^3.0.1: +detective-postcss@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/detective-postcss/-/detective-postcss-5.0.0.tgz#7d39bde17a280e26d0b43130fd735a4a75786fb0" + integrity sha512-IBmim4GTEmZJDBOAoNFBskzNryTmYpBq+CQGghKnSGkoGWascE8iEo98yA+ZM4N5slwGjCr/NxCm+Kzg+q3tZg== + dependencies: + debug "^4.3.1" + is-url "^1.2.4" + postcss "^8.2.13" + postcss-values-parser "^5.0.0" + +detective-sass@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/detective-sass/-/detective-sass-3.0.1.tgz#496b819efd1f5c4dd3f0e19b43a8634bdd6927c4" integrity sha512-oSbrBozRjJ+QFF4WJFbjPQKeakoaY1GiR380NPqwdbWYd5wfl5cLWv0l6LsJVqrgWfFN1bjFqSeo32Nxza8Lbw== @@ -6266,7 +4800,7 @@ detective-sass@^3.0.0, detective-sass@^3.0.1: gonzales-pe "^4.2.3" node-source-walk "^4.0.0" -detective-scss@^2.0.0, detective-scss@^2.0.1: +detective-scss@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/detective-scss/-/detective-scss-2.0.1.tgz#06f8c21ae6dedad1fccc26d544892d968083eaf8" integrity sha512-VveyXW4WQE04s05KlJ8K0bG34jtHQVgTc9InspqoQxvnelj/rdgSAy7i2DXAazyQNFKlWSWbS+Ro2DWKFOKTPQ== @@ -6280,15 +4814,15 @@ detective-stylus@^1.0.0: resolved "https://registry.yarnpkg.com/detective-stylus/-/detective-stylus-1.0.0.tgz#50aee7db8babb990381f010c63fabba5b58e54cd" integrity sha1-UK7n24uruZA4HwEMY/q7pbWOVM0= -detective-typescript@^5.1.1, detective-typescript@^5.7.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/detective-typescript/-/detective-typescript-5.7.0.tgz#513a000e08bcfa0b5656fc7e499a554659b9dda8" - integrity sha512-4SQeACXWAjIOsd2kJykPL8gWC9nVA+z8w7KtAdtd/7BCpDfrpI2ZA7pdhsmHv/zxf3ofeqpYi72vCkZ65bAjtA== +detective-typescript@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/detective-typescript/-/detective-typescript-7.0.0.tgz#8c8917f2e51d9e4ee49821abf759ff512dd897f2" + integrity sha512-y/Ev98AleGvl43YKTNcA2Q+lyFmsmCfTTNWy4cjEJxoLkbobcXtRS0Kvx06daCgr2GdtlwLfNzL553BkktfJoA== dependencies: - "@typescript-eslint/typescript-estree" "^2.4.0" - ast-module-types "^2.5.0" + "@typescript-eslint/typescript-estree" "^4.8.2" + ast-module-types "^2.7.1" node-source-walk "^4.2.0" - typescript "^3.6.4" + typescript "^3.9.7" devtools-protocol@0.0.809251: version "0.0.809251" @@ -6300,29 +4834,15 @@ di@^0.0.1: resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" integrity sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw= -didyoumean@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.1.tgz#e92edfdada6537d484d73c0172fd1eba0c4976ff" - integrity sha1-6S7f2tplN9SE1zwBcv0eugxJdv8= - -diff@^3.2.0, diff@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== - diff@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" +diff@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== dir-glob@^3.0.1: version "3.0.1" @@ -6337,9 +4857,9 @@ dns-equal@^1.0.0: integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= dns-packet@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" - integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + version "1.3.4" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" + integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== dependencies: ip "^1.1.0" safe-buffer "^5.0.1" @@ -6369,75 +4889,48 @@ dom-serialize@^2.2.0: extend "^3.0.0" void-elements "^2.0.0" -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== +dom-serializer@^1.0.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" + integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== dependencies: domelementtype "^2.0.1" + domhandler "^4.2.0" entities "^2.0.0" -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" + integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== -domelementtype@1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== +domhandler@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.0.tgz#f9768a5f034be60a89a27c2e4d0f74eba0d8b059" + integrity sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA== + dependencies: + domelementtype "^2.2.0" -domelementtype@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" - integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== - -domino@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/domino/-/domino-2.1.2.tgz#70e8367839ee8ad8bde3aeb4857cf3d93bd98b85" - integrity sha512-nzg76s4Smji9teyLwOnqqUCdFVOho+OQFqUwp+42Wo+SEZ1FGw7uhemv6OKk2qp8YIgnGB3jVt0sJWU96wbPgA== - -domino@^2.1.2: +domino@~2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/domino/-/domino-2.1.6.tgz#fe4ace4310526e5e7b9d12c7de01b7f485a57ffe" integrity sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ== -domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== +domutils@^2.6.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.7.0.tgz#8ebaf0c41ebafcf55b0b72ec31c56323712c5442" + integrity sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg== dependencies: - dom-serializer "0" - domelementtype "1" + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" -dot-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" - integrity sha1-G3CK8JSknJoOfbyteQq6U52sEXc= - dependencies: - is-obj "^1.0.0" - -dot-prop@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" - integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== - dependencies: - is-obj "^1.0.0" - -dot-prop@^5.1.0: +dot-prop@^5.1.0, dot-prop@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== dependencies: is-obj "^2.0.0" -dot-prop@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" - integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== - dependencies: - is-obj "^2.0.0" - dotenv@^6.1.0: version "6.2.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" @@ -6456,11 +4949,11 @@ duplexer3@^0.1.4: integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= duplexer@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -duplexify@^3.4.2, duplexify@^3.6.0: +duplexify@^3.6.0: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== @@ -6470,7 +4963,17 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" -each-props@^1.3.0: +duplexify@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" + integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== + dependencies: + end-of-stream "^1.4.1" + inherits "^2.0.3" + readable-stream "^3.1.1" + stream-shift "^1.0.0" + +each-props@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333" integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA== @@ -6508,28 +5011,17 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.390: - version "1.3.394" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.394.tgz#50e927bb9f6a559ed21d284e7683ec5e2c784835" - integrity sha512-AEbSKBF49P+GgEP34w0VdYWn9SiMHgWUJbOkPEE1WZMIpWXtvfT9N0sd4Lv4jjD6DeSFjRuzm6+btn/yCz6h2Q== - -electron-to-chromium@^1.3.413: - version "1.3.425" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.425.tgz#96b7b5aa9115e42baf59be88d2432c9f406128c4" - integrity sha512-JTEOWiqCY4snuKuQAaFy0z6LK2Gdb8Lojkd/csQwpNHgMUF8I6QRjGVKk44IH46dHQhUFKzr4o6zxZrtDBjc2Q== - -elliptic@^6.0.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" - integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== +ejs@^3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" + integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw== dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" + jake "^10.6.1" + +electron-to-chromium@^1.3.723: + version "1.3.791" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.791.tgz#e38f325ff22470bdcff34409d58c0baf9c2e3e93" + integrity sha512-Tdx7w1fZpeWOOBluK+kXTAKCXyc79K65RB6Zp0+sPSZZhDjXlrxfGlXrlMGVVQUrKCyEZFQs1UBBLNz5IdbF0g== emoji-regex@^7.0.1: version "7.0.3" @@ -6551,12 +5043,17 @@ emojis-list@^3.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== +enabled@2.0.x: + version "2.0.0" + resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" + integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== + encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -encoding@^0.1.11: +encoding@^0.1.12: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== @@ -6610,56 +5107,46 @@ engine.io@~3.2.0: engine.io-parser "~2.1.0" ws "~3.3.1" -enhanced-resolve@5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.3.1.tgz#3f988d0d7775bdc2d96ede321dc81f8249492f57" - integrity sha512-G1XD3MRGrGfNcf6Hg0LVZG7GIKcYkbfHa5QMxt1HDUTdYoXH0JR1xXyg+MaKLF73E9A27uWNVxvFivNRYeUB6w== +enhanced-resolve@5.7.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz#525c5d856680fbd5052de453ac83e32049958b5c" + integrity sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw== dependencies: graceful-fs "^4.2.4" - tapable "^2.0.0" + tapable "^2.2.0" -enhanced-resolve@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" - integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== +enhanced-resolve@^5.3.2, enhanced-resolve@^5.8.0: + version "5.8.2" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz#15ddc779345cbb73e97c611cd00c01c1e7bf4d8b" + integrity sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA== dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -enhanced-resolve@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" - integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" + graceful-fs "^4.2.4" + tapable "^2.2.0" ent@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= -entities@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" - integrity sha1-blwtClYhtdra7O+AuQ7ftc13cvA= - entities@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" - integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -err-code@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" - integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== -errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + +errno@^0.1.1, errno@^0.1.3: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== dependencies: prr "~1.0.1" @@ -6670,33 +5157,12 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: - version "1.17.5" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" - integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.1.5" - is-regex "^1.0.5" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimleft "^2.1.1" - string.prototype.trimright "^2.1.1" +es-module-lexer@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.4.1.tgz#dda8c6a14d8f340a24e34331e0fab0cb50438e0e" + integrity sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA== -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: version "0.10.53" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== @@ -6705,7 +5171,7 @@ es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@ es6-symbol "~3.1.3" next-tick "~1.0.0" -es6-iterator@2.0.3, es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3: +es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= @@ -6741,7 +5207,7 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.3: d "^1.0.1" ext "^1.1.2" -es6-weak-map@^2.0.1, es6-weak-map@^2.0.2: +es6-weak-map@^2.0.1, es6-weak-map@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== @@ -6756,6 +5222,11 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escape-goat@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" + integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -6766,10 +5237,10 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escodegen@^1.8.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" - integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== +escodegen@^1.12.0, escodegen@^1.8.1: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== dependencies: esprima "^4.0.1" estraverse "^4.2.0" @@ -6778,41 +5249,63 @@ escodegen@^1.8.0: optionalDependencies: source-map "~0.6.1" -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== dependencies: - esrecurse "^4.1.0" + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-visitor-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" - integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== esprima@4.0.1, esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: - estraverse "^4.1.0" + estraverse "^5.2.0" -estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== +estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + estree-walker@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + esutils@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.1.6.tgz#c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375" @@ -6855,43 +5348,27 @@ event-target-shim@^5.0.0: integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== eventemitter3@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" - integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" - integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== +events-listener@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/events-listener/-/events-listener-1.1.0.tgz#dd49b4628480eba58fde31b870ee346b3990b349" + integrity sha512-Kd3EgYfODHueq6GzVfs/VUolh2EgJsS8hkO3KpnDrxVjU3eq63eXM2ujXkhPP+OkeUOhL8CxdfZbQXzryb5C4g== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== eventsource@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" - integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + version "1.1.0" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.0.tgz#00e8ca7c92109e94b0ddf32dac677d841028cfaf" + integrity sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg== dependencies: original "^1.0.0" -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -6905,11 +5382,45 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +exegesis-express@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/exegesis-express/-/exegesis-express-2.0.1.tgz#f162cdd68ee93dc14d832b02b1dbeab053697ee9" + integrity sha512-8ORl1YRygYGPdR+zcClMqzaU+JQuvdNIw/s0RNwYluxNecEHkDEcXFmO6A5T79p7e48KI8iXJYt6KIn4Z9z4bg== + dependencies: + exegesis "^2.5.7" + +exegesis@^2.5.7: + version "2.5.7" + resolved "https://registry.yarnpkg.com/exegesis/-/exegesis-2.5.7.tgz#232c4b01361bc2bf0d9d4c07549c479e77f2b7a3" + integrity sha512-Y0gEY3hgoLa80aMUm8rhhlIW3/KWo4uqN5hKJqok2GLh3maZjRLRC+p0gj33Jw3upAOKOXeRgScT5rtRoMyxwQ== + dependencies: + "@apidevtools/json-schema-ref-parser" "^9.0.3" + ajv "^6.12.2" + body-parser "^1.18.3" + content-type "^1.0.4" + deep-freeze "0.0.1" + events-listener "^1.1.0" + glob "^7.1.3" + json-ptr "^2.2.0" + json-schema-traverse "^1.0.0" + lodash "^4.17.11" + openapi3-ts "^2.0.1" + promise-breaker "^5.0.0" + pump "^3.0.0" + qs "^6.6.0" + raw-body "^2.3.3" + semver "^7.0.0" + exit-code@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/exit-code/-/exit-code-1.0.2.tgz#ce165811c9f117af6a5f882940b96ae7f9aecc34" integrity sha1-zhZYEcnxF69qX4gpQLlq5/muzDQ= +exit-on-epipe@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" + integrity sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw== + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -6993,7 +5504,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@^3.0.1, extend@^3.0.2, extend@~3.0.1, extend@~3.0.2: +extend@^3.0.0, extend@^3.0.2, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -7022,9 +5533,9 @@ extglob@^2.0.4: to-regex "^3.0.1" extract-zip@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.0.tgz#f53b71d44f4ff5a4527a2259ade000fb8b303492" - integrity sha512-i42GQ498yibjdvIhivUsRslx608whtGoFIhF26Z7O4MYncBxp8CwalOs1lnHy21A9sIohWO2+uiE4SRtC9JXDg== + version "2.0.1" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== dependencies: debug "^4.1.1" get-stream "^5.1.0" @@ -7042,11 +5553,6 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= -eyes@0.1.x: - version "0.1.8" - resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" - integrity sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A= - fancy-log@^1.3.2: version "1.3.3" resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" @@ -7057,27 +5563,21 @@ fancy-log@^1.3.2: parse-node-version "^1.0.0" time-stamp "^1.0.0" -fast-deep-equal@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" - integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= - fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.1.1, fast-glob@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" - integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== +fast-glob@^3.1.1, fast-glob@^3.2.5: + version "3.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" + integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" + glob-parent "^5.1.2" merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" + micromatch "^4.0.4" fast-json-stable-stringify@2.1.0, fast-json-stable-stringify@^2.0.0: version "2.1.0" @@ -7094,10 +5594,15 @@ fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fast-text-encoding@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.1.tgz#4a428566f74fc55ebdd447555b1eb4d9cf514455" - integrity sha512-x4FEgaz3zNRtJfLFqJmHWxkMDDvXVtaznj2V9jiP8ACUJrUgist4bP9FmDL2Vew2Y9mEQI/tG4GqabaitYp9CQ== +fast-safe-stringify@^2.0.4: + version "2.0.8" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.8.tgz#dc2af48c46cf712b683e849b2bbd446b32de936f" + integrity sha512-lXatBjf3WPjmWD6DpIZxkeSsCOwqI0maYMpgDlx8g4U2qi4lbjA9oH/HD2a87G+KfsUmo5WbJFmqBZlPxtptag== + +fast-text-encoding@^1.0.0, fast-text-encoding@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz#ec02ac8e01ab8a319af182dae2681213cfe9ce53" + integrity sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig== fast-url-parser@^1.1.3: version "1.1.3" @@ -7107,23 +5612,16 @@ fast-url-parser@^1.1.3: punycode "^1.3.2" fastq@^1.6.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" - integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q== + version "1.11.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.1.tgz#5d8175aae17db61947f8b162cfc7f63264d22807" + integrity sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw== dependencies: reusify "^1.0.4" -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.1: - version "0.11.3" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" - integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== dependencies: websocket-driver ">=0.5.1" @@ -7134,10 +5632,10 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" -figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== +fecha@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.1.tgz#0a83ad8f86ef62a091e22bb5a039cd03d23eecce" + integrity sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q== figures@^2.0.0: version "2.0.0" @@ -7153,47 +5651,46 @@ figures@^3.0.0: dependencies: escape-string-regexp "^1.0.5" -file-exists-dazinatorfork@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/file-exists-dazinatorfork/-/file-exists-dazinatorfork-1.0.2.tgz#cd8d0d85f63e39dc81eceb0b687c44a2cca95c47" - integrity sha512-r70c72ln2YHzQINNfxDp02hAhbGkt1HffZ+Du8oetWDLjDtFja/Lm10lUaSh9e+wD+7VDvPee0b0C9SAy8pWZg== - -file-loader@6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.1.1.tgz#a6f29dfb3f5933a1c350b2dbaa20ac5be0539baa" - integrity sha512-Klt8C4BjWSXYQAfhpYYkG4qHNTna4toMHEbWrI5IuVoxbU6uiDKeKAP99R8mmbJi3lvewn/jQBOgU4+NS3tDQw== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== -filesize@^3.1.3: - version "3.6.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" - integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== +file-uri-to-path@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba" + integrity sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg== -filing-cabinet@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/filing-cabinet/-/filing-cabinet-2.5.1.tgz#f920976d46310710595ed995f033a301570ef6ab" - integrity sha512-GWOdObzou2L0HrJUk8MpJa01q0ZOwuTwTssM2+P+ABJWEGlVWd6ueEatANFdin94/3rdkVSdqpH14VqCNqp3RA== +filelist@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.2.tgz#80202f21462d4d1c2e214119b1807c1bc0380e5b" + integrity sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ== + dependencies: + minimatch "^3.0.4" + +filesize@^6.1.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.4.0.tgz#914f50471dd66fdca3cefe628bd0cde4ef769bcd" + integrity sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ== + +filing-cabinet@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/filing-cabinet/-/filing-cabinet-3.0.0.tgz#08f9ceec5134f4a662926dd45b8a26eca1b5f622" + integrity sha512-o8Qac5qxZ1uVidR4Sd7ZQbbqObFZlqXU4xu1suAYg9PQPcQFNTzOmxQa/MehIDMgIvXHTb42mWPNV9l3eHBPSw== dependencies: app-module-path "^2.2.0" - commander "^2.13.0" - debug "^4.1.1" - decomment "^0.9.2" - enhanced-resolve "^4.1.0" + commander "^2.20.3" + debug "^4.3.1" + decomment "^0.9.3" + enhanced-resolve "^5.3.2" is-relative-path "^1.0.2" - module-definition "^3.0.0" - module-lookup-amd "^6.1.0" - resolve "^1.11.1" + module-definition "^3.3.1" + module-lookup-amd "^7.0.0" + resolve "^1.19.0" resolve-dependency-path "^2.0.0" sass-lookup "^3.0.0" stylus-lookup "^3.0.1" - typescript "^3.0.3" + typescript "^3.9.7" fill-range@^4.0.0: version "4.0.0" @@ -7234,15 +5731,6 @@ find-cache-dir@3.3.1, find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -7251,7 +5739,7 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.0.0, find-up@^2.1.0: +find-up@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= @@ -7281,13 +5769,6 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -find@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/find/-/find-0.3.0.tgz#4082e8fc8d8320f1a382b5e4f521b9bc50775cb8" - integrity sha512-iSd+O4OEYV/I36Zl8MdYJO0xD82wH528SaCieTVHhclgiYNe9y+yPKSwK+A7/WsmHL1EZ+pYUJBXWTL5qofksw== - dependencies: - traverse-chain "~0.1.0" - findup-sync@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" @@ -7308,13 +5789,6 @@ findup-sync@^3.0.0: micromatch "^3.0.4" resolve-dir "^1.0.1" -findup-sync@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16" - integrity sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY= - dependencies: - glob "~5.0.0" - fined@^1.0.1: version "1.2.0" resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" @@ -7326,14 +5800,17 @@ fined@^1.0.1: object.pick "^1.2.0" parse-filepath "^1.0.1" -firebase-tools@^7.11.0: - version "7.16.2" - resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-7.16.2.tgz#6f318de5d35346b48219e9f7da23ce4576eac16e" - integrity sha512-8jxJMdOtsiXeKGZx5nR3+uOdMAY8XqNZq28XOGPzD4r+6U6AAmbvyhj2500Jm6LtsXQhcKHPaWF4XICv+m3sKg== +firebase-tools@^9.0.0: + version "9.16.0" + resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-9.16.0.tgz#e6a1f5bf5efeb8fd940612815bb3b28810fe63bc" + integrity sha512-H/zyDDrQuZKM6ZFyI8t2kDEC+/Ewhk771sM8NLZyEXIQnX5qKAwhi3sJUB+5yrXt+SJQYqUYksBLK6/gqxe9Eg== dependencies: - "@google-cloud/pubsub" "^1.1.5" + "@google-cloud/pubsub" "^2.7.0" + "@types/archiver" "^5.1.0" JSONStream "^1.2.1" - archiver "^3.0.0" + abort-controller "^3.0.0" + ajv "^6.12.6" + archiver "^5.0.0" body-parser "^1.19.0" chokidar "^3.0.2" cjson "^0.3.1" @@ -7341,60 +5818,51 @@ firebase-tools@^7.11.0: cli-table "^0.3.1" commander "^4.0.1" configstore "^5.0.1" + cors "^2.8.5" cross-env "^5.1.3" - cross-spawn "^4.0.0" + cross-spawn "^7.0.1" csv-streamify "^3.0.4" - didyoumean "^1.2.1" dotenv "^6.1.0" + exegesis "^2.5.7" + exegesis-express "^2.0.0" exit-code "^1.0.2" express "^4.16.4" - filesize "^3.1.3" - fs-extra "^0.23.1" + filesize "^6.1.0" + fs-extra "^5.0.0" glob "^7.1.2" - google-auto-auth "^0.10.1" - google-gax "~1.12.0" + google-auth-library "^6.1.3" inquirer "~6.3.1" js-yaml "^3.13.1" - jsonschema "^1.0.2" - jsonwebtoken "^8.2.1" - lodash "^4.17.14" + jsonwebtoken "^8.5.1" + leven "^3.1.0" + lodash "^4.17.21" marked "^0.7.0" marked-terminal "^3.3.0" + mime "^2.5.2" minimatch "^3.0.4" + morgan "^1.10.0" + node-fetch "^2.6.1" open "^6.3.0" ora "^3.4.0" - plist "^3.0.1" portfinder "^1.0.23" progress "^2.0.3" + proxy-agent "^4.0.0" request "^2.87.0" rimraf "^3.0.0" semver "^5.7.1" - superstatic "^6.0.1" + superstatic "^7.1.0" tar "^4.3.0" tcp-port-used "^1.0.1" tmp "0.0.33" + triple-beam "^1.3.0" + tweetsodium "0.0.5" universal-analytics "^0.4.16" unzipper "^0.10.10" - update-notifier "^2.5.0" + update-notifier "^5.1.0" uuid "^3.0.0" - winston "^1.0.1" - -firefox-profile@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/firefox-profile/-/firefox-profile-1.0.3.tgz#5a656116885a86558384fa11d102fb11eff45cf1" - integrity sha1-WmVhFohahlWDhPoR0QL7Ee/0XPE= - dependencies: - adm-zip "~0.4.x" - archiver "~1.3.0" - async "~2.4.1" - fs-extra "~2.1.2" - ini "~1.3.3" - jetpack-id "1.0.0" - lazystream "~1.0.0" - lodash "~4.17.2" - minimist "^1.1.1" - uuid "^3.0.0" - xml2js "~0.4.4" + winston "^3.0.0" + winston-transport "^4.4.0" + ws "^7.2.3" flagged-respawn@^1.0.0: version "1.0.1" @@ -7421,7 +5889,7 @@ flatten@^1.0.2: resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== -flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: +flush-write-stream@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== @@ -7429,19 +5897,15 @@ flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: inherits "^2.0.3" readable-stream "^2.3.6" -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" +fn.name@1.x.x: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" + integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== follow-redirects@^1.0.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.11.0.tgz#afa14f08ba12a52963140fe43212658897bc0ecb" - integrity sha512-KZm0V+ll8PfBrKwMzdo5D13b1bur9Iq9Zd/RMmAoQQcl2PxxFml8cxXPaaPYVbV0RjNjq1CU7zIzAOqtUPudmA== - dependencies: - debug "^3.0.0" + version "1.14.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43" + integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg== for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" @@ -7469,15 +5933,15 @@ forever-agent@~0.6.1: integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= form-data@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" - integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg== + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" mime-types "^2.1.12" -form-data@~2.3.1, form-data@~2.3.2: +form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== @@ -7486,10 +5950,10 @@ form-data@~2.3.1, form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== fragment-cache@^0.2.1: version "0.2.1" @@ -7503,61 +5967,25 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - from@~0: version "0.1.7" resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= -fs-access@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" - integrity sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o= - dependencies: - null-check "^1.0.0" - fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-extra@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.2.tgz#f91704c53d1b461f893452b0c307d9997647ab6b" - integrity sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s= +fs-extra@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd" + integrity sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ== dependencies: graceful-fs "^4.1.2" jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^0.23.1: - version "0.23.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.23.1.tgz#6611dba6adf2ab8dc9c69fab37cddf8818157e3d" - integrity sha1-ZhHbpq3yq43Jxp+rN83fiBgVfj0= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" - -fs-extra@^0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" - integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" - fs-extra@^7.0.1, fs-extra@~7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -7567,13 +5995,14 @@ fs-extra@^7.0.1, fs-extra@~7.0.1: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@~2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-2.1.2.tgz#046c70163cef9aad46b0e4a7fa467fb22d71de35" - integrity sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU= +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" fs-minipass@^1.2.5: version "1.2.7" @@ -7582,7 +6011,7 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.6.0" -fs-minipass@^2.0.0: +fs-minipass@^2.0.0, fs-minipass@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== @@ -7597,40 +6026,35 @@ fs-mkdirp-stream@^1.0.0: graceful-fs "^4.1.11" through2 "^2.0.3" +fs-monkey@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" + integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== + fs-readdir-recursive@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.2.7: - version "1.2.12" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.12.tgz#db7e0d8ec3b0b45724fd4d83d43554a8f1f0de5c" - integrity sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q== + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== dependencies: bindings "^1.5.0" nan "^2.12.1" fsevents@~2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" - integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== -fsevents@~2.3.1: +fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -7645,6 +6069,14 @@ fstream@^1.0.12: mkdirp ">=0.5 0" rimraf "2" +ftp@^0.3.10: + version "0.3.10" + resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" + integrity sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0= + dependencies: + readable-stream "1.1.x" + xregexp "2.0.0" + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -7658,20 +6090,24 @@ furi@^2.0.0: "@types/is-windows" "^1.0.0" is-windows "^1.0.2" -gaxios@^1.0.4: - version "1.8.4" - resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-1.8.4.tgz#e08c34fe93c0a9b67a52b7b9e7a64e6435f9a339" - integrity sha512-BoENMnu1Gav18HcpV9IleMPZ9exM+AvUjrAOV4Mzs/vfz2Lu/ABv451iEXByKiMPn2M140uul1txXCg83sAENw== +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= dependencies: - abort-controller "^3.0.0" - extend "^3.0.2" - https-proxy-agent "^2.2.1" - node-fetch "^2.3.0" + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" -gaxios@^2.1.0: - version "2.3.4" - resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-2.3.4.tgz#eea99353f341c270c5f3c29fc46b8ead56f0a173" - integrity sha512-US8UMj8C5pRnao3Zykc4AAVr+cffoNKRTg9Rsf2GiuZCW69vgJj38VK2PzlPuQU73FZ/nTk9/Av6/JGcE1N9vA== +gaxios@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-4.3.0.tgz#ad4814d89061f85b97ef52aed888c5dbec32f774" + integrity sha512-pHplNbslpwCLMyII/lHPWFQbJWOX0B3R1hwBEOvzYi1GmdKZruuEHK4N9V6f7tf1EaPYyF80mui1+344p6SmLg== dependencies: abort-controller "^3.0.0" extend "^3.0.2" @@ -7679,32 +6115,18 @@ gaxios@^2.1.0: is-stream "^2.0.0" node-fetch "^2.3.0" -gcp-metadata@^0.6.1, gcp-metadata@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-0.6.3.tgz#4550c08859c528b370459bd77a7187ea0bdbc4ab" - integrity sha512-MSmczZctbz91AxCvqp9GHBoZOSbJKAICV7Ow/AIWSJZRrRchUd5NL1b2P4OfP+4m490BEUPhhARfpHdqCxuCvg== +gcp-metadata@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-4.3.0.tgz#0423d06becdbfb9cbb8762eaacf14d5324997900" + integrity sha512-L9XQUpvKJCM76YRSmcxrR4mFPzPGsgZUH+GgHMxAET8qc6+BhRJq63RLhWakgEO2KKVgeSDVfyiNjkGSADwNTA== dependencies: - axios "^0.18.0" - extend "^3.0.1" - retry-axios "0.3.2" - -gcp-metadata@^3.4.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-3.5.0.tgz#6d28343f65a6bbf8449886a0c0e4a71c77577055" - integrity sha512-ZQf+DLZ5aKcRpLzYUyBS3yo3N0JSa82lNDO8rj3nMSlovLcz2riKFBsYgDzeXcv75oo5eqB2lx+B14UvPoCRnA== - dependencies: - gaxios "^2.1.0" - json-bigint "^0.3.0" - -genfun@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" - integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== + gaxios "^4.0.0" + json-bigint "^1.0.0" gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== get-amd-module-type@^3.0.0: version "3.0.0" @@ -7724,11 +6146,6 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-func-name@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" - integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= - get-intrinsic@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" @@ -7743,27 +6160,16 @@ get-own-enumerable-property-symbols@^3.0.0: resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== -get-pkg-repo@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" - integrity sha1-xztInAbYDMVTbCyFP54FIyBWly0= +get-pkg-repo@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-4.1.2.tgz#c4ffd60015cf091be666a0212753fc158f01a4c0" + integrity sha512-/FjamZL9cBYllEbReZkxF2IMh80d8TJoC4e3bmLNif8ibHw95aj0N/tzqK0kZz9eU/3w3dL6lF4fnnX/sDdW3A== dependencies: - hosted-git-info "^2.1.4" - meow "^3.3.0" - normalize-package-data "^2.3.0" - parse-github-repo-url "^1.3.0" + "@hutson/parse-repository-url" "^3.0.0" + hosted-git-info "^4.0.0" + meow "^7.0.0" through2 "^2.0.0" -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -7772,12 +6178,24 @@ get-stream@^4.0.0, get-stream@^4.1.0: pump "^3.0.0" get-stream@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" - integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" +get-uri@3: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-3.0.2.tgz#f0ef1356faabc70e1f9404fa3b66b2ba9bfc725c" + integrity sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg== + dependencies: + "@tootallnate/once" "1" + data-uri-to-buffer "3" + debug "4" + file-uri-to-path "2" + fs-extra "^8.1.0" + ftp "^0.3.10" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -7790,17 +6208,6 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -git-raw-commits@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.0.tgz#d92addf74440c14bcc5c83ecce3fb7f8a79118b5" - integrity sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg== - dependencies: - dargs "^4.0.1" - lodash.template "^4.0.2" - meow "^4.0.0" - split2 "^2.0.0" - through2 "^2.0.0" - git-raw-commits@^2.0.10, git-raw-commits@^2.0.8: version "2.0.10" resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.10.tgz#e2255ed9563b1c9c3ea6bd05806410290297bbc1" @@ -7820,14 +6227,6 @@ git-remote-origin-url@^2.0.0: gitconfiglocal "^1.0.0" pify "^2.3.0" -git-semver-tags@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-2.0.3.tgz#48988a718acf593800f99622a952a77c405bfa34" - integrity sha512-tj4FD4ww2RX2ae//jSrXZzrocla9db5h0V7ikPl1P/WwoZar9epdUhwR7XHXSgc+ZkNq72BEEerqQuicoEQfzA== - dependencies: - meow "^4.0.0" - semver "^6.0.0" - git-semver-tags@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-4.1.1.tgz#63191bcd809b0ec3e151ba4751c16c444e5b5780" @@ -7851,10 +6250,10 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@~5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== +glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" @@ -7888,6 +6287,11 @@ glob-stream@^6.1.0: to-absolute-glob "^2.0.0" unique-stream "^2.0.2" +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + glob-watcher@^5.0.3: version "5.0.5" resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.5.tgz#aa6bce648332924d9a8489be41e3e5c52d4186dc" @@ -7901,10 +6305,10 @@ glob-watcher@^5.0.3: normalize-path "^3.0.0" object.defaults "^1.1.0" -glob@7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== +glob@7.1.7, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -7913,35 +6317,19 @@ glob@7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.1.6, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +global-dirs@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d" + integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ== dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" + ini "1.3.7" -glob@~5.0.0: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= +global-dirs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" + integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-dirs@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" - integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= - dependencies: - ini "^1.3.4" + ini "2.0.0" global-modules@^1.0.0: version "1.0.0" @@ -7968,10 +6356,10 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globby@^11.0.1: - version "11.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" - integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== +globby@^11.0.3: + version "11.0.4" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" + integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== dependencies: array-union "^2.1.0" dir-glob "^3.0.1" @@ -8017,162 +6405,117 @@ gonzales-pe@^4.2.3: dependencies: minimist "^1.2.5" -google-auth-library@^1.3.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-1.6.1.tgz#9c73d831ad720c0c3048ab89d0ffdec714d07dd2" - integrity sha512-jYiWC8NA9n9OtQM7ANn0Tk464do9yhKEtaJ72pKcaBiEwn4LwcGYIYOfwtfsSm3aur/ed3tlSxbmg24IAT6gAg== - dependencies: - axios "^0.18.0" - gcp-metadata "^0.6.3" - gtoken "^2.3.0" - jws "^3.1.5" - lodash.isstring "^4.0.1" - lru-cache "^4.1.3" - retry-axios "^0.3.2" - -google-auth-library@^5.0.0, google-auth-library@^5.5.0: - version "5.10.1" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-5.10.1.tgz#504ec75487ad140e68dd577c21affa363c87ddff" - integrity sha512-rOlaok5vlpV9rSiUu5EpR0vVpc+PhN62oF4RyX/6++DG1VsaulAFEMlDYBLjJDDPI6OcNOCGAKy9UVB/3NIDXg== +google-auth-library@^6.1.3: + version "6.1.6" + resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-6.1.6.tgz#deacdcdb883d9ed6bac78bb5d79a078877fdf572" + integrity sha512-Q+ZjUEvLQj/lrVHF/IQwRo6p3s8Nc44Zk/DALsN+ac3T4HY/g/3rrufkgtl+nZ1TW7DNAw5cTChdVp4apUXVgQ== dependencies: arrify "^2.0.0" base64-js "^1.3.0" ecdsa-sig-formatter "^1.0.11" fast-text-encoding "^1.0.0" - gaxios "^2.1.0" - gcp-metadata "^3.4.0" - gtoken "^4.1.0" + gaxios "^4.0.0" + gcp-metadata "^4.2.0" + gtoken "^5.0.4" jws "^4.0.0" - lru-cache "^5.0.0" + lru-cache "^6.0.0" -google-auto-auth@^0.10.1: - version "0.10.1" - resolved "https://registry.yarnpkg.com/google-auto-auth/-/google-auto-auth-0.10.1.tgz#68834a6f3da59a6cb27fce56f76e3d99ee49d0a2" - integrity sha512-iIqSbY7Ypd32mnHGbYctp80vZzXoDlvI9gEfvtl3kmyy5HzOcrZCIGCBdSlIzRsg7nHpQiHE3Zl6Ycur6TSodQ== +google-auth-library@^7.0.0, google-auth-library@^7.3.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-7.4.1.tgz#1565d6a4f11171e4f7a54bf8b5eaa664d99fe0fe" + integrity sha512-TNLFbGKZZKIzOLHKaSXCo1pSZQ1ZOaAZZPkVKQa4MM7vrRNfHGzRTwE2WDxWAow/35kJP1710ZTMY4Qf3jH3Gw== dependencies: - async "^2.3.0" - gcp-metadata "^0.6.1" - google-auth-library "^1.3.1" - request "^2.79.0" + arrify "^2.0.0" + base64-js "^1.3.0" + ecdsa-sig-formatter "^1.0.11" + fast-text-encoding "^1.0.0" + gaxios "^4.0.0" + gcp-metadata "^4.2.0" + gtoken "^5.0.4" + jws "^4.0.0" + lru-cache "^6.0.0" -google-closure-compiler-java@^20200517.0.0: - version "20200517.0.0" - resolved "https://registry.yarnpkg.com/google-closure-compiler-java/-/google-closure-compiler-java-20200517.0.0.tgz#778370c22273c9085f4cf959ce063f8f112c02ac" - integrity sha512-JVZBiyyXwcYi6Yc3lO6dF2hMLJA4OzPm4/mgsem/tF1vk2HsWTnL3GTaBsPB2ENVZp0hoqsd4KgpPiG9ssNWxw== +google-closure-compiler-java@^20210601.0.0: + version "20210601.0.0" + resolved "https://registry.yarnpkg.com/google-closure-compiler-java/-/google-closure-compiler-java-20210601.0.0.tgz#88dc11b334bee6a704d9674c5143fd2e0d553517" + integrity sha512-bH6nIwOmp4qDWvlbXx5/DE3XA2aDGQoCpmRYZJGONY1Sy6Xfbq0ioXRHH9eBDP9hxhCJ5Sd/K89A0NZ8Nz9RJA== -google-closure-compiler-js@^20200517.0.0: - version "20200517.0.0" - resolved "https://registry.yarnpkg.com/google-closure-compiler-js/-/google-closure-compiler-js-20200517.0.0.tgz#9cb0861f764073d1c4d3b7453b74073ccb1ecfb1" - integrity sha512-dz6dOUHx5nhdIqMRXacAYS8aJfLvw4IKxGg28Hq/zeeDPHlX3P3iBK20NgFDfT8zdushThymtMqChSy7C5eyfA== +google-closure-compiler-linux@^20210601.0.0: + version "20210601.0.0" + resolved "https://registry.yarnpkg.com/google-closure-compiler-linux/-/google-closure-compiler-linux-20210601.0.0.tgz#6e5dd7b00b96dc1fd1ba30e3401af85558768322" + integrity sha512-rnEQt7zz/1P1SfPhJiHQpfCgMPrsVVyEgDs09h67xn6+LXa9L0RP+hrJDEHqSWwjDPz0BkfUUv6zkqZvp1h/lw== -google-closure-compiler-linux@^20200517.0.0: - version "20200517.0.0" - resolved "https://registry.yarnpkg.com/google-closure-compiler-linux/-/google-closure-compiler-linux-20200517.0.0.tgz#2b9ecb634130060174aff5c52329a694ea4be68b" - integrity sha512-S5xPh6TtP+ESzZrmQLcDDqtZAsCVTbdI4VS98wQlN6IMZTd94nAnOCg9mrxQNAgop2t4sdsv/KuH0BGPUWEZ+w== +google-closure-compiler-osx@^20210601.0.0: + version "20210601.0.0" + resolved "https://registry.yarnpkg.com/google-closure-compiler-osx/-/google-closure-compiler-osx-20210601.0.0.tgz#e23356bc9ef6e68c2980f60a207f603767b50b21" + integrity sha512-A5r4s/WthR2iLMM0mxsluw8EW2AcOomC5ri/H6FjzpMq0RVEnLTgaGYdXolUAfEzH/7XtJJT2+JkYk3HSLCtrg== -google-closure-compiler-osx@^20200517.0.0: - version "20200517.0.0" - resolved "https://registry.yarnpkg.com/google-closure-compiler-osx/-/google-closure-compiler-osx-20200517.0.0.tgz#9394e9a2fd97e3729fc3bd2abcffff6aab2cfcaa" - integrity sha512-FWIcsKqLllLjdOBZd7azijVaObydgRd0obVNi63eUfC5MX6T4qxKumGCyor2UCNY6by2ESz+PlGqCFzFhZ6b2g== +google-closure-compiler-windows@^20210601.0.0: + version "20210601.0.0" + resolved "https://registry.yarnpkg.com/google-closure-compiler-windows/-/google-closure-compiler-windows-20210601.0.0.tgz#b5400d06bbf0bbd2602ee3ae0c2bc7ebd5829692" + integrity sha512-6r94bPShnB0XXh9+5/qXGDHJN2PQGhF9yJPcgBZj+FAZlQGzlYkT0pkyp+loZT3lG+YRbjD28Lgo7xMcY4xgkA== -google-closure-compiler-windows@^20200517.0.0: - version "20200517.0.0" - resolved "https://registry.yarnpkg.com/google-closure-compiler-windows/-/google-closure-compiler-windows-20200517.0.0.tgz#c5cdde438c29458666a83358567b12072924ed6c" - integrity sha512-UXhjRGwS8deTkRla/riyVq3psscgMuw78lepEPtq5NgbumgJzY2+IQP9q+4MVOfJW58Rv0JUWKAFOnBBSZWcAQ== - -google-closure-compiler@20200517.0.0: - version "20200517.0.0" - resolved "https://registry.yarnpkg.com/google-closure-compiler/-/google-closure-compiler-20200517.0.0.tgz#6c47f99fc1be59bd4f9e23c5a8f2e66d64b54143" - integrity sha512-80W9zBS9Ajk1T5InWCfsoPohDmo5T1AAyw1rHh5+dgb/jPgwC65KhY+oJozTncf+/7tyQHJXozTARwhSlBUcMg== +google-closure-compiler@20210601.0.0: + version "20210601.0.0" + resolved "https://registry.yarnpkg.com/google-closure-compiler/-/google-closure-compiler-20210601.0.0.tgz#34597c33c9285ebd3a5364f5299f6c9ddc9fc88a" + integrity sha512-lzzEoG2VTB7uUjnWnMyeZMU163w69HJpM27yh8Up9Ha5McHZeESjt3NRwU8cWMbCRdY06nFbRCDIVCRcadHCiw== dependencies: chalk "2.x" - google-closure-compiler-java "^20200517.0.0" - google-closure-compiler-js "^20200517.0.0" + google-closure-compiler-java "^20210601.0.0" minimist "1.x" vinyl "2.x" vinyl-sourcemaps-apply "^0.2.0" optionalDependencies: - google-closure-compiler-linux "^20200517.0.0" - google-closure-compiler-osx "^20200517.0.0" - google-closure-compiler-windows "^20200517.0.0" + google-closure-compiler-linux "^20210601.0.0" + google-closure-compiler-osx "^20210601.0.0" + google-closure-compiler-windows "^20210601.0.0" -google-gax@^1.14.2: - version "1.15.2" - resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-1.15.2.tgz#a58aff43ec383f4f056f9d796e8d5e4891161eb8" - integrity sha512-yNNiRf9QxWpZNfQQmSPz3rIDTBDDKnLKY/QEsjCaJyDxttespr6v8WRGgU5KrU/6ZM7QRlgBAYXCkxqHhJp0wA== +google-gax@^2.17.1: + version "2.19.0" + resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-2.19.0.tgz#e0e113f48688289e22053528224dfac09f019164" + integrity sha512-2a6WY+p6YMVMmwXmkRqiLreXx67xHDZhkmflcL8aDUkl1csx9ywxEI01veoDXy6T1l0JJD6zLbl5TIbWimmXrw== dependencies: - "@grpc/grpc-js" "^0.7.4" - "@grpc/proto-loader" "^0.5.1" - "@types/fs-extra" "^8.0.1" + "@grpc/grpc-js" "~1.3.0" + "@grpc/proto-loader" "^0.6.1" "@types/long" "^4.0.0" abort-controller "^3.0.0" - duplexify "^3.6.0" - google-auth-library "^5.0.0" + duplexify "^4.0.0" + fast-text-encoding "^1.0.3" + google-auth-library "^7.3.0" is-stream-ended "^0.1.4" - lodash.at "^4.6.0" - lodash.has "^4.5.2" - node-fetch "^2.6.0" - protobufjs "^6.8.9" + node-fetch "^2.6.1" + object-hash "^2.1.1" + protobufjs "^6.10.2" retry-request "^4.0.0" - semver "^6.0.0" - walkdir "^0.4.0" -google-gax@~1.12.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-1.12.0.tgz#f926f7e6abda245db38ecbebbbf58daaf3a8f687" - integrity sha512-BeeoxVO6y9K20gUsexUwptutd0PfrTItrA02JWwwstlBIOAcvgFp86MHWufQsnrkPVhxBjHXq65aIkSejtJjDg== +google-p12-pem@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-3.1.1.tgz#98fb717b722d12196a3e5b550c44517562269859" + integrity sha512-e9CwdD2QYkpvJsktki3Bm8P8FSGIneF+/42a9F9QHcQvJ73C2RoYZdrwRl6BhwksWtzl65gT4OnBROhUIFw95Q== dependencies: - "@grpc/grpc-js" "^0.6.12" - "@grpc/proto-loader" "^0.5.1" - "@types/long" "^4.0.0" - abort-controller "^3.0.0" - duplexify "^3.6.0" - google-auth-library "^5.0.0" - is-stream-ended "^0.1.4" - lodash.at "^4.6.0" - lodash.has "^4.5.2" - node-fetch "^2.6.0" - protobufjs "^6.8.8" - retry-request "^4.0.0" - semver "^6.0.0" - walkdir "^0.4.0" + node-forge "^0.10.0" -google-p12-pem@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-1.0.4.tgz#b77fb833a2eb9f7f3c689e2e54f095276f777605" - integrity sha512-SwLAUJqUfTB2iS+wFfSS/G9p7bt4eWcc2LyfvmUXe7cWp6p3mpxDo6LLI29MXdU6wvPcQ/up298X7GMC5ylAlA== +got@^9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== dependencies: - node-forge "^0.8.0" - pify "^4.0.0" - -google-p12-pem@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-2.0.4.tgz#036462394e266472632a78b685f0cc3df4ef337b" - integrity sha512-S4blHBQWZRnEW44OcR7TL9WR+QCqByRvhNDZ/uuQfpxywfupikf/miba8js1jZi6ZOGv5slgSuoshCWh6EMDzg== - dependencies: - node-forge "^0.9.0" - -got@^6.7.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" - integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= - dependencies: - create-error-class "^3.0.0" + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - unzip-response "^2.0.1" - url-parse-lax "^1.0.0" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" -graceful-fs@4.2.4, graceful-fs@^4.0.0, graceful-fs@^4.1.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== +graceful-fs@4.2.6, graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.6: + version "4.2.6" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== graphviz@0.0.9: version "0.0.9" @@ -8181,26 +6524,14 @@ graphviz@0.0.9: dependencies: temp "~0.4.0" -gtoken@^2.3.0: - version "2.3.3" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-2.3.3.tgz#8a7fe155c5ce0c4b71c886cfb282a9060d94a641" - integrity sha512-EaB49bu/TCoNeQjhCYKI/CurooBKkGxIqFHsWABW0b25fobBYVTMe84A8EBVVZhl8emiUdNypil9huMOTmyAnw== +gtoken@^5.0.4: + version "5.3.0" + resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-5.3.0.tgz#6536eb2880d9829f0b9d78f756795d4d9064b217" + integrity sha512-mCcISYiaRZrJpfqOs0QWa6lfEM/C1V9ASkzFmuz43XBb5s1Vynh+CZy1ECeeJXVGx2PRByjYzb4Y4/zr1byr0w== dependencies: - gaxios "^1.0.4" - google-p12-pem "^1.0.0" - jws "^3.1.5" - mime "^2.2.0" - pify "^4.0.0" - -gtoken@^4.1.0: - version "4.1.4" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-4.1.4.tgz#925ff1e7df3aaada06611d30ea2d2abf60fcd6a7" - integrity sha512-VxirzD0SWoFUo5p8RDP8Jt2AGyOmyYcT/pOUgDKJCK+iSw0TMqwrVfY37RXTNmoKwrzmDHSk0GMT9FsgVmnVSA== - dependencies: - gaxios "^2.1.0" - google-p12-pem "^2.0.0" + gaxios "^4.0.0" + google-p12-pem "^3.0.3" jws "^4.0.0" - mime "^2.2.0" gulp-cli@^2.2.0: version "2.3.0" @@ -8256,7 +6587,7 @@ gulplog@^1.0.0: dependencies: glogg "^1.0.0" -hammerjs@2.0.8: +hammerjs@~2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/hammerjs/-/hammerjs-2.0.8.tgz#04ef77862cff2bb79d30f7692095930222bf60f1" integrity sha1-BO93hiz/K7edMPdpIJWTAiK/YPE= @@ -8266,21 +6597,10 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== -handlebars@^4.4.0: - version "4.7.5" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.5.tgz#3105d3f54038976bd54e5ae0c711c70d4ed040f8" - integrity sha512-PiM2ZRLZ0X+CIRSX66u7tkQi3rzrlSHAuioMBI1XP8DsfDaXEA+sD7Iyyoz4QACFuhX5z+IimN+n3BFWvvgWrQ== - dependencies: - neo-async "^2.6.0" - source-map "^0.6.1" - yargs "^14.2.3" - optionalDependencies: - uglify-js "^3.1.4" - handlebars@^4.7.6: - version "4.7.6" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e" - integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA== + version "4.7.7" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== dependencies: minimist "^1.2.5" neo-async "^2.6.0" @@ -8294,14 +6614,6 @@ har-schema@^2.0.0: resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= -har-validator@~5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" - integrity sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0= - dependencies: - ajv "^5.1.0" - har-schema "^2.0.0" - har-validator@~5.1.3: version "5.1.5" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" @@ -8349,10 +6661,15 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.0, has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== +has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= has-value@^0.3.1: version "0.3.1" @@ -8385,29 +6702,18 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.0, has@^1.0.3: +has-yarn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" + integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== + +has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" -hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - "hashish@>=0.0.2 <0.1": version "0.0.4" resolved "https://registry.yarnpkg.com/hashish/-/hashish-0.0.4.tgz#6d60bc6ffaf711b6afd60e426d077988014e6554" @@ -8425,15 +6731,6 @@ hex-color-regex@^1.1.0: resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - home-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/home-dir/-/home-dir-1.0.0.tgz#2917eb44bdc9072ceda942579543847e3017fe4e" @@ -8446,22 +6743,15 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" -hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== -hosted-git-info@^3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.4.tgz#be4973eb1fd2737b11c9c7c19380739bb249f60d" - integrity sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ== - dependencies: - lru-cache "^5.1.1" - -hosted-git-info@^3.0.6: - version "3.0.7" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.7.tgz#a30727385ea85acfcee94e0aad9e368c792e036c" - integrity sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ== +hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961" + integrity sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg== dependencies: lru-cache "^6.0.0" @@ -8485,25 +6775,20 @@ hsla-regex@^1.0.0: resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= -html-comment-regex@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" - integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== - html-entities@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" - integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== + version "1.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" + integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -http-cache-semantics@^3.8.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" - integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== +http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== http-deceiver@^1.2.7: version "1.2.7" @@ -8521,17 +6806,7 @@ http-errors@1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-errors@~1.7.2: +http-errors@1.7.3, http-errors@~1.7.2: version "1.7.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== @@ -8542,18 +6817,29 @@ http-errors@~1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" -"http-parser-js@>=0.4.0 <0.4.11": - version "0.4.10" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" - integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= - -http-proxy-agent@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" - integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= dependencies: - agent-base "4" - debug "3.1.0" + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.5.1: + version "0.5.3" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" + integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== + +http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" http-proxy-middleware@0.19.1: version "0.19.1" @@ -8565,16 +6851,7 @@ http-proxy-middleware@0.19.1: lodash "^4.17.11" micromatch "^3.1.10" -http-proxy@^1.13.0, http-proxy@^1.17.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz#dbe55f63e75a347db7f3d99974f2692a314a6a3a" - integrity sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-proxy@^1.18.0: +http-proxy@^1.13.0, http-proxy@^1.17.0, http-proxy@^1.18.0: version "1.18.1" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== @@ -8608,12 +6885,15 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= +https-proxy-agent@5, https-proxy-agent@5.0.0, https-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" + integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + dependencies: + agent-base "6" + debug "4" -https-proxy-agent@^2.2.1, https-proxy-agent@^2.2.3: +https-proxy-agent@^2.2.1: version "2.2.4" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== @@ -8621,14 +6901,6 @@ https-proxy-agent@^2.2.1, https-proxy-agent@^2.2.3: agent-base "^4.3.0" debug "^3.1.0" -https-proxy-agent@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz#b8c286433e87602311b01c8ea34413d856a4af81" - integrity sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg== - dependencies: - agent-base "^4.3.0" - debug "^3.1.0" - https-proxy-agent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b" @@ -8637,14 +6909,6 @@ https-proxy-agent@^4.0.0: agent-base "5" debug "4" -https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== - dependencies: - agent-base "6" - debug "4" - humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" @@ -8652,12 +6916,12 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -husky@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/husky/-/husky-5.0.1.tgz#c1b1f2b0da297399e295b6c204b680e45f26feda" - integrity sha512-ZNfMqtluHyMaW795l1jOLGOGSFAyZ6JC8jZj1QkagBmfuxrSFKX+Wrbb9gR+OD8iNJb8JNDpaMtCpE5XnLdHMw== +husky@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.1.tgz#579f4180b5da4520263e8713cc832942b48e1f1c" + integrity sha512-gceRaITVZ+cJH9sNHqx5tFwbzlLCVxtVZcusME8JYQ8Edy5mpGDOqD8QBCdMhpyo9a+JXddnujQ4rpY2Ff9SJA== -iconv-lite@0.4.24, iconv-lite@^0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -8665,31 +6929,26 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24: safer-buffer ">= 2.1.2 < 3" iconv-lite@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" - integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -icss-utils@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.0.0.tgz#03ed56c3accd32f9caaf1752ebf64ef12347bb84" - integrity sha512-aF2Cf/CkEZrI/vsu5WI/I+akFgdbwQHVE9YRZxATrhH4PVIe6a3BIjwjEcW+z+jP/hNh+YvM3lAAn1wJQ6opSg== +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== +ignore-walk@^3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" + integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== dependencies: minimatch "^3.0.4" @@ -8708,18 +6967,10 @@ immediate@~3.0.5: resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - import-fresh@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -8729,6 +6980,11 @@ import-lazy@^2.1.0: resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= +import-lazy@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" + integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== + import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" @@ -8742,22 +6998,10 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -incremental-dom@0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/incremental-dom/-/incremental-dom-0.4.1.tgz#80eb151969bd52054dc29a4720c4e89abd103401" - integrity sha1-gOsVGWm9UgVNwppHIMTomr0QNAE= - -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= - dependencies: - repeating "^2.0.0" - -indent-string@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= +incremental-dom@0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/incremental-dom/-/incremental-dom-0.7.0.tgz#b03664731bdc430035f32df7d76fa56daedee9b8" + integrity sha512-SBHQ6AiCmtwh7TU9hjq2CspasJe7ggGa9k+qYZft+d5Qq9v7V+07wlnRSZH5GGYjI8wn6U5p7dDua7f1bih52g== indent-string@^4.0.0: version "4.0.0" @@ -8774,7 +7018,7 @@ indexof@0.0.1: resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= -infer-owner@^1.0.3, infer-owner@^1.0.4: +infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== @@ -8792,30 +7036,30 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, i resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - inherits@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@1.3.5, ini@^1.3.2, ini@~1.3.0, ini@~1.3.3: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== +ini@1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" + integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== -ini@^1.3.4: +ini@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== + +ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -inquirer@7.3.3, inquirer@^7.3.3: - version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== +inquirer@8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.0.0.tgz#957a46db1abcf0fdd2ab82deb7470e90afc7d0ac" + integrity sha512-ON8pEJPPCdyjxj+cxsYRe6XfCJepTxANdNnTebsTuQgXpRyZRRT9t4dJwjRubgmvn20CLSEnozRUayXyM9VTXA== dependencies: ansi-escapes "^4.2.1" chalk "^4.1.0" @@ -8823,10 +7067,30 @@ inquirer@7.3.3, inquirer@^7.3.3: cli-width "^3.0.0" external-editor "^3.0.3" figures "^3.0.0" - lodash "^4.17.19" + lodash "^4.17.21" mute-stream "0.0.8" run-async "^2.4.0" - rxjs "^6.6.0" + rxjs "^6.6.6" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +inquirer@^8.0.0: + version "8.1.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.1.2.tgz#65b204d2cd7fb63400edd925dfe428bafd422e3d" + integrity sha512-DHLKJwLPNgkfwNmsuEUKSejJFbkv0FMO9SMiQbjI3n5NQuCrSIBqP66ggqyz2a6t2qEolKrMjhQ3+W/xXgUQ+Q== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.3.0" + run-async "^2.4.0" + rxjs "^7.2.0" string-width "^4.1.0" strip-ansi "^6.0.0" through "^2.3.6" @@ -8850,6 +7114,11 @@ inquirer@~6.3.1: strip-ansi "^5.1.0" through "^2.3.6" +install-artifact-from-github@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/install-artifact-from-github/-/install-artifact-from-github-1.2.0.tgz#adcbd123c16a4337ec44ea76d0ebf253cc16b074" + integrity sha512-3OxCPcY55XlVM3kkfIpeCgmoSKnMsz2A3Dbhsq0RXpIknKQmrX1YiznCeW9cD2ItFmDxziA3w6Eg8d80AoL3oA== + internal-ip@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" @@ -8858,17 +7127,12 @@ internal-ip@^4.3.0: default-gateway "^4.2.0" ipaddr.js "^1.9.0" -interpret@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== - -interpret@^1.4.0: +interpret@^1.0.0, interpret@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -invariant@^2.2.2, invariant@^2.2.4: +invariant@^2.2.2: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -8880,17 +7144,17 @@ invert-kv@^1.0.0: resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= -ip@1.1.5, ip@^1.1.0, ip@^1.1.5: +ip-regex@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" + integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== + +ip@^1.1.0, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= @@ -8900,11 +7164,6 @@ ipaddr.js@1.9.1, ipaddr.js@^1.9.0: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - is-absolute-url@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" @@ -8933,9 +7192,11 @@ is-accessor-descriptor@^1.0.0: kind-of "^6.0.0" is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" + integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== + dependencies: + call-bind "^1.0.0" is-arrayish@^0.2.1: version "0.2.1" @@ -8966,24 +7227,14 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-buffer@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" - integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== - -is-callable@^1.1.4, is-callable@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" - integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== - -is-ci@^1.0.10: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" - integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== dependencies: - ci-info "^1.5.0" + ci-info "^2.0.0" -is-color-stop@^1.0.0: +is-color-stop@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= @@ -8995,17 +7246,10 @@ is-color-stop@^1.0.0: rgb-regex "^1.0.1" rgba-regex "^1.0.0" -is-core-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.0.0.tgz#58531b70aed1db7c0e8d4eb1a0a2d1ddd64bd12d" - integrity sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw== - dependencies: - has "^1.0.3" - -is-core-module@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" - integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== +is-core-module@^2.1.0, is-core-module@^2.2.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491" + integrity sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg== dependencies: has "^1.0.3" @@ -9024,9 +7268,9 @@ is-data-descriptor@^1.0.0: kind-of "^6.0.0" is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5" + integrity sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A== is-descriptor@^0.1.0: version "0.1.6" @@ -9046,15 +7290,10 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - -is-docker@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" - integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" @@ -9073,11 +7312,6 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== - is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -9109,19 +7343,32 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-installed-globally@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" - integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= +is-installed-globally@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" + integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== dependencies: - global-dirs "^0.1.0" - is-path-inside "^1.0.0" + global-dirs "^2.0.1" + is-path-inside "^3.0.1" + +is-installed-globally@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== + dependencies: + global-dirs "^3.0.0" + is-path-inside "^3.0.2" is-interactive@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU= + is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" @@ -9132,10 +7379,15 @@ is-negated-glob@^1.0.0: resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= -is-npm@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" - integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= +is-npm@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" + integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== + +is-npm@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" + integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== is-number@^3.0.0: version "3.0.0" @@ -9154,7 +7406,7 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-obj@^1.0.0, is-obj@^1.0.1: +is-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= @@ -9202,6 +7454,11 @@ is-path-inside@^2.1.0: dependencies: path-is-inside "^1.0.2" +is-path-inside@^3.0.1, is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -9214,36 +7471,30 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-plain-object@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928" - integrity sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg== - dependencies: - isobject "^4.0.0" +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== -is-promise@^2.1, is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= - -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= +is-promise@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== is-reference@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.1.4.tgz#3f95849886ddb70256a3e6d062b1a68c13c51427" - integrity sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw== + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== dependencies: - "@types/estree" "0.0.39" + "@types/estree" "*" -is-regex@^1.0.4, is-regex@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== +is-regex@^1.0.4: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" + integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== dependencies: - has "^1.0.3" + call-bind "^1.0.2" + has-symbols "^1.0.2" is-regexp@^1.0.0: version "1.0.0" @@ -9262,16 +7513,11 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" -is-resolvable@^1.0.0: +is-resolvable@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== -is-retry-allowed@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" - integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== - is-running@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-running/-/is-running-2.1.0.tgz#30a73ff5cc3854e4fc25490809e9f5abf8de09e0" @@ -9282,29 +7528,15 @@ is-stream-ended@^0.1.4: resolved "https://registry.yarnpkg.com/is-stream-ended/-/is-stream-ended-0.1.4.tgz#f50224e95e06bce0e356d440a4827cd35b267eda" integrity sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw== -is-stream@^1.0.0, is-stream@^1.1.0: +is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-svg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" - integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== - dependencies: - html-comment-regex "^1.1.0" - -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== is-text-path@^1.0.1: version "1.0.1" @@ -9325,6 +7557,16 @@ is-unc-path@^1.0.0: dependencies: unc-path-regex "^0.1.2" +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-url-superb@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-url-superb/-/is-url-superb-4.0.0.tgz#b54d1d2499bb16792748ac967aa3ecb41a33a8c2" + integrity sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA== + is-url@^1.2.2, is-url@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" @@ -9340,6 +7582,11 @@ is-valid-glob@^1.0.0: resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= +is-what@^3.12.0: + version "3.14.1" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -9350,26 +7597,33 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -is-wsl@^2.1.0, is-wsl@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" - integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" -is2@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is2/-/is2-2.0.1.tgz#8ac355644840921ce435d94f05d3a94634d3481a" - integrity sha512-+WaJvnaA7aJySz2q/8sLjMb2Mw14KTplHmSwcSpZ/fWJPkUmqw3YTzSWbPJ7OAwRvdYTWF2Wg+yYJ1AdP5Z8CA== +is-yarn-global@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" + integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== + +is2@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/is2/-/is2-2.0.7.tgz#d084e10cab3bd45d6c9dfde7a48599fcbb93fcac" + integrity sha512-4vBQoURAXC6hnLFxD4VW7uc04XiwTTl/8ydYJxKvPwkWQrSjInkuM5VZVg6BGr1/natq69zDuvO9lGpLClJqvA== dependencies: deep-is "^0.1.3" - ip-regex "^2.1.0" - is-url "^1.2.2" + ip-regex "^4.1.0" + is-url "^1.2.4" isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -9403,12 +7657,7 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isobject@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" - integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== - -isstream@0.1.x, isstream@~0.1.2: +isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= @@ -9445,33 +7694,38 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" +jake@^10.6.1: + version "10.8.2" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b" + integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A== + dependencies: + async "0.9.x" + chalk "^2.4.2" + filelist "^1.0.1" + minimatch "^3.0.4" + jasmine-ajax@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jasmine-ajax/-/jasmine-ajax-4.0.0.tgz#7d8ba7e47e3f7e780e155fe9aa563faafa7e1a26" integrity sha512-htTxNw38BSHxxmd8RRMejocdPqLalGHU6n3HWFbzp/S8AuTQd1MYjkSH3dYDsbZ7EV1Xqx/b94m3tKaVSVBV2A== -jasmine-core@^3.3, jasmine-core@^3.5.0, jasmine-core@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.5.0.tgz#132c23e645af96d85c8bca13c8758b18429fc1e4" - integrity sha512-nCeAiw37MIMA9w9IXso7bRaLl+c/ef3wnxsoSAlYrzS+Ot0zTG6nU8G/cIfGkqpkjX2wNaIW9RFG0TwIFnG6bA== +jasmine-core@^3.5.0, jasmine-core@^3.6.0, jasmine-core@~3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.8.0.tgz#815399aae5aa5d9beeb1262805f981b99ffc9bf0" + integrity sha512-zl0nZWDrmbCiKns0NcjkFGYkVTGCPUgoHypTaj+G2AzaWus7QGoXARSlYsSle2VRpSdfJmM+hzmFKzQNhF2kHg== jasmine-core@~2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= -jasmine-core@~3.7.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.7.1.tgz#0401327f6249eac993d47bbfa18d4e8efacfb561" - integrity sha512-DH3oYDS/AUvvr22+xUBW62m1Xoy7tUlY1tsxKEJvl5JeJ7q8zd1K5bUwiOxdH+erj6l2vAMM3hV25Xs9/WrmuQ== - -jasmine-reporters@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/jasmine-reporters/-/jasmine-reporters-2.3.2.tgz#898818ffc234eb8b3f635d693de4586f95548d43" - integrity sha512-u/7AT9SkuZsUfFBLLzbErohTGNsEUCKaQbsVYnLFW1gEuL2DzmBL4n8v90uZsqIqlWvWUgian8J6yOt5Fyk/+A== +jasmine-reporters@~2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jasmine-reporters/-/jasmine-reporters-2.4.0.tgz#708c17ae70ba6671e3a930bb1b202aab80a31409" + integrity sha512-jxONSrBLN1vz/8zCx5YNWQSS8iyDAlXQ5yk1LuqITe4C6iXCDx5u6Q0jfNtkKhL4qLZPe69fL+AWvXFt9/x38w== dependencies: mkdirp "^0.5.1" - xmldom "^0.1.22" + xmldom "^0.5.0" jasmine@2.8.0: version "2.8.0" @@ -9482,37 +7736,20 @@ jasmine@2.8.0: glob "^7.0.6" jasmine-core "~2.8.0" -jasmine@^3.1.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-3.7.0.tgz#d36638c0c815e6ad5666676e386d79e2ccb70835" - integrity sha512-wlzGQ+cIFzMEsI+wDqmOwvnjTvolLFwlcpYLCqSPPH0prOQaW3P+IzMhHYn934l1imNvw07oCyX+vGUv3wmtSQ== +jasmine@^3.5.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-3.8.0.tgz#4497bc797eede7ca9de18179aedd4cf50245d8dc" + integrity sha512-kdQ3SfcNpMbbMdgJPLyFe9IksixdnrgYaCJapP9sS0aLgdWdIZADNXEr+11Zafxm1VDfRSC5ZL4fzXT0bexzXw== dependencies: glob "^7.1.6" - jasmine-core "~3.7.0" - -jasmine@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-3.5.0.tgz#7101eabfd043a1fc82ac24e0ab6ec56081357f9e" - integrity sha512-DYypSryORqzsGoMazemIHUfMkXM7I7easFaxAvNM3Mr6Xz3Fy36TupTrAOxZWN8MVKEU5xECv22J4tUQf3uBzQ== - dependencies: - glob "^7.1.4" - jasmine-core "~3.5.0" + jasmine-core "~3.8.0" jasminewd2@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-2.2.0.tgz#e37cf0b17f199cce23bea71b2039395246b4ec4e" integrity sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4= -jest-worker@26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.5.0.tgz#87deee86dbbc5f98d9919e0dadf2c40e3152fa30" - integrity sha512-kTw66Dn4ZX7WpjZ7T/SUDgRhapFRKWmisVAF0Rv4Fu8SLFD7eLbqpLvbxVqYhSgaWa7I+bW7pHnbyfNsH6stug== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest-worker@^26.2.1: +jest-worker@26.6.2, jest-worker@^26.2.1, jest-worker@^26.3.0, jest-worker@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== @@ -9521,19 +7758,14 @@ jest-worker@^26.2.1: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^26.5.0: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.1.tgz#c2ae8cde6802cc14056043f997469ec170d9c32a" - integrity sha512-R5IE3qSGz+QynJx8y+ICEkdI2OJ3RJjRQVEyCcFAd3yVhQSEtquziPO29Mlzgn07LOVE8u8jhJ1FqcwegiXWOw== +jest-worker@^27.0.2: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.6.tgz#a5fdb1e14ad34eb228cfe162d9f729cdbfa28aed" + integrity sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA== dependencies: "@types/node" "*" merge-stream "^2.0.0" - supports-color "^7.0.0" - -jetpack-id@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/jetpack-id/-/jetpack-id-1.0.0.tgz#2cf9fbae46d8074fc16b7de0071c8efebca473a6" - integrity sha1-LPn7rkbYB0/Ba33gBxyO/rykc6Y= + supports-color "^8.0.0" jju@^1.1.0, jju@~1.4.0: version "1.4.0" @@ -9549,10 +7781,10 @@ join-path@^1.1.1: url-join "0.0.1" valid-url "^1" -jquery@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.0.0.tgz#95a2a9541291a9f819e016f85ba247116d03e4ab" - integrity sha1-laKpVBKRqfgZ4Bb4W6JHEW0D5Ks= +jquery@3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470" + integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw== js-levenshtein@^1.1.6: version "1.1.6" @@ -9564,19 +7796,21 @@ js-levenshtein@^1.1.6: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - js-yaml@^3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -9592,14 +7826,19 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= -json-bigint@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-0.3.0.tgz#0ccd912c4b8270d05f056fbd13814b53d3825b1e" - integrity sha1-DM2RLEuCcNBfBW+9E4FLU9OCWx4= +json-bigint@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1" + integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ== dependencies: - bignumber.js "^7.0.0" + bignumber.js "^9.0.0" -json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== @@ -9616,16 +7855,23 @@ json-parse-helpfulerror@^1.0.3: dependencies: jju "^1.1.0" -json-schema-traverse@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" - integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= +json-ptr@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/json-ptr/-/json-ptr-2.2.0.tgz#a4de4ed638cb23ae4cd4b51f8bf972a1c2293f1e" + integrity sha512-w9f6/zhz4kykltXMG7MLJWMajxiPj0q+uzQPR1cggNAE/sXoq/C5vjUb/7QNcC3rJsVIIKy37ALTXy1O+3c8QQ== + dependencies: + tslib "^2.2.0" json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -9641,7 +7887,7 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json3@^3.3.2: +json3@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== @@ -9653,31 +7899,17 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.0: +json5@^2.1.0, json5@^2.1.2: version "2.2.0" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== dependencies: minimist "^1.2.5" -json5@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" - integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== - dependencies: - minimist "^1.2.5" - -jsonc-parser@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.3.1.tgz#59549150b133f2efacca48fe9ce1ec0659af2342" - integrity sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg== - -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= - optionalDependencies: - graceful-fs "^4.1.6" +jsonc-parser@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" + integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== jsonfile@^4.0.0: version "4.0.0" @@ -9686,17 +7918,12 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" -jsonparse@^1.2.0: +jsonparse@^1.2.0, jsonparse@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= -jsonschema@^1.0.2: - version "1.2.6" - resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.6.tgz#52b0a8e9dc06bbae7295249d03e4b9faee8a0c0b" - integrity sha512-SqhURKZG07JyKKeo/ir24QnS4/BV7a6gQy93bUSe4lUdNp0QNpIz2c9elWJQ9dpc5cQYY6cvCzgRwy0MQCLyqA== - -jsonwebtoken@^8.2.1: +jsonwebtoken@^8.5.1: version "8.5.1" resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== @@ -9722,20 +7949,10 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jszip@^3.1.3: - version "3.5.0" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.5.0.tgz#b4fd1f368245346658e781fec9675802489e15f6" - integrity sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA== - dependencies: - lie "~3.3.0" - pako "~1.0.2" - readable-stream "~2.3.6" - set-immediate-shim "~1.0.1" - -jszip@^3.2.2: - version "3.3.0" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.3.0.tgz#29d72c21a54990fa885b11fc843db320640d5271" - integrity sha512-EJ9k766htB1ZWnsV5ZMDkKLgA+201r/ouFF8R2OigVjVdcm2rurcBrrdXaeqBJbqnUVMko512PYmlncBKE1Huw== +jszip@^3.1.3, jszip@^3.6.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.7.0.tgz#9b8b995a4e7c9024653ce743e902076a82fdf4e6" + integrity sha512-Y2OlFIzrDOPWUnpU0LORIcDn2xN7rC9yKffFM/7pGhQuhO+SUhfm2trkJ/S5amjFvem0Y+1EALz/MEPkvHXVNw== dependencies: lie "~3.3.0" pako "~1.0.2" @@ -9743,9 +7960,9 @@ jszip@^3.2.2: set-immediate-shim "~1.0.1" just-debounce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea" - integrity sha1-h/zPrv/AtozRnVX2cilD+SnqNeo= + version "1.1.0" + resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.1.0.tgz#2f81a3ad4121a76bc7cb45dbf704c0d76a8e5ddf" + integrity sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ== jwa@^1.4.1: version "1.4.1" @@ -9765,7 +7982,7 @@ jwa@^2.0.0: ecdsa-sig-formatter "1.0.11" safe-buffer "^5.0.1" -jws@^3.1.5, jws@^3.2.2: +jws@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== @@ -9782,35 +7999,35 @@ jws@^4.0.0: safe-buffer "^5.0.1" karma-browserstack-launcher@^1.3.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/karma-browserstack-launcher/-/karma-browserstack-launcher-1.5.1.tgz#4caf4cd476a76d3c88205818d8994fc170a68fb4" - integrity sha512-zt9Ukow5A9WZHZXCFVO/h5kRsAdaZYeMNJK9Uan8v42amQXt3B/DZVxl24NCcAIxufKjW13UWd9iJ9knG9OCYw== + version "1.6.0" + resolved "https://registry.yarnpkg.com/karma-browserstack-launcher/-/karma-browserstack-launcher-1.6.0.tgz#2f6000647073e77ae296653b8830b279669766ef" + integrity sha512-Y/UWPdHZkHIVH2To4GWHCTzmrsB6H7PBWy6pw+TWz5sr4HW2mcE+Uj6qWgoVNxvQU1Pfn5LQQzI6EQ65p8QbiQ== dependencies: browserstack "~1.5.1" browserstack-local "^1.3.7" q "~1.5.0" -karma-chrome-launcher@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" - integrity sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w== +karma-chrome-launcher@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz#805a586799a4d05f4e54f72a204979f3f3066738" + integrity sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg== dependencies: - fs-access "^1.0.0" which "^1.2.1" -karma-firefox-launcher@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-1.3.0.tgz#ebcbb1d1ddfada6be900eb8fae25bcf2dcdc8171" - integrity sha512-Fi7xPhwrRgr+94BnHX0F5dCl1miIW4RHnzjIGxF8GaIEp7rNqX7LSi7ok63VXs3PS/5MQaQMhGxw+bvD+pibBQ== +karma-firefox-launcher@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-2.1.1.tgz#6457226f8e4f091b664cef79bb5d39bf1e008765" + integrity sha512-VzDMgPseXak9DtfyE1O5bB2BwsMy1zzO1kUxVW1rP0yhC4tDNJ0p3JoFdzvrK4QqVzdqUMa9Rx9YzkdFp8hz3Q== dependencies: - is-wsl "^2.1.0" + is-wsl "^2.2.0" + which "^2.0.1" -karma-jasmine@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-2.0.1.tgz#26e3e31f2faf272dd80ebb0e1898914cc3a19763" - integrity sha512-iuC0hmr9b+SNn1DaUD2QEYtUxkS1J+bSJSn7ejdEexs7P8EYvA1CWkEdrDQ+8jVH3AgWlCNwjYsT1chjcNW9lA== +karma-jasmine@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-4.0.1.tgz#b99e073b6d99a5196fc4bffc121b89313b0abd82" + integrity sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw== dependencies: - jasmine-core "^3.3" + jasmine-core "^3.6.0" karma-requirejs@^1.1.0: version "1.1.0" @@ -9834,9 +8051,9 @@ karma-source-map-support@1.4.0: source-map-support "^0.5.5" karma-sourcemap-loader@^0.3.7: - version "0.3.7" - resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8" - integrity sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg= + version "0.3.8" + resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.8.tgz#d4bae72fb7a8397328a62b75013d2df937bdcf9c" + integrity sha512-zorxyAakYZuBcHRJE+vbrK2o2JXLFWK8VVjiT/6P+ltLBUGUvqTEkUiQ119MGdOrK7mrmxXHZF1/pfT6GgIZ6g== dependencies: graceful-fs "^4.1.2" @@ -9872,6 +8089,13 @@ karma@~4.4.0: tmp "0.0.33" useragent "2.3.0" +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + killable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" @@ -9901,18 +8125,16 @@ kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= - optionalDependencies: - graceful-fs "^4.1.9" - klona@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== +kuler@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" + integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== + last-run@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b" @@ -9921,14 +8143,14 @@ last-run@^1.1.0: default-resolution "^2.0.0" es6-weak-map "^2.0.1" -latest-version@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" - integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= +latest-version@^5.0.0, latest-version@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" + integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== dependencies: - package-json "^4.0.0" + package-json "^6.3.0" -lazystream@^1.0.0, lazystream@~1.0.0: +lazystream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= @@ -9942,13 +8164,6 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - lead@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" @@ -9956,20 +8171,20 @@ lead@^1.0.0: dependencies: flush-write-stream "^1.0.2" -less-loader@7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-7.0.2.tgz#0d73a49ec32a9d3ff12614598e6e2b47fb2a35c4" - integrity sha512-7MKlgjnkCf63E3Lv6w2FvAEgLMx3d/tNBExITcanAq7ys5U8VPWT3F6xcRjYmdNfkoQ9udoVFb1r2azSiTnD6w== +less-loader@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-8.1.1.tgz#ababe912580457ad00a4318146aac5b53e023f42" + integrity sha512-K93jJU7fi3n6rxVvzp8Cb88Uy9tcQKfHlkoezHwKILXhlNYiRQl4yowLIkQqmBXOH/5I8yoKiYeIf781HGkW9g== dependencies: klona "^2.0.4" - loader-utils "^2.0.0" - schema-utils "^3.0.0" -less@3.12.2: - version "3.12.2" - resolved "https://registry.yarnpkg.com/less/-/less-3.12.2.tgz#157e6dd32a68869df8859314ad38e70211af3ab4" - integrity sha512-+1V2PCMFkL+OIj2/HrtrvZw0BC0sYLMICJfbQjuj/K8CEnlrFX6R5cKKgzzttsZDHyxQNL1jqMREjKN3ja/E3Q== +less@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/less/-/less-4.1.1.tgz#15bf253a9939791dc690888c3ff424f3e6c7edba" + integrity sha512-w09o8tZFPThBscl5d0Ggp3RcrKIouBoQscnOMgFH3n5V3kN/CXGHNfCkRPtxJk6nKryDXaV9aHLK55RXuH4sAw== dependencies: + copy-anything "^2.0.1" + parse-node-version "^1.0.1" tslib "^1.10.0" optionalDependencies: errno "^0.1.1" @@ -9977,7 +8192,7 @@ less@3.12.2: image-size "~0.5.0" make-dir "^2.1.0" mime "^1.4.1" - native-request "^1.0.5" + needle "^2.5.2" source-map "~0.6.0" leven@^3.1.0: @@ -10000,10 +8215,10 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -license-webpack-plugin@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-2.3.1.tgz#08eddb2f776c7c64c02f308a00e017d6e824d0b6" - integrity sha512-yhqTmlYIEpZWA122lf6E0G8+rkn0AzoQ1OpzUKKs/lXUqG1plmGnwmkuuPlfggzJR5y6DLOdot/Tv00CC51CeQ== +license-webpack-plugin@2.3.19: + version "2.3.19" + resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-2.3.19.tgz#f02720b2b0bcd9ae27fb63f0bd908d9ac9335d6c" + integrity sha512-z/izhwFRYHs1sCrDgrTUsNJpd+Xsd06OcFWSwHz/TiZygm5ucweVZi1Hu14Rf6tOj/XAl1Ebyc7GW6ZyyINyWA== dependencies: "@types/webpack-sources" "^0.1.5" webpack-sources "^1.2.0" @@ -10029,13 +8244,10 @@ liftoff@^3.1.0: rechoir "^0.6.2" resolve "^1.1.7" -line-column@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/line-column/-/line-column-1.0.2.tgz#d25af2936b6f4849172b312e4792d1d987bc34a2" - integrity sha1-0lryk2tvSEkXKzEuR5LR2Ye8NKI= - dependencies: - isarray "^1.0.0" - isobject "^2.0.0" +lilconfig@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.3.tgz#68f3005e921dafbd2a2afb48379986aa6d2579fd" + integrity sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg== lines-and-columns@^1.1.6: version "1.1.6" @@ -10068,10 +8280,10 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== +loader-runner@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" + integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== loader-utils@1.2.3: version "1.2.3" @@ -10091,7 +8303,7 @@ loader-utils@2.0.0, loader-utils@^2.0.0: emojis-list "^3.0.0" json5 "^2.1.2" -loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: +loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== @@ -10140,11 +8352,6 @@ lodash._objecttypes@~2.4.1: resolved "https://registry.yarnpkg.com/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz#7c0b7f69d98a1f76529f890b0cdb1b4dfec11c11" integrity sha1-fAt/admKH3ZSn4kLDNsbTf7BHBE= -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - lodash._shimkeys@~2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz#6e9cc9666ff081f0b5a6c978b83e242e6949d203" @@ -10152,16 +8359,16 @@ lodash._shimkeys@~2.4.1: dependencies: lodash._objecttypes "~2.4.1" -lodash.at@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.at/-/lodash.at-4.6.0.tgz#93cdce664f0a1994ea33dd7cd40e23afd11b0ff8" - integrity sha1-k83OZk8KGZTqM9181A4jr9EbD/g= - lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + lodash.defaults@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" @@ -10177,16 +8384,11 @@ lodash.flatten@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= -lodash.get@^4.0.0, lodash.get@^4.4.2: +lodash.get@^4.0.0: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= -lodash.has@^4.5.2: - version "4.5.2" - resolved "https://registry.yarnpkg.com/lodash.has/-/lodash.has-4.5.2.tgz#d19f4dc1095058cccbe2b0cdf4ee0fe4aa37c862" - integrity sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI= - lodash.includes@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" @@ -10278,21 +8480,6 @@ lodash.snakecase@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" integrity sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40= -lodash.template@^4.0.2: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.toarray@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" @@ -10315,15 +8502,10 @@ lodash.values@^2.4.1: dependencies: lodash.keys "~2.4.1" -lodash@^4.14.0, lodash@^4.16.6, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.8.0, lodash@~4.17.15, lodash@~4.17.2: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== - -lodash@^4.17.19: - version "4.17.19" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" - integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== +lodash@^4.16.6, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.5, lodash@~4.17.15: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== log-symbols@^2.2.0: version "2.2.0" @@ -10332,19 +8514,13 @@ log-symbols@^2.2.0: dependencies: chalk "^2.0.1" -log-symbols@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" - integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: - chalk "^2.4.2" - -log-symbols@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" - integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== - dependencies: - chalk "^4.0.0" + chalk "^4.1.0" + is-unicode-supported "^0.1.0" log4js@^4.0.0: version "4.5.1" @@ -10357,10 +8533,21 @@ log4js@^4.0.0: rfdc "^1.1.4" streamroller "^1.0.6" +logform@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/logform/-/logform-2.2.0.tgz#40f036d19161fc76b68ab50fdc7fe495544492f2" + integrity sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg== + dependencies: + colors "^1.2.1" + fast-safe-stringify "^2.0.4" + fecha "^4.2.0" + ms "^2.1.1" + triple-beam "^1.3.0" + loglevel@^1.6.8: - version "1.6.8" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171" - integrity sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA== + version "1.7.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" + integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== long@^4.0.0: version "4.0.0" @@ -10374,25 +8561,22 @@ loose-envify@^1.0.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lowercase-keys@^1.0.0: +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + lru-cache@2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.5.0.tgz#d82388ae9c960becbea0c73bb9eb79b6c6ce9aeb" integrity sha1-2COIrpyWC+y+oMc7uet5tsbOmus= -lru-cache@4.1.x, lru-cache@^4.0.1, lru-cache@^4.1.3: +lru-cache@4.1.x: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== @@ -10400,7 +8584,7 @@ lru-cache@4.1.x, lru-cache@^4.0.1, lru-cache@^4.1.3: pseudomap "^1.0.2" yallist "^2.1.2" -lru-cache@^5.0.0, lru-cache@^5.1.1: +lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== @@ -10414,53 +8598,42 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru-queue@0.1: +lru-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= dependencies: es5-ext "~0.10.2" -macos-release@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" - integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== - -madge@^3.6.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/madge/-/madge-3.8.0.tgz#c76538c1a8accda297009a25ceb8b29b20c99b86" - integrity sha512-bcX2QxiTwWvZrNM+XkmZY1SPl18C2HGaQGhroj3YzqSRxQ1ns7WXCYDyGCfZwp/uLibnNd6IOWrRLOkCS+lpAg== +madge@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/madge/-/madge-5.0.1.tgz#2096d9006558ea0669b3ade89c2cda708a24e22b" + integrity sha512-krmSWL9Hkgub74bOjnjWRoFPAJvPwSG6Dbta06qhWOq6X/n/FPzO3ESZvbFYVIvG2g4UHXvCJN1b+RZLaSs9nA== dependencies: - chalk "^3.0.0" - commander "^4.0.1" + chalk "^4.1.1" + commander "^7.2.0" commondir "^1.0.1" - debug "^4.0.1" - dependency-tree "^7.0.2" - detective-amd "^3.0.0" + debug "^4.3.1" + dependency-tree "^8.1.1" + detective-amd "^3.1.0" detective-cjs "^3.1.1" - detective-es6 "^2.1.0" + detective-es6 "^2.2.0" detective-less "^1.0.2" - detective-postcss "^3.0.1" + detective-postcss "^5.0.0" detective-sass "^3.0.1" detective-scss "^2.0.1" detective-stylus "^1.0.0" - detective-typescript "^5.7.0" + detective-typescript "^7.0.0" graphviz "0.0.9" - ora "^4.0.2" - pify "^4.0.0" + ora "^5.4.1" pluralize "^8.0.0" - pretty-ms "^5.0.0" + precinct "^8.1.0" + pretty-ms "^7.0.1" rc "^1.2.7" + typescript "^3.9.5" walkdir "^0.4.1" -magic-string@0.25.4: - version "0.25.4" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.4.tgz#325b8a0a79fc423db109b77fd5a19183b7ba5143" - integrity sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw== - dependencies: - sourcemap-codec "^1.4.4" - -magic-string@0.25.7, magic-string@^0.25.0, magic-string@^0.25.2: +magic-string@0.25.7, magic-string@^0.25.2: version "0.25.7" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== @@ -10474,14 +8647,7 @@ magic-string@^0.22.4: dependencies: vlq "^0.2.2" -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - -make-dir@^2.0.0, make-dir@^2.1.0: +make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== @@ -10489,10 +8655,10 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0, make-dir@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" - integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" @@ -10501,22 +8667,26 @@ make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -make-fetch-happen@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd" - integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag== +make-fetch-happen@^8.0.14, make-fetch-happen@^8.0.9: + version "8.0.14" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz#aaba73ae0ab5586ad8eaa68bd83332669393e222" + integrity sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ== dependencies: - agentkeepalive "^3.4.1" - cacache "^12.0.0" - http-cache-semantics "^3.8.1" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - node-fetch-npm "^2.0.2" - promise-retry "^1.1.1" - socks-proxy-agent "^4.0.0" - ssri "^6.0.0" + agentkeepalive "^4.1.3" + cacache "^15.0.5" + http-cache-semantics "^4.1.0" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^6.0.0" + minipass "^3.1.3" + minipass-collect "^1.0.2" + minipass-fetch "^1.3.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + promise-retry "^2.0.1" + socks-proxy-agent "^5.0.0" + ssri "^8.0.0" make-iterator@^1.0.0: version "1.0.1" @@ -10525,7 +8695,7 @@ make-iterator@^1.0.0: dependencies: kind-of "^6.0.2" -map-age-cleaner@^0.1.1: +map-age-cleaner@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== @@ -10537,20 +8707,15 @@ map-cache@^0.2.0, map-cache@^0.2.2: resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= -map-obj@^1.0.0, map-obj@^1.0.1: +map-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= -map-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" - integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= - map-obj@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.1.0.tgz#b91221b542734b9f14256c0132c897c5d7256fd5" - integrity sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g== + version "4.2.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.2.1.tgz#e4ea399dbc979ae735c83c863dd31bdf364277b7" + integrity sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ== map-stream@~0.1.0: version "0.1.0" @@ -10596,38 +8761,30 @@ materialize-css@1.0.0: resolved "https://registry.yarnpkg.com/materialize-css/-/materialize-css-1.0.0.tgz#8d5db1c4a81c6d65f3b2e2ca83a8e08daa24d1be" integrity sha512-4/oecXl8y/1i8RDZvyvwAICyqwNoKU4or5uf8uoAd74k76KzZ0Llym4zhJ5lLNUskcqjO0AuMcvNyDkpz8Z6zw== -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - -mdn-data@2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" - integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== +mem@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/mem/-/mem-8.1.1.tgz#cf118b357c65ab7b7e0817bdf00c8062297c0122" + integrity sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA== dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" + map-age-cleaner "^0.1.3" + mimic-fn "^3.1.0" + +memfs@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.2.2.tgz#5de461389d596e3f23d48bb7c2afb6161f4df40e" + integrity sha512-RE0CwmIM3CEvpcdK3rZ19BC4E6hv9kADkMN5rPduRak58cNArWLi/9jFLsa4rhsjfVxMP3v0jO7FHXq7SvFY5Q== + dependencies: + fs-monkey "1.0.3" memoizeasync@^1.1.0: version "1.1.0" @@ -10638,18 +8795,18 @@ memoizeasync@^1.1.0: passerror "1.1.1" memoizee@^0.4.14: - version "0.4.14" - resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57" - integrity sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg== + version "0.4.15" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" + integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== dependencies: - d "1" - es5-ext "^0.10.45" - es6-weak-map "^2.0.2" + d "^1.0.1" + es5-ext "^0.10.53" + es6-weak-map "^2.0.3" event-emitter "^0.3.5" - is-promise "^2.1" - lru-queue "0.1" - next-tick "1" - timers-ext "^0.1.5" + is-promise "^2.2.2" + lru-queue "^0.1.0" + next-tick "^1.1.0" + timers-ext "^0.1.7" memory-fs@^0.4.1: version "0.4.1" @@ -10659,59 +8816,22 @@ memory-fs@^0.4.1: errno "^0.1.3" readable-stream "^2.0.1" -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== +meow@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/meow/-/meow-7.1.1.tgz#7c01595e3d337fcb0ec4e8eed1666ea95903d306" + integrity sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA== dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -meow@^3.3.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -meow@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975" - integrity sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A== - dependencies: - camelcase-keys "^4.0.0" - decamelize-keys "^1.0.0" - loud-rejection "^1.0.0" - minimist "^1.1.3" - minimist-options "^3.0.1" - normalize-package-data "^2.3.4" - read-pkg-up "^3.0.0" - redent "^2.0.0" - trim-newlines "^2.0.0" - -meow@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" - integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== - dependencies: - camelcase-keys "^4.0.0" - decamelize-keys "^1.0.0" - loud-rejection "^1.0.0" - minimist-options "^3.0.1" - normalize-package-data "^2.3.4" - read-pkg-up "^3.0.0" - redent "^2.0.0" - trim-newlines "^2.0.0" - yargs-parser "^10.0.0" + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "4.1.0" + normalize-package-data "^2.5.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.13.1" + yargs-parser "^18.1.3" meow@^8.0.0: version "8.1.2" @@ -10776,91 +8896,76 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== +micromatch@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== dependencies: braces "^3.0.1" - picomatch "^2.0.5" + picomatch "^2.2.3" -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== +mime-db@1.49.0, "mime-db@>= 1.43.0 < 2": + version "1.49.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" + integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== + +mime-types@^2.1.12, mime-types@^2.1.16, mime-types@^2.1.27, mime-types@^2.1.28, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.32" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" + integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.43.0, "mime-db@>= 1.43.0 < 2": - version "1.43.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" - integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== - -mime-db@1.45.0: - version "1.45.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" - integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== - -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.28" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd" - integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ== - dependencies: - mime-db "1.45.0" - -mime-types@^2.1.16, mime-types@~2.1.17, mime-types@~2.1.24: - version "2.1.26" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" - integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== - dependencies: - mime-db "1.43.0" + mime-db "1.49.0" mime@1.6.0, mime@^1.4.1, mime@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.2.0, mime@^2.3.1, mime@^2.4.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" - integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== +mime@^2.3.1, mime@^2.4.4, mime@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" + integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -mimic-fn@^2.0.0, mimic-fn@^2.1.0: +mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-fn@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" + integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== + +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + min-indent@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -mini-css-extract-plugin@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.2.1.tgz#30ea7dee632b3002b0c77aeed447790408cb247e" - integrity sha512-G3yw7/TQaPfkuiR73MDcyiqhyP8SnbmLhUbpC76H+wtQxA6wfKhMCQOCb6wnPK0dQbjORAeOILQqEesg4/wF7A== +mini-css-extract-plugin@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.5.1.tgz#c0ac557c48a7de47de3df0768fe037c9cf961f69" + integrity sha512-wEpr0XooH6rw/Mlf+9KTJoMBLT3HujzdTrmohPjAzF47N4Q6yAeczQLpRD/WxvAtXvskcXbily7TAdCfi2M4Dg== dependencies: loader-utils "^2.0.0" schema-utils "^3.0.0" webpack-sources "^1.1.0" -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: +minimalistic-assert@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: +minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -10876,20 +8981,7 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist-options@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" - integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@1.x, minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: +minimist@1.x, minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -10906,6 +8998,17 @@ minipass-collect@^1.0.2: dependencies: minipass "^3.0.0" +minipass-fetch@^1.3.0, minipass-fetch@^1.3.2: + version "1.3.4" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.3.4.tgz#63f5af868a38746ca7b33b03393ddf8c291244fe" + integrity sha512-TielGogIzbUEtd1LsjZFs47RWuHHfhl6TiCx1InVxApBAmQ8bL0dL5ilkLGcRvuyW/A9nE+Lvn855Ewz8S0PnQ== + dependencies: + minipass "^3.1.0" + minipass-sized "^1.0.3" + minizlib "^2.0.0" + optionalDependencies: + encoding "^0.1.12" + minipass-flush@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" @@ -10913,14 +9016,29 @@ minipass-flush@^1.0.5: dependencies: minipass "^3.0.0" -minipass-pipeline@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz#3dcb6bb4a546e32969c7ad710f2c79a86abba93a" - integrity sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA== +minipass-json-stream@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" + integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== + dependencies: + jsonparse "^1.3.1" + minipass "^3.0.0" + +minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== dependencies: minipass "^3.0.0" -minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + +minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== @@ -10928,10 +9046,10 @@ minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: safe-buffer "^5.1.2" yallist "^3.0.0" -minipass@^3.0.0, minipass@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5" - integrity sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w== +minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== dependencies: yallist "^4.0.0" @@ -10942,30 +9060,14 @@ minizlib@^1.2.1: dependencies: minipass "^2.9.0" -minizlib@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.0.tgz#fd52c645301ef09a63a2c209697c294c6ce02cf3" - integrity sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA== +minizlib@^2.0.0, minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: minipass "^3.0.0" yallist "^4.0.0" -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -10979,21 +9081,7 @@ mkdirp-classic@^0.5.2: resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12" - integrity sha1-HXMHam35hs2TROFecfzAWkyavxI= - dependencies: - minimist "0.0.8" - -"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: - version "0.5.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz#fd01504a6797ec5c9be81ff43d204961ed64a512" - integrity sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw== - dependencies: - minimist "^1.2.5" - -mkdirp@^0.5.3, mkdirp@^0.5.5: +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -11010,27 +9098,26 @@ modify-values@^1.0.0: resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== -module-definition@^3.0.0, module-definition@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/module-definition/-/module-definition-3.3.0.tgz#aae06d68c99c5f93841e59b8a4469b974956d4d4" - integrity sha512-HTplA9xwDzH67XJFC1YvZMUElWJD28DV0dUq7lhTs+JKJamUOWA/CcYWSlhW5amJO66uWtY7XdltT+LfX0wIVg== +module-definition@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/module-definition/-/module-definition-3.3.1.tgz#fedef71667713e36988b93d0626a4fe7b35aebfc" + integrity sha512-kLidGPwQ2yq484nSD+D3JoJp4Etc0Ox9P0L34Pu/cU4X4HcG7k7p62XI5BBuvURWMRX3RPyuhOcBHbKus+UH4A== dependencies: - ast-module-types "^2.6.0" + ast-module-types "^2.7.1" node-source-walk "^4.0.0" -module-lookup-amd@^6.1.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/module-lookup-amd/-/module-lookup-amd-6.2.0.tgz#70600008b3f26630fde9ef9ae6165ac69de6ecbb" - integrity sha512-uxHCj5Pw9psZiC1znjU2qPsubt6haCSsN9m7xmIdoTciEgfxUkE1vhtDvjHPuOXEZrVJhjKgkmkP+w73rRuelQ== +module-lookup-amd@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/module-lookup-amd/-/module-lookup-amd-7.0.1.tgz#d67c1a93f2ff8e38b8774b99a638e9a4395774b2" + integrity sha512-w9mCNlj0S8qviuHzpakaLVc+/7q50jl9a/kmJ/n8bmXQZgDPkQHnPBb8MUOYh3WpAYkXuNc2c+khsozhIp/amQ== dependencies: commander "^2.8.1" debug "^4.1.0" - file-exists-dazinatorfork "^1.0.2" - find "^0.3.0" + glob "^7.1.6" requirejs "^2.3.5" - requirejs-config-file "^3.1.1" + requirejs-config-file "^4.0.0" -morgan@^1.8.2: +morgan@^1.10.0, morgan@^1.8.2: version "1.10.0" resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" integrity sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ== @@ -11041,18 +9128,6 @@ morgan@^1.8.2: on-finished "~2.3.0" on-headers "~1.0.2" -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -11063,12 +9138,12 @@ ms@2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -ms@2.1.2, ms@^2.0.0: +ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.1.1: +ms@^2.0.0, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -11086,10 +9161,10 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" -multimatch@*, multimatch@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" - integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== +multimatch@*, multimatch@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" + integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== dependencies: "@types/minimatch" "^3.0.3" array-differ "^3.0.0" @@ -11097,11 +9172,6 @@ multimatch@*, multimatch@^4.0.0: arrify "^2.0.1" minimatch "^3.0.4" -mutation-observer@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/mutation-observer/-/mutation-observer-1.0.3.tgz#42e9222b101bca82e5ba9d5a7acf4a14c0f263d0" - integrity sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA== - mute-stdout@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" @@ -11117,15 +9187,15 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nan@^2.12.1: - version "2.14.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" - integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== +nan@^2.12.1, nan@^2.14.2: + version "2.14.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" + integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== -nanoid@^3.1.15: - version "3.1.16" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.16.tgz#b21f0a7d031196faf75314d7c65d36352beeef64" - integrity sha512-+AK8MN0WHji40lj8AEuwLOvLSbWYApQpre/aFJZD71r43wVRLrOYS4FmJOPQYon1TqB462RzrrxlfA74XRES8w== +nanoid@^3.1.23: + version "3.1.23" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" + integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== nanomatch@^1.2.9: version "1.2.13" @@ -11154,27 +9224,31 @@ nash@^3.0.0: lodash "^4.17.5" minimist "^1.1.0" -native-request@^1.0.5: - version "1.0.8" - resolved "https://registry.yarnpkg.com/native-request/-/native-request-1.0.8.tgz#8f66bf606e0f7ea27c0e5995eb2f5d03e33ae6fb" - integrity sha512-vU2JojJVelUGp6jRcLwToPoWGxSx23z/0iX+I77J3Ht17rf2INGjrhOoQnjVo60nQd8wVsgzKkPfRXBiVdD2ag== +needle@^2.5.2: + version "2.8.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.8.0.tgz#1c8ef9c1a2c29dcc1e83d73809d7bc681c80a048" + integrity sha512-ZTq6WYkN/3782H1393me3utVYdq2XyqNUFBsprEE3VMAT0+hP/cItpnITpqsY6ep2yeFE4Tqtqwc74VqUlUYtw== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== - -neo-async@^2.6.2: +neo-async@^2.6.0, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -next-tick@1: +netmask@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" + integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== + +next-tick@1, next-tick@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== @@ -11190,9 +9264,9 @@ nice-try@^1.0.4: integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== nock@^13.0.3: - version "13.0.3" - resolved "https://registry.yarnpkg.com/nock/-/nock-13.0.3.tgz#9f81f04499af6a87f9c419a023920b623d715110" - integrity sha512-hDscKS5chEfyEiF8J1syz8mkkH6Wetp04ECAAPNdL5k6e6WmRgx9FZZNnCrjePNdykgiiPXORBcXbNmMzFOP5w== + version "13.1.1" + resolved "https://registry.yarnpkg.com/nock/-/nock-13.1.1.tgz#3c830129d4560957f59b6f480a41ddbaf9cf57af" + integrity sha512-YKTR9MjfK3kS9/l4nuTxyYm30cgOExRHzkLNhL8nhEUyU4f8Za/dRxOqjhVT1vGs0svWo3dDnJTUX1qxYeWy5w== dependencies: debug "^4.1.0" json-stringify-safe "^5.0.1" @@ -11206,73 +9280,52 @@ node-emoji@^1.4.1: dependencies: lodash.toarray "^4.4.0" -node-fetch-npm@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4" - integrity sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg== - dependencies: - encoding "^0.1.11" - json-parse-better-errors "^1.0.0" - safe-buffer "^5.1.1" - -node-fetch@^2.3.0, node-fetch@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== - -node-fetch@^2.6.1: +node-fetch@^2.3.0, node-fetch@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -node-forge@0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" - integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== -node-forge@^0.8.0: - version "0.8.5" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.8.5.tgz#57906f07614dc72762c84cef442f427c0e1b86ee" - integrity sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q== - -node-forge@^0.9.0: - version "0.9.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.1.tgz#775368e6846558ab6676858a4d8c6e8d16c677b5" - integrity sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ== - -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== +node-gyp@^7.1.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae" + integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ== dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.3" + nopt "^5.0.0" + npmlog "^4.1.2" + request "^2.88.2" + rimraf "^3.0.2" + semver "^7.3.2" + tar "^6.0.2" + which "^2.0.2" -node-releases@^1.1.53: - version "1.1.53" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4" - integrity sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ== +node-gyp@^8.0.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.1.0.tgz#81f43283e922d285c886fb0e0f520a7fd431d8c2" + integrity sha512-o2elh1qt7YUp3lkMwY3/l4KF3j/A3fI/Qt4NH+CQQgPJdqGE9y7qnP84cjIWN27Q0jJkrSAhCVDg+wBVNBYdBg== + dependencies: + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.6" + make-fetch-happen "^8.0.14" + nopt "^5.0.0" + npmlog "^4.1.2" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.0" + which "^2.0.2" + +node-releases@^1.1.71: + version "1.1.73" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" + integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== node-source-walk@^4.0.0, node-source-walk@^4.2.0: version "4.2.0" @@ -11291,14 +9344,14 @@ nodejs-websocket@^1.7.2: resolved "https://registry.yarnpkg.com/nodejs-websocket/-/nodejs-websocket-1.7.2.tgz#94abd1e248f57d4d1c663dec3831015c6dad98a6" integrity sha512-PFX6ypJcCNDs7obRellR0DGTebfUhw1SXGKe2zpB+Ng1DQJhdzbzx1ob+AvJCLzy2TJF4r8cCDqMQqei1CZdPQ== -nopt@3.0.x: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== dependencies: abbrev "1" -normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0: +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -11309,16 +9362,16 @@ normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package- validate-npm-package-license "^3.0.1" normalize-package-data@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.0.tgz#1f8a7c423b3d2e85eb36985eaf81de381d01301a" - integrity sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw== + version "3.0.2" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.2.tgz#cae5c410ae2434f9a6c1baa65d5bc3b9366c8699" + integrity sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg== dependencies: - hosted-git-info "^3.0.6" - resolve "^1.17.0" - semver "^7.3.2" + hosted-git-info "^4.0.1" + resolve "^1.20.0" + semver "^7.3.4" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.0, normalize-path@^2.1.1: +normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= @@ -11335,10 +9388,15 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= -normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== +normalize-url@^4.1.0: + version "4.5.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== now-and-later@^2.0.0: version "2.0.1" @@ -11347,10 +9405,10 @@ now-and-later@^2.0.0: dependencies: once "^1.3.2" -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== +npm-bundled@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== dependencies: npm-normalize-package-bin "^1.0.1" @@ -11361,78 +9419,61 @@ npm-install-checks@^4.0.0: dependencies: semver "^7.1.1" -npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: +npm-normalize-package-bin@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== -npm-package-arg@8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.0.tgz#b5f6319418c3246a1c38e1a8fbaa06231bc5308f" - integrity sha512-/ep6QDxBkm9HvOhOg0heitSd7JHA1U7y1qhhlRlteYYAi9Pdb/ZV7FW5aHpkrpM8+P+4p/jjR8zCyKPBMBjSig== +npm-package-arg@8.1.2: + version "8.1.2" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.2.tgz#b868016ae7de5619e729993fbd8d11dc3c52ab62" + integrity sha512-6Eem455JsSMJY6Kpd3EyWE+n5hC+g9bSyHr9K9U2zqZb7+02+hObQ2c0+8iDk/mNF+8r1MhY44WypKJAkySIYA== dependencies: - hosted-git-info "^3.0.6" - semver "^7.0.0" + hosted-git-info "^4.0.1" + semver "^7.3.4" validate-npm-package-name "^3.0.0" -npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" - integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg== +npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.2: + version "8.1.5" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" + integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== dependencies: - hosted-git-info "^2.7.1" - osenv "^0.1.5" - semver "^5.6.0" + hosted-git-info "^4.0.1" + semver "^7.3.4" validate-npm-package-name "^3.0.0" -npm-package-arg@^8.0.0: - version "8.0.1" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.0.1.tgz#9d76f8d7667b2373ffda60bb801a27ef71e3e270" - integrity sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ== +npm-packlist@^2.1.4: + version "2.2.2" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-2.2.2.tgz#076b97293fa620f632833186a7a8f65aaa6148c8" + integrity sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg== dependencies: - hosted-git-info "^3.0.2" - semver "^7.0.0" - validate-npm-package-name "^3.0.0" - -npm-packlist@^1.1.12: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" + glob "^7.1.6" + ignore-walk "^3.0.3" + npm-bundled "^1.1.1" npm-normalize-package-bin "^1.0.1" -npm-pick-manifest@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz#2befed87b0fce956790f62d32afb56d7539c022a" - integrity sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw== +npm-pick-manifest@6.1.1, npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" + integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== dependencies: npm-install-checks "^4.0.0" + npm-normalize-package-bin "^1.0.1" + npm-package-arg "^8.1.2" + semver "^7.3.4" + +npm-registry-fetch@^10.0.0: + version "10.1.2" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-10.1.2.tgz#11ffe03d813c653e768bdf762cfc5f1afe91b8bd" + integrity sha512-KsM/TdPmntqgBFlfsbkOLkkE9ovZo7VpVcd+/eTdYszCrgy5zFl5JzWm+OxavFaEWlbkirpkou+ZYI00RmOBFA== + dependencies: + lru-cache "^6.0.0" + make-fetch-happen "^8.0.9" + minipass "^3.1.3" + minipass-fetch "^1.3.0" + minipass-json-stream "^1.0.1" + minizlib "^2.0.0" npm-package-arg "^8.0.0" - semver "^7.0.0" - -npm-pick-manifest@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" - integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== - dependencies: - figgy-pudding "^3.5.1" - npm-package-arg "^6.0.0" - semver "^5.4.1" - -npm-registry-fetch@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-4.0.7.tgz#57951bf6541e0246b34c9f9a38ab73607c9449d7" - integrity sha512-cny9v0+Mq6Tjz+e0erFAB+RYJ/AVGzkjnISiobqP8OWj9c9FLoZZu8/SPSKJWE17F1tk4018wfjV+ZbIbqC7fQ== - dependencies: - JSONStream "^1.3.4" - bluebird "^3.5.1" - figgy-pudding "^3.4.1" - lru-cache "^5.1.1" - make-fetch-happen "^5.0.0" - npm-package-arg "^6.1.0" - safe-buffer "^5.2.0" npm-run-path@^2.0.0: version "2.0.2" @@ -11441,17 +9482,22 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -nth-check@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== +npmlog@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== dependencies: - boolbase "~1.0.0" + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" -null-check@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" - integrity sha1-l33/1xdgErnsMNKjnbXPcqBDnt0= +nth-check@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.0.tgz#1bb4f6dac70072fc313e8c9cd1417b5074c0a125" + integrity sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q== + dependencies: + boolbase "^1.0.0" num2fraction@^1.2.2: version "1.2.2" @@ -11463,17 +9509,12 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -oauth-sign@~0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM= - oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4.0.1, object-assign@^4.1.1: +object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -11492,17 +9533,25 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== +object-hash@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" + integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== + +object-inspect@^1.9.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" + integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== object-is@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" - integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: +object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -11514,7 +9563,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.0.4: +object.assign@^4.0.4, object.assign@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== @@ -11524,16 +9573,6 @@ object.assign@^4.0.4: has-symbols "^1.0.1" object-keys "^1.1.1" -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - object.defaults@^1.0.0, object.defaults@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" @@ -11544,14 +9583,6 @@ object.defaults@^1.0.0, object.defaults@^1.1.0: for-own "^1.0.0" isobject "^3.0.0" -object.getownpropertydescriptors@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - object.map@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" @@ -11575,26 +9606,11 @@ object.reduce@^1.0.0: for-own "^1.0.0" make-iterator "^1.0.0" -object.values@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" - integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" - obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -octokit-pagination-methods@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" - integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== - on-finished@^2.2.0, on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -11614,6 +9630,13 @@ once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: dependencies: wrappy "1" +one-time@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" + integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== + dependencies: + fn.name "1.x.x" + onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" @@ -11622,19 +9645,20 @@ onetime@^2.0.0: mimic-fn "^1.0.0" onetime@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" - integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" -open@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/open/-/open-7.3.0.tgz#45461fdee46444f3645b6e14eb3ca94b82e1be69" - integrity sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw== +open@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.0.2.tgz#8c3e95cce93ba2fc8d99968ee8bfefecdb50b84f" + integrity sha512-NV5QmWJrTaNBLHABJyrb+nd5dXI5zfea/suWawBhkHzAbVhLLiJdrqMgxMypGK9Eznp2Ltoh7SAVkQ3XAucX7Q== dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" open@^6.3.0: version "6.4.0" @@ -11643,6 +9667,13 @@ open@^6.3.0: dependencies: is-wsl "^1.1.0" +openapi3-ts@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/openapi3-ts/-/openapi3-ts-2.0.1.tgz#b270aecea09e924f1886bc02a72608fca5a98d85" + integrity sha512-v6X3iwddhi276siej96jHGIqTx3wzVfMTmpGJEQDt7GPI7pI6sywItURLzpEci21SBRpPN/aOWSF5mVfFVNmcg== + dependencies: + yaml "^1.10.0" + opener@^1.5.1: version "1.5.2" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" @@ -11655,7 +9686,7 @@ opn@^5.5.0: dependencies: is-wsl "^1.1.0" -optimist@^0.6.1, optimist@~0.6.0: +optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= @@ -11675,17 +9706,18 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" -ora@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.1.0.tgz#b188cf8cd2d4d9b13fd25383bc3e5cba352c94f8" - integrity sha512-9tXIMPvjZ7hPTbk8DFq1f7Kow/HU/pQYB60JbNq+QnGwcyhWVZaQ4hM9zQDEsPxw/muLpgiHSaumUZxCAmod/w== +ora@5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.0.tgz#42eda4855835b9cd14d33864c97a3c95a3f56bf4" + integrity sha512-1StwyXQGoU6gdjYkyVcqOLnVlbKj+6yPNNOxJVgpt9t4eksKjiriiHuxktLYkgllwk+D6MbC4ihH84L1udRXPg== dependencies: + bl "^4.1.0" chalk "^4.1.0" cli-cursor "^3.1.0" - cli-spinners "^2.4.0" + cli-spinners "^2.5.0" is-interactive "^1.0.0" - log-symbols "^4.0.0" - mute-stream "0.0.8" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" strip-ansi "^6.0.0" wcwidth "^1.0.1" @@ -11701,31 +9733,18 @@ ora@^3.4.0: strip-ansi "^5.2.0" wcwidth "^1.0.1" -ora@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/ora/-/ora-4.0.3.tgz#752a1b7b4be4825546a7a3d59256fa523b6b6d05" - integrity sha512-fnDebVFyz309A73cqCipVL1fBZewq4vwgSHfxh43vVy31mbyoQ8sCH3Oeaog/owYOs/lLlGVPCISQonTneg6Pg== - dependencies: - chalk "^3.0.0" - cli-cursor "^3.1.0" - cli-spinners "^2.2.0" - is-interactive "^1.0.0" - log-symbols "^3.0.0" - mute-stream "0.0.8" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -ora@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.0.0.tgz#4f0b34f2994877b49b452a707245ab1e9f6afccb" - integrity sha512-s26qdWqke2kjN/wC4dy+IQPBIMWBJlSU/0JZhk30ZDBLelW25rv66yutUWARMigpGPzcXHb+Nac5pNhN/WsARw== +ora@^5.0.0, ora@^5.3.0, ora@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== dependencies: + bl "^4.1.0" chalk "^4.1.0" cli-cursor "^3.1.0" - cli-spinners "^2.4.0" + cli-spinners "^2.5.0" is-interactive "^1.0.0" - log-symbols "^4.0.0" - mute-stream "0.0.8" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" strip-ansi "^6.0.0" wcwidth "^1.0.1" @@ -11743,16 +9762,6 @@ original@^1.0.0: dependencies: url-parse "^1.4.3" -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - os-locale@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" @@ -11760,35 +9769,15 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-locale@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -os-name@^3.0.0, os-name@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" - integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== - dependencies: - macos-release "^2.2.0" - windows-release "^3.1.0" - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== p-defer@^1.0.0: version "1.0.0" @@ -11805,11 +9794,6 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -11818,18 +9802,18 @@ p-limit@^1.1.0: p-try "^1.0.0" p-limit@^2.0.0, p-limit@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" - integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" -p-limit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" - integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== +p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: - p-try "^2.0.0" + yocto-queue "^0.1.0" p-locate@^2.0.0: version "2.0.0" @@ -11888,66 +9872,70 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -package-json@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" - integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= +pac-proxy-agent@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-4.1.0.tgz#66883eeabadc915fc5e95457324cb0f0ac78defb" + integrity sha512-ejNgYm2HTXSIYX9eFlkvqFp8hyJ374uDf0Zq5YUAifiSh1D6fo+iBivQZirGvVv8dCYUsLhmLBRhlAYvBKI5+Q== dependencies: - got "^6.7.1" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" + "@tootallnate/once" "1" + agent-base "6" + debug "4" + get-uri "3" + http-proxy-agent "^4.0.1" + https-proxy-agent "5" + pac-resolver "^4.1.0" + raw-body "^2.2.0" + socks-proxy-agent "5" -pacote@9.5.12: - version "9.5.12" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.12.tgz#1e11dd7a8d736bcc36b375a9804d41bb0377bf66" - integrity sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ== +pac-resolver@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-4.2.0.tgz#b82bcb9992d48166920bc83c7542abb454bd9bdd" + integrity sha512-rPACZdUyuxT5Io/gFKUeeZFfE5T7ve7cAkE5TUZRRfuKP0u5Hocwe48X7ZEm6mYB+bTB0Qf+xlVlA/RM/i6RCQ== dependencies: - bluebird "^3.5.3" - cacache "^12.0.2" - chownr "^1.1.2" - figgy-pudding "^3.5.1" - get-stream "^4.1.0" - glob "^7.1.3" + degenerator "^2.2.0" + ip "^1.1.5" + netmask "^2.0.1" + +package-json@^6.3.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" + integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== + dependencies: + got "^9.6.0" + registry-auth-token "^4.0.0" + registry-url "^5.0.0" + semver "^6.2.0" + +pacote@11.3.2: + version "11.3.2" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.3.2.tgz#2bef04f6ec6bafceb5eb2f5b3965f0d00aee4d7e" + integrity sha512-lMO7V9aMhyE5gfaSFxKfW3OTdXuFBNQJfuNuet3NPzWWhOYIW90t85vHcHLDjdhgmfAdAHyh9q1HAap96ea0XA== + dependencies: + "@npmcli/git" "^2.0.1" + "@npmcli/installed-package-contents" "^1.0.6" + "@npmcli/promise-spawn" "^1.2.0" + "@npmcli/run-script" "^1.8.2" + cacache "^15.0.5" + chownr "^2.0.0" + fs-minipass "^2.1.0" infer-owner "^1.0.4" - lru-cache "^5.1.1" - make-fetch-happen "^5.0.0" - minimatch "^3.0.4" - minipass "^2.3.5" - mississippi "^3.0.0" - mkdirp "^0.5.1" - normalize-package-data "^2.4.0" - npm-normalize-package-bin "^1.0.0" - npm-package-arg "^6.1.0" - npm-packlist "^1.1.12" - npm-pick-manifest "^3.0.0" - npm-registry-fetch "^4.0.0" - osenv "^0.1.5" - promise-inflight "^1.0.1" - promise-retry "^1.1.1" - protoduck "^5.0.1" - rimraf "^2.6.2" - safe-buffer "^5.1.2" - semver "^5.6.0" - ssri "^6.0.1" - tar "^4.4.10" - unique-filename "^1.1.1" - which "^1.3.1" + minipass "^3.1.3" + mkdirp "^1.0.3" + npm-package-arg "^8.0.1" + npm-packlist "^2.1.4" + npm-pick-manifest "^6.0.0" + npm-registry-fetch "^10.0.0" + promise-retry "^2.0.1" + read-package-json-fast "^2.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.1.0" -pako@~1.0.2, pako@~1.0.5: +pako@~1.0.2: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -11955,18 +9943,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0: - version "5.1.5" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" - integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== - dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - parse-filepath@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" @@ -11976,11 +9952,6 @@ parse-filepath@^1.0.1: map-cache "^0.2.0" path-root "^0.1.1" -parse-github-repo-url@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" - integrity sha1-nn2LslKmy2ukJZUGC3v23z28H1A= - parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" @@ -11997,9 +9968,9 @@ parse-json@^4.0.0: json-parse-better-errors "^1.0.1" parse-json@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" - integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" error-ex "^1.3.1" @@ -12011,7 +9982,7 @@ parse-ms@^2.1.0: resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d" integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA== -parse-node-version@^1.0.0: +parse-node-version@^1.0.0, parse-node-version@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== @@ -12029,6 +10000,13 @@ parse5-html-rewriting-stream@6.0.1: parse5 "^6.0.1" parse5-sax-parser "^6.0.1" +parse5-htmlparser2-tree-adapter@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" + integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== + dependencies: + parse5 "^6.0.1" + parse5-sax-parser@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz#98b4d366b5b266a7cd90b4b58906667af882daba" @@ -12070,11 +10048,6 @@ passerror@1.1.1, passerror@^1.1.1: resolved "https://registry.yarnpkg.com/passerror/-/passerror-1.1.1.tgz#a25b88dbdd910a29603aec7dcb96e9a7a97687b4" integrity sha1-oluI292RCilgOux9y5bpp6l2h7Q= -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -12117,10 +10090,10 @@ path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.5, path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== +path-parse@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-root-regex@^0.1.0: version "0.1.2" @@ -12139,7 +10112,7 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= -path-to-regexp@^1.7.0: +path-to-regexp@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== @@ -12167,16 +10140,6 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pathval@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" - integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= - -pathval@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" - integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== - pause-stream@0.0.11: version "0.0.11" resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" @@ -12184,17 +10147,6 @@ pause-stream@0.0.11: dependencies: through "~2.3" -pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - pegjs@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd" @@ -12210,10 +10162,10 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.0.7, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== pify@^2.0.0, pify@^2.3.0: version "2.3.0" @@ -12225,7 +10177,7 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= -pify@^4.0.0, pify@^4.0.1: +pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== @@ -12256,27 +10208,6 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= - dependencies: - find-up "^2.1.0" - -pkginfo@0.3.x: - version "0.3.1" - resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.3.1.tgz#5b29f6a81f70717142e09e765bbeab97b4f81e21" - integrity sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE= - -plist@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.1.tgz#a9b931d17c304e8912ef0ba3bdd6182baf2e1f8c" - integrity sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ== - dependencies: - base64-js "^1.2.3" - xmlbuilder "^9.0.7" - xmldom "0.1.x" - plugin-error@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c" @@ -12292,23 +10223,7 @@ pluralize@^8.0.0: resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== -pnp-webpack-plugin@1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" - integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== - dependencies: - ts-pnp "^1.1.6" - -portfinder@^1.0.23: - version "1.0.25" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" - integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.1" - -portfinder@^1.0.25: +portfinder@^1.0.23, portfinder@^1.0.25, portfinder@^1.0.26: version "1.0.28" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== @@ -12317,158 +10232,291 @@ portfinder@^1.0.25: debug "^3.1.1" mkdirp "^0.5.5" -portfinder@^1.0.26: - version "1.0.26" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.26.tgz#475658d56ca30bed72ac7f1378ed350bd1b64e70" - integrity sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.1" - posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postcss-calc@^7.0.1: - version "7.0.2" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" - integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ== +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" + +postcss-calc@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.0.0.tgz#a05b87aacd132740a5db09462a3612453e5df90a" + integrity sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g== dependencies: - postcss "^7.0.27" postcss-selector-parser "^6.0.2" postcss-value-parser "^4.0.2" -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -postcss-convert-values@^4.0.1: +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== +postcss-colormin@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.2.0.tgz#2b620b88c0ff19683f3349f4cf9e24ebdafb2c88" + integrity sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw== dependencies: - postcss "^7.0.0" + browserslist "^4.16.6" + caniuse-api "^3.0.0" + colord "^2.0.1" + postcss-value-parser "^4.1.0" -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== +postcss-convert-values@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz#4ec19d6016534e30e3102fdf414e753398645232" + integrity sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg== dependencies: - postcss "^7.0.0" + postcss-value-parser "^4.1.0" -postcss-discard-empty@^4.0.1: +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== + dependencies: + postcss "^7.0.14" + +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-discard-comments@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz#9eae4b747cf760d31f2447c27f0619d5718901fe" + integrity sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg== + +postcss-discard-duplicates@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz#68f7cc6458fe6bab2e46c9f55ae52869f680e66d" + integrity sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA== + +postcss-discard-empty@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz#ee136c39e27d5d2ed4da0ee5ed02bc8a9f8bf6d8" + integrity sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw== + +postcss-discard-overridden@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz#454b41f707300b98109a75005ca4ab0ff2743ac6" + integrity sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q== + +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641" + integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== dependencies: - postcss "^7.0.0" + postcss "^7.0.2" -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== dependencies: - postcss "^7.0.0" + postcss "^7.0.2" -postcss-import@12.0.1: - version "12.0.1" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-12.0.1.tgz#cf8c7ab0b5ccab5649024536e565f841928b7153" - integrity sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw== +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== dependencies: - postcss "^7.0.1" - postcss-value-parser "^3.2.3" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-import@14.0.1: + version "14.0.1" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.0.1.tgz#6a3f8f2ce74a95fc7c72ecfe3eddfa0e9124e677" + integrity sha512-Xn2+z++vWObbEPhiiKO1a78JiyhqipyrXHBb3AHpv0ks7Cdg+GxQQJ24ODNMTanldf7197gSP3axppO9yaG0lA== + dependencies: + postcss-value-parser "^4.0.0" read-cache "^1.0.0" resolve "^1.1.7" -postcss-loader@4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-4.0.4.tgz#b2d005b52e008a44991cf8123bee207e635eb53e" - integrity sha512-pntA9zIR14drQo84yGTjQJg1m7T0DkXR4vXYHBngiRZdJtEeCrojL6lOpqUanMzG375lIJbT4Yug85zC/AJWGw== +postcss-initial@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.4.tgz#9d32069a10531fe2ecafa0b6ac750ee0bc7efc53" + integrity sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg== + dependencies: + postcss "^7.0.2" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-loader@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-5.2.0.tgz#ccd6668a778902d653602289c765a8bc481986dc" + integrity sha512-uSuCkENFeUaOYsKrXm0eNNgVIxc71z8RcckLMbVw473rGojFnrUeqEz6zBgXsH2q1EIzXnO/4pEz9RhALjlITA== dependencies: cosmiconfig "^7.0.0" klona "^2.0.4" - loader-utils "^2.0.0" - schema-utils "^3.0.0" - semver "^7.3.2" + semver "^7.3.4" -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" + postcss "^7.0.2" -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== dependencies: - browserslist "^4.0.0" + postcss "^7.0.2" + +postcss-merge-longhand@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz#277ada51d9a7958e8ef8cf263103c9384b322a41" + integrity sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw== + dependencies: + css-color-names "^1.0.1" + postcss-value-parser "^4.1.0" + stylehacks "^5.0.1" + +postcss-merge-rules@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz#d6e4d65018badbdb7dcc789c4f39b941305d410a" + integrity sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg== + dependencies: + browserslist "^4.16.6" caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" + cssnano-utils "^2.0.1" + postcss-selector-parser "^6.0.5" + vendors "^1.0.3" -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== +postcss-minify-font-values@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz#a90cefbfdaa075bd3dbaa1b33588bb4dc268addf" + integrity sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA== dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss-value-parser "^4.1.0" -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== +postcss-minify-gradients@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.0.1.tgz#2dc79fd1a1afcb72a9e727bc549ce860f93565d2" + integrity sha512-odOwBFAIn2wIv+XYRpoN2hUV3pPQlgbJ10XeXPq8UY2N+9ZG42xu45lTn/g9zZ+d70NKSQD6EOi6UiCMu3FN7g== dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + cssnano-utils "^2.0.1" + is-color-stop "^1.1.0" + postcss-value-parser "^4.1.0" -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== +postcss-minify-params@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz#371153ba164b9d8562842fdcd929c98abd9e5b6c" + integrity sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw== dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + alphanum-sort "^1.0.2" + browserslist "^4.16.0" + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" uniqs "^2.0.0" -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== +postcss-minify-selectors@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz#4385c845d3979ff160291774523ffa54eafd5a54" + integrity sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og== dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" + alphanum-sort "^1.0.2" + postcss-selector-parser "^6.0.5" postcss-modules-extract-imports@^3.0.0: version "3.0.0" @@ -12498,250 +10546,301 @@ postcss-modules-values@^4.0.0: dependencies: icss-utils "^5.0.0" -postcss-normalize-charset@^4.0.1: +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + +postcss-normalize-charset@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz#121559d1bebc55ac8d24af37f67bd4da9efd91d0" + integrity sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg== + +postcss-normalize-display-values@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz#62650b965981a955dffee83363453db82f6ad1fd" + integrity sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ== + dependencies: + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" + +postcss-normalize-positions@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz#868f6af1795fdfa86fbbe960dceb47e5f9492fe5" + integrity sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg== + dependencies: + postcss-value-parser "^4.1.0" + +postcss-normalize-repeat-style@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz#cbc0de1383b57f5bb61ddd6a84653b5e8665b2b5" + integrity sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w== + dependencies: + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" + +postcss-normalize-string@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz#d9eafaa4df78c7a3b973ae346ef0e47c554985b0" + integrity sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA== + dependencies: + postcss-value-parser "^4.1.0" + +postcss-normalize-timing-functions@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz#8ee41103b9130429c6cbba736932b75c5e2cb08c" + integrity sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q== + dependencies: + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" + +postcss-normalize-unicode@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz#82d672d648a411814aa5bf3ae565379ccd9f5e37" + integrity sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA== + dependencies: + browserslist "^4.16.0" + postcss-value-parser "^4.1.0" + +postcss-normalize-url@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz#ddcdfb7cede1270740cf3e4dfc6008bd96abc763" + integrity sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ== + dependencies: + is-absolute-url "^3.0.3" + normalize-url "^6.0.1" + postcss-value-parser "^4.1.0" + +postcss-normalize-whitespace@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz#b0b40b5bcac83585ff07ead2daf2dcfbeeef8e9a" + integrity sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA== + dependencies: + postcss-value-parser "^4.1.0" + +postcss-ordered-values@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz#1f351426977be00e0f765b3164ad753dac8ed044" + integrity sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ== + dependencies: + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" + +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== dependencies: - postcss "^7.0.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== +postcss-preset-env@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== +postcss-reduce-initial@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz#9d6369865b0f6f6f6b165a0ef5dc1a4856c7e946" + integrity sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw== dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== - dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== - dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== - dependencies: - browserslist "^4.0.0" + browserslist "^4.16.0" caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== +postcss-reduce-transforms@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz#93c12f6a159474aa711d5269923e2383cedcf640" + integrity sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA== dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" -postcss-selector-parser@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" - integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== dependencies: - dot-prop "^5.2.0" + postcss "^7.0.2" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf" + integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" indexes-of "^1.0.1" uniq "^1.0.1" -postcss-selector-parser@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" - integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5: + version "6.0.6" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" + integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== dependencies: cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" - integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== - dependencies: - cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" util-deprecate "^1.0.2" -postcss-svgo@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" - integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== +postcss-svgo@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.0.2.tgz#bc73c4ea4c5a80fbd4b45e29042c34ceffb9257f" + integrity sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A== dependencies: - is-svg "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" + postcss-value-parser "^4.1.0" + svgo "^2.3.0" -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== +postcss-unique-selectors@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz#3be5c1d7363352eff838bd62b0b07a0abad43bfc" + integrity sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w== dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" + alphanum-sort "^1.0.2" + postcss-selector-parser "^6.0.5" uniqs "^2.0.0" -postcss-value-parser@^3.0.0, postcss-value-parser@^3.2.3: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - -postcss-value-parser@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz#651ff4593aa9eda8d5d0d66593a2417aeaeb325d" - integrity sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg== - -postcss-value-parser@^4.1.0: +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== -postcss-values-parser@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-1.5.0.tgz#5d9fa63e2bcb0179ce48f3235303765eb89f3047" - integrity sha512-3M3p+2gMp0AH3da530TlX8kiO1nxdTnc3C6vr8dMxRLIlh8UYkz0/wcwptSXjhtx2Fr0TySI7a+BHDQ8NL7LaQ== +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== dependencies: flatten "^1.0.2" indexes-of "^1.0.1" uniq "^1.0.1" -postcss@7.0.21: - version "7.0.21" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" - integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== +postcss-values-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-5.0.0.tgz#10c61ac3f488e4de25746b829ea8d8894e9ac3d2" + integrity sha512-2viDDjMMrt21W2izbeiJxl3kFuD/+asgB0CBwPEgSyhCmBnDIa/y+pLaoyX+q3I3DHH0oPPL3cgjVTQvlS1Maw== + dependencies: + color-name "^1.1.4" + is-url-superb "^4.0.0" + quote-unquote "^1.0.0" + +postcss@8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.0.tgz#b1a713f6172ca427e3f05ef1303de8b65683325f" + integrity sha512-+ogXpdAjWGa+fdYY5BQ96V/6tAo+TdSSIMP5huJBIygdWwKtVoB5JWZ7yUd4xZ8r+8Kvvx4nyg/PQ071H4UtcQ== + dependencies: + colorette "^1.2.2" + nanoid "^3.1.23" + source-map-js "^0.6.2" + +postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.36" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.36.tgz#056f8cffa939662a8f5905950c07d5285644dfcb" + integrity sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw== dependencies: chalk "^2.4.2" source-map "^0.6.1" supports-color "^6.1.0" -postcss@7.0.32: - version "7.0.32" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" - integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== +postcss@^8.1.7, postcss@^8.2.10, postcss@^8.2.13, postcss@^8.2.9: + version "8.3.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.6.tgz#2730dd76a97969f37f53b9a6096197be311cc4ea" + integrity sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A== dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" + colorette "^1.2.2" + nanoid "^3.1.23" + source-map-js "^0.6.2" -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.2, postcss@^7.0.27: - version "7.0.27" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9" - integrity sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== +precinct@^8.0.0, precinct@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/precinct/-/precinct-8.1.0.tgz#6b8f2389ba2ca61c466731390b0d7e25da3fd996" + integrity sha512-oeZBR9IdER42Ef6Rz11z1oOUqicsI5J1Qffj6tYghKLhxN2UnHy7uE1axxNr0VZRevPK2HWkROk36uXrbJwHFA== dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@^7.0.32: - version "7.0.35" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" - integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@^8.1.1: - version "8.1.4" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.1.4.tgz#356dfef367a70f3d04347f74560c85846e20e4c1" - integrity sha512-LfqcwgMq9LOd8pX7K2+r2HPitlIGC5p6PoZhVELlqhh2YGDVcXKpkCseqan73Hrdik6nBd2OvoDPUaP/oMj9hQ== - dependencies: - colorette "^1.2.1" - line-column "^1.0.2" - nanoid "^3.1.15" - source-map "^0.6.1" - -precinct@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/precinct/-/precinct-6.2.0.tgz#1755c369316d58ffeed2332a31442d5498f3cc33" - integrity sha512-BCAmnOxZzobF3H1/h/gq70pEyvX/BVLWCrzi8beFD22dqu5Z14qOghNUsI24Wg8oaTsGFcIjOGtFX5L9ttmjVg== - dependencies: - commander "^2.19.0" - debug "^4.1.1" - detective-amd "^3.0.0" + commander "^2.20.3" + debug "^4.3.1" + detective-amd "^3.0.1" detective-cjs "^3.1.1" - detective-es6 "^2.0.0" + detective-es6 "^2.2.0" detective-less "^1.0.2" - detective-postcss "^3.0.0" - detective-sass "^3.0.0" - detective-scss "^2.0.0" + detective-postcss "^4.0.0" + detective-sass "^3.0.1" + detective-scss "^2.0.1" detective-stylus "^1.0.0" - detective-typescript "^5.1.1" - module-definition "^3.3.0" + detective-typescript "^7.0.0" + module-definition "^3.3.1" node-source-walk "^4.2.0" prelude-ls@~1.1.2: @@ -12749,27 +10848,37 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +prettier@^2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.2.tgz#ef280a05ec253712e486233db5c6f23441e7342d" + integrity sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ== + +pretty-bytes@^5.3.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== pretty-hrtime@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= -pretty-ms@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-5.1.0.tgz#b906bdd1ec9e9799995c372e2b1c34f073f95384" - integrity sha512-4gaK1skD2gwscCfkswYQRmddUb2GJZtzDGRjHWadVHtK/DIKFufa12MvES6/xu1tVbUYeia5bmLcwJtZJQUqnw== +pretty-ms@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-7.0.1.tgz#7d903eaab281f7d8e03c66f867e239dc32fb73e8" + integrity sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q== dependencies: parse-ms "^2.1.0" -private@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== +printj@~1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" + integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: version "2.0.1" @@ -12781,33 +10890,28 @@ process-nextick-args@~1.0.6: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -progress@1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" - integrity sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74= - progress@^2.0.1, progress@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +promise-breaker@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/promise-breaker/-/promise-breaker-5.0.0.tgz#58e8541f1619554057da95a211794d7834d30c1d" + integrity sha512-mgsWQuG4kJ1dtO6e/QlNDLFtMkMzzecsC69aI5hlLEjGHFNpHrvGhFi4LiK5jg2SMQj74/diH+wZliL9LpGsyA== + promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= -promise-retry@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" - integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== dependencies: - err-code "^1.0.0" - retry "^0.10.0" + err-code "^2.0.2" + retry "^0.12.0" propagate@^2.0.0: version "2.0.1" @@ -12833,10 +10937,10 @@ protobufjs@6.8.8: "@types/node" "^10.1.0" long "^4.0.0" -protobufjs@^6.8.1, protobufjs@^6.8.6, protobufjs@^6.8.8, protobufjs@^6.8.9: - version "6.8.9" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.9.tgz#0b1adbcdaa983d369c3d9108a97c814edc030754" - integrity sha512-j2JlRdUeL/f4Z6x4aU4gj9I2LECglC+5qR2TrWb193Tla1qfdaNQTZ8I27Pt7K0Ajmvjjpft7O3KWTGciz4gpw== +protobufjs@^6.10.0, protobufjs@^6.10.2: + version "6.11.2" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.2.tgz#de39fabd4ed32beaa08e9bb1e30d08544c1edf8b" + integrity sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw== dependencies: "@protobufjs/aspromise" "^1.1.2" "@protobufjs/base64" "^1.1.2" @@ -12848,21 +10952,14 @@ protobufjs@^6.8.1, protobufjs@^6.8.6, protobufjs@^6.8.8, protobufjs@^6.8.9: "@protobufjs/path" "^1.1.2" "@protobufjs/pool" "^1.1.0" "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.0" - "@types/node" "^10.1.0" + "@types/long" "^4.0.1" + "@types/node" ">=13.7.0" long "^4.0.0" -protoduck@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" - integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== - dependencies: - genfun "^5.0.0" - -protractor@^5.4.2: - version "5.4.4" - resolved "https://registry.yarnpkg.com/protractor/-/protractor-5.4.4.tgz#b241466aaf83b76bc2c58df67deb9a5cdfc61529" - integrity sha512-BaL4vePgu3Vfa/whvTUAlgaCAId4uNSGxIFSCXMgj7LMYENPWLp85h5RBi9pdpX/bWQ8SF6flP7afmi2TC4eHw== +protractor@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/protractor/-/protractor-7.0.0.tgz#c3e263608bd72e2c2dc802b11a772711a4792d03" + integrity sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw== dependencies: "@types/q" "^0.0.32" "@types/selenium-webdriver" "^3.0.0" @@ -12877,17 +10974,31 @@ protractor@^5.4.2: selenium-webdriver "3.6.0" source-map-support "~0.4.0" webdriver-js-extender "2.1.0" - webdriver-manager "^12.0.6" - yargs "^12.0.5" + webdriver-manager "^12.1.7" + yargs "^15.3.1" proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" - integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: - forwarded "~0.1.2" + forwarded "0.2.0" ipaddr.js "1.9.1" +proxy-agent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-4.0.1.tgz#326c3250776c7044cd19655ccbfadf2e065a045c" + integrity sha512-ODnQnW2jc/FUVwHHuaZEfN5otg/fMbvMxz9nMSUQfJ9JU7q2SZvSULSsjLloVgJOiv9yhc8GlNMKc4GkFmcVEA== + dependencies: + agent-base "^6.0.0" + debug "4" + http-proxy-agent "^4.0.0" + https-proxy-agent "^5.0.0" + lru-cache "^5.1.1" + pac-proxy-agent "^4.1.0" + proxy-from-env "^1.0.0" + socks-proxy-agent "^5.0.0" + proxy-from-env@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" @@ -12915,18 +11026,6 @@ psl@^1.1.28: resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - pump@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" @@ -12943,7 +11042,7 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3, pumpify@^1.3.5: +pumpify@^1.3.5: version "1.5.1" resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== @@ -12957,7 +11056,7 @@ punycode@1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@^1.2.4, punycode@^1.3.2, punycode@^1.4.1: +punycode@^1.3.2: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= @@ -12967,6 +11066,13 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +pupa@^2.0.1, pupa@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" + integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== + dependencies: + escape-goat "^2.0.0" + puppeteer@5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-5.4.1.tgz#f2038eb23a0f593ed2cce0d6e7cd5c43aecd6756" @@ -12985,17 +11091,12 @@ puppeteer@5.4.1: unbzip2-stream "^1.3.3" ws "^7.2.3" -q@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.0.1.tgz#11872aeedee89268110b10a718448ffb10112a14" - integrity sha1-EYcq7t7okmgRCxCnGESP+xARKhQ= - q@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" integrity sha1-VXBbzZPF82c1MMLCy8DCs63cKG4= -q@^1.1.2, q@^1.4.1, q@^1.5.1, q@~1.5.0: +q@^1.4.1, q@^1.5.1, q@~1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= @@ -13010,61 +11111,50 @@ qs@6.7.0: resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== -qs@^6.4.0: - version "6.9.6" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" - integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== +qs@^6.4.0, qs@^6.6.0: + version "6.10.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" + integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg== + dependencies: + side-channel "^1.0.4" -qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - integrity sha1-E+JtKK1rD/qpExLNO/cI7TUecjM= - -qs@~6.5.1, qs@~6.5.2: +qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= querystringify@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" - integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== -quick-lru@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" - integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== quick-lru@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: +quote-unquote@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/quote-unquote/-/quote-unquote-1.0.0.tgz#67a9a77148effeaf81a4d428404a710baaac8a0b" + integrity sha1-Z6mncUjv/q+BpNQoQEpxC6qsigs= + +randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - range-parser@^1.2.0, range-parser@^1.2.1, range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -13080,6 +11170,16 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" +raw-body@^2.2.0, raw-body@^2.3.3: + version "2.4.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" + integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== + dependencies: + bytes "3.1.0" + http-errors "1.7.3" + iconv-lite "0.4.24" + unpipe "1.0.0" + raw-loader@4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" @@ -13088,7 +11188,7 @@ raw-loader@4.0.2: loader-utils "^2.0.0" schema-utils "^3.0.0" -rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: +rc@^1.2.7, rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -13098,6 +11198,15 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" +re2@^1.15.8: + version "1.16.0" + resolved "https://registry.yarnpkg.com/re2/-/re2-1.16.0.tgz#f311eb4865b1296123800ea8e013cec8dab25590" + integrity sha512-eizTZL2ZO0ZseLqfD4t3Qd0M3b3Nr0MBWpX81EbPMIud/1d/CSfUIx2GQK8fWiAeHoSekO5EOeFib2udTZLwYw== + dependencies: + install-artifact-from-github "^1.2.0" + nan "^2.14.2" + node-gyp "^8.0.0" + read-cache@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" @@ -13105,6 +11214,14 @@ read-cache@^1.0.0: dependencies: pify "^2.3.0" +read-package-json-fast@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" + integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== + dependencies: + json-parse-even-better-errors "^2.3.0" + npm-normalize-package-bin "^1.0.1" + read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -13158,7 +11275,26 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@1.1.x: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@^2.3.7, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -13171,15 +11307,6 @@ read-pkg@^5.2.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" -"readable-stream@2 || 3", readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - readable-stream@~2.0.0: version "2.0.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" @@ -13192,6 +11319,13 @@ readable-stream@~2.0.0: string_decoder "~0.10.x" util-deprecate "~1.0.1" +readdir-glob@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.1.tgz#f0e10bb7bf7bfa7e0add8baffdc54c3f7dbee6c4" + integrity sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA== + dependencies: + minimatch "^3.0.4" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -13201,17 +11335,10 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" -readdirp@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" - integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== - dependencies: - picomatch "^2.0.7" - -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" @@ -13222,22 +11349,6 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - -redent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" - integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= - dependencies: - indent-string "^3.0.0" - strip-indent "^2.0.0" - redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -13253,7 +11364,7 @@ redeyed@~2.1.0: dependencies: esprima "~4.0.0" -reflect-metadata@^0.1.2, reflect-metadata@^0.1.3: +reflect-metadata@^0.1.3: version "0.1.13" resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== @@ -13266,9 +11377,9 @@ regenerate-unicode-properties@^8.2.0: regenerate "^1.4.0" regenerate@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== regenerator-runtime@0.13.7: version "0.13.7" @@ -13276,17 +11387,16 @@ regenerator-runtime@0.13.7: integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== regenerator-runtime@^0.13.4: - version "0.13.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" - integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== regenerator-transform@^0.14.2: - version "0.14.4" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" - integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== dependencies: "@babel/runtime" "^7.8.4" - private "^0.1.8" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -13302,24 +11412,12 @@ regex-parser@^2.2.11: integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== regexp.prototype.flags@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -regexpu-core@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" - integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" regexpu-core@^4.7.1: version "4.7.1" @@ -13333,30 +11431,29 @@ regexpu-core@^4.7.1: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" -registry-auth-token@^3.0.1: - version "3.4.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" - integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A== +registry-auth-token@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" + integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== dependencies: - rc "^1.1.6" - safe-buffer "^5.0.1" + rc "^1.2.8" -registry-url@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== dependencies: - rc "^1.0.1" + rc "^1.2.8" regjsgen@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" - integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== regjsparser@^0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" - integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + version "0.6.9" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.9.tgz#b489eef7c9a2ce43727627011429cf833a7183e6" + integrity sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ== dependencies: jsesc "~0.5.0" @@ -13383,22 +11480,15 @@ remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= - dependencies: - is-finite "^1.0.0" - replace-ext@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a" @@ -13413,14 +11503,7 @@ replace-homedir@^1.0.0: is-absolute "^1.0.0" remove-trailing-separator "^1.1.0" -request-progress@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-0.3.1.tgz#0721c105d8a96ac6b2ce8b2c89ae2d5ecfcf6b3a" - integrity sha1-ByHBBdipasayzossia4tXs/Pazo= - dependencies: - throttleit "~0.0.2" - -request@2.x, request@^2.79.0, request@^2.87.0, request@^2.88.0, request@^2.88.2: +request@^2.87.0, request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -13446,37 +11529,16 @@ request@2.x, request@^2.79.0, request@^2.87.0, request@^2.88.0, request@^2.88.2: tunnel-agent "^0.6.0" uuid "^3.3.2" -request@~2.87.0: - version "2.87.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" - integrity sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.6.0" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.1" - forever-agent "~0.6.1" - form-data "~2.3.1" - har-validator "~5.0.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.17" - oauth-sign "~0.8.2" - performance-now "^2.1.0" - qs "~6.5.1" - safe-buffer "^5.1.1" - tough-cookie "~2.3.3" - tunnel-agent "^0.6.0" - uuid "^3.1.0" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" @@ -13487,13 +11549,12 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -requirejs-config-file@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/requirejs-config-file/-/requirejs-config-file-3.1.2.tgz#de8c0b3eebdf243511c994a8a24b006f8b825997" - integrity sha512-sdLWywcDuNz7EIOhenSbRfT4YF84nItDv90coN2htbokjmU2QeyQuSBZILQUKNksepl8UPVU+hgYySFaDxbJPQ== +requirejs-config-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/requirejs-config-file/-/requirejs-config-file-4.0.0.tgz#4244da5dd1f59874038cc1091d078d620abb6ebc" + integrity sha512-jnIre8cbWOyvr8a5F2KuqBnY+SDA4NXr/hzEZJG79Mxm2WiFQz2dzhC8ibtPJS7zkmBEl1mxSwp5HhC1W4qpxw== dependencies: esprima "^4.0.0" - make-dir "^2.1.0" stringify-object "^3.2.1" requirejs@^2.3.5, requirejs@^2.3.6: @@ -13543,20 +11604,15 @@ resolve-options@^1.1.0: dependencies: value-or-function "^3.0.0" -resolve-url-loader@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz#235e2c28e22e3e432ba7a5d4e305c59a58edfc08" - integrity sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ== +resolve-url-loader@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz#d50d4ddc746bb10468443167acf800dcd6c3ad57" + integrity sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA== dependencies: - adjust-sourcemap-loader "3.0.0" - camelcase "5.3.1" - compose-function "3.0.3" - convert-source-map "1.7.0" - es6-iterator "2.0.3" - loader-utils "1.2.3" - postcss "7.0.21" - rework "1.0.1" - rework-visit "1.0.0" + adjust-sourcemap-loader "^4.0.0" + convert-source-map "^1.7.0" + loader-utils "^2.0.0" + postcss "^7.0.35" source-map "0.6.1" resolve-url@^0.2.1: @@ -13564,29 +11620,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" - integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== - dependencies: - is-core-module "^2.0.0" - path-parse "^1.0.6" - -resolve@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" - integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== - dependencies: - path-parse "^1.0.5" - -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.3.2: - version "1.15.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" - integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== - dependencies: - path-parse "^1.0.6" - -resolve@^1.17.0, resolve@^1.4.0: +resolve@1.20.0, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.4.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -13594,13 +11628,28 @@ resolve@^1.17.0, resolve@^1.4.0: is-core-module "^2.2.0" path-parse "^1.0.6" -resolve@^1.8.1: +resolve@~1.17.0: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== dependencies: path-parse "^1.0.6" +resolve@~1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== + dependencies: + is-core-module "^2.1.0" + path-parse "^1.0.6" + +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -13622,23 +11671,13 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -retry-axios@0.3.2, retry-axios@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/retry-axios/-/retry-axios-0.3.2.tgz#5757c80f585b4cc4c4986aa2ffd47a60c6d35e13" - integrity sha512-jp4YlI0qyDFfXiXGhkCOliBN1G7fRH03Nqy8YdShzGqbY5/9S2x/IR6C88ls2DFkbWuL3ASkP7QD3pVrNpPgwQ== - retry-request@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-4.1.1.tgz#f676d0db0de7a6f122c048626ce7ce12101d2bd8" - integrity sha512-BINDzVtLI2BDukjWmjAIRZ0oglnCAkpP2vQjM3jdLhmT62h0xnQgciPwBRDAvHqpkPT2Wo1XuUyLyn6nbGrZQQ== + version "4.2.2" + resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-4.2.2.tgz#b7d82210b6d2651ed249ba3497f07ea602f1a903" + integrity sha512-xA93uxUD/rogV7BV59agW/JHPGXeREMWiZc9jhcwY4YdZ7QOtC7qbomYg0n4wyk2lJhggjvKvhNX8wln/Aldhg== dependencies: debug "^4.1.1" - through2 "^3.0.1" - -retry@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" - integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= + extend "^3.0.2" retry@^0.12.0: version "0.12.0" @@ -13650,28 +11689,10 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rewire@2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/rewire/-/rewire-2.5.2.tgz#6427de7b7feefa7d36401507eb64a5385bc58dc7" - integrity sha1-ZCfee3/u+n02QBUH62SlOFvFjcc= - -rework-visit@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" - integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= - -rework@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" - integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= - dependencies: - convert-source-map "^0.3.3" - css "^2.0.0" - rfdc@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.4.tgz#ba72cc1367a0ccd9cf81a870b3b58bd3ad07f8c2" - integrity sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug== + version "1.3.0" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== rgb-regex@^1.0.1: version "1.0.1" @@ -13683,7 +11704,7 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1: +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -13704,14 +11725,6 @@ rimraf@~2.5.2: dependencies: glob "^7.0.5" -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - rollup-plugin-commonjs@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz#417af3b54503878e084d127adf4d1caf8beb86fb" @@ -13751,13 +11764,13 @@ rollup-plugin-node-resolve@~4.2.3: is-module "^1.0.0" resolve "^1.10.0" -rollup-plugin-sourcemaps@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.4.2.tgz#62125aa94087aadf7b83ef4dfaf629b473135e87" - integrity sha1-YhJaqUCHqt97g+9N+vYptHMTXoc= +rollup-plugin-sourcemaps@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz#bf93913ffe056e414419607f1d02780d7ece84ed" + integrity sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw== dependencies: - rollup-pluginutils "^2.0.1" - source-map-resolve "^0.5.0" + "@rollup/pluginutils" "^3.0.9" + source-map-resolve "^0.6.0" rollup-plugin-terser@^7.0.1: version "7.0.2" @@ -13769,21 +11782,14 @@ rollup-plugin-terser@^7.0.1: serialize-javascript "^4.0.0" terser "^5.0.0" -rollup-pluginutils@^2.0.1, rollup-pluginutils@^2.8.1: +rollup-pluginutils@^2.8.1: version "2.8.2" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== dependencies: estree-walker "^0.6.1" -rollup@2.32.1: - version "2.32.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.32.1.tgz#625a92c54f5b4d28ada12d618641491d4dbb548c" - integrity sha512-Op2vWTpvK7t6/Qnm1TTh7VjEZZkN8RWgf0DHbkKzQBwNf748YhXbozHVefqpPp/Fuyk/PQPAnYsBxAEtlMvpUw== - optionalDependencies: - fsevents "~2.1.2" - -rollup@^2.16.1: +rollup@2.16.1: version "2.16.1" resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.16.1.tgz#97805e88071e2c6727bd0b64904976d14495c873" integrity sha512-UYupMcbFtoWLB6ZtL4hPZNUTlkXjJfGT33Mmhz3hYLNmRj/cOvX2B26ZxDQuEpwtLdcyyyraBGQ7EfzmMJnXXg== @@ -13812,62 +11818,43 @@ router@^1.3.1: setprototypeof "1.2.0" utils-merge "1.0.1" -rsvp@^3.6.2: - version "3.6.2" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" - integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw== +rsvp@^4.8.5: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== run-async@^2.2.0, run-async@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" - integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== - dependencies: - is-promise "^2.1.0" + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== run-parallel@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" - integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: - aproba "^1.1.1" + queue-microtask "^1.2.2" -rxjs@6.6.3: - version "6.6.3" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" - integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== +rxjs@6.6.7, rxjs@^6.4.0, rxjs@^6.5.3, rxjs@^6.6.6: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: tslib "^1.9.0" -rxjs@^6.4.0, rxjs@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" - integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== +rxjs@^7.2.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.3.0.tgz#39fe4f3461dc1e50be1475b2b85a0a88c1e938c6" + integrity sha512-p2yuGIg9S1epc3vrjKf6iVb3RCaAYjYskkO+jHIaV0IjOPlJop4UnodOoFb2xeNwlguqLYvGw1b1McillYb5Gw== dependencies: - tslib "^1.9.0" - -rxjs@^6.6.0: - version "6.6.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.2.tgz#8096a7ac03f2cc4fe5860ef6e572810d9e01c0d2" - integrity sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg== - dependencies: - tslib "^1.9.0" + tslib "~2.1.0" safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== - -safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0: +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -13884,16 +11871,13 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass-loader@10.0.4: - version "10.0.4" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.0.4.tgz#ec7181096947d078d60a1d76d527f47c19b151d8" - integrity sha512-zhdZ8qvZM4iL5XjLVEjJLvKWvC+MB+hHgzL2x/Nf7UHpUNmPYsJvypW79bW39g4LZ603dH/dRSsRYzJJIljtdA== +sass-loader@11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-11.0.1.tgz#8672f896593466573b904f47693e0695368e38c9" + integrity sha512-Vp1LcP4slTsTNLEiDkTcm8zGN/XYYrZz2BZybQbliWA8eXveqA/AxsEjllQTpJbg2MzCsx/qNO48sHdZtOaxTw== dependencies: klona "^2.0.4" - loader-utils "^2.0.0" neo-async "^2.6.2" - schema-utils "^3.0.0" - semver "^7.3.2" sass-lookup@^3.0.0: version "3.0.0" @@ -13902,26 +11886,27 @@ sass-lookup@^3.0.0: dependencies: commander "^2.16.0" -sass@1.27.0: - version "1.27.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.27.0.tgz#0657ff674206b95ec20dc638a93e179c78f6ada2" - integrity sha512-0gcrER56OkzotK/GGwgg4fPrKuiFlPNitO7eUJ18Bs+/NBlofJfMxmxqpqJxjae9vu0Wq8TZzrSyxZal00WDig== +sass@1.32.12: + version "1.32.12" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.12.tgz#a2a47ad0f1c168222db5206444a30c12457abb9f" + integrity sha512-zmXn03k3hN0KaiVTjohgkg98C3UowhL1/VSGdj4/VAAiMKGQOE80PFPxFP2Kyq0OUskPKcY5lImkhBKEHlypJA== dependencies: - chokidar ">=2.0.0 <4.0.0" + chokidar ">=3.0.0 <4.0.0" sauce-connect-launcher@^1.2.4: - version "1.3.1" - resolved "https://registry.yarnpkg.com/sauce-connect-launcher/-/sauce-connect-launcher-1.3.1.tgz#31137f57b0f7176e1c0525b7fb09c6da746647cf" - integrity sha512-vIf9qDol3q2FlYzrKt0dr3kvec6LSjX2WS+/mVnAJIhqh1evSkPKCR2AzcJrnSmx9Xt9PtV0tLY7jYh0wsQi8A== + version "1.3.2" + resolved "https://registry.yarnpkg.com/sauce-connect-launcher/-/sauce-connect-launcher-1.3.2.tgz#dfc675a258550809a8eaf457eb9162b943ddbaf0" + integrity sha512-wf0coUlidJ7rmeClgVVBh6Kw55/yalZCY/Un5RgjSnTXRAeGqagnTsTYpZaqC4dCtrY4myuYpOAZXCdbO7lHfQ== dependencies: adm-zip "~0.4.3" async "^2.1.2" - https-proxy-agent "^3.0.0" + https-proxy-agent "^5.0.0" lodash "^4.16.6" rimraf "^2.5.4" "sauce-connect@https://saucelabs.com/downloads/sc-4.6.2-linux.tar.gz": version "0.0.0" + uid "7b7f35433af9c3380758e048894d7b9aecf3754e" resolved "https://saucelabs.com/downloads/sc-4.6.2-linux.tar.gz#7b7f35433af9c3380758e048894d7b9aecf3754e" saucelabs@^1.5.0: @@ -13931,7 +11916,7 @@ saucelabs@^1.5.0: dependencies: https-proxy-agent "^2.2.1" -sax@>=0.6.0, sax@~1.2.4: +sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -13945,15 +11930,7 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.6.5: - version "2.6.6" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.6.tgz#299fe6bd4a3365dc23d99fd446caff8f1d6c330c" - integrity sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA== - dependencies: - ajv "^6.12.0" - ajv-keywords "^3.4.1" - -schema-utils@^2.7.0: +schema-utils@^2.6.5, schema-utils@^2.7.0: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== @@ -13963,11 +11940,11 @@ schema-utils@^2.7.0: ajv-keywords "^3.5.2" schema-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" - integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== + version "3.1.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== dependencies: - "@types/json-schema" "^7.0.6" + "@types/json-schema" "^7.0.8" ajv "^6.12.5" ajv-keywords "^3.5.2" @@ -14002,27 +11979,28 @@ selenium-webdriver@3.6.0, selenium-webdriver@^3.0.1: xml2js "^0.4.17" selenium-webdriver@^4.0.0-alpha.1: - version "4.0.0-alpha.7" - resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.7.tgz#e3879d8457fd7ad8e4424094b7dc0540d99e6797" - integrity sha512-D4qnTsyTr91jT8f7MfN+OwY0IlU5+5FmlO5xlgRUV6hDEV8JyYx2NerdTEqDDkNq7RZDYc4VoPALk8l578RBHw== + version "4.0.0-beta.4" + resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.0.0-beta.4.tgz#db4fc7505a515ea3b4a95ded031b738a1544eddd" + integrity sha512-+s/CIYkWzmnC9WASBxxVj7Lm0dcyl6OaFxwIJaFCT5WCuACiimEEr4lUnOOFP/QlKfkDQ56m+aRczaq2EvJEJg== dependencies: - jszip "^3.2.2" - rimraf "^2.7.1" - tmp "0.0.30" + jszip "^3.6.0" + rimraf "^3.0.2" + tmp "^0.2.1" + ws ">=7.4.6" -selfsigned@^1.10.7: - version "1.10.7" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" - integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== +selfsigned@^1.10.8: + version "1.10.11" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9" + integrity sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA== dependencies: - node-forge "0.9.0" + node-forge "^0.10.0" -semver-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= +semver-diff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" + integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== dependencies: - semver "^5.0.3" + semver "^6.3.0" semver-greatest-satisfied-range@^1.1.0: version "1.1.0" @@ -14031,14 +12009,7 @@ semver-greatest-satisfied-range@^1.1.0: dependencies: sver-compat "^1.5.0" -semver-intersect@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/semver-intersect/-/semver-intersect-1.4.0.tgz#bdd9c06bedcdd2fedb8cd352c3c43ee8c61321f3" - integrity sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ== - dependencies: - semver "^5.0.0" - -"semver@2 || 3 || 4 || 5", semver@^5.0.0, semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -14053,21 +12024,18 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@7.3.2, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2: - version "7.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== +semver@7.3.5, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@~7.3.0: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= - send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -14095,11 +12063,6 @@ seq@^0.3.5: chainsaw ">=0.0.7 <0.1" hashish ">=0.0.2 <0.1" -serialize-javascript@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" - integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== - serialize-javascript@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" @@ -14114,6 +12077,13 @@ serialize-javascript@^5.0.1: dependencies: randombytes "^2.1.0" +serialize-javascript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" @@ -14137,7 +12107,7 @@ serve-static@1.14.1: parseurl "~1.3.3" send "0.17.1" -set-blocking@^2.0.0: +set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -14157,7 +12127,7 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.4, setimmediate@~1.0.4: +setimmediate@~1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= @@ -14177,14 +12147,6 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" @@ -14216,16 +12178,7 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shelljs@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.2.tgz#345b7df7763f4c2340d584abb532c5f752ca9e35" - integrity sha512-pRXeNrCA2Wd9itwhvLp5LZQvPJ0wU6bcjaTMywHHGX5XWhVN2nzSu7WV0q+oUY7mGK3mgSkDDzP3MgjqdyIgbQ== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -shelljs@^0.8.3, shelljs@^0.8.4: +shelljs@^0.8.4: version "0.8.4" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== @@ -14234,6 +12187,15 @@ shelljs@^0.8.3, shelljs@^0.8.4: interpret "^1.0.0" rechoir "^0.6.2" +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -14337,41 +12299,42 @@ socket.io@2.1.1: socket.io-client "2.1.1" socket.io-parser "~3.2.0" -sockjs-client@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" - integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== +sockjs-client@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.1.tgz#256908f6d5adfb94dabbdbd02c66362cca0f9ea6" + integrity sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ== dependencies: - debug "^3.2.5" + debug "^3.2.6" eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" + faye-websocket "^0.11.3" + inherits "^2.0.4" + json3 "^3.3.3" + url-parse "^1.5.1" -sockjs@0.3.20: - version "0.3.20" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" - integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== +sockjs@^0.3.21: + version "0.3.21" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" + integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== dependencies: - faye-websocket "^0.10.0" + faye-websocket "^0.11.3" uuid "^3.4.0" - websocket-driver "0.6.5" + websocket-driver "^0.7.4" -socks-proxy-agent@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" - integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== +socks-proxy-agent@5, socks-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e" + integrity sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ== dependencies: - agent-base "~4.2.1" - socks "~2.3.2" + agent-base "^6.0.2" + debug "4" + socks "^2.3.3" -socks@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3" - integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA== +socks@^2.3.3: + version "2.6.1" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.1.tgz#989e6534a07cf337deb1b1c94aaa44296520d30e" + integrity sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA== dependencies: - ip "1.1.5" + ip "^1.1.5" smart-buffer "^4.1.0" source-list-map@^2.0.0, source-list-map@^2.0.1: @@ -14379,17 +12342,19 @@ source-list-map@^2.0.0, source-list-map@^2.0.1: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -source-map-loader@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-1.1.2.tgz#5b782bf08496d3a7f355e1780df0e25190a80991" - integrity sha512-bjf6eSENOYBX4JZDfl9vVLNsGAQ6Uz90fLmOazcmMcyDYOBFsGxPNn83jXezWLY9bJsVAo1ObztxPcV8HAbjVA== +source-map-js@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" + integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== + +source-map-loader@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-2.0.1.tgz#b4fd0ae7fa7e7d3954300f383f2d6fcc230a4261" + integrity sha512-UzOTTQhoNPeTNzOxwFw220RSRzdGSyH4lpNyWjR7Qm34P4/N0W669YSUFdH07+YNeN75h765XLHmNsF/bm97RQ== dependencies: abab "^2.0.5" iconv-lite "^0.6.2" - loader-utils "^2.0.0" - schema-utils "^3.0.0" - source-map "^0.6.1" - whatwg-mimetype "^2.3.0" + source-map-js "^0.6.2" source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.3" @@ -14402,7 +12367,15 @@ source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@0.5.19, source-map-support@^0.5.9, source-map-support@~0.5.19: +source-map-resolve@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" + integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + +source-map-support@0.5.19, source-map-support@^0.5.17, source-map-support@^0.5.5, source-map-support@~0.5.12, source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -14418,14 +12391,6 @@ source-map-support@0.5.9: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.5.5, source-map-support@^0.5.6, source-map-support@~0.5.12: - version "0.5.16" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" - integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map-support@~0.4.0: version "0.4.18" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" @@ -14434,9 +12399,9 @@ source-map-support@~0.4.0: source-map "^0.5.6" source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== source-map@0.5.6: version "0.5.6" @@ -14469,30 +12434,30 @@ sparkles@^1.0.0: integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" - integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + version "3.0.9" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#8a595135def9592bda69709474f1cbeea7c2467f" + integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ== spdy-transport@^3.0.0: version "3.0.0" @@ -14517,13 +12482,6 @@ spdy@^4.0.2: select-hose "^2.0.0" spdy-transport "^3.0.0" -speed-measure-webpack-plugin@1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.3.tgz#6ff894fc83e8a6310dde3af863a0329cd79da4f5" - integrity sha512-2ljD4Ch/rz2zG3HsLsnPfp23osuPBS0qPuz9sGpkNXTN1Ic4M+W9xB8l8rS8ob2cO4b1L+WTJw/0AJwWYVgcxQ== - dependencies: - chalk "^2.0.1" - split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -14531,13 +12489,6 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" -split2@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" - integrity sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw== - dependencies: - through2 "^2.0.2" - split2@^3.0.0: version "3.2.2" resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" @@ -14579,17 +12530,10 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^6.0.0, ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== - dependencies: - figgy-pudding "^3.5.1" - -ssri@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.0.tgz#79ca74e21f8ceaeddfcb4b90143c458b8d988808" - integrity sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA== +ssri@^8.0.0, ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== dependencies: minipass "^3.1.1" @@ -14616,14 +12560,6 @@ static-extend@^0.1.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - stream-combiner@~0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" @@ -14631,30 +12567,11 @@ stream-combiner@~0.0.4: dependencies: duplexer "~0.1.1" -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - stream-exhaust@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - stream-shift@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" @@ -14671,6 +12588,11 @@ streamroller@^1.0.6: fs-extra "^7.0.1" lodash "^4.17.14" +string-argv@~0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== + string-length@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz#56970fb1c38558e9e70b728bf3de269ac45adfac" @@ -14687,7 +12609,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -14704,7 +12626,7 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.0, string-width@^4.2.0: +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: version "4.2.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== @@ -14713,41 +12635,7 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string.prototype.trimend@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz#ee497fd29768646d84be2c9b819e292439614373" - integrity sha512-EEJnGqa/xNfIg05SxiPSqRS7S9qwDhYts1TSLR1BQfYUfPe1stofgGKvwERK9+9yf+PpfBMlpBaCHucXGPQfUA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string.prototype.trimleft@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" - integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimstart "^1.0.0" - -string.prototype.trimright@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" - integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimend "^1.0.0" - -string.prototype.trimstart@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.0.tgz#afe596a7ce9de905496919406c9734845f01a2f2" - integrity sha512-iCP8g01NFYiiBOnwG1Xc3WZLyoo+RuBymwIlWncShXDDJYWN6DbnM3odslBJdgCdRlq94B5s63NWAZlcn2CS4w== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string_decoder@^1.0.0, string_decoder@^1.1.1: +string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -14820,18 +12708,6 @@ strip-eof@^1.0.0: resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= - dependencies: - get-stdin "^4.0.1" - -strip-indent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" - integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= - strip-indent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" @@ -14844,6 +12720,11 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +strip-json-comments@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + style-loader@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-2.0.0.tgz#9669602fd4690740eaaec137799a03addbbc393c" @@ -14852,25 +12733,22 @@ style-loader@2.0.0: loader-utils "^2.0.0" schema-utils "^3.0.0" -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== +stylehacks@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.0.1.tgz#323ec554198520986806388c7fdaebc38d2c06fb" + integrity sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA== dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" + browserslist "^4.16.0" + postcss-selector-parser "^6.0.4" -stylus-loader@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-4.1.1.tgz#0e94f5d6274932a2dad054d1a736b32146ac7a99" - integrity sha512-Vnm7J/nIs/P6swIrdwJW/dflhsCOiFmb1U3PeQ6phRtg1soPLN4uKnnL7AtGIJDe173elbtYIXVzmCyF493CfA== +stylus-loader@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-5.0.0.tgz#d3f548887ab67808cc40d320079c44f8ffa3d9b8" + integrity sha512-1OaGgixTgC8IAaMCodZXg7XYsfP1qU0UzTHDyPaWACUh34j9geJL4iA583tFJDOtfNUOfDLaBpUywc5MicQ1aA== dependencies: - fast-glob "^3.2.4" + fast-glob "^3.2.5" klona "^2.0.4" - loader-utils "^2.0.0" normalize-path "^3.0.0" - schema-utils "^3.0.0" stylus-lookup@^3.0.1: version "3.0.2" @@ -14894,41 +12772,37 @@ stylus@0.54.8: semver "^6.3.0" source-map "^0.7.3" -superstatic@^6.0.1: - version "6.0.4" - resolved "https://registry.yarnpkg.com/superstatic/-/superstatic-6.0.4.tgz#5c38fe05e2e9513b68d5ba2798925e4839c151dd" - integrity sha512-Nfli9mSPa9fJloKuDeUOdqC1lcw4c4SnxiWPB8s7Yn1iYo7Ja3pj7qc8AXMqHVqn/Kf7QsxBjAeOJTpuJ0mcrQ== +superstatic@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/superstatic/-/superstatic-7.1.0.tgz#42cc773a0f500fb691841e0533d0b8c31f25997f" + integrity sha512-yBU8iw07nM3Bu4jFc8lnKwLey0cj61OaGmFJZcYC2X+kEpXVmXzERJ3OTAHZAESe1OTeNIuWadt81U5IULGGAA== dependencies: - as-array "^2.0.0" - async "^1.5.2" basic-auth-connect "^1.0.0" chalk "^1.1.3" - char-spinner "^1.0.1" compare-semver "^1.0.0" compression "^1.7.0" connect "^3.6.2" - connect-query "^1.0.0" destroy "^1.0.4" fast-url-parser "^1.1.3" - fs-extra "^0.30.0" - glob "^7.1.2" + fs-extra "^8.1.0" glob-slasher "^1.0.1" home-dir "^1.0.0" is-url "^1.2.2" join-path "^1.1.1" - lodash "^4.17.4" + lodash "^4.17.19" mime-types "^2.1.16" minimatch "^3.0.4" morgan "^1.8.2" nash "^3.0.0" on-finished "^2.2.0" on-headers "^1.0.0" - path-to-regexp "^1.7.0" + path-to-regexp "^1.8.0" router "^1.3.1" - rsvp "^3.6.2" + rsvp "^4.8.5" string-length "^1.0.0" - try-require "^1.0.0" - update-notifier "^2.5.0" + update-notifier "^4.1.1" + optionalDependencies: + re2 "^1.15.8" supports-color@^2.0.0: version "2.0.0" @@ -14950,9 +12824,16 @@ supports-color@^6.1.0: has-flag "^3.0.0" supports-color@^7.0.0, supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" @@ -14972,29 +12853,23 @@ sver-compat@^1.5.0: es6-iterator "^2.0.1" es6-symbol "^3.1.1" -svgo@^1.0.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== +svgo@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.3.1.tgz#603a69ce50311c0e36791528f549644ec1b3f4bc" + integrity sha512-riDDIQgXpEnn0BEl9Gvhh1LNLIyiusSpt64IR8upJu7MwxnzetmF/Y57pXQD2NMX2lVyMRzXt5f2M5rO4wG7Dw== dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" + "@trysound/sax" "0.1.1" + chalk "^4.1.0" + commander "^7.1.0" + css-select "^4.1.3" + css-tree "^1.1.2" + csso "^4.2.0" stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" -symbol-observable@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-2.0.3.tgz#5b521d3d07a43c351055fa43b8355b62d33fd16a" - integrity sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA== +symbol-observable@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" + integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== systemjs@0.18.10: version "0.18.10" @@ -15004,54 +12879,36 @@ systemjs@0.18.10: es6-module-loader "^0.17.4" when "^3.7.2" -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -tapable@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.0.0.tgz#a49c3d6a8a2bb606e7db372b82904c970d537a08" - integrity sha512-bjzn0C0RWoffnNdTzNi7rNDhs1Zlwk2tRXgk8EiHKAOX1Mag3d6T0Y5zNa7l9CJ+EoUne/0UHdwS8tMbkh9zDg== +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" + integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== tar-fs@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.0.tgz#d1cdd121ab465ee0eb9ccde2d35049d3f3daf0d5" - integrity sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg== + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== dependencies: chownr "^1.1.1" mkdirp-classic "^0.5.2" pump "^3.0.0" - tar-stream "^2.0.0" + tar-stream "^2.1.4" -tar-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" - integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== +tar-stream@^2.1.4, tar-stream@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== dependencies: - bl "^1.0.0" - buffer-alloc "^1.2.0" - end-of-stream "^1.0.0" - fs-constants "^1.0.0" - readable-stream "^2.3.0" - to-buffer "^1.1.1" - xtend "^4.0.0" - -tar-stream@^2.0.0, tar-stream@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.2.tgz#6d5ef1a7e5783a95ff70b69b97455a5968dc1325" - integrity sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q== - dependencies: - bl "^4.0.1" + bl "^4.0.3" end-of-stream "^1.4.1" fs-constants "^1.0.0" inherits "^2.0.3" readable-stream "^3.1.1" -tar@^4.3.0, tar@^4.4.10: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== +tar@^4.3.0: + version "4.4.15" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.15.tgz#3caced4f39ebd46ddda4d6203d48493a919697f8" + integrity sha512-ItbufpujXkry7bHH9NpQyTXPbJ72iTlXgkBAYsAjDXk3Ds8t/3NfO5P4xZGy7u+sYuQUbimgzswX4uQIEeNVOA== dependencies: chownr "^1.1.1" fs-minipass "^1.2.5" @@ -15061,25 +12918,25 @@ tar@^4.3.0, tar@^4.4.10: safe-buffer "^5.1.2" yallist "^3.0.3" -tar@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.2.tgz#5df17813468a6264ff14f766886c622b84ae2f39" - integrity sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg== +tar@^6.0.2, tar@^6.1.0: + version "6.1.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.2.tgz#1f045a90a6eb23557a603595f41a16c57d47adc6" + integrity sha512-EwKEgqJ7nJoS+s8QfLYVGMDmAsj+StbI2AM/RTHeUSsOw6Z8bwNBRv5z3CY0m7laC5qUAqruLX5AhMuc5deY3Q== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" minipass "^3.0.0" - minizlib "^2.1.0" + minizlib "^2.1.1" mkdirp "^1.0.3" yallist "^4.0.0" tcp-port-used@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tcp-port-used/-/tcp-port-used-1.0.1.tgz#46061078e2d38c73979a2c2c12b5a674e6689d70" - integrity sha512-rwi5xJeU6utXoEIiMvVBMc9eJ2/ofzB+7nLOdnZuFTmNCLqRiQh2sMG9MqCxHU/69VC/Fwp5dV9306Qd54ll1Q== + version "1.0.2" + resolved "https://registry.yarnpkg.com/tcp-port-used/-/tcp-port-used-1.0.2.tgz#9652b7436eb1f4cfae111c79b558a25769f6faea" + integrity sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA== dependencies: - debug "4.1.0" - is2 "2.0.1" + debug "4.3.1" + is2 "^2.0.6" temp-fs@^0.9.9: version "0.9.9" @@ -15093,74 +12950,57 @@ temp@~0.4.0: resolved "https://registry.yarnpkg.com/temp/-/temp-0.4.0.tgz#671ad63d57be0fe9d7294664b3fc400636678a60" integrity sha1-ZxrWPVe+D+nXKUZks/xABjZnimA= -term-size@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" - integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= - dependencies: - execa "^0.7.0" +term-size@^2.1.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" + integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== -terser-webpack-plugin@4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" - integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== +terser-webpack-plugin@5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.1.2.tgz#51d295eb7cc56785a67a372575fdc46e42d5c20c" + integrity sha512-6QhDaAiVHIQr5Ab3XUWZyDmrIPCHMiqJVljMF91YKyqwKkL5QHnYMkrMBy96v9Z7ev1hGhSEw1HQZc2p/s5Z8Q== dependencies: - cacache "^15.0.5" - find-cache-dir "^3.3.1" - jest-worker "^26.5.0" - p-limit "^3.0.2" + jest-worker "^26.6.2" + p-limit "^3.1.0" schema-utils "^3.0.0" serialize-javascript "^5.0.1" source-map "^0.6.1" - terser "^5.3.4" - webpack-sources "^1.4.3" + terser "^5.7.0" -terser-webpack-plugin@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" - integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== +terser-webpack-plugin@^5.1.1: + version "5.1.4" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.1.4.tgz#c369cf8a47aa9922bd0d8a94fe3d3da11a7678a1" + integrity sha512-C2WkFwstHDhVEmsmlCxrXUtVklS+Ir1A7twrYzrDrQQOIMOaVAYykaoo/Aq1K0QRkMoY2hhvDQY1cm4jnIMFwA== dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^2.1.2" + jest-worker "^27.0.2" + p-limit "^3.1.0" + schema-utils "^3.0.0" + serialize-javascript "^6.0.0" source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" + terser "^5.7.0" -terser@5.3.7: - version "5.3.7" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.7.tgz#798a4ae2e7ff67050c3e99fcc4e00725827d97e2" - integrity sha512-lJbKdfxWvjpV330U4PBZStCT9h3N9A4zZVA5Y4k9sCWXknrpdyxi1oMsRKLmQ/YDMDxSBKIh88v0SkdhdqX06w== +terser@5.7.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.0.tgz#a761eeec206bc87b605ab13029876ead938ae693" + integrity sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g== dependencies: commander "^2.20.0" source-map "~0.7.2" source-map-support "~0.5.19" -terser@^4.1.2, terser@^4.4.0: - version "4.6.10" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.10.tgz#90f5bd069ff456ddbc9503b18e52f9c493d3b7c2" - integrity sha512-qbF/3UOo11Hggsbsqm2hPa6+L4w7bkr+09FNseEe8xrcVD3APGLFqE+Oz1ZKAxjYnFsj80rLOfgAtJ0LNJjtTA== +terser@^4.4.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== dependencies: commander "^2.20.0" source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.0.0: - version "5.5.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.1.tgz#540caa25139d6f496fdea056e414284886fb2289" - integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ== - dependencies: - commander "^2.20.0" - source-map "~0.7.2" - source-map-support "~0.5.19" - -terser@^5.3.4: - version "5.3.8" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.8.tgz#991ae8ba21a3d990579b54aa9af11586197a75dd" - integrity sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ== +terser@^5.0.0, terser@^5.7.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.1.tgz#2dc7a61009b66bb638305cb2a824763b116bf784" + integrity sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg== dependencies: commander "^2.20.0" source-map "~0.7.2" @@ -15180,16 +13020,16 @@ text-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== +text-hex@1.0.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" + integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== + text-table@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -throttleit@~0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf" - integrity sha1-z+34jmDADdlpe2H90qg0OptoDq8= - through2-filter@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" @@ -15206,7 +13046,7 @@ through2@2.0.1: readable-stream "~2.0.0" xtend "~4.0.0" -through2@^2.0.0, through2@^2.0.2, through2@^2.0.3, through2@~2.0.0: +through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -15214,13 +13054,6 @@ through2@^2.0.0, through2@^2.0.2, through2@^2.0.3, through2@~2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -through2@^3.0.0, through2@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" - integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== - dependencies: - readable-stream "2 || 3" - through2@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" @@ -15243,19 +13076,7 @@ time-stamp@^1.0.0: resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= -timed-out@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= - -timers-browserify@^2.0.4: - version "2.0.11" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" - integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== - dependencies: - setimmediate "^1.0.4" - -timers-ext@^0.1.5: +timers-ext@^0.1.5, timers-ext@^0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== @@ -15282,6 +13103,13 @@ tmp@0.0.33, tmp@0.0.x, tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" +tmp@0.2.1, tmp@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + to-absolute-glob@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" @@ -15295,16 +13123,6 @@ to-array@0.1.4: resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - -to-buffer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" - integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -15317,6 +13135,11 @@ to-object-path@^0.3.0: dependencies: kind-of "^3.0.2" +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" @@ -15354,13 +13177,6 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -tough-cookie@~2.3.3: - version "2.3.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" - integrity sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA== - dependencies: - punycode "^1.4.1" - tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" @@ -15376,11 +13192,6 @@ toxic@^1.0.0: dependencies: lodash "^4.17.10" -traverse-chain@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/traverse-chain/-/traverse-chain-0.1.0.tgz#61dbc2d53b69ff6091a12a168fd7d433107e40f1" - integrity sha1-YdvC1Ttp/2CRoSoWj9fUMxB+QPE= - traverse@>=0.2.4: version "0.6.6" resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" @@ -15396,48 +13207,38 @@ tree-kill@1.2.2: resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= - -trim-newlines@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" - integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= - trim-newlines@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30" - integrity sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA== + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== trim-off-newlines@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= -try-require@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/try-require/-/try-require-1.2.1.tgz#34489a2cac0c09c1cc10ed91ba011594d4333be2" - integrity sha1-NEiaLKwMCcHMEO2RugEVlNQzO+I= +triple-beam@^1.2.0, triple-beam@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" + integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== -ts-node@^8.6.2: - version "8.8.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.8.1.tgz#7c4d3e9ed33aa703b64b28d7f9d194768be5064d" - integrity sha512-10DE9ONho06QORKAaCBpPiFCdW+tZJuY/84tyypGtl6r+/C7Asq0dhqbRZURuUlLQtZxxDvT8eoj8cGW0ha6Bg== +ts-node@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.1.0.tgz#e656d8ad3b61106938a867f69c39a8ba6efc966e" + integrity sha512-6szn3+J9WyG2hE+5W8e0ruZrzyk1uFLYye6IGMBadnOzDh8aP7t8CbFpsfCiEx2+wMixAhjFt7lOZC4+l+WbEA== dependencies: + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.1" arg "^4.1.0" + create-require "^1.1.0" diff "^4.0.1" make-error "^1.1.1" - source-map-support "^0.5.6" + source-map-support "^0.5.17" yn "3.1.1" -ts-pnp@^1.1.6: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" - integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== - -tsickle@0.38.1, tsickle@^0.38.0: +tsickle@0.38.1: version "0.38.1" resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.38.1.tgz#30762db759d40c435943093b6972c7f2efb384ef" integrity sha512-4xZfvC6+etRu6ivKCNqMOd1FqcY/m6JY3Y+yr5+Xw+i751ciwrWINi6x/3l1ekcODH9GZhlf0ny2LpzWxnjWYA== @@ -15447,22 +13248,22 @@ tslib@1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" integrity sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ== -tslib@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" - integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== +tslib@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" + integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== -tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: - version "1.11.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" - integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== +tslib@^1.10.0, tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^1.13.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== +tslib@^2.0.1, tslib@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" + integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== -tslib@^2.1.0: +tslib@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== @@ -15500,21 +13301,6 @@ tslint@6.1.3: tslib "^1.13.0" tsutils "^2.29.0" -tslint@~5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.1.0.tgz#51a47baeeb58956fcd617bd2cf00e2ef0eea2ed9" - integrity sha1-UaR7rutYlW/NYXvSzwDi7w7qLtk= - dependencies: - babel-code-frame "^6.22.0" - colors "^1.1.2" - diff "^3.2.0" - findup-sync "~0.3.0" - glob "^7.1.1" - optimist "~0.6.0" - resolve "^1.3.2" - semver "^5.3.0" - tsutils "^1.4.0" - tsutils@2.27.2: version "2.27.2" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" @@ -15522,11 +13308,6 @@ tsutils@2.27.2: dependencies: tslib "^1.8.1" -tsutils@^1.4.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-1.9.1.tgz#b9f9ab44e55af9681831d5f28d0aeeaf5c750cb0" - integrity sha1-ufmrROVa+WgYMdXyjQrur1x1DLA= - tsutils@^2.29.0: version "2.29.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" @@ -15534,18 +13315,13 @@ tsutils@^2.29.0: dependencies: tslib "^1.8.1" -tsutils@^3.0.0, tsutils@^3.17.1: - version "3.17.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" - integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== +tsutils@^3.0.0, tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: tslib "^1.8.1" -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -15558,6 +13334,19 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +tweetnacl@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + +tweetsodium@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/tweetsodium/-/tweetsodium-0.0.5.tgz#f63ab4b1d26d6355d82d512a2bbf03cae96eb3e8" + integrity sha512-T3aXZtx7KqQbutTtBfn+P5By3HdBuB1eCoGviIrRJV2sXeToxv2X2cv5RvYqgG26PSnN5m3fYixds22Gkfd11w== + dependencies: + blakejs "^1.1.0" + tweetnacl "^1.0.1" + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -15565,21 +13354,26 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-detect@^4.0.0, type-detect@^4.0.5: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" - integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== +type-fest@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" + integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== type-fest@^0.18.0: version "0.18.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + type-fest@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" @@ -15604,14 +13398,14 @@ type@^1.0.1: integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" - integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + version "2.5.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d" + integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== -typed-graphqlify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/typed-graphqlify/-/typed-graphqlify-2.3.0.tgz#c85f09b65b56e6da2c993899a34e551e2616bf91" - integrity sha512-iRjAneX/0gHBOrJnZGF5Nwl6OjHDiYBYxQzqenRJExVod0A0QHto9npX4d68i+2OuSHAzatNgSVtJoRgnBHeYQ== +typed-graphqlify@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/typed-graphqlify/-/typed-graphqlify-3.1.3.tgz#6a8aea57d277a88e7d1934fc2120536c3bb18435" + integrity sha512-xLUvbyJf5qIPYj0hNijOVhKuBjXJ4apjOVGWGW33Sjj20MApp6EBImPNz+uuHukduHrdtawt1/6XJdb4oixZVQ== typedarray-to-buffer@^3.1.5: version "3.1.5" @@ -15630,38 +13424,25 @@ typescript@3.2.4: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.4.tgz#c585cb952912263d915b462726ce244ba510ef3d" integrity sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg== -typescript@4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.5.tgz#ae9dddfd1069f1cb5beb3ef3b2170dd7c1332389" - integrity sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ== +typescript@4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961" + integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg== -typescript@4.2.3, typescript@~4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.3.tgz#39062d8019912d43726298f09493d598048c1ce3" - integrity sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw== +typescript@^3.9.5, typescript@^3.9.7: + version "3.9.10" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" + integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== -typescript@^3.0.3, typescript@^3.6.4, typescript@^3.7.5: - version "3.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" - integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== - -typescript@~3.7.2: - version "3.7.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.5.tgz#0692e21f65fd4108b9330238aac11dd2e177a1ae" - integrity sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw== - -uglify-js@^1.3.3: - version "1.3.5" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-1.3.5.tgz#4b5bfff9186effbaa888e4c9e94bd9fc4c94929d" - integrity sha1-S1v/+Rhu/7qoiOTJ6UvZ/EyUkp0= +typescript@~4.3.4, typescript@~4.3.5: + version "4.3.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" + integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== uglify-js@^3.1.4: - version "3.8.1" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.8.1.tgz#43bb15ce6f545eaa0a64c49fd29375ea09fa0f93" - integrity sha512-W7KxyzeaQmZvUFbGj4+YFshhVrMBGSg2IbcYAjGWGvx8DHvJMclbTDMpffdxFUGPBHjIytk7KJUR/KUXstUGDw== - dependencies: - commander "~2.20.3" - source-map "~0.6.1" + version "3.14.1" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.1.tgz#e2cb9fe34db9cb4cf7e35d1d26dfea28e09a7d06" + integrity sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g== ultron@~1.1.0: version "1.1.1" @@ -15681,11 +13462,6 @@ unc-path-regex@^0.1.2: resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= -underscore@1.x: - version "1.10.2" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.10.2.tgz#73d6aa3668f3188e4adb0f1943bd12cfd7efaaaf" - integrity sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg== - undertaker-registry@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/undertaker-registry/-/undertaker-registry-1.0.1.tgz#5e4bda308e4a8a2ae584f9b9a4359a499825cc50" @@ -15784,13 +13560,6 @@ unique-stream@^2.0.2: json-stable-stringify-without-jsonify "^1.0.1" through2-filter "^3.0.0" -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= - dependencies: - crypto-random-string "^1.0.0" - unique-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" @@ -15798,17 +13567,7 @@ unique-string@^2.0.0: dependencies: crypto-random-string "^2.0.0" -universal-analytics@0.4.15: - version "0.4.15" - resolved "https://registry.yarnpkg.com/universal-analytics/-/universal-analytics-0.4.15.tgz#4abc61b159ffe765be144e07b7b739e0ee7b88ab" - integrity sha512-9Dt6WBWsHsmv74G+N/rmEgi6KFZxVvQXkVhr0disegeUryybQAUQwMD1l5EtqaOu+hSOGbhL/hPPQYisZIqPRw== - dependencies: - async "1.2.x" - request "2.x" - underscore "1.x" - uuid "^3.0.0" - -universal-analytics@0.4.23: +universal-analytics@^0.4.16: version "0.4.23" resolved "https://registry.yarnpkg.com/universal-analytics/-/universal-analytics-0.4.23.tgz#d915e676850c25c4156762471bdd7cf2eaaca8ac" integrity sha512-lgMIH7XBI6OgYn1woDEmxhGdj8yDefMKg7GkWdeATAlQZFrMrNyxSkpDzY57iY0/6fdlzTbBV03OawvvzG+q7A== @@ -15817,35 +13576,10 @@ universal-analytics@0.4.23: request "^2.88.2" uuid "^3.0.0" -universal-analytics@^0.4.16: - version "0.4.20" - resolved "https://registry.yarnpkg.com/universal-analytics/-/universal-analytics-0.4.20.tgz#d6b64e5312bf74f7c368e3024a922135dbf24b03" - integrity sha512-gE91dtMvNkjO+kWsPstHRtSwHXz0l2axqptGYp5ceg4MsuurloM0PU3pdOfpb5zBXUvyjT4PwhWK2m39uczZuw== - dependencies: - debug "^3.0.0" - request "^2.88.0" - uuid "^3.0.0" - -universal-user-agent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-3.0.0.tgz#4cc88d68097bffd7ac42e3b7c903e7481424b4b9" - integrity sha512-T3siHThqoj5X0benA5H0qcDnrKGXzU8TKoX15x/tQHw1hQBvIEBHjxQ2klizYsqBOO/Q+WuxoQUihadeeqDnoA== - dependencies: - os-name "^3.0.0" - -universal-user-agent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.1.tgz#fd8d6cb773a679a709e967ef8288a31fcc03e557" - integrity sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg== - dependencies: - os-name "^3.1.0" - -universal-user-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-5.0.0.tgz#a3182aa758069bf0e79952570ca757de3579c1d9" - integrity sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q== - dependencies: - os-name "^3.1.0" +universal-user-agent@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" + integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== universalify@^0.1.0: version "0.1.2" @@ -15857,11 +13591,6 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -15870,15 +13599,10 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -unzip-response@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" - integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= - unzipper@^0.10.10: - version "0.10.10" - resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.10.10.tgz#d82d41fbdfa1f0731123eb11c2cfc028b45d3d42" - integrity sha512-wEgtqtrnJ/9zIBsQb8UIxOhAH1eTHfi7D/xvmrUoMEePeI6u24nq1wigazbIFtHt6ANYXdEVTvc8XYNlTurs7A== + version "0.10.11" + resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.10.11.tgz#0b4991446472cbdb92ee7403909f26c2419c782e" + integrity sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw== dependencies: big-integer "^1.6.17" binary "~0.3.0" @@ -15911,21 +13635,44 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-notifier@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" - integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== +update-notifier@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" + integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== dependencies: - boxen "^1.2.1" - chalk "^2.0.1" - configstore "^3.0.0" + boxen "^4.2.0" + chalk "^3.0.0" + configstore "^5.0.1" + has-yarn "^2.1.0" import-lazy "^2.1.0" - is-ci "^1.0.10" - is-installed-globally "^0.1.0" - is-npm "^1.0.0" - latest-version "^3.0.0" - semver-diff "^2.0.0" - xdg-basedir "^3.0.0" + is-ci "^2.0.0" + is-installed-globally "^0.3.1" + is-npm "^4.0.0" + is-yarn-global "^0.3.0" + latest-version "^5.0.0" + pupa "^2.0.1" + semver-diff "^3.1.1" + xdg-basedir "^4.0.0" + +update-notifier@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" + integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== + dependencies: + boxen "^5.0.0" + chalk "^4.1.0" + configstore "^5.0.1" + has-yarn "^2.1.0" + import-lazy "^2.1.0" + is-ci "^2.0.0" + is-installed-globally "^0.4.0" + is-npm "^5.0.0" + is-yarn-global "^0.3.0" + latest-version "^5.1.0" + pupa "^2.1.1" + semver "^7.3.4" + semver-diff "^3.1.1" + xdg-basedir "^4.0.0" uri-js@^4.2.2: version "4.4.1" @@ -15949,26 +13696,21 @@ url-join@^2.0.5: resolved "https://registry.yarnpkg.com/url-join/-/url-join-2.0.5.tgz#5af22f18c052a000a48d7b82c5e9c2e2feeda728" integrity sha1-WvIvGMBSoACkjXuCxenC4v7tpyg= -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= dependencies: - prepend-http "^1.0.1" + prepend-http "^2.0.0" -url-parse@^1.4.3: - version "1.4.7" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" - integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== +url-parse@^1.4.3, url-parse@^1.5.1: + version "1.5.3" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.3.tgz#71c1303d38fb6639ade183c2992c8cc0686df862" + integrity sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ== dependencies: querystringify "^2.1.1" requires-port "^1.0.0" -url-template@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" - integrity sha1-/FZaPMy/93MMd19WQflVV5FDnyE= - url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -15995,49 +13737,25 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@8.3.1: - version "8.3.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.1.tgz#2ba2e6ca000da60fce5a196954ab241131e05a31" - integrity sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg== +uuid@8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuid@^3.0.0, uuid@^3.1.0, uuid@^3.3.2, uuid@^3.4.0: +uuid@^3.0.0, uuid@^3.3.2, uuid@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== v8-to-istanbul@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz#5b95cef45c0f83217ec79f8fc7ee1c8b486aee07" - integrity sha512-uXUVqNUCLa0AH1vuVxzi+MI4RfxEOKt9pBgKwHbgH7st8Kv2P1m+jvWNnektzBh5QShF3ODgKmUFCf38LnVz1g== + version "7.1.2" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1" + integrity sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" @@ -16080,12 +13798,12 @@ value-or-function@^3.0.0: resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= -vary@~1.1.2: +vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= -vendors@^1.0.0: +vendors@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== @@ -16142,19 +13860,7 @@ vinyl-sourcemaps-apply@^0.2.0: dependencies: source-map "^0.5.1" -vinyl@2.x: - version "2.2.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" - integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== - dependencies: - clone "^2.1.1" - clone-buffer "^1.0.0" - clone-stats "^1.0.0" - cloneable-readable "^1.0.0" - remove-trailing-separator "^1.0.1" - replace-ext "^1.0.0" - -vinyl@^2.0.0: +vinyl@2.x, vinyl@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974" integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw== @@ -16166,60 +13872,38 @@ vinyl@^2.0.0: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" -vlq@0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.2.tgz#e316d5257b40b86bb43cb8d5fea5d7f54d6b0ca1" - integrity sha1-4xbVJXtAuGu0PLjV/qXX9U1rDKE= +vlq@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468" + integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== vlq@^0.2.2: version "0.2.3" resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - void-elements@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= -vrsource-tslint-rules@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/vrsource-tslint-rules/-/vrsource-tslint-rules-5.1.1.tgz#9bef7a60bc34f6cdc637d7ba1b8d745b71f6dcbe" - integrity sha1-m+96YLw09s3GN9e6G410W3H23L4= - dependencies: - tslint "~5.1.0" +vrsource-tslint-rules@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/vrsource-tslint-rules/-/vrsource-tslint-rules-6.0.0.tgz#a4e25e8f3fdd487684174f423c090c35d60f37a9" + integrity sha512-pmcnJdIVziZTk1V0Cqehmh3gIabBRkBYXkv9vx+1CZDNEa41kNGUBFwQLzw21erYOd2QnD8jJeZhBGqnlT1HWw== -walkdir@^0.0.11: - version "0.0.11" - resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.0.11.tgz#a16d025eb931bd03b52f308caed0f40fcebe9532" - integrity sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI= - -walkdir@^0.4.0, walkdir@^0.4.1: +walkdir@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.4.1.tgz#dc119f83f4421df52e3061e514228a2db20afa39" integrity sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ== -watchpack-chokidar2@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" - integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.4.tgz#6e9da53b3c80bb2d6508188f5b200410866cd30b" - integrity sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg== +watchpack@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.2.0.tgz#47d78f5415fe550ecd740f99fe2882323a58b1ce" + integrity sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA== dependencies: + glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.0" wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" @@ -16243,7 +13927,7 @@ webdriver-js-extender@2.1.0: "@types/selenium-webdriver" "^3.0.0" selenium-webdriver "^3.0.1" -webdriver-manager@12.1.8, webdriver-manager@^12.0.6: +webdriver-manager@12.1.8, webdriver-manager@^12.1.7: version "12.1.8" resolved "https://registry.yarnpkg.com/webdriver-manager/-/webdriver-manager-12.1.8.tgz#5e70e73eaaf53a0767d5745270addafbc5905fd4" integrity sha512-qJR36SXG2VwKugPcdwhaqcLQOD7r8P2Xiv9sfNbfZrKBnX243iAkOueX1yAmeNgIKhJ3YAT/F2gq6IiEZzahsg== @@ -16260,10 +13944,22 @@ webdriver-manager@12.1.8, webdriver-manager@^12.0.6: semver "^5.3.0" xml2js "^0.4.17" -webpack-dev-middleware@3.7.2, webpack-dev-middleware@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" - integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== +webpack-dev-middleware@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-4.1.0.tgz#f0c1f12ff4cd855b3b5eec89ee0f69bcc5336364" + integrity sha512-mpa/FY+DiBu5+r5JUIyTCYWRfkWgyA3/OOE9lwfzV9S70A4vJYLsVRKj5rMFEsezBroy2FmPyQ8oBRVW8QmK1A== + dependencies: + colorette "^1.2.1" + mem "^8.0.0" + memfs "^3.2.0" + mime-types "^2.1.28" + range-parser "^1.2.1" + schema-utils "^3.0.0" + +webpack-dev-middleware@^3.7.2: + version "3.7.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" + integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== dependencies: memory-fs "^0.4.1" mime "^2.4.4" @@ -16271,10 +13967,10 @@ webpack-dev-middleware@3.7.2, webpack-dev-middleware@^3.7.2: range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" - integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== +webpack-dev-server@3.11.2: + version "3.11.2" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz#695ebced76a4929f0d5de7fd73fafe185fe33708" + integrity sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -16296,11 +13992,11 @@ webpack-dev-server@3.11.0: p-retry "^3.0.1" portfinder "^1.0.26" schema-utils "^1.0.0" - selfsigned "^1.10.7" + selfsigned "^1.10.8" semver "^6.3.0" serve-index "^1.9.1" - sockjs "0.3.20" - sockjs-client "1.4.0" + sockjs "^0.3.21" + sockjs-client "^1.5.0" spdy "^4.0.2" strip-ansi "^3.0.1" supports-color "^6.1.0" @@ -16318,10 +14014,10 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-merge@5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.2.0.tgz#31cbcc954f8f89cd4b06ca8d97a38549f7f3f0c9" - integrity sha512-QBglJBg5+lItm3/Lopv8KDDK01+hjdg2azEwi/4vKJ8ZmGPdtJsTpjtNNOW3a4WiqzXdCATtTudOZJngE7RKkA== +webpack-merge@5.7.3: + version "5.7.3" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.7.3.tgz#2a0754e1877a25a8bbab3d2475ca70a052708213" + integrity sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA== dependencies: clone-deep "^4.0.1" wildcard "^2.0.0" @@ -16334,15 +14030,7 @@ webpack-sources@1.3.0: source-list-map "^2.0.0" source-map "~0.6.1" -webpack-sources@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.0.1.tgz#1467f6e692ddce91e88b8044c44347b1087bbd4f" - integrity sha512-A9oYz7ANQBK5EN19rUXbvNgfdfZf5U2gP0769OXsj9CvYkCR6OHOsd6OKyEy4H38GGxpsQPKIL83NC64QY6Xmw== - dependencies: - source-list-map "^2.0.1" - source-map "^0.6.1" - -webpack-sources@^1.1.0, webpack-sources@^1.2.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: +webpack-sources@^1.1.0, webpack-sources@^1.2.0, webpack-sources@^1.3.0: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -16350,67 +14038,63 @@ webpack-sources@^1.1.0, webpack-sources@^1.2.0, webpack-sources@^1.3.0, webpack- source-list-map "^2.0.0" source-map "~0.6.1" -webpack-subresource-integrity@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.5.1.tgz#6f44ea99987266b70c4ec42ac51064d33e982277" - integrity sha512-uekbQ93PZ9e7BFB8Hl9cFIVYQyQqiXp2ExKk9Zv+qZfH/zHXHrCFAfw1VW0+NqWbTWrs/HnuDrto3+tiPXh//Q== +webpack-sources@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.3.1.tgz#570de0af163949fe272233c2cefe1b56f74511fd" + integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== + dependencies: + source-list-map "^2.0.1" + source-map "^0.6.1" + +webpack-subresource-integrity@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.5.2.tgz#e40b6578d3072e2d24104975249c52c66e9a743e" + integrity sha512-GBWYBoyalbo5YClwWop9qe6Zclp8CIXYGIz12OPclJhIrSplDxs1Ls1JDMH8xBPPrg1T6ISaTW9Y6zOrwEiAzw== dependencies: webpack-sources "^1.3.0" -webpack@4.44.2: - version "4.44.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" - integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== +webpack@5.38.1: + version "5.38.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.38.1.tgz#5224c7f24c18e729268d3e3bc97240d6e880258e" + integrity sha512-OqRmYD1OJbHZph6RUMD93GcCZy4Z4wC0ele4FXyYF0J6AxO1vOSuIlU1hkS/lDlR9CDYBz64MZRmdbdnFFoT2g== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" + "@types/eslint-scope" "^3.7.0" + "@types/estree" "^0.0.47" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/wasm-edit" "1.11.0" + "@webassemblyjs/wasm-parser" "1.11.0" + acorn "^8.2.1" + browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.3.0" - eslint-scope "^4.0.3" + enhanced-resolve "^5.8.0" + es-module-lexer "^0.4.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.4" json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.0.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.1" + watchpack "^2.2.0" + webpack-sources "^2.3.0" -websocket-driver@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" - integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== dependencies: - websocket-extensions ">=0.1.1" - -websocket-driver@>=0.5.1: - version "0.7.3" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" - integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== - dependencies: - http-parser-js ">=0.4.0 <0.4.11" + http-parser-js ">=0.5.1" safe-buffer ">=5.1.0" websocket-extensions ">=0.1.1" websocket-extensions@>=0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" - integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== when@^3.7.2: version "3.7.8" @@ -16427,51 +14111,61 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.1, which@^1.2.14, which@^1.2.9, which@^1.3.1: +which@^1.2.1, which@^1.2.14, which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" -which@^2.0.1: +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -widest-line@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" - integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== dependencies: - string-width "^2.1.1" + string-width "^1.0.2 || 2" + +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" wildcard@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== -windows-release@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.2.0.tgz#8122dad5afc303d833422380680a79cdfa91785f" - integrity sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA== +winston-transport@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.4.0.tgz#17af518daa690d5b2ecccaa7acf7b20ca7925e59" + integrity sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw== dependencies: - execa "^1.0.0" + readable-stream "^2.3.7" + triple-beam "^1.2.0" -winston@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/winston/-/winston-1.1.2.tgz#68edd769ff79d4f9528cf0e5d80021aade67480c" - integrity sha1-aO3Xaf951PlSjPDl2AAhqt5nSAw= +winston@^3.0.0: + version "3.3.3" + resolved "https://registry.yarnpkg.com/winston/-/winston-3.3.3.tgz#ae6172042cafb29786afa3d09c8ff833ab7c9170" + integrity sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw== dependencies: - async "~1.0.0" - colors "1.0.x" - cycle "1.0.x" - eyes "0.1.x" - isstream "0.1.x" - pkginfo "0.3.x" + "@dabh/diagnostics" "^2.0.2" + async "^3.1.0" + is-stream "^2.0.0" + logform "^2.2.0" + one-time "^1.0.0" + readable-stream "^3.4.0" stack-trace "0.0.x" + triple-beam "^1.3.0" + winston-transport "^4.4.0" word-wrap@~1.2.3: version "1.2.3" @@ -16488,20 +14182,6 @@ wordwrap@~0.0.2: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -worker-plugin@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/worker-plugin/-/worker-plugin-5.0.0.tgz#113b5fe1f4a5d6a957cecd29915bedafd70bb537" - integrity sha512-AXMUstURCxDD6yGam2r4E34aJg6kW85IiaeX72hi+I1cxyaMUtrvVY6sbfpGKAj5e7f68Acl62BjQF5aOOx2IQ== - dependencies: - loader-utils "^1.1.0" - wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -16519,6 +14199,15 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -16533,15 +14222,6 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^2.0.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - write-file-atomic@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" @@ -16552,17 +14232,22 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" +ws@>=7.4.6: + version "8.0.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.0.0.tgz#550605d13dfc1437c9ec1396975709c6d7ffc57d" + integrity sha512-6AcSIXpBlS0QvCVKk+3cWnWElLsA6SzC0lkQ43ciEglgXJXiCWK3/CGFEJ+Ybgp006CMibamAsqOlxE9s4AvYA== + ws@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + version "6.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== dependencies: async-limiter "~1.0.0" ws@^7.2.3: - version "7.3.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.0.tgz#4b2f7f219b3d3737bc1a2fbf145d825b94d38ffd" - integrity sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w== + version "7.5.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" + integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== ws@~3.3.1: version "3.3.3" @@ -16573,27 +14258,17 @@ ws@~3.3.1: safe-buffer "~5.1.0" ultron "~1.1.0" -xdg-basedir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" - integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= - xdg-basedir@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== -xhr2@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.2.0.tgz#eddeff782f3b7551061b8d75645085269396e521" - integrity sha512-BDtiD0i2iKPK/S8OAZfpk6tyzEDnKKSjxWHcMBVmh+LuqJ8A32qXTyOx+TVOg2dKvq6zGBq2sgKPkEeRs1qTRA== - -xhr2@^0.2.0: +xhr2@0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.2.1.tgz#4e73adc4f9cfec9cbd2157f73efdce3a5f108a93" integrity sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw== -xml2js@^0.4.17, xml2js@~0.4.4: +xml2js@^0.4.17: version "0.4.23" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== @@ -16601,20 +14276,20 @@ xml2js@^0.4.17, xml2js@~0.4.4: sax ">=0.6.0" xmlbuilder "~11.0.0" -xmlbuilder@^9.0.7: - version "9.0.7" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" - integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= - xmlbuilder@~11.0.0: version "11.0.1" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== -xmldom@0.1.x, xmldom@^0.1.22, xmldom@^0.1.27: - version "0.1.31" - resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff" - integrity sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ== +xmldom@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.3.0.tgz#e625457f4300b5df9c2e1ecb776147ece47f3e5a" + integrity sha512-z9s6k3wxE+aZHgXYxSTpGDo7BYOUfJsIRyoZiX6HTjwpwfS2wpQBQKa2fD+ShLyPkqDYo5ud7KitmLZ2Cd6r0g== + +xmldom@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.5.0.tgz#193cb96b84aa3486127ea6272c4596354cb4962e" + integrity sha512-Foaj5FXVzgn7xFzsKeNIde9g6aFBxTPi37iwsno8QvApmtg7KYrr+OPyRHcJF7dud2a5nGRBXK3n0dL62Gf7PA== xmlhttprequest-ssl@~1.5.4: version "1.5.5" @@ -16626,7 +14301,12 @@ xpath@^0.0.27: resolved "https://registry.yarnpkg.com/xpath/-/xpath-0.0.27.tgz#dd3421fbdcc5646ac32c48531b4d7e9d0c2cfa92" integrity sha512-fg03WRxtkCV6ohClePNAECYsmpKKTv5L8y/X3Dn1hQrec3POx2jHZ/0P2qQ6HvsrU1BmeqXcof3NGGueG6LxwQ== -xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: +xregexp@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" + integrity sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM= + +xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -16636,20 +14316,15 @@ y18n@^3.2.1: resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== -"y18n@^3.2.1 || ^4.0.0": - version "4.0.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" - integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== - y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== y18n@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" - integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yallist@^2.1.2: version "2.1.2" @@ -16666,33 +14341,10 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@*, yaml@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" - integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== - -yargs-parser@5.0.0-security.0: - version "5.0.0-security.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz#4ff7271d25f90ac15643b86076a2ab499ec9ee24" - integrity sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ== - dependencies: - camelcase "^3.0.0" - object.assign "^4.1.0" - -yargs-parser@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" - integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== - dependencies: - camelcase "^4.1.0" - -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" +yaml@*, yaml@^1.10.0, yaml@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yargs-parser@^13.1.2: version "13.1.2" @@ -16702,46 +14354,26 @@ yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^15.0.1: - version "15.0.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" - integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== +yargs-parser@^18.1.2, yargs-parser@^18.1.3: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^20.0.0: - version "20.2.6" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.6.tgz#69f920addf61aafc0b8b89002f5d66e28f2d8b20" - integrity sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA== +yargs-parser@^20.0.0, yargs-parser@^20.2.2, yargs-parser@^20.2.3: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@^20.2.2: - version "20.2.7" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" - integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== - -yargs-parser@^20.2.3: - version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== - -yargs@^12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== +yargs-parser@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.1.tgz#7ede329c1d8cdbbe209bd25cdb990e9b1ebbb394" + integrity sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA== dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" + camelcase "^3.0.0" + object.assign "^4.1.0" yargs@^13.3.2: version "13.3.2" @@ -16759,24 +14391,24 @@ yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^14.2.3: - version "14.2.3" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" - integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== +yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== dependencies: - cliui "^5.0.0" + cliui "^6.0.0" decamelize "^1.2.0" - find-up "^3.0.0" + find-up "^4.1.0" get-caller-file "^2.0.1" require-directory "^2.1.1" require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^3.0.0" + string-width "^4.2.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^15.0.1" + yargs-parser "^18.1.2" -yargs@^16.0.0, yargs@^16.2.0: +yargs@^16.0.0, yargs@^16.1.1: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== @@ -16789,10 +14421,23 @@ yargs@^16.0.0, yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" +yargs@^17.0.0: + version "17.0.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.0.1.tgz#6a1ced4ed5ee0b388010ba9fd67af83b9362e0bb" + integrity sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + yargs@^7.1.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.1.tgz#67f0ef52e228d4ee0d6311acede8850f53464df6" - integrity sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g== + version "7.1.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.2.tgz#63a0a5d42143879fdbb30370741374e0641d55db" + integrity sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA== dependencies: camelcase "^3.0.0" cliui "^3.2.0" @@ -16806,7 +14451,7 @@ yargs@^7.1.0: string-width "^1.0.2" which-module "^1.0.0" y18n "^3.2.1" - yargs-parser "5.0.0-security.0" + yargs-parser "^5.0.1" yauzl@^2.10.0: version "2.10.0" @@ -16826,6 +14471,11 @@ yn@3.1.1: resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + z-schema@~3.18.3: version "3.18.4" resolved "https://registry.yarnpkg.com/z-schema/-/z-schema-3.18.4.tgz#ea8132b279533ee60be2485a02f7e3e42541a9a2" @@ -16837,21 +14487,11 @@ z-schema@~3.18.3: optionalDependencies: commander "^2.7.1" -zip-stream@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-1.2.0.tgz#a8bc45f4c1b49699c6b90198baacaacdbcd4ba04" - integrity sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ= - dependencies: - archiver-utils "^1.3.0" - compress-commons "^1.2.0" - lodash "^4.8.0" - readable-stream "^2.0.0" - -zip-stream@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-2.1.3.tgz#26cc4bdb93641a8590dd07112e1f77af1758865b" - integrity sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q== +zip-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-4.1.0.tgz#51dd326571544e36aa3f756430b313576dc8fc79" + integrity sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A== dependencies: archiver-utils "^2.1.0" - compress-commons "^2.1.1" - readable-stream "^3.4.0" + compress-commons "^4.1.0" + readable-stream "^3.6.0"